rename ReferenceHDFRecipe to HDFReferenceRecipe
MODIFY
docs/recipe_user_guide/recipes.md
docs/recipe_user_guide/recipes.md
@@ -91,7 +91,7 @@ Many of these options are explored further in the {doc}`../tutorials/index`.
.. autoclass:: pangeo_forge_recipes.recipes.XarrayZarrRecipe
```
-### Reference HDF Recipe
+### HDF Reference Recipe
Like the `XarrayZarrRecipe`, this recipe allows us to more efficiently access data from a bunch of NetCDF / HDF files.
However, this recipe does not actually copy the original source data.
@@ -106,5 +106,5 @@ There is currently one tutorial for this recipe:
```{eval-rst}
-.. autoclass:: pangeo_forge_recipes.recipes.ReferenceHDFRecipe
+.. autoclass:: pangeo_forge_recipes.recipes.HDFReferenceRecipe
```

MODIFY
docs/tutorials/hdf_reference/reference_cmip6.ipynb
docs/tutorials/hdf_reference/reference_cmip6.ipynb
"source": [
"# HDF Reference Recipe for CMIP6\n",
"\n",
- "This example illustrates how to create a {class}`pangeo_forge_recipes.recipes.ReferenceHDFRecipe`.\n",
+ "This example illustrates how to create a {class}`pangeo_forge_recipes.recipes.HDFReferenceRecipe`.\n",
"This recipe does not actually copy the original source data.\n",
"Instead, it generates metadata files which reference and index the original data, allowing it to be accessed more efficiently.\n",
"For more background, see [this blog post](https://medium.com/pangeo/fake-it-until-you-make-it-reading-goes-netcdf4-data-on-aws-s3-as-zarr-for-rapid-data-access-61e33f8fe685).\n",
"name": "stdout",
"output_type": "stream",
"text": [
- "CPU times: user 3.7 s, sys: 622 ms, total: 4.32 s\n",
- "Wall time: 28.4 s\n"
+ "CPU times: user 2.02 s, sys: 440 ms, total: 2.46 s\n",
+ "Wall time: 33 s\n"
]
},
{
" variable_id: thetao\n",
" variant_info: N/A\n",
" references: see further_info_url attribute\n",
- " variant_label: r1i1p1f1</pre><div class='xr-wrap' hidden><div class='xr-header'><div class='xr-obj-type'>xarray.Dataset</div></div><ul class='xr-sections'><li class='xr-section-item'><input id='section-96a1a638-f7c9-4bf3-be77-1adf70cafd7b' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-96a1a638-f7c9-4bf3-be77-1adf70cafd7b' class='xr-section-summary' title='Expand/collapse section'>Dimensions:</label><div class='xr-section-inline-details'><ul class='xr-dim-list'><li><span class='xr-has-index'>lat</span>: 180</li><li><span>bnds</span>: 2</li><li><span class='xr-has-index'>lon</span>: 360</li><li><span class='xr-has-index'>time</span>: 240</li><li><span class='xr-has-index'>lev</span>: 35</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-bfc1b708-32f8-48c2-a543-9fffb9ce3472' class='xr-section-summary-in' type='checkbox' checked><label for='section-bfc1b708-32f8-48c2-a543-9fffb9ce3472' class='xr-section-summary' >Coordinates: <span>(8)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>lat</span></div><div class='xr-var-dims'>(lat)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>-89.5 -88.5 -87.5 ... 88.5 89.5</div><input id='attrs-964e2748-bf1b-4163-8b73-3e42e42597b0' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-964e2748-bf1b-4163-8b73-3e42e42597b0' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-56608183-a213-48f3-8510-108d8f9511e7' class='xr-var-data-in' type='checkbox'><label for='data-56608183-a213-48f3-8510-108d8f9511e7' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>latitude</dd><dt><span>units :</span></dt><dd>degrees_north</dd><dt><span>axis :</span></dt><dd>Y</dd><dt><span>standard_name :</span></dt><dd>latitude</dd><dt><span>cell_methods :</span></dt><dd>time: point</dd></dl></div><div class='xr-var-data'><pre>array([-89.5, -88.5, -87.5, -86.5, -85.5, -84.5, -83.5, -82.5, -81.5, -80.5,\n",
+ " variant_label: r1i1p1f1</pre><div class='xr-wrap' hidden><div class='xr-header'><div class='xr-obj-type'>xarray.Dataset</div></div><ul class='xr-sections'><li class='xr-section-item'><input id='section-b476b1ff-d947-4db9-bdd4-914439d84a30' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-b476b1ff-d947-4db9-bdd4-914439d84a30' class='xr-section-summary' title='Expand/collapse section'>Dimensions:</label><div class='xr-section-inline-details'><ul class='xr-dim-list'><li><span class='xr-has-index'>lat</span>: 180</li><li><span>bnds</span>: 2</li><li><span class='xr-has-index'>lon</span>: 360</li><li><span class='xr-has-index'>time</span>: 240</li><li><span class='xr-has-index'>lev</span>: 35</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-48f39808-b17d-413e-8231-240ac60e5014' class='xr-section-summary-in' type='checkbox' checked><label for='section-48f39808-b17d-413e-8231-240ac60e5014' class='xr-section-summary' >Coordinates: <span>(8)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>lat</span></div><div class='xr-var-dims'>(lat)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>-89.5 -88.5 -87.5 ... 88.5 89.5</div><input id='attrs-772ad35d-93c8-4166-b2a3-4a22cd9cb3ed' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-772ad35d-93c8-4166-b2a3-4a22cd9cb3ed' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-3a88f43f-225f-41a9-886f-c248b567aae1' class='xr-var-data-in' type='checkbox'><label for='data-3a88f43f-225f-41a9-886f-c248b567aae1' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>latitude</dd><dt><span>units :</span></dt><dd>degrees_north</dd><dt><span>axis :</span></dt><dd>Y</dd><dt><span>standard_name :</span></dt><dd>latitude</dd><dt><span>cell_methods :</span></dt><dd>time: point</dd></dl></div><div class='xr-var-data'><pre>array([-89.5, -88.5, -87.5, -86.5, -85.5, -84.5, -83.5, -82.5, -81.5, -80.5,\n",
" -79.5, -78.5, -77.5, -76.5, -75.5, -74.5, -73.5, -72.5, -71.5, -70.5,\n",
" -69.5, -68.5, -67.5, -66.5, -65.5, -64.5, -63.5, -62.5, -61.5, -60.5,\n",
" -59.5, -58.5, -57.5, -56.5, -55.5, -54.5, -53.5, -52.5, -51.5, -50.5,\n",
" 50.5, 51.5, 52.5, 53.5, 54.5, 55.5, 56.5, 57.5, 58.5, 59.5,\n",
" 60.5, 61.5, 62.5, 63.5, 64.5, 65.5, 66.5, 67.5, 68.5, 69.5,\n",
" 70.5, 71.5, 72.5, 73.5, 74.5, 75.5, 76.5, 77.5, 78.5, 79.5,\n",
- " 80.5, 81.5, 82.5, 83.5, 84.5, 85.5, 86.5, 87.5, 88.5, 89.5])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>lat_bnds</span></div><div class='xr-var-dims'>(lat, bnds)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(180, 2), meta=np.ndarray&gt;</div><input id='attrs-55c170ab-9dd3-47c1-bcc3-44e2e725ae5b' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-55c170ab-9dd3-47c1-bcc3-44e2e725ae5b' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-721b3384-bab1-4203-b479-10ded337bbbc' class='xr-var-data-in' type='checkbox'><label for='data-721b3384-bab1-4203-b479-10ded337bbbc' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><table>\n",
+ " 80.5, 81.5, 82.5, 83.5, 84.5, 85.5, 86.5, 87.5, 88.5, 89.5])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>lat_bnds</span></div><div class='xr-var-dims'>(lat, bnds)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(180, 2), meta=np.ndarray&gt;</div><input id='attrs-9d57ef7c-3639-4427-972e-11821e4ac0a4' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-9d57ef7c-3639-4427-972e-11821e4ac0a4' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-79c9ec9b-7bd4-4569-9886-4d25a60c54ee' class='xr-var-data-in' type='checkbox'><label for='data-79c9ec9b-7bd4-4569-9886-4d25a60c54ee' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><table>\n",
" <tr>\n",
" <td>\n",
" <table>\n",
"</svg>\n",
" </td>\n",
" </tr>\n",
- "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>lon</span></div><div class='xr-var-dims'>(lon)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>0.5 1.5 2.5 ... 357.5 358.5 359.5</div><input id='attrs-162946aa-8aea-4aea-8c2b-fb67fec4f111' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-162946aa-8aea-4aea-8c2b-fb67fec4f111' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-d2ab3eb3-b7da-4f59-a2e5-6aed672a3c08' class='xr-var-data-in' type='checkbox'><label for='data-d2ab3eb3-b7da-4f59-a2e5-6aed672a3c08' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>longitude</dd><dt><span>units :</span></dt><dd>degrees_east</dd><dt><span>axis :</span></dt><dd>X</dd><dt><span>standard_name :</span></dt><dd>longitude</dd><dt><span>cell_methods :</span></dt><dd>time: point</dd></dl></div><div class='xr-var-data'><pre>array([ 0.5, 1.5, 2.5, ..., 357.5, 358.5, 359.5])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>lon_bnds</span></div><div class='xr-var-dims'>(lon, bnds)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(360, 2), meta=np.ndarray&gt;</div><input id='attrs-f8046a2e-d1bf-4961-af6b-25bf9d264bcf' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-f8046a2e-d1bf-4961-af6b-25bf9d264bcf' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-8d24e156-4044-4363-9a39-6c67f5e761a2' class='xr-var-data-in' type='checkbox'><label for='data-8d24e156-4044-4363-9a39-6c67f5e761a2' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><table>\n",
+ "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>lon</span></div><div class='xr-var-dims'>(lon)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>0.5 1.5 2.5 ... 357.5 358.5 359.5</div><input id='attrs-97906c8c-69c7-40bd-ac0f-939d1e66b880' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-97906c8c-69c7-40bd-ac0f-939d1e66b880' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-8a405e07-5350-40ea-a590-5c7b044622e7' class='xr-var-data-in' type='checkbox'><label for='data-8a405e07-5350-40ea-a590-5c7b044622e7' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>longitude</dd><dt><span>units :</span></dt><dd>degrees_east</dd><dt><span>axis :</span></dt><dd>X</dd><dt><span>standard_name :</span></dt><dd>longitude</dd><dt><span>cell_methods :</span></dt><dd>time: point</dd></dl></div><div class='xr-var-data'><pre>array([ 0.5, 1.5, 2.5, ..., 357.5, 358.5, 359.5])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>lon_bnds</span></div><div class='xr-var-dims'>(lon, bnds)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(360, 2), meta=np.ndarray&gt;</div><input id='attrs-da1200f8-12a1-442b-9a95-f3b779f1732e' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-da1200f8-12a1-442b-9a95-f3b779f1732e' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-b931411f-4d79-4f5f-be39-959d9b2bcddf' class='xr-var-data-in' type='checkbox'><label for='data-b931411f-4d79-4f5f-be39-959d9b2bcddf' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><table>\n",
" <tr>\n",
" <td>\n",
" <table>\n",
"</svg>\n",
" </td>\n",
" </tr>\n",
- "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>time</span></div><div class='xr-var-dims'>(time)</div><div class='xr-var-dtype'>object</div><div class='xr-var-preview xr-preview'>1708-01-16 12:00:00 ... 1727-12-...</div><input id='attrs-5449400e-68fb-4119-abcd-0d1571617dac' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-5449400e-68fb-4119-abcd-0d1571617dac' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-89bdc281-8804-430e-a0fe-15398d8b4fd4' class='xr-var-data-in' type='checkbox'><label for='data-89bdc281-8804-430e-a0fe-15398d8b4fd4' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>time</dd><dt><span>cartesian_axis :</span></dt><dd>T</dd><dt><span>calendar_type :</span></dt><dd>noleap</dd><dt><span>standard_name :</span></dt><dd>time</dd><dt><span>description :</span></dt><dd>Temporal mean</dd><dt><span>axis :</span></dt><dd>T</dd></dl></div><div class='xr-var-data'><pre>array([cftime.DatetimeNoLeap(1708, 1, 16, 12, 0, 0, 0, has_year_zero=True),\n",
+ "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>time</span></div><div class='xr-var-dims'>(time)</div><div class='xr-var-dtype'>object</div><div class='xr-var-preview xr-preview'>1708-01-16 12:00:00 ... 1727-12-...</div><input id='attrs-af723cee-1ff6-403b-a0c2-1e8ebbecb0ac' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-af723cee-1ff6-403b-a0c2-1e8ebbecb0ac' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-74f9c2da-394e-44ef-8984-05575d9fb997' class='xr-var-data-in' type='checkbox'><label for='data-74f9c2da-394e-44ef-8984-05575d9fb997' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>time</dd><dt><span>cartesian_axis :</span></dt><dd>T</dd><dt><span>calendar_type :</span></dt><dd>noleap</dd><dt><span>standard_name :</span></dt><dd>time</dd><dt><span>description :</span></dt><dd>Temporal mean</dd><dt><span>axis :</span></dt><dd>T</dd></dl></div><div class='xr-var-data'><pre>array([cftime.DatetimeNoLeap(1708, 1, 16, 12, 0, 0, 0, has_year_zero=True),\n",
" cftime.DatetimeNoLeap(1708, 2, 15, 0, 0, 0, 0, has_year_zero=True),\n",
" cftime.DatetimeNoLeap(1708, 3, 16, 12, 0, 0, 0, has_year_zero=True),\n",
" ...,\n",
" cftime.DatetimeNoLeap(1727, 10, 16, 12, 0, 0, 0, has_year_zero=True),\n",
" cftime.DatetimeNoLeap(1727, 11, 16, 0, 0, 0, 0, has_year_zero=True),\n",
" cftime.DatetimeNoLeap(1727, 12, 16, 12, 0, 0, 0, has_year_zero=True)],\n",
- " dtype=object)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>time_bnds</span></div><div class='xr-var-dims'>(time, bnds)</div><div class='xr-var-dtype'>object</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(240, 2), meta=np.ndarray&gt;</div><input id='attrs-2ff0ac6f-e0ec-4008-8458-e1f764150f9d' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-2ff0ac6f-e0ec-4008-8458-e1f764150f9d' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-5d7551c8-45a1-42bb-9145-cb7212c8969b' class='xr-var-data-in' type='checkbox'><label for='data-5d7551c8-45a1-42bb-9145-cb7212c8969b' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>time axis boundaries</dd></dl></div><div class='xr-var-data'><table>\n",
+ " dtype=object)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>time_bnds</span></div><div class='xr-var-dims'>(time, bnds)</div><div class='xr-var-dtype'>object</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(240, 2), meta=np.ndarray&gt;</div><input id='attrs-33ca911d-e237-40fb-951a-a24b52a0506c' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-33ca911d-e237-40fb-951a-a24b52a0506c' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-14da9617-c66d-4746-91ec-6fbf426481ff' class='xr-var-data-in' type='checkbox'><label for='data-14da9617-c66d-4746-91ec-6fbf426481ff' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>time axis boundaries</dd></dl></div><div class='xr-var-data'><table>\n",
" <tr>\n",
" <td>\n",
" <table>\n",
"</svg>\n",
" </td>\n",
" </tr>\n",
- "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>lev_bnds</span></div><div class='xr-var-dims'>(lev, bnds)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(35, 2), meta=np.ndarray&gt;</div><input id='attrs-c3046d8e-438e-45a2-932e-bf3cf0789b10' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-c3046d8e-438e-45a2-932e-bf3cf0789b10' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-769ad2a2-f161-4f46-bd07-cb291cd081df' class='xr-var-data-in' type='checkbox'><label for='data-769ad2a2-f161-4f46-bd07-cb291cd081df' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><table>\n",
+ "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>lev_bnds</span></div><div class='xr-var-dims'>(lev, bnds)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(35, 2), meta=np.ndarray&gt;</div><input id='attrs-01423783-1caf-43f8-9435-d8c2b3c35b71' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-01423783-1caf-43f8-9435-d8c2b3c35b71' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-05d2b468-756a-4c9a-b06a-df838dc8333c' class='xr-var-data-in' type='checkbox'><label for='data-05d2b468-756a-4c9a-b06a-df838dc8333c' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><table>\n",
" <tr>\n",
" <td>\n",
" <table>\n",
"</svg>\n",
" </td>\n",
" </tr>\n",
- "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>lev</span></div><div class='xr-var-dims'>(lev)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>2.5 10.0 20.0 ... 6e+03 6.5e+03</div><input id='attrs-adae9f23-88d2-45f9-8678-769b3b64dea2' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-adae9f23-88d2-45f9-8678-769b3b64dea2' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-c0230117-cd58-455d-b91e-376d017cff5d' class='xr-var-data-in' type='checkbox'><label for='data-c0230117-cd58-455d-b91e-376d017cff5d' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>ocean model level</dd><dt><span>units :</span></dt><dd>m</dd><dt><span>positive :</span></dt><dd>down</dd><dt><span>description :</span></dt><dd>generic ocean model vertical coordinate (nondimensional or dimensional)</dd><dt><span>axis :</span></dt><dd>Z</dd></dl></div><div class='xr-var-data'><pre>array([2.5000e+00, 1.0000e+01, 2.0000e+01, 3.2500e+01, 5.1250e+01, 7.5000e+01,\n",
+ "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>lev</span></div><div class='xr-var-dims'>(lev)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>2.5 10.0 20.0 ... 6e+03 6.5e+03</div><input id='attrs-db6c7230-226f-4d59-ae31-5cd96a45e1fd' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-db6c7230-226f-4d59-ae31-5cd96a45e1fd' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-2e642c38-8d7c-40ed-ad03-c500a07e2e04' class='xr-var-data-in' type='checkbox'><label for='data-2e642c38-8d7c-40ed-ad03-c500a07e2e04' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>ocean model level</dd><dt><span>units :</span></dt><dd>m</dd><dt><span>positive :</span></dt><dd>down</dd><dt><span>description :</span></dt><dd>generic ocean model vertical coordinate (nondimensional or dimensional)</dd><dt><span>axis :</span></dt><dd>Z</dd></dl></div><div class='xr-var-data'><pre>array([2.5000e+00, 1.0000e+01, 2.0000e+01, 3.2500e+01, 5.1250e+01, 7.5000e+01,\n",
" 1.0000e+02, 1.2500e+02, 1.5625e+02, 2.0000e+02, 2.5000e+02, 3.1250e+02,\n",
" 4.0000e+02, 5.0000e+02, 6.0000e+02, 7.0000e+02, 8.0000e+02, 9.0000e+02,\n",
" 1.0000e+03, 1.1000e+03, 1.2000e+03, 1.3000e+03, 1.4000e+03, 1.5375e+03,\n",
" 1.7500e+03, 2.0625e+03, 2.5000e+03, 3.0000e+03, 3.5000e+03, 4.0000e+03,\n",
- " 4.5000e+03, 5.0000e+03, 5.5000e+03, 6.0000e+03, 6.5000e+03])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-3ff2de62-ce96-49f7-a91e-a1c995451542' class='xr-section-summary-in' type='checkbox' checked><label for='section-3ff2de62-ce96-49f7-a91e-a1c995451542' class='xr-section-summary' >Data variables: <span>(1)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span>thetao</span></div><div class='xr-var-dims'>(time, lev, lat, lon)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(240, 35, 180, 360), meta=np.ndarray&gt;</div><input id='attrs-003d0b24-c9ab-433b-8b54-5ac6460e193a' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-003d0b24-c9ab-433b-8b54-5ac6460e193a' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-fed69830-41ea-4761-992f-f0ff358fd8c1' class='xr-var-data-in' type='checkbox'><label for='data-fed69830-41ea-4761-992f-f0ff358fd8c1' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>Sea Water Potential Temperature</dd><dt><span>units :</span></dt><dd>degC</dd><dt><span>cell_methods :</span></dt><dd>area: mean where sea time: mean</dd><dt><span>standard_name :</span></dt><dd>sea_water_potential_temperature</dd><dt><span>interp_method :</span></dt><dd>conserve_order1</dd><dt><span>original_name :</span></dt><dd>thetao</dd><dt><span>comment :</span></dt><dd>Model data on the 1x1 grid includes values in all cells for which any ocean exists on the native grid. For mapping purposes, we recommend using a land mask such as World Ocean Atlas to cover these areas of partial land. For calculating approximate integrals, we recommend multiplying by cell volume (volcello).</dd></dl></div><div class='xr-var-data'><table>\n",
+ " 4.5000e+03, 5.0000e+03, 5.5000e+03, 6.0000e+03, 6.5000e+03])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-5fa8bc47-5916-4f1f-b85b-5b3215168145' class='xr-section-summary-in' type='checkbox' checked><label for='section-5fa8bc47-5916-4f1f-b85b-5b3215168145' class='xr-section-summary' >Data variables: <span>(1)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span>thetao</span></div><div class='xr-var-dims'>(time, lev, lat, lon)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(240, 35, 180, 360), meta=np.ndarray&gt;</div><input id='attrs-fd2bc55a-77c6-43e2-b0d6-19efc1c68edb' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-fd2bc55a-77c6-43e2-b0d6-19efc1c68edb' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-dce97a9d-2526-4ae3-9e66-7dcd7c8e3b19' class='xr-var-data-in' type='checkbox'><label for='data-dce97a9d-2526-4ae3-9e66-7dcd7c8e3b19' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>Sea Water Potential Temperature</dd><dt><span>units :</span></dt><dd>degC</dd><dt><span>cell_methods :</span></dt><dd>area: mean where sea time: mean</dd><dt><span>standard_name :</span></dt><dd>sea_water_potential_temperature</dd><dt><span>interp_method :</span></dt><dd>conserve_order1</dd><dt><span>original_name :</span></dt><dd>thetao</dd><dt><span>comment :</span></dt><dd>Model data on the 1x1 grid includes values in all cells for which any ocean exists on the native grid. For mapping purposes, we recommend using a land mask such as World Ocean Atlas to cover these areas of partial land. For calculating approximate integrals, we recommend multiplying by cell volume (volcello).</dd></dl></div><div class='xr-var-data'><table>\n",
" <tr>\n",
" <td>\n",
" <table>\n",
"</svg>\n",
" </td>\n",
" </tr>\n",
- "</table></div></li></ul></div></li><li class='xr-section-item'><input id='section-1b8d97f3-3cc5-4335-bd4b-4a511b7e4e19' class='xr-section-summary-in' type='checkbox' ><label for='section-1b8d97f3-3cc5-4335-bd4b-4a511b7e4e19' class='xr-section-summary' >Attributes: <span>(44)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'><dt><span>title :</span></dt><dd>NOAA GFDL GFDL-CM4 model output prepared for CMIP6 OMIP experiment forced by CORE Inter-Annual Forcing (CIAF) version 2.0 and initialized with observed physical and biogeochemical ocean data</dd><dt><span>history :</span></dt><dd>File was processed by fremetar (GFDL analog of CMOR). TripleID: [exper_id_TFN7SZc1yU,realiz_id_HX30DNwWjL,run_id_aOuCxFhBdP]</dd><dt><span>external_variables :</span></dt><dd>areacello volcello</dd><dt><span>table_id :</span></dt><dd>Omon</dd><dt><span>activity_id :</span></dt><dd>OMIP</dd><dt><span>branch_method :</span></dt><dd>none provided</dd><dt><span>branch_time_in_child :</span></dt><dd>[0.]</dd><dt><span>comment :</span></dt><dd>Experiment name = OM4p25_IAF_BLING_csf_rerun\n",
+ "</table></div></li></ul></div></li><li class='xr-section-item'><input id='section-b727fb14-d5e6-48e3-90ce-b1d45a7dd2c3' class='xr-section-summary-in' type='checkbox' ><label for='section-b727fb14-d5e6-48e3-90ce-b1d45a7dd2c3' class='xr-section-summary' >Attributes: <span>(44)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'><dt><span>title :</span></dt><dd>NOAA GFDL GFDL-CM4 model output prepared for CMIP6 OMIP experiment forced by CORE Inter-Annual Forcing (CIAF) version 2.0 and initialized with observed physical and biogeochemical ocean data</dd><dt><span>history :</span></dt><dd>File was processed by fremetar (GFDL analog of CMOR). TripleID: [exper_id_TFN7SZc1yU,realiz_id_HX30DNwWjL,run_id_aOuCxFhBdP]</dd><dt><span>external_variables :</span></dt><dd>areacello volcello</dd><dt><span>table_id :</span></dt><dd>Omon</dd><dt><span>activity_id :</span></dt><dd>OMIP</dd><dt><span>branch_method :</span></dt><dd>none provided</dd><dt><span>branch_time_in_child :</span></dt><dd>[0.]</dd><dt><span>comment :</span></dt><dd>Experiment name = OM4p25_IAF_BLING_csf_rerun\n",
"For more information please refer to the\n",
"&lt;a href=&quot;https://github.com/NOAA-GFDL/MOM6-examples/wiki&quot;&gt; MOM6 Wiki. &lt;/a&gt;</dd><dt><span>contact :</span></dt><dd>gfdl.climate.model.info@noaa.gov</dd><dt><span>Conventions :</span></dt><dd>CF-1.7 CMIP-6.0 UGRID-1.0</dd><dt><span>creation_date :</span></dt><dd>2019-06-04T20:37:54Z</dd><dt><span>data_specs_version :</span></dt><dd>01.00.27</dd><dt><span>experiment :</span></dt><dd>OMIP experiment forced by CORE Inter-Annual Forcing (CIAF) version 2.0 and initialized with observed physical and biogeochemical ocean data</dd><dt><span>experiment_id :</span></dt><dd>omip1</dd><dt><span>forcing_index :</span></dt><dd>[1]</dd><dt><span>frequency :</span></dt><dd>mon</dd><dt><span>further_info_url :</span></dt><dd>https://furtherinfo.es-doc.org/CMIP6.NOAA-GFDL.GFDL-CM4.omip1.none.r1i1p1f1</dd><dt><span>grid :</span></dt><dd>ocean data regridded from tripolar - nominal 0.25 deg latitude/longitude to 180,360; interpolation method: conserve_order1</dd><dt><span>grid_label :</span></dt><dd>gr</dd><dt><span>initialization_index :</span></dt><dd>[1]</dd><dt><span>institution :</span></dt><dd>National Oceanic and Atmospheric Administration, Geophysical Fluid Dynamics Laboratory, Princeton, NJ 08540, USA</dd><dt><span>institution_id :</span></dt><dd>NOAA-GFDL</dd><dt><span>license :</span></dt><dd>CMIP6 model data produced by NOAA-GFDL is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License (https://creativecommons.org/licenses/). Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing CMIP6 output, including citation requirements and proper acknowledgment. Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file). The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law.</dd><dt><span>mip_era :</span></dt><dd>CMIP6</dd><dt><span>nominal_resolution :</span></dt><dd>1x1 degree</dd><dt><span>parent_activity_id :</span></dt><dd>no parent</dd><dt><span>parent_experiment_id :</span></dt><dd>no parent</dd><dt><span>parent_mip_era :</span></dt><dd>no parent</dd><dt><span>parent_source_id :</span></dt><dd>no parent</dd><dt><span>parent_variant_label :</span></dt><dd>no parent</dd><dt><span>physics_index :</span></dt><dd>[1]</dd><dt><span>product :</span></dt><dd>model-output</dd><dt><span>realization_index :</span></dt><dd>[1]</dd><dt><span>realm :</span></dt><dd>ocean</dd><dt><span>source :</span></dt><dd>GFDL-CM4 (2018): \n",
"aerosol: interactive\n",
{
"data": {
"text/plain": [
- "ReferenceHDFRecipe(file_pattern=<FilePattern {'time': 15}>, output_json_fname='reference.json', output_intake_yaml_fname='reference.yaml', target=None, metadata_cache=None, netcdf_storage_options={}, inline_threshold=500, output_storage_options={}, template_count=20, xarray_open_kwargs={'decode_coords': 'all'}, xarray_concat_args={})"
+ "HDFReferenceRecipe(file_pattern=<FilePattern {'time': 15}>, output_json_fname='reference.json', output_intake_yaml_fname='reference.yaml', target=None, metadata_cache=None, netcdf_storage_options={}, inline_threshold=500, output_storage_options={}, template_count=20, xarray_open_kwargs={'decode_coords': 'all'}, xarray_concat_args={})"
]
},
"execution_count": 5,
}
],
"source": [
- "from pangeo_forge_recipes.recipes.reference_hdf_zarr import ReferenceHDFRecipe\n",
+ "from pangeo_forge_recipes.recipes.reference_hdf_zarr import HDFReferenceRecipe\n",
"\n",
- "rec = ReferenceHDFRecipe(\n",
+ "rec = HDFReferenceRecipe(\n",
" pattern,\n",
" xarray_open_kwargs={\"decode_coords\": \"all\"}\n",
")\n",

MODIFY
pangeo_forge_recipes/recipes/__init__.py
pangeo_forge_recipes/recipes/__init__.py
-from .reference_hdf_zarr import ReferenceHDFRecipe
+from .reference_hdf_zarr import HDFReferenceRecipe
from .xarray_zarr import XarrayZarrRecipe
-__all__ = ["XarrayZarrRecipe", "ReferenceHDFRecipe"]
+__all__ = ["XarrayZarrRecipe", "HDFReferenceRecipe"]

MODIFY
pangeo_forge_recipes/recipes/reference_hdf_zarr.py
pangeo_forge_recipes/recipes/reference_hdf_zarr.py
@@ -22,14 +22,14 @@ def no_op(*_, **__) -> None:
@dataclass
-class ReferenceHDFRecipe(BaseRecipe):
+class HDFReferenceRecipe(BaseRecipe):
"""
Generates reference files for each input netCDF, then combines
into one ensemble output
Currently supports concat or merge along a single dimension.
- See fsspec-reference-maker and fsspec's ReferenceFileSystem
+ See fsspec-reference-maker and fsspec's ReferenceFileSystem.
To use this class, you must have fsspec-reference-maker, ujson,
xarray, fsspec, zarr, h5py and ujson in your recipe's requirements.

MODIFY
tests/test_references.py
tests/test_references.py
@@ -10,7 +10,7 @@ from pangeo_forge_recipes.storage import FSSpecTarget, MetadataTarget
pytest.importorskip("fsspec_reference_maker")
intake = pytest.importorskip("intake")
reference_hdf_zarr = pytest.importorskip("pangeo_forge_recipes.recipes.reference_hdf_zarr")
-ReferenceHDFRecipe = reference_hdf_zarr.ReferenceHDFRecipe
+HDFReferenceRecipe = reference_hdf_zarr.HDFReferenceRecipe
@pytest.mark.parametrize("with_intake", [True, False])
@@ -20,7 +20,7 @@ def test_single(netcdf_local_paths, tmpdir, with_intake):
expected = xr.open_dataset(path, engine="h5netcdf")
file_pattern = pattern_from_file_sequence([path], "time")
- recipe = ReferenceHDFRecipe(file_pattern)
+ recipe = HDFReferenceRecipe(file_pattern)
# make sure assigning storage later works
out_target = FSSpecTarget(fs=fsspec.filesystem("file"), root_path=str(tmpdir))
@@ -52,7 +52,7 @@ def test_multi(netcdf_local_paths, tmpdir, with_intake):
expected = xr.open_mfdataset(paths, engine="h5netcdf")
file_pattern = pattern_from_file_sequence(paths, "time")
- recipe = ReferenceHDFRecipe(file_pattern)
+ recipe = HDFReferenceRecipe(file_pattern)
# make sure assigning storage later works
out_target = FSSpecTarget(fs=fsspec.filesystem("file"), root_path=str(tmpdir))

rename ReferenceHDFRecipe to HDFReferenceRecipe