import os
os.environ['ROOK_URL'] = 'http://rook.dkrz.de/wps'
from rooki import operators as ops
patched in clisops v0.9.5:
fc4aed08-74a5-11ed-95c3-fa163eaaf620 | 1830 | execute | 1.0.0 | 2022-12-05 15:06:16.95578 | 2022-12-05 15:06:19.901915 | orchestrate | Process error: subset_level_by_values got multiple values for argument level_values
failed due to level values like 1000.00000001 instead of 1000.0
drwx------ 3 tomcat tomcat 114 Dec 5 15:06 pywps_process_7kwbnw67
workflow:
<![CDATA[{\\\"inputs\\\": {\\\"ta\\\": [\\\"c3s-cmip6.CMIP.NOAA-GFDL.GFDL-ESM4.historical.r1i1p1f1.Amon.ta.gr1.v20190726\\\"]}, \\\"steps\\\": {\\\"subset_ta_1\\\": {\\\"run\\\": \\\"subset\\\", \\\"in\\\": {\\\"collection\\\": \\\"inputs/ta\\\", \\\"time\\\": \\\"1950/1999\\\", \\\"time_components\\\": \\\"year:1950,1951,1952,1953,1954,1955,1956,1957,1958,1959,1960,1961,1962,1963,1964,1965,1966,1967,1968,1969,1970,1971,1972,1973,1974,1975,1976,1977,1978,1979,1980,1981,1982,1983,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999|month:jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec\\\", \\\"level\\\": \\\"10000\\\", \\\"area\\\": \\\"-157,49.2,-117.3,67.6\\\"}}}, \\\"outputs\\\": {\\\"output\\\": \\\"subset_ta_1/output\\\"}, \\\"doc\\\": \\\"workflow\\\"}]]>
File "/usr/local/anaconda/envs/rook/lib/python3.10/site-packages/clisops/ops/subset.py", line 105, in _calculate
result = subset_bbox(ds, **kwargs)
File "/usr/local/anaconda/envs/rook/lib/python3.10/site-packages/clisops/core/subset.py", line 270, in func_checker
return func(*args, **kwargs)
File "/usr/local/anaconda/envs/rook/lib/python3.10/site-packages/clisops/core/subset.py", line 1295, in subset_bbox
da = subset_level_by_values(da, level_values)
File "/usr/local/anaconda/envs/rook/lib/python3.10/site-packages/clisops/core/subset.py", line 308, in func_checker
return func(*args, **kwargs)
TypeError: subset_level_by_values() got multiple values for argument 'level_values'
subset = ops.Subset(
ops.Input(
'noaa', ['c3s-cmip6.CMIP.NOAA-GFDL.GFDL-ESM4.historical.r1i1p1f1.Amon.ta.gr1.v20190726']
),
time="1950/1950",
level='10000',
area='-157,49.2,-117.3,67.6'
)
wf = subset
resp = wf.orchestrate()
resp.ok
True
It happens when you run level
and area
subsetting in one step
# time + area works
wf = ops.Subset(
ops.Input(
'noaa', ['c3s-cmip6.CMIP.NOAA-GFDL.GFDL-ESM4.historical.r1i1p1f1.Amon.ta.gr1.v20190726']
),
time="1950/1950",
# level='10000',
area='-157,49.2,-117.3,67.6'
)
resp = wf.orchestrate()
resp.ok
True
# time + level works
wf = ops.Subset(
ops.Input(
'noaa', ['c3s-cmip6.CMIP.NOAA-GFDL.GFDL-ESM4.historical.r1i1p1f1.Amon.ta.gr1.v20190726']
),
time="1950/1950",
level='10000',
# area='-157,49.2,-117.3,67.6'
)
resp = wf.orchestrate()
resp.ok
True
subset = ops.Subset(
ops.Input(
'noaa', ['c3s-cmip6.CMIP.NOAA-GFDL.GFDL-ESM4.historical.r1i1p1f1.Amon.ta.gr1.v20190726']
),
time="1950/1950",
)
subset = ops.Subset(
subset,
level='10000',
)
subset = ops.Subset(
subset,
area='-157,49.2,-117.3,67.6'
)
wf = subset
resp = wf.orchestrate()
resp.ok
True
ds = resp.datasets()[0]
ds
Downloading to /var/folders/qb/mg0csz190wd4rxybhhnwjln80000gn/T/metalink_u3hbayxa/ta_Amon_GFDL-ESM4_historical_r1i1p1f1_gr1_19500116-19501216.nc.
<xarray.Dataset> Dimensions: (bnds: 2, lat: 19, lon: 32, plev: 1, time: 12) Coordinates: * bnds (bnds) float64 1.0 2.0 * lat (lat) float64 49.5 50.5 51.5 52.5 53.5 ... 64.5 65.5 66.5 67.5 * lon (lon) float64 203.1 204.4 205.6 206.9 ... 238.1 239.4 240.6 241.9 * plev (plev) float64 1e+04 * time (time) object 1950-01-16 12:00:00 ... 1950-12-16 12:00:00 Data variables: lat_bnds (lat, bnds) float64 ... lon_bnds (lon, bnds) float64 ... ta (time, plev, lat, lon) float32 ... time_bnds (time, bnds) object ... Attributes: (12/46) external_variables: areacella history: File was processed by fremetar (GFDL analog of CM... table_id: Amon activity_id: CMIP branch_method: standard branch_time_in_child: 0.0 ... ... title: NOAA GFDL GFDL-ESM4 model output prepared for CMI... tracking_id: hdl:21.14100/3042a141-567a-4c4a-a049-ff6d9a699b89 variable_id: ta variant_info: N/A references: see further_info_url attribute variant_label: r1i1p1f1
patched in clisops v0.9.5: https://github.com/roocs/clisops/pull/262
73eff3d4-7a06-11ed-8892-fa163eaaf620 | 13106 | execute | 1.0.0 | 2022-12-12 11:19:25.186633 | 2022-12-12 11:19:28.614311 | orchestrate | Process error: Requested levels include some not found in the dataset: 1000.0
drwx------ 3 tomcat tomcat 114 Dec 12 11:19 pywps_process_4ax_t2fd
workflow:
"<![CDATA[{\\\"inputs\\\": {\\\"ta\\\": [\\\"c3s-cmip6.CMIP.CSIRO-ARCCSS.ACCESS-CM2.historical.r1i1p1f1.Amon.ta.gn.v20191108\\\"]}, \\\"steps\\\": {\\\"subset_ta_1\\\": {\\\"run\\\": \\\"subset\\\", \\\"in\\\": {\\\"collection\\\": \\\"inputs/ta\\\", \\\"time\\\": \\\"1850/1850\\\", \\\"time_components\\\": \\\"year:1850|month:jan\\\", \\\"level\\\": \\\"1000\\\"}}}, \\\"outputs\\\": {\\\"output\\\": \\\"subset_ta_1/output\\\"}, \\\"doc\\\": \\\"workflow\\\"}]]>\"
INFO:elastic_transport.transport:GET https://elasticsearch.ceda.ac.uk:443/c3s-roocs-fix/_doc/ebe88e46683c77c1d50cbcabb10c2593 [status:404 duration:0.163s]
/usr/local/anaconda/envs/rook/lib/python3.10/site-packages/clisops/ops/subset.py:123: UserWarning: "start_date" not found within input date time range. Defaulting to minimum time step in xarray object.
result = subset_time(self.ds, **kwargs)
/usr/local/anaconda/envs/rook/lib/python3.10/site-packages/clisops/ops/subset.py:123: UserWarning: "end_date" has been nudged to nearest valid time step in xarray object.
result = subset_time(self.ds, **kwargs)
Traceback (most recent call last):
File "/usr/local/anaconda/envs/rook/lib/python3.10/site-packages/rook/director/director.py", line 185, in process
file_uris = runner(self.inputs)
File "/usr/local/anaconda/envs/rook/lib/python3.10/site-packages/rook/utils/subset_utils.py", line 5, in run_subset
result = subset(**args)
File "/usr/local/anaconda/envs/rook/lib/python3.10/site-packages/daops/ops/subset.py", line 85, in subset
result_set = Subset(**locals()).calculate()
File "/usr/local/anaconda/envs/rook/lib/python3.10/site-packages/daops/ops/base.py", line 88, in calculate
process(self.get_operation_callable(), norm_collection, **self.params),
File "/usr/local/anaconda/envs/rook/lib/python3.10/site-packages/daops/processor.py", line 17, in process
result = operation(dset, **kwargs)
File "/usr/local/anaconda/envs/rook/lib/python3.10/site-packages/clisops/ops/subset.py", line 232, in subset
return op.process()
File "/usr/local/anaconda/envs/rook/lib/python3.10/site-packages/clisops/ops/base_operation.py", line 132, in process
processed_ds = self._calculate()
File "/usr/local/anaconda/envs/rook/lib/python3.10/site-packages/clisops/ops/subset.py", line 154, in _calculate
result = subset_level_by_values(result, **kwargs)
File "/usr/local/anaconda/envs/rook/lib/python3.10/site-packages/clisops/core/subset.py", line 295, in func_checker
raise ValueError(
ValueError: Requested levels include some not found in the dataset: {1000.0}
wf = ops.Subset(
ops.Input(
'cmip6', ['c3s-cmip6.CMIP.CSIRO-ARCCSS.ACCESS-CM2.historical.r1i1p1f1.Amon.ta.gn.v20191108']
),
time="1850/1850",
time_components="year:1850|month:jan",
level='1000.0',
)
resp = wf.orchestrate()
resp.ok
True
Run without level subset ... check which levels are available in dataset
wf = ops.Subset(
ops.Input(
'cmip6', ['c3s-cmip6.CMIP.CSIRO-ARCCSS.ACCESS-CM2.historical.r1i1p1f1.Amon.ta.gn.v20191108']
),
time="1850/1850",
time_components="year:1850|month:jan",
# level='1000',
)
resp = wf.orchestrate()
resp.ok
True
ds = resp.datasets()[0]
ds
Downloading to /var/folders/qb/mg0csz190wd4rxybhhnwjln80000gn/T/metalink_ruziap6u/ta_Amon_ACCESS-CM2_historical_r1i1p1f1_gn_18500116-18500116.nc.
<xarray.Dataset> Dimensions: (time: 1, bnds: 2, plev: 19, lat: 144, lon: 192) Coordinates: * time (time) datetime64[ns] 1850-01-16T12:00:00 * plev (plev) float64 1e+05 9.25e+04 8.5e+04 7e+04 ... 1e+03 500.0 100.0 * lat (lat) float64 -89.38 -88.12 -86.88 -85.62 ... 86.88 88.12 89.38 * lon (lon) float64 0.9375 2.812 4.688 6.562 ... 355.3 357.2 359.1 Dimensions without coordinates: bnds Data variables: time_bnds (time, bnds) datetime64[ns] ... plev_bnds (plev, bnds) float64 ... lat_bnds (lat, bnds) float64 ... lon_bnds (lon, bnds) float64 ... ta (time, plev, lat, lon) float32 ... Attributes: (12/47) Conventions: CF-1.7 CMIP-6.2 activity_id: CMIP branch_method: standard branch_time_in_child: 0.0 branch_time_in_parent: 0.0 creation_date: 2019-11-08T11:44:24Z ... ... variable_id: ta variant_label: r1i1p1f1 version: v20191108 cmor_version: 3.4.0 tracking_id: hdl:21.14100/63080540-7883-44ff-8828-01ceb912221c license: CMIP6 model data produced by CSIRO is licensed un...
Workaround ... use interval levels
wf = ops.Subset(
ops.Input(
'cmip6', ['c3s-cmip6.CMIP.CSIRO-ARCCSS.ACCESS-CM2.historical.r1i1p1f1.Amon.ta.gn.v20191108']
),
time="1850/1850",
time_components="year:1850|month:jan",
level='1001/100',
)
resp = wf.orchestrate()
resp.ok
True
ds = resp.datasets()[0]
ds
Downloading to /var/folders/qb/mg0csz190wd4rxybhhnwjln80000gn/T/metalink_i0flicdf/ta_Amon_ACCESS-CM2_historical_r1i1p1f1_gn_18500116-18500116.nc.
<xarray.Dataset> Dimensions: (time: 1, bnds: 2, plev: 3, lat: 144, lon: 192) Coordinates: * time (time) datetime64[ns] 1850-01-16T12:00:00 * plev (plev) float64 1e+03 500.0 100.0 * lat (lat) float64 -89.38 -88.12 -86.88 -85.62 ... 86.88 88.12 89.38 * lon (lon) float64 0.9375 2.812 4.688 6.562 ... 355.3 357.2 359.1 Dimensions without coordinates: bnds Data variables: time_bnds (time, bnds) datetime64[ns] ... plev_bnds (plev, bnds) float64 ... lat_bnds (lat, bnds) float64 ... lon_bnds (lon, bnds) float64 ... ta (time, plev, lat, lon) float32 ... Attributes: (12/47) Conventions: CF-1.7 CMIP-6.2 activity_id: CMIP branch_method: standard branch_time_in_child: 0.0 branch_time_in_parent: 0.0 creation_date: 2019-11-08T11:44:24Z ... ... variable_id: ta variant_label: r1i1p1f1 version: v20191108 cmor_version: 3.4.0 tracking_id: hdl:21.14100/63080540-7883-44ff-8828-01ceb912221c license: CMIP6 model data produced by CSIRO is licensed un...