#!/usr/bin/env python # coding: utf-8 # # Performance of concat operator on cmip6 decadal: DWD # # **Rooki** calls climate data operations on the **rook** processing service. # In[1]: import os import time os.environ['ROOK_URL'] = 'http://rook.dkrz.de/wps' from rooki import operators as ops # ## Load intake catalog for cmip6 decadal # In[2]: import intake # In[3]: cat_url = "https://raw.githubusercontent.com/cp4cds/c3s_34g_manifests/master/intake/catalogs/c3s.yaml" cat = intake.open_catalog(cat_url) df_cmip6_decadal = cat['c3s-cmip6-decadal'].read() df_cmip6_decadal.head() # In[4]: df = df_cmip6_decadal.loc[ (df_cmip6_decadal.variable_id=="pr") & (df_cmip6_decadal.experiment_id=="dcppA-hindcast") & (df_cmip6_decadal.table_id=="Amon") & (df_cmip6_decadal.source_id=="MPI-ESM1-2-LR") & (df_cmip6_decadal.member_year=="s2018") ] dsets = list(df.ds_id.unique()) dsets # ## Run concat # # https://docs.xarray.dev/en/stable/generated/xarray.concat.html # In[5]: start = time.time() t = "2019/2019" #tc = "month:dec|day:01" wf = ops.Concat( ops.Input('ds', dsets), time=t, #time_components=tc, dims="realization", #apply_average=1 ) # optional average wf = ops.Average(wf, dims="realization") # optional subset wf = ops.Subset( wf, time=t, # time_components=tc ) resp = wf.orchestrate() end = time.time() print(f"duration: {int(end - start)} secs") print(resp) resp.ok # **open with xarray** # In[6]: resp.size_in_mb # In[7]: resp.download_urls() # In[8]: dsets = resp.datasets() # In[9]: ds = dsets[0] ds # **provenance** # In[10]: prov_plot_url = resp.provenance_image() prov_plot_url # In[11]: # from IPython.display import Image # Image(prov_plot_url) # In[12]: resp.provenance()