From ca065601fb701217676949ca46af1311c7654732 Mon Sep 17 00:00:00 2001 From: Aiko Voigt <aiko.voigt@univie.ac.at> Date: Wed, 10 Mar 2021 22:33:30 +0100 Subject: [PATCH] Working example for how to access TRACMIP in Pangeo Cloud; for this deleted previous non-working example load_data.ipynb --- pangeo/load_data.ipynb | 252 ---- pangeo/load_data_from_pangeo.ipynb | 2105 ++++++++++++++++++++++++++++ 2 files changed, 2105 insertions(+), 252 deletions(-) delete mode 100644 pangeo/load_data.ipynb create mode 100644 pangeo/load_data_from_pangeo.ipynb diff --git a/pangeo/load_data.ipynb b/pangeo/load_data.ipynb deleted file mode 100644 index 0375e48..0000000 --- a/pangeo/load_data.ipynb +++ /dev/null @@ -1,252 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# How to access and load TRACMIP data from the Pangeo cloud\n", - "\n", - "1. \"load\" the Tracmip collection \n", - "2. get some basic info on Tracmip collection\n", - "3. load monthly mean precip for the aquaControl simulation\n", - "4. plot meridional zonal-mean time-mean profile for one model" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from matplotlib import pyplot as plt\n", - "import numpy as np\n", - "import pandas as pd\n", - "import xarray as xr\n", - "import zarr\n", - "import gcsfs\n", - "\n", - "xr.set_options(display_style='html')\n", - "%matplotlib inline\n", - "%config InlineBackend.figure_format = 'retina' " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df = pd.read_csv('https://storage.googleapis.com/cmip6/tracmip.csv')\n", - "df.head()" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'df' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m<ipython-input-3-36bdea2f3883>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mdf_pr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mquery\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"frequency == 'Amon' & variable == 'pr' & experiment == 'aquaControl'\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;31mNameError\u001b[0m: name 'df' is not defined" - ] - } - ], - "source": [ - "df_pr = df.query(\"frequency == 'Amon' & variable == 'pr' & experiment == 'aquaControl'\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1. \"Load\" Tracmip collection" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from intake import open_catalog\n", - "\n", - "# get whole pangeo catalogue\n", - "cat = open_catalog(\"https://raw.githubusercontent.com/pangeo-data/pangeo-datastore/master/intake-catalogs/climate.yaml\")\n", - "# select tracmip collection\n", - "col = cat.tracmip()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2. Basic info on the collection" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "print collection to screen: this shows that there is 3 output frequencies (monthly-mean, daily-mean, 3-hr snapshots), \n", - "11 experiments (6 are due to the CALTECH model with changed atmosperic opacity), and 47 variables" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "col" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "print starting and end portion of the collection" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "col.df.head()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "col.df.tail()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "print some further information on the collection (i.e., dataframe)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "col.df.columns.unique()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "col.df.model.unique()\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "col.df.experiment.unique()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 3. Now actually load the monthly-mean precip data for the aquaControl experiment, use a dictionary for this" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "note: the option \"zarr_kwargs={'consolidated': True}\" for to_dataset_dicts does not seem necessary but is still included here" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ds_dict = col.search(frequency=\"Amon\", experiment=\"aquaControl\",\n", - " variable=\"pr\").to_dataset_dict(zarr_kwargs={'consolidated': True})" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 4. Plot zonal-mean time-mean precip for last 20 years for CNRM-AM5 model" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ds_dict['CNRM-AM5.aquaControl.Amon']['pr']" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plt.plot(ds_dict['CNRM-AM5.aquaControl.Amon'].lat, \n", - " ds_dict['CNRM-AM5.aquaControl.Amon']['pr'].isel(time=slice(120,360)).mean(['lon', 'time'])*86400)\n", - "plt.xlabel('degree latitude')\n", - "plt.ylabel('precipitation (mm/day)')\n", - "plt.title('CNRM-AM5.aquaControl.Amon')" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.5" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/pangeo/load_data_from_pangeo.ipynb b/pangeo/load_data_from_pangeo.ipynb new file mode 100644 index 0000000..8800d4a --- /dev/null +++ b/pangeo/load_data_from_pangeo.ipynb @@ -0,0 +1,2105 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# How to access and load TRACMIP data from the Pangeo cloud\n", + "\n", + "This notebook presents two approaches of accessing TRACMIP data in the Pangeo cloud from your own computer. Both appraoches access zarr-based data in the Google Cloud and in the example provided here result in a dictionary of monthly-mean precipitation in the aquaControl from all TRACMIP models.\n", + "\n", + "As a proof of concept, the notebook closes with plotting the time-averaged precipitation for one of the TRACMIP models using the dictionaries generated by both approaches. Naturally, and in fact naecessarily, the plot is the same for both dictionaries." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Approach 1 via tracmip.csv\n", + "\n", + "Based on \"Way 2: Do the same thing with the Google Cloud Zarr-based data (still from your laptop)\" described in Ryan Abernathey's blog post \"CMIP6 in the Cloud Five Ways\", https://medium.com/pangeo/cmip6-in-the-cloud-five-ways-96b177abe396" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import xarray as xr\n", + "import zarr\n", + "import gcsfs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Browse Catalog: The data catatalog is stored as a CSV file. Here we read it with Pandas." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<div>\n", + "<style scoped>\n", + " .dataframe tbody tr th:only-of-type {\n", + " vertical-align: middle;\n", + " }\n", + "\n", + " .dataframe tbody tr th {\n", + " vertical-align: top;\n", + " }\n", + "\n", + " .dataframe thead th {\n", + " text-align: right;\n", + " }\n", + "</style>\n", + "<table border=\"1\" class=\"dataframe\">\n", + " <thead>\n", + " <tr style=\"text-align: right;\">\n", + " <th></th>\n", + " <th>frequency</th>\n", + " <th>experiment</th>\n", + " <th>model</th>\n", + " <th>variable</th>\n", + " <th>version</th>\n", + " <th>source</th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr>\n", + " <th>0</th>\n", + " <td>A3hr</td>\n", + " <td>aqua4xCO2</td>\n", + " <td>AM21</td>\n", + " <td>hur</td>\n", + " <td>v20190116</td>\n", + " <td>gs://cmip6/tracmip/A3hr/aqua4xCO2/AM21/hur/v20...</td>\n", + " </tr>\n", + " <tr>\n", + " <th>1</th>\n", + " <td>A3hr</td>\n", + " <td>aqua4xCO2</td>\n", + " <td>AM21</td>\n", + " <td>hus</td>\n", + " <td>v20190116</td>\n", + " <td>gs://cmip6/tracmip/A3hr/aqua4xCO2/AM21/hus/v20...</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2</th>\n", + " <td>A3hr</td>\n", + " <td>aqua4xCO2</td>\n", + " <td>AM21</td>\n", + " <td>ta</td>\n", + " <td>v20190116</td>\n", + " <td>gs://cmip6/tracmip/A3hr/aqua4xCO2/AM21/ta/v201...</td>\n", + " </tr>\n", + " <tr>\n", + " <th>3</th>\n", + " <td>A3hr</td>\n", + " <td>aqua4xCO2</td>\n", + " <td>AM21</td>\n", + " <td>ua</td>\n", + " <td>v20190116</td>\n", + " <td>gs://cmip6/tracmip/A3hr/aqua4xCO2/AM21/ua/v201...</td>\n", + " </tr>\n", + " <tr>\n", + " <th>4</th>\n", + " <td>A3hr</td>\n", + " <td>aqua4xCO2</td>\n", + " <td>AM21</td>\n", + " <td>va</td>\n", + " <td>v20190116</td>\n", + " <td>gs://cmip6/tracmip/A3hr/aqua4xCO2/AM21/va/v201...</td>\n", + " </tr>\n", + " </tbody>\n", + "</table>\n", + "</div>" + ], + "text/plain": [ + " frequency experiment model variable version \\\n", + "0 A3hr aqua4xCO2 AM21 hur v20190116 \n", + "1 A3hr aqua4xCO2 AM21 hus v20190116 \n", + "2 A3hr aqua4xCO2 AM21 ta v20190116 \n", + "3 A3hr aqua4xCO2 AM21 ua v20190116 \n", + "4 A3hr aqua4xCO2 AM21 va v20190116 \n", + "\n", + " source \n", + "0 gs://cmip6/tracmip/A3hr/aqua4xCO2/AM21/hur/v20... \n", + "1 gs://cmip6/tracmip/A3hr/aqua4xCO2/AM21/hus/v20... \n", + "2 gs://cmip6/tracmip/A3hr/aqua4xCO2/AM21/ta/v201... \n", + "3 gs://cmip6/tracmip/A3hr/aqua4xCO2/AM21/ua/v201... \n", + "4 gs://cmip6/tracmip/A3hr/aqua4xCO2/AM21/va/v201... " + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.read_csv('https://storage.googleapis.com/cmip6/tracmip.csv')\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For the purpose of this example, we filter the data to find monthly precipitation for the aquaControl simulation." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "df_pr = df.query(\"frequency == 'Amon' & variable == 'pr' & experiment == 'aquaControl'\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We check the content of the dataframe. As desired it contains monthly precipitation for the 14 TRACMIP models. The entries in the source column point to the data location in the Google Cloud and are needed to read the data." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<div>\n", + "<style scoped>\n", + " .dataframe tbody tr th:only-of-type {\n", + " vertical-align: middle;\n", + " }\n", + "\n", + " .dataframe tbody tr th {\n", + " vertical-align: top;\n", + " }\n", + "\n", + " .dataframe thead th {\n", + " text-align: right;\n", + " }\n", + "</style>\n", + "<table border=\"1\" class=\"dataframe\">\n", + " <thead>\n", + " <tr style=\"text-align: right;\">\n", + " <th></th>\n", + " <th>frequency</th>\n", + " <th>experiment</th>\n", + " <th>model</th>\n", + " <th>variable</th>\n", + " <th>version</th>\n", + " <th>source</th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr>\n", + " <th>4844</th>\n", + " <td>Amon</td>\n", + " <td>aquaControl</td>\n", + " <td>AM21</td>\n", + " <td>pr</td>\n", + " <td>v20190116</td>\n", + " <td>gs://cmip6/tracmip/Amon/aquaControl/AM21/pr/v2...</td>\n", + " </tr>\n", + " <tr>\n", + " <th>4879</th>\n", + " <td>Amon</td>\n", + " <td>aquaControl</td>\n", + " <td>CALTECH</td>\n", + " <td>pr</td>\n", + " <td>v20181025</td>\n", + " <td>gs://cmip6/tracmip/Amon/aquaControl/CALTECH/pr...</td>\n", + " </tr>\n", + " <tr>\n", + " <th>4913</th>\n", + " <td>Amon</td>\n", + " <td>aquaControl</td>\n", + " <td>CAM3</td>\n", + " <td>pr</td>\n", + " <td>v20190129</td>\n", + " <td>gs://cmip6/tracmip/Amon/aquaControl/CAM3/pr/v2...</td>\n", + " </tr>\n", + " <tr>\n", + " <th>4953</th>\n", + " <td>Amon</td>\n", + " <td>aquaControl</td>\n", + " <td>CAM4</td>\n", + " <td>pr</td>\n", + " <td>v20190409</td>\n", + " <td>gs://cmip6/tracmip/Amon/aquaControl/CAM4/pr/v2...</td>\n", + " </tr>\n", + " <tr>\n", + " <th>4996</th>\n", + " <td>Amon</td>\n", + " <td>aquaControl</td>\n", + " <td>CAM5Nor</td>\n", + " <td>pr</td>\n", + " <td>v20190305</td>\n", + " <td>gs://cmip6/tracmip/Amon/aquaControl/CAM5Nor/pr...</td>\n", + " </tr>\n", + " <tr>\n", + " <th>5032</th>\n", + " <td>Amon</td>\n", + " <td>aquaControl</td>\n", + " <td>CNRM-AM5</td>\n", + " <td>pr</td>\n", + " <td>v20180423</td>\n", + " <td>gs://cmip6/tracmip/Amon/aquaControl/CNRM-AM5/p...</td>\n", + " </tr>\n", + " <tr>\n", + " <th>5067</th>\n", + " <td>Amon</td>\n", + " <td>aquaControl</td>\n", + " <td>ECHAM61</td>\n", + " <td>pr</td>\n", + " <td>v20180423</td>\n", + " <td>gs://cmip6/tracmip/Amon/aquaControl/ECHAM61/pr...</td>\n", + " </tr>\n", + " <tr>\n", + " <th>5110</th>\n", + " <td>Amon</td>\n", + " <td>aquaControl</td>\n", + " <td>ECHAM63</td>\n", + " <td>pr</td>\n", + " <td>v20190129</td>\n", + " <td>gs://cmip6/tracmip/Amon/aquaControl/ECHAM63/pr...</td>\n", + " </tr>\n", + " <tr>\n", + " <th>5153</th>\n", + " <td>Amon</td>\n", + " <td>aquaControl</td>\n", + " <td>GISS-ModelE2</td>\n", + " <td>pr</td>\n", + " <td>v20190114</td>\n", + " <td>gs://cmip6/tracmip/Amon/aquaControl/GISS-Model...</td>\n", + " </tr>\n", + " <tr>\n", + " <th>5199</th>\n", + " <td>Amon</td>\n", + " <td>aquaControl</td>\n", + " <td>LMDZ5A</td>\n", + " <td>pr</td>\n", + " <td>v20190114</td>\n", + " <td>gs://cmip6/tracmip/Amon/aquaControl/LMDZ5A/pr/...</td>\n", + " </tr>\n", + " <tr>\n", + " <th>5242</th>\n", + " <td>Amon</td>\n", + " <td>aquaControl</td>\n", + " <td>MIROC5</td>\n", + " <td>pr</td>\n", + " <td>v20181025</td>\n", + " <td>gs://cmip6/tracmip/Amon/aquaControl/MIROC5/pr/...</td>\n", + " </tr>\n", + " <tr>\n", + " <th>5284</th>\n", + " <td>Amon</td>\n", + " <td>aquaControl</td>\n", + " <td>MPAS</td>\n", + " <td>pr</td>\n", + " <td>v20190131</td>\n", + " <td>gs://cmip6/tracmip/Amon/aquaControl/MPAS/pr/v2...</td>\n", + " </tr>\n", + " <tr>\n", + " <th>5324</th>\n", + " <td>Amon</td>\n", + " <td>aquaControl</td>\n", + " <td>MetUM-CTL</td>\n", + " <td>pr</td>\n", + " <td>v20180423</td>\n", + " <td>gs://cmip6/tracmip/Amon/aquaControl/MetUM-CTL/...</td>\n", + " </tr>\n", + " <tr>\n", + " <th>5365</th>\n", + " <td>Amon</td>\n", + " <td>aquaControl</td>\n", + " <td>MetUM-ENT</td>\n", + " <td>pr</td>\n", + " <td>v20180423</td>\n", + " <td>gs://cmip6/tracmip/Amon/aquaControl/MetUM-ENT/...</td>\n", + " </tr>\n", + " </tbody>\n", + "</table>\n", + "</div>" + ], + "text/plain": [ + " frequency experiment model variable version \\\n", + "4844 Amon aquaControl AM21 pr v20190116 \n", + "4879 Amon aquaControl CALTECH pr v20181025 \n", + "4913 Amon aquaControl CAM3 pr v20190129 \n", + "4953 Amon aquaControl CAM4 pr v20190409 \n", + "4996 Amon aquaControl CAM5Nor pr v20190305 \n", + "5032 Amon aquaControl CNRM-AM5 pr v20180423 \n", + "5067 Amon aquaControl ECHAM61 pr v20180423 \n", + "5110 Amon aquaControl ECHAM63 pr v20190129 \n", + "5153 Amon aquaControl GISS-ModelE2 pr v20190114 \n", + "5199 Amon aquaControl LMDZ5A pr v20190114 \n", + "5242 Amon aquaControl MIROC5 pr v20181025 \n", + "5284 Amon aquaControl MPAS pr v20190131 \n", + "5324 Amon aquaControl MetUM-CTL pr v20180423 \n", + "5365 Amon aquaControl MetUM-ENT pr v20180423 \n", + "\n", + " source \n", + "4844 gs://cmip6/tracmip/Amon/aquaControl/AM21/pr/v2... \n", + "4879 gs://cmip6/tracmip/Amon/aquaControl/CALTECH/pr... \n", + "4913 gs://cmip6/tracmip/Amon/aquaControl/CAM3/pr/v2... \n", + "4953 gs://cmip6/tracmip/Amon/aquaControl/CAM4/pr/v2... \n", + "4996 gs://cmip6/tracmip/Amon/aquaControl/CAM5Nor/pr... \n", + "5032 gs://cmip6/tracmip/Amon/aquaControl/CNRM-AM5/p... \n", + "5067 gs://cmip6/tracmip/Amon/aquaControl/ECHAM61/pr... \n", + "5110 gs://cmip6/tracmip/Amon/aquaControl/ECHAM63/pr... \n", + "5153 gs://cmip6/tracmip/Amon/aquaControl/GISS-Model... \n", + "5199 gs://cmip6/tracmip/Amon/aquaControl/LMDZ5A/pr/... \n", + "5242 gs://cmip6/tracmip/Amon/aquaControl/MIROC5/pr/... \n", + "5284 gs://cmip6/tracmip/Amon/aquaControl/MPAS/pr/v2... \n", + "5324 gs://cmip6/tracmip/Amon/aquaControl/MetUM-CTL/... \n", + "5365 gs://cmip6/tracmip/Amon/aquaControl/MetUM-ENT/... " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_pr" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We are now going to read the data into a dictionary of xarray datasets." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# this only needs to be created once\n", + "gcs = gcsfs.GCSFileSystem(token='anon')\n", + "\n", + "# initialize an empty dictionary\n", + "ds_dict1=dict()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To this end, we loop over the source values to read the data of the individual models and to fill the dictionary. \n", + "As for the dictionary keys we use the model names." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "for zstore in df_pr.source.values:\n", + " mapper = gcs.get_mapper(zstore)\n", + " ds = xr.open_zarr(mapper, consolidated=True)\n", + " ds_dict1[ds.attrs['model_id']] = ds" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For the sake of demonstration, we print the dictionary content for the ECHAM61 model. " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n", + "<defs>\n", + "<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n", + "<title>Show/Hide data repr</title>\n", + "<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n", + "<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n", + "<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n", + "</symbol>\n", + "<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n", + "<title>Show/Hide attributes</title>\n", + "<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n", + "<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", + "<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", + "<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", + "</symbol>\n", + "</defs>\n", + "</svg>\n", + "<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n", + " *\n", + " */\n", + "\n", + ":root {\n", + " --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n", + " --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n", + " --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n", + " --xr-border-color: var(--jp-border-color2, #e0e0e0);\n", + " --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n", + " --xr-background-color: var(--jp-layout-color0, white);\n", + " --xr-background-color-row-even: var(--jp-layout-color1, white);\n", + " --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n", + "}\n", + "\n", + ".xr-wrap {\n", + " min-width: 300px;\n", + " max-width: 700px;\n", + "}\n", + "\n", + ".xr-header {\n", + " padding-top: 6px;\n", + " padding-bottom: 6px;\n", + " margin-bottom: 4px;\n", + " border-bottom: solid 1px var(--xr-border-color);\n", + "}\n", + "\n", + ".xr-header > div,\n", + ".xr-header > ul {\n", + " display: inline;\n", + " margin-top: 0;\n", + " margin-bottom: 0;\n", + "}\n", + "\n", + ".xr-obj-type,\n", + ".xr-array-name {\n", + " margin-left: 2px;\n", + " margin-right: 10px;\n", + "}\n", + "\n", + ".xr-obj-type {\n", + " color: var(--xr-font-color2);\n", + "}\n", + "\n", + ".xr-sections {\n", + " padding-left: 0 !important;\n", + " display: grid;\n", + " grid-template-columns: 150px auto auto 1fr 20px 20px;\n", + "}\n", + "\n", + ".xr-section-item {\n", + " display: contents;\n", + "}\n", + "\n", + ".xr-section-item input {\n", + " display: none;\n", + "}\n", + "\n", + ".xr-section-item input + label {\n", + " color: var(--xr-disabled-color);\n", + "}\n", + "\n", + ".xr-section-item input:enabled + label {\n", + " cursor: pointer;\n", + " color: var(--xr-font-color2);\n", + "}\n", + "\n", + ".xr-section-item input:enabled + label:hover {\n", + " color: var(--xr-font-color0);\n", + "}\n", + "\n", + ".xr-section-summary {\n", + " grid-column: 1;\n", + " color: var(--xr-font-color2);\n", + " font-weight: 500;\n", + "}\n", + "\n", + ".xr-section-summary > span {\n", + " display: inline-block;\n", + " padding-left: 0.5em;\n", + "}\n", + "\n", + ".xr-section-summary-in:disabled + label {\n", + " color: var(--xr-font-color2);\n", + "}\n", + "\n", + ".xr-section-summary-in + label:before {\n", + " display: inline-block;\n", + " content: '►';\n", + " font-size: 11px;\n", + " width: 15px;\n", + " text-align: center;\n", + "}\n", + "\n", + ".xr-section-summary-in:disabled + label:before {\n", + " color: var(--xr-disabled-color);\n", + "}\n", + "\n", + ".xr-section-summary-in:checked + label:before {\n", + " content: '▼';\n", + "}\n", + "\n", + ".xr-section-summary-in:checked + label > span {\n", + " display: none;\n", + "}\n", + "\n", + ".xr-section-summary,\n", + ".xr-section-inline-details {\n", + " padding-top: 4px;\n", + " padding-bottom: 4px;\n", + "}\n", + "\n", + ".xr-section-inline-details {\n", + " grid-column: 2 / -1;\n", + "}\n", + "\n", + ".xr-section-details {\n", + " display: none;\n", + " grid-column: 1 / -1;\n", + " margin-bottom: 5px;\n", + "}\n", + "\n", + ".xr-section-summary-in:checked ~ .xr-section-details {\n", + " display: contents;\n", + "}\n", + "\n", + ".xr-array-wrap {\n", + " grid-column: 1 / -1;\n", + " display: grid;\n", + " grid-template-columns: 20px auto;\n", + "}\n", + "\n", + ".xr-array-wrap > label {\n", + " grid-column: 1;\n", + " vertical-align: top;\n", + "}\n", + "\n", + ".xr-preview {\n", + " color: var(--xr-font-color3);\n", + "}\n", + "\n", + ".xr-array-preview,\n", + ".xr-array-data {\n", + " padding: 0 5px !important;\n", + " grid-column: 2;\n", + "}\n", + "\n", + ".xr-array-data,\n", + ".xr-array-in:checked ~ .xr-array-preview {\n", + " display: none;\n", + "}\n", + "\n", + ".xr-array-in:checked ~ .xr-array-data,\n", + ".xr-array-preview {\n", + " display: inline-block;\n", + "}\n", + "\n", + ".xr-dim-list {\n", + " display: inline-block !important;\n", + " list-style: none;\n", + " padding: 0 !important;\n", + " margin: 0;\n", + "}\n", + "\n", + ".xr-dim-list li {\n", + " display: inline-block;\n", + " padding: 0;\n", + " margin: 0;\n", + "}\n", + "\n", + ".xr-dim-list:before {\n", + " content: '(';\n", + "}\n", + "\n", + ".xr-dim-list:after {\n", + " content: ')';\n", + "}\n", + "\n", + ".xr-dim-list li:not(:last-child):after {\n", + " content: ',';\n", + " padding-right: 5px;\n", + "}\n", + "\n", + ".xr-has-index {\n", + " font-weight: bold;\n", + "}\n", + "\n", + ".xr-var-list,\n", + ".xr-var-item {\n", + " display: contents;\n", + "}\n", + "\n", + ".xr-var-item > div,\n", + ".xr-var-item label,\n", + ".xr-var-item > .xr-var-name span {\n", + " background-color: var(--xr-background-color-row-even);\n", + " margin-bottom: 0;\n", + "}\n", + "\n", + ".xr-var-item > .xr-var-name:hover span {\n", + " padding-right: 5px;\n", + "}\n", + "\n", + ".xr-var-list > li:nth-child(odd) > div,\n", + ".xr-var-list > li:nth-child(odd) > label,\n", + ".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n", + " background-color: var(--xr-background-color-row-odd);\n", + "}\n", + "\n", + ".xr-var-name {\n", + " grid-column: 1;\n", + "}\n", + "\n", + ".xr-var-dims {\n", + " grid-column: 2;\n", + "}\n", + "\n", + ".xr-var-dtype {\n", + " grid-column: 3;\n", + " text-align: right;\n", + " color: var(--xr-font-color2);\n", + "}\n", + "\n", + ".xr-var-preview {\n", + " grid-column: 4;\n", + "}\n", + "\n", + ".xr-var-name,\n", + ".xr-var-dims,\n", + ".xr-var-dtype,\n", + ".xr-preview,\n", + ".xr-attrs dt {\n", + " white-space: nowrap;\n", + " overflow: hidden;\n", + " text-overflow: ellipsis;\n", + " padding-right: 10px;\n", + "}\n", + "\n", + ".xr-var-name:hover,\n", + ".xr-var-dims:hover,\n", + ".xr-var-dtype:hover,\n", + ".xr-attrs dt:hover {\n", + " overflow: visible;\n", + " width: auto;\n", + " z-index: 1;\n", + "}\n", + "\n", + ".xr-var-attrs,\n", + ".xr-var-data {\n", + " display: none;\n", + " background-color: var(--xr-background-color) !important;\n", + " padding-bottom: 5px !important;\n", + "}\n", + "\n", + ".xr-var-attrs-in:checked ~ .xr-var-attrs,\n", + ".xr-var-data-in:checked ~ .xr-var-data {\n", + " display: block;\n", + "}\n", + "\n", + ".xr-var-data > table {\n", + " float: right;\n", + "}\n", + "\n", + ".xr-var-name span,\n", + ".xr-var-data,\n", + ".xr-attrs {\n", + " padding-left: 25px !important;\n", + "}\n", + "\n", + ".xr-attrs,\n", + ".xr-var-attrs,\n", + ".xr-var-data {\n", + " grid-column: 1 / -1;\n", + "}\n", + "\n", + "dl.xr-attrs {\n", + " padding: 0;\n", + " margin: 0;\n", + " display: grid;\n", + " grid-template-columns: 125px auto;\n", + "}\n", + "\n", + ".xr-attrs dt, dd {\n", + " padding: 0;\n", + " margin: 0;\n", + " float: left;\n", + " padding-right: 10px;\n", + " width: auto;\n", + "}\n", + "\n", + ".xr-attrs dt {\n", + " font-weight: normal;\n", + " grid-column: 1;\n", + "}\n", + "\n", + ".xr-attrs dt:hover span {\n", + " display: inline-block;\n", + " background: var(--xr-background-color);\n", + " padding-right: 10px;\n", + "}\n", + "\n", + ".xr-attrs dd {\n", + " grid-column: 2;\n", + " white-space: pre-wrap;\n", + " word-break: break-all;\n", + "}\n", + "\n", + ".xr-icon-database,\n", + ".xr-icon-file-text2 {\n", + " display: inline-block;\n", + " vertical-align: middle;\n", + " width: 1em;\n", + " height: 1.5em !important;\n", + " stroke-width: 0;\n", + " stroke: currentColor;\n", + " fill: currentColor;\n", + "}\n", + "</style><div class='xr-wrap'><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-2a2b574d-05ae-4617-8050-ab559d9a32bd' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-2a2b574d-05ae-4617-8050-ab559d9a32bd' class='xr-section-summary' title='Expand/collapse section'>Dimensions:</label><div class='xr-section-inline-details'><ul class='xr-dim-list'><li><span>bnds</span>: 2</li><li><span class='xr-has-index'>lat</span>: 96</li><li><span class='xr-has-index'>lon</span>: 192</li><li><span class='xr-has-index'>time</span>: 360</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-21d90331-39b1-499a-8967-55e2cc9575f1' class='xr-section-summary-in' type='checkbox' checked><label for='section-21d90331-39b1-499a-8967-55e2cc9575f1' class='xr-section-summary' >Coordinates: <span>(3)</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'>-88.57 -86.72 ... 86.72 88.57</div><input id='attrs-505b83f3-dbd4-49ba-84dd-1aa0f1fc800d' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-505b83f3-dbd4-49ba-84dd-1aa0f1fc800d' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-443a559e-b368-43b3-86e3-3cde1cb464f6' class='xr-var-data-in' type='checkbox'><label for='data-443a559e-b368-43b3-86e3-3cde1cb464f6' 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>axis :</span></dt><dd>Y</dd><dt><span>bounds :</span></dt><dd>lat_bnds</dd><dt><span>long_name :</span></dt><dd>latitude</dd><dt><span>standard_name :</span></dt><dd>latitude</dd><dt><span>units :</span></dt><dd>degrees_north</dd></dl></div><pre class='xr-var-data'>array([-88.572169, -86.722531, -84.86197 , -82.998942, -81.134977, -79.270559,\n", + " -77.405888, -75.541061, -73.676132, -71.811132, -69.946081, -68.080991,\n", + " -66.215872, -64.35073 , -62.485571, -60.620396, -58.755209, -56.890013,\n", + " -55.024808, -53.159595, -51.294377, -49.429154, -47.563926, -45.698694,\n", + " -43.833459, -41.96822 , -40.102979, -38.237736, -36.372491, -34.507243,\n", + " -32.641994, -30.776744, -28.911492, -27.046239, -25.180986, -23.315731,\n", + " -21.450475, -19.585219, -17.719962, -15.854704, -13.989446, -12.124187,\n", + " -10.258928, -8.393669, -6.528409, -4.66315 , -2.79789 , -0.93263 ,\n", + " 0.93263 , 2.79789 , 4.66315 , 6.528409, 8.393669, 10.258928,\n", + " 12.124187, 13.989446, 15.854704, 17.719962, 19.585219, 21.450475,\n", + " 23.315731, 25.180986, 27.046239, 28.911492, 30.776744, 32.641994,\n", + " 34.507243, 36.372491, 38.237736, 40.102979, 41.96822 , 43.833459,\n", + " 45.698694, 47.563926, 49.429154, 51.294377, 53.159595, 55.024808,\n", + " 56.890013, 58.755209, 60.620396, 62.485571, 64.35073 , 66.215872,\n", + " 68.080991, 69.946081, 71.811132, 73.676132, 75.541061, 77.405888,\n", + " 79.270559, 81.134977, 82.998942, 84.86197 , 86.722531, 88.572169])</pre></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.0 1.875 3.75 ... 356.2 358.1</div><input id='attrs-5e1367e3-119c-4c3c-ac7a-7a06e7a34db3' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-5e1367e3-119c-4c3c-ac7a-7a06e7a34db3' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-f0b6cdac-2f13-4dd2-abdf-f3cdc88a8fb4' class='xr-var-data-in' type='checkbox'><label for='data-f0b6cdac-2f13-4dd2-abdf-f3cdc88a8fb4' 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>axis :</span></dt><dd>X</dd><dt><span>bounds :</span></dt><dd>lon_bnds</dd><dt><span>long_name :</span></dt><dd>longitude</dd><dt><span>standard_name :</span></dt><dd>longitude</dd><dt><span>units :</span></dt><dd>degrees_east</dd></dl></div><pre class='xr-var-data'>array([ 0. , 1.875, 3.75 , 5.625, 7.5 , 9.375, 11.25 , 13.125,\n", + " 15. , 16.875, 18.75 , 20.625, 22.5 , 24.375, 26.25 , 28.125,\n", + " 30. , 31.875, 33.75 , 35.625, 37.5 , 39.375, 41.25 , 43.125,\n", + " 45. , 46.875, 48.75 , 50.625, 52.5 , 54.375, 56.25 , 58.125,\n", + " 60. , 61.875, 63.75 , 65.625, 67.5 , 69.375, 71.25 , 73.125,\n", + " 75. , 76.875, 78.75 , 80.625, 82.5 , 84.375, 86.25 , 88.125,\n", + " 90. , 91.875, 93.75 , 95.625, 97.5 , 99.375, 101.25 , 103.125,\n", + " 105. , 106.875, 108.75 , 110.625, 112.5 , 114.375, 116.25 , 118.125,\n", + " 120. , 121.875, 123.75 , 125.625, 127.5 , 129.375, 131.25 , 133.125,\n", + " 135. , 136.875, 138.75 , 140.625, 142.5 , 144.375, 146.25 , 148.125,\n", + " 150. , 151.875, 153.75 , 155.625, 157.5 , 159.375, 161.25 , 163.125,\n", + " 165. , 166.875, 168.75 , 170.625, 172.5 , 174.375, 176.25 , 178.125,\n", + " 180. , 181.875, 183.75 , 185.625, 187.5 , 189.375, 191.25 , 193.125,\n", + " 195. , 196.875, 198.75 , 200.625, 202.5 , 204.375, 206.25 , 208.125,\n", + " 210. , 211.875, 213.75 , 215.625, 217.5 , 219.375, 221.25 , 223.125,\n", + " 225. , 226.875, 228.75 , 230.625, 232.5 , 234.375, 236.25 , 238.125,\n", + " 240. , 241.875, 243.75 , 245.625, 247.5 , 249.375, 251.25 , 253.125,\n", + " 255. , 256.875, 258.75 , 260.625, 262.5 , 264.375, 266.25 , 268.125,\n", + " 270. , 271.875, 273.75 , 275.625, 277.5 , 279.375, 281.25 , 283.125,\n", + " 285. , 286.875, 288.75 , 290.625, 292.5 , 294.375, 296.25 , 298.125,\n", + " 300. , 301.875, 303.75 , 305.625, 307.5 , 309.375, 311.25 , 313.125,\n", + " 315. , 316.875, 318.75 , 320.625, 322.5 , 324.375, 326.25 , 328.125,\n", + " 330. , 331.875, 333.75 , 335.625, 337.5 , 339.375, 341.25 , 343.125,\n", + " 345. , 346.875, 348.75 , 350.625, 352.5 , 354.375, 356.25 , 358.125])</pre></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'>0016-01-16 00:00:00 ... 0045-12-16 00:00:00</div><input id='attrs-9c1b7247-cd33-4ab5-afcc-037676588cdc' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-9c1b7247-cd33-4ab5-afcc-037676588cdc' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-ab18aedc-6e03-4752-a811-b0e0e6031bf1' class='xr-var-data-in' type='checkbox'><label for='data-ab18aedc-6e03-4752-a811-b0e0e6031bf1' 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>axis :</span></dt><dd>T</dd><dt><span>bounds :</span></dt><dd>time_bnds</dd><dt><span>long_name :</span></dt><dd>time</dd><dt><span>standard_name :</span></dt><dd>time</dd></dl></div><pre class='xr-var-data'>array([cftime.Datetime360Day(0016-01-16 00:00:00),\n", + " cftime.Datetime360Day(0016-02-16 00:00:00),\n", + " cftime.Datetime360Day(0016-03-16 00:00:00), ...,\n", + " cftime.Datetime360Day(0045-10-16 00:00:00),\n", + " cftime.Datetime360Day(0045-11-16 00:00:00),\n", + " cftime.Datetime360Day(0045-12-16 00:00:00)], dtype=object)</pre></li></ul></div></li><li class='xr-section-item'><input id='section-30d66e1c-0a49-44f4-bec2-e456e01aca8d' class='xr-section-summary-in' type='checkbox' checked><label for='section-30d66e1c-0a49-44f4-bec2-e456e01aca8d' class='xr-section-summary' >Data variables: <span>(4)</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>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<chunksize=(96, 2), meta=np.ndarray></div><input id='attrs-066b77b0-0049-42a4-a1ff-7046adf21e98' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-066b77b0-0049-42a4-a1ff-7046adf21e98' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-b84a1c14-876f-4fed-a910-09f661b6e6d8' class='xr-var-data-in' type='checkbox'><label for='data-b84a1c14-876f-4fed-a910-09f661b6e6d8' 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><pre class='xr-var-data'><table>\n", + "<tr>\n", + "<td>\n", + "<table>\n", + " <thead>\n", + " <tr><td> </td><th> Array </th><th> Chunk </th></tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr><th> Bytes </th><td> 1.54 kB </td> <td> 1.54 kB </td></tr>\n", + " <tr><th> Shape </th><td> (96, 2) </td> <td> (96, 2) </td></tr>\n", + " <tr><th> Count </th><td> 2 Tasks </td><td> 1 Chunks </td></tr>\n", + " <tr><th> Type </th><td> float64 </td><td> numpy.ndarray </td></tr>\n", + " </tbody>\n", + "</table>\n", + "</td>\n", + "<td>\n", + "<svg width=\"79\" height=\"170\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"0\" y1=\"0\" x2=\"29\" y2=\"0\" style=\"stroke-width:2\" />\n", + " <line x1=\"0\" y1=\"120\" x2=\"29\" y2=\"120\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"120\" style=\"stroke-width:2\" />\n", + " <line x1=\"29\" y1=\"0\" x2=\"29\" y2=\"120\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"0.000000,0.000000 29.261234,0.000000 29.261234,120.000000 0.000000,120.000000\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", + "\n", + " <!-- Text -->\n", + " <text x=\"14.630617\" y=\"140.000000\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >2</text>\n", + " <text x=\"49.261234\" y=\"60.000000\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(0,49.261234,60.000000)\">96</text>\n", + "</svg>\n", + "</td>\n", + "</tr>\n", + "</table></pre></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<chunksize=(192, 2), meta=np.ndarray></div><input id='attrs-f79badef-7c67-4045-b2ea-b414761754c6' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-f79badef-7c67-4045-b2ea-b414761754c6' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-7a16d737-8373-432f-8d08-366dbb48350a' class='xr-var-data-in' type='checkbox'><label for='data-7a16d737-8373-432f-8d08-366dbb48350a' 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><pre class='xr-var-data'><table>\n", + "<tr>\n", + "<td>\n", + "<table>\n", + " <thead>\n", + " <tr><td> </td><th> Array </th><th> Chunk </th></tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr><th> Bytes </th><td> 3.07 kB </td> <td> 3.07 kB </td></tr>\n", + " <tr><th> Shape </th><td> (192, 2) </td> <td> (192, 2) </td></tr>\n", + " <tr><th> Count </th><td> 2 Tasks </td><td> 1 Chunks </td></tr>\n", + " <tr><th> Type </th><td> float64 </td><td> numpy.ndarray </td></tr>\n", + " </tbody>\n", + "</table>\n", + "</td>\n", + "<td>\n", + "<svg width=\"75\" height=\"170\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"0\" y1=\"0\" x2=\"25\" y2=\"0\" style=\"stroke-width:2\" />\n", + " <line x1=\"0\" y1=\"120\" x2=\"25\" y2=\"120\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"120\" style=\"stroke-width:2\" />\n", + " <line x1=\"25\" y1=\"0\" x2=\"25\" y2=\"120\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"0.000000,0.000000 25.609134,0.000000 25.609134,120.000000 0.000000,120.000000\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", + "\n", + " <!-- Text -->\n", + " <text x=\"12.804567\" y=\"140.000000\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >2</text>\n", + " <text x=\"45.609134\" y=\"60.000000\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,45.609134,60.000000)\">192</text>\n", + "</svg>\n", + "</td>\n", + "</tr>\n", + "</table></pre></li><li class='xr-var-item'><div class='xr-var-name'><span>pr</span></div><div class='xr-var-dims'>(time, lat, lon)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array<chunksize=(360, 96, 192), meta=np.ndarray></div><input id='attrs-e7b5cb01-fd78-45a7-9bb8-05b683d2c5c4' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-e7b5cb01-fd78-45a7-9bb8-05b683d2c5c4' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-0fba956a-f60c-425f-b762-dd030bdadf21' class='xr-var-data-in' type='checkbox'><label for='data-0fba956a-f60c-425f-b762-dd030bdadf21' 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>associated_files :</span></dt><dd>baseURL: https://www.sites.google.com/site/tracmip/ gridspecFile: gridspec_atmos_fx_ECHAM61_aquaControlTRACMIP_r0i0p0.nc areacella: areacella_fx_ECHAM61_aquaControlTRACMIP_r0i0p0.nc</dd><dt><span>cell_measures :</span></dt><dd>area: areacella</dd><dt><span>cell_methods :</span></dt><dd>time: mean</dd><dt><span>comment :</span></dt><dd>at surface; includes both liquid and solid phases from all types of clouds (both large-scale and convective)</dd><dt><span>history :</span></dt><dd>2018-02-25T12:21:01Z altered by CMOR: replaced missing value flag (-9e+33) with standard missing value (1e+20). 2018-02-25T12:21:01Z altered by CMOR: Inverted axis: lat.</dd><dt><span>long_name :</span></dt><dd>Precipitation</dd><dt><span>original_name :</span></dt><dd>pr</dd><dt><span>standard_name :</span></dt><dd>precipitation_flux</dd><dt><span>units :</span></dt><dd>kg m-2 s-1</dd></dl></div><pre class='xr-var-data'><table>\n", + "<tr>\n", + "<td>\n", + "<table>\n", + " <thead>\n", + " <tr><td> </td><th> Array </th><th> Chunk </th></tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr><th> Bytes </th><td> 26.54 MB </td> <td> 26.54 MB </td></tr>\n", + " <tr><th> Shape </th><td> (360, 96, 192) </td> <td> (360, 96, 192) </td></tr>\n", + " <tr><th> Count </th><td> 2 Tasks </td><td> 1 Chunks </td></tr>\n", + " <tr><th> Type </th><td> float32 </td><td> numpy.ndarray </td></tr>\n", + " </tbody>\n", + "</table>\n", + "</td>\n", + "<td>\n", + "<svg width=\"194\" height=\"163\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n", + " <line x1=\"10\" y1=\"43\" x2=\"80\" y2=\"113\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"10\" y2=\"43\" style=\"stroke-width:2\" />\n", + " <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"113\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"10.000000,0.000000 80.588235,70.588235 80.588235,113.723911 10.000000,43.135675\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"74\" y2=\"0\" style=\"stroke-width:2\" />\n", + " <line x1=\"80\" y1=\"70\" x2=\"144\" y2=\"70\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n", + " <line x1=\"74\" y1=\"0\" x2=\"144\" y2=\"70\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"10.000000,0.000000 74.000000,0.000000 144.588235,70.588235 80.588235,70.588235\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"80\" y1=\"70\" x2=\"144\" y2=\"70\" style=\"stroke-width:2\" />\n", + " <line x1=\"80\" y1=\"113\" x2=\"144\" y2=\"113\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"113\" style=\"stroke-width:2\" />\n", + " <line x1=\"144\" y1=\"70\" x2=\"144\" y2=\"113\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"80.588235,70.588235 144.588235,70.588235 144.588235,113.723911 80.588235,113.723911\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", + "\n", + " <!-- Text -->\n", + " <text x=\"112.588235\" y=\"133.723911\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >192</text>\n", + " <text x=\"164.588235\" y=\"92.156073\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(0,164.588235,92.156073)\">96</text>\n", + " <text x=\"35.294118\" y=\"98.429793\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(45,35.294118,98.429793)\">360</text>\n", + "</svg>\n", + "</td>\n", + "</tr>\n", + "</table></pre></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<chunksize=(360, 2), meta=np.ndarray></div><input id='attrs-766fd7de-6a82-4990-9e37-5c01c79c2b06' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-766fd7de-6a82-4990-9e37-5c01c79c2b06' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-e16cef48-1614-430e-b519-d25c068c383b' class='xr-var-data-in' type='checkbox'><label for='data-e16cef48-1614-430e-b519-d25c068c383b' 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><pre class='xr-var-data'><table>\n", + "<tr>\n", + "<td>\n", + "<table>\n", + " <thead>\n", + " <tr><td> </td><th> Array </th><th> Chunk </th></tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr><th> Bytes </th><td> 5.76 kB </td> <td> 5.76 kB </td></tr>\n", + " <tr><th> Shape </th><td> (360, 2) </td> <td> (360, 2) </td></tr>\n", + " <tr><th> Count </th><td> 2 Tasks </td><td> 1 Chunks </td></tr>\n", + " <tr><th> Type </th><td> object </td><td> numpy.ndarray </td></tr>\n", + " </tbody>\n", + "</table>\n", + "</td>\n", + "<td>\n", + "<svg width=\"75\" height=\"170\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"0\" y1=\"0\" x2=\"25\" y2=\"0\" style=\"stroke-width:2\" />\n", + " <line x1=\"0\" y1=\"120\" x2=\"25\" y2=\"120\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"120\" style=\"stroke-width:2\" />\n", + " <line x1=\"25\" y1=\"0\" x2=\"25\" y2=\"120\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"0.000000,0.000000 25.412617,0.000000 25.412617,120.000000 0.000000,120.000000\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", + "\n", + " <!-- Text -->\n", + " <text x=\"12.706308\" y=\"140.000000\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >2</text>\n", + " <text x=\"45.412617\" y=\"60.000000\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,45.412617,60.000000)\">360</text>\n", + "</svg>\n", + "</td>\n", + "</tr>\n", + "</table></pre></li></ul></div></li><li class='xr-section-item'><input id='section-a9fe80b9-902b-4fe8-8759-af952f6c8417' class='xr-section-summary-in' type='checkbox' ><label for='section-a9fe80b9-902b-4fe8-8759-af952f6c8417' class='xr-section-summary' >Attributes: <span>(28)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'><dt><span>Conventions :</span></dt><dd>CF-1.4</dd><dt><span>branch_time :</span></dt><dd>0.0</dd><dt><span>cmor_version :</span></dt><dd>2.9.1</dd><dt><span>comment :</span></dt><dd>aqua planet control of TRACMIP; for TRACMIP see Voigt et al., 2016, The Tropical Rain belts with an Annual cycle and a Continent Model Intercomparison Project: TRACMIP, 9, 1868–1891, doi:10.1002/2016MS000748</dd><dt><span>contact :</span></dt><dd>aiko@ldeo.columbia.edu; aiko.voigt@kit.edu</dd><dt><span>creation_date :</span></dt><dd>2018-02-25T12:21:01Z</dd><dt><span>experiment :</span></dt><dd>aqua planet control of TRACMIP</dd><dt><span>experiment_id :</span></dt><dd>aquaControlTRACMIP</dd><dt><span>forcing :</span></dt><dd>CTRL</dd><dt><span>frequency :</span></dt><dd>mon</dd><dt><span>history :</span></dt><dd>N/A 2018-02-25T12:21:01Z CMOR rewrote data to comply with CF standards and TRACMIP requirements.</dd><dt><span>initialization_method :</span></dt><dd>1</dd><dt><span>institute_id :</span></dt><dd>LDEO</dd><dt><span>institution :</span></dt><dd>Lamont-Doherty Earth Observatory, Columbia University; Karlsruhe Institute of Technology</dd><dt><span>model_id :</span></dt><dd>ECHAM61</dd><dt><span>modeling_realm :</span></dt><dd>atmos</dd><dt><span>parent_experiment :</span></dt><dd>N/A</dd><dt><span>parent_experiment_id :</span></dt><dd>N/A</dd><dt><span>parent_experiment_rip :</span></dt><dd>N/A</dd><dt><span>physics_version :</span></dt><dd>1</dd><dt><span>product :</span></dt><dd>output</dd><dt><span>project_id :</span></dt><dd>TRACMIP</dd><dt><span>realization :</span></dt><dd>1</dd><dt><span>references :</span></dt><dd>ECHAM6.1: Stevens et al., 2013, Atmospheric component of the MPI-M Earth System Model: ECHAM6, JAMES, 5, 146-172, doi:10.1002/jame.2015;</dd><dt><span>source :</span></dt><dd>ECHAM61, 2013, T63, 47 levels;</dd><dt><span>table_id :</span></dt><dd>Table Amon (11 September 2017) b0abd1a83fe45ef2ed9e415b249165bd</dd><dt><span>title :</span></dt><dd>ECHAM61 model output prepared for TRACMIP aqua planet control of TRACMIP</dd><dt><span>tracking_id :</span></dt><dd>a6042360-356a-4d4e-8357-9699f6c18da1</dd></dl></div></li></ul></div></div>" + ], + "text/plain": [ + "<xarray.Dataset>\n", + "Dimensions: (bnds: 2, lat: 96, lon: 192, time: 360)\n", + "Coordinates:\n", + " * lat (lat) float64 -88.57 -86.72 -84.86 -83.0 ... 84.86 86.72 88.57\n", + " * lon (lon) float64 0.0 1.875 3.75 5.625 ... 352.5 354.4 356.2 358.1\n", + " * time (time) object 0016-01-16 00:00:00 ... 0045-12-16 00:00:00\n", + "Dimensions without coordinates: bnds\n", + "Data variables:\n", + " lat_bnds (lat, bnds) float64 dask.array<chunksize=(96, 2), meta=np.ndarray>\n", + " lon_bnds (lon, bnds) float64 dask.array<chunksize=(192, 2), meta=np.ndarray>\n", + " pr (time, lat, lon) float32 dask.array<chunksize=(360, 96, 192), meta=np.ndarray>\n", + " time_bnds (time, bnds) object dask.array<chunksize=(360, 2), meta=np.ndarray>\n", + "Attributes:\n", + " Conventions: CF-1.4\n", + " branch_time: 0.0\n", + " cmor_version: 2.9.1\n", + " comment: aqua planet control of TRACMIP; for TRACMIP see V...\n", + " contact: aiko@ldeo.columbia.edu; aiko.voigt@kit.edu\n", + " creation_date: 2018-02-25T12:21:01Z\n", + " experiment: aqua planet control of TRACMIP\n", + " experiment_id: aquaControlTRACMIP\n", + " forcing: CTRL\n", + " frequency: mon\n", + " history: N/A 2018-02-25T12:21:01Z CMOR rewrote data to com...\n", + " initialization_method: 1\n", + " institute_id: LDEO\n", + " institution: Lamont-Doherty Earth Observatory, Columbia Univer...\n", + " model_id: ECHAM61\n", + " modeling_realm: atmos\n", + " parent_experiment: N/A\n", + " parent_experiment_id: N/A\n", + " parent_experiment_rip: N/A\n", + " physics_version: 1\n", + " product: output\n", + " project_id: TRACMIP\n", + " realization: 1\n", + " references: ECHAM6.1: Stevens et al., 2013, Atmospheric compo...\n", + " source: ECHAM61, 2013, T63, 47 levels;\n", + " table_id: Table Amon (11 September 2017) b0abd1a83fe45ef2ed...\n", + " title: ECHAM61 model output prepared for TRACMIP aqua pl...\n", + " tracking_id: a6042360-356a-4d4e-8357-9699f6c18da1" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ds_dict1['ECHAM61']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aproach 2 via intake\n", + "\n", + "This approach was developed with help by Charles Christopher Blackmon Luca." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "from intake import open_catalog" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "# get the entire Pangeo catalogue ...\n", + "cat = open_catalog(\"https://raw.githubusercontent.com/pangeo-data/pangeo-datastore/master/intake-catalogs/climate.yaml\")\n", + "# ... and select TRACMIP collection\n", + "col = cat.tracmip()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For illustration, we look at some basic information of the TRACMIP collection. AS expected, there is 3 output frequencies (monthly-mean, daily-mean, 3-hr snapshots), 11 experiments (6 are due to the CALTECH model with changed atmosperic opacity), and 47 variables" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<p><strong>pangeo-tracmip catalog with 187 dataset(s) from 7067 asset(s)</strong>:</p> <div>\n", + "<style scoped>\n", + " .dataframe tbody tr th:only-of-type {\n", + " vertical-align: middle;\n", + " }\n", + "\n", + " .dataframe tbody tr th {\n", + " vertical-align: top;\n", + " }\n", + "\n", + " .dataframe thead th {\n", + " text-align: right;\n", + " }\n", + "</style>\n", + "<table border=\"1\" class=\"dataframe\">\n", + " <thead>\n", + " <tr style=\"text-align: right;\">\n", + " <th></th>\n", + " <th>unique</th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr>\n", + " <th>frequency</th>\n", + " <td>3</td>\n", + " </tr>\n", + " <tr>\n", + " <th>experiment</th>\n", + " <td>11</td>\n", + " </tr>\n", + " <tr>\n", + " <th>model</th>\n", + " <td>14</td>\n", + " </tr>\n", + " <tr>\n", + " <th>variable</th>\n", + " <td>47</td>\n", + " </tr>\n", + " <tr>\n", + " <th>version</th>\n", + " <td>10</td>\n", + " </tr>\n", + " <tr>\n", + " <th>source</th>\n", + " <td>7067</td>\n", + " </tr>\n", + " </tbody>\n", + "</table>\n", + "</div>" + ], + "text/plain": [ + "<pangeo-tracmip catalog with 187 dataset(s) from 7067 asset(s)>" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "col" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To make ourselves a bit more familiar with the collection we print its starting and end portion to screen. This looks just as for appraoch 1, as it must be." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<div>\n", + "<style scoped>\n", + " .dataframe tbody tr th:only-of-type {\n", + " vertical-align: middle;\n", + " }\n", + "\n", + " .dataframe tbody tr th {\n", + " vertical-align: top;\n", + " }\n", + "\n", + " .dataframe thead th {\n", + " text-align: right;\n", + " }\n", + "</style>\n", + "<table border=\"1\" class=\"dataframe\">\n", + " <thead>\n", + " <tr style=\"text-align: right;\">\n", + " <th></th>\n", + " <th>frequency</th>\n", + " <th>experiment</th>\n", + " <th>model</th>\n", + " <th>variable</th>\n", + " <th>version</th>\n", + " <th>source</th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr>\n", + " <th>0</th>\n", + " <td>A3hr</td>\n", + " <td>aqua4xCO2</td>\n", + " <td>AM21</td>\n", + " <td>hur</td>\n", + " <td>v20190116</td>\n", + " <td>gs://cmip6/tracmip/A3hr/aqua4xCO2/AM21/hur/v20...</td>\n", + " </tr>\n", + " <tr>\n", + " <th>1</th>\n", + " <td>A3hr</td>\n", + " <td>aqua4xCO2</td>\n", + " <td>AM21</td>\n", + " <td>hus</td>\n", + " <td>v20190116</td>\n", + " <td>gs://cmip6/tracmip/A3hr/aqua4xCO2/AM21/hus/v20...</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2</th>\n", + " <td>A3hr</td>\n", + " <td>aqua4xCO2</td>\n", + " <td>AM21</td>\n", + " <td>ta</td>\n", + " <td>v20190116</td>\n", + " <td>gs://cmip6/tracmip/A3hr/aqua4xCO2/AM21/ta/v201...</td>\n", + " </tr>\n", + " <tr>\n", + " <th>3</th>\n", + " <td>A3hr</td>\n", + " <td>aqua4xCO2</td>\n", + " <td>AM21</td>\n", + " <td>ua</td>\n", + " <td>v20190116</td>\n", + " <td>gs://cmip6/tracmip/A3hr/aqua4xCO2/AM21/ua/v201...</td>\n", + " </tr>\n", + " <tr>\n", + " <th>4</th>\n", + " <td>A3hr</td>\n", + " <td>aqua4xCO2</td>\n", + " <td>AM21</td>\n", + " <td>va</td>\n", + " <td>v20190116</td>\n", + " <td>gs://cmip6/tracmip/A3hr/aqua4xCO2/AM21/va/v201...</td>\n", + " </tr>\n", + " </tbody>\n", + "</table>\n", + "</div>" + ], + "text/plain": [ + " frequency experiment model variable version \\\n", + "0 A3hr aqua4xCO2 AM21 hur v20190116 \n", + "1 A3hr aqua4xCO2 AM21 hus v20190116 \n", + "2 A3hr aqua4xCO2 AM21 ta v20190116 \n", + "3 A3hr aqua4xCO2 AM21 ua v20190116 \n", + "4 A3hr aqua4xCO2 AM21 va v20190116 \n", + "\n", + " source \n", + "0 gs://cmip6/tracmip/A3hr/aqua4xCO2/AM21/hur/v20... \n", + "1 gs://cmip6/tracmip/A3hr/aqua4xCO2/AM21/hus/v20... \n", + "2 gs://cmip6/tracmip/A3hr/aqua4xCO2/AM21/ta/v201... \n", + "3 gs://cmip6/tracmip/A3hr/aqua4xCO2/AM21/ua/v201... \n", + "4 gs://cmip6/tracmip/A3hr/aqua4xCO2/AM21/va/v201... " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "col.df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<div>\n", + "<style scoped>\n", + " .dataframe tbody tr th:only-of-type {\n", + " vertical-align: middle;\n", + " }\n", + "\n", + " .dataframe tbody tr th {\n", + " vertical-align: top;\n", + " }\n", + "\n", + " .dataframe thead th {\n", + " text-align: right;\n", + " }\n", + "</style>\n", + "<table border=\"1\" class=\"dataframe\">\n", + " <thead>\n", + " <tr style=\"text-align: right;\">\n", + " <th></th>\n", + " <th>frequency</th>\n", + " <th>experiment</th>\n", + " <th>model</th>\n", + " <th>variable</th>\n", + " <th>version</th>\n", + " <th>source</th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr>\n", + " <th>7062</th>\n", + " <td>Amon</td>\n", + " <td>landOrbit</td>\n", + " <td>MetUM-ENT</td>\n", + " <td>uas</td>\n", + " <td>v20180423</td>\n", + " <td>gs://cmip6/tracmip/Amon/landOrbit/MetUM-ENT/ua...</td>\n", + " </tr>\n", + " <tr>\n", + " <th>7063</th>\n", + " <td>Amon</td>\n", + " <td>landOrbit</td>\n", + " <td>MetUM-ENT</td>\n", + " <td>va</td>\n", + " <td>v20180423</td>\n", + " <td>gs://cmip6/tracmip/Amon/landOrbit/MetUM-ENT/va...</td>\n", + " </tr>\n", + " <tr>\n", + " <th>7064</th>\n", + " <td>Amon</td>\n", + " <td>landOrbit</td>\n", + " <td>MetUM-ENT</td>\n", + " <td>vas</td>\n", + " <td>v20180423</td>\n", + " <td>gs://cmip6/tracmip/Amon/landOrbit/MetUM-ENT/va...</td>\n", + " </tr>\n", + " <tr>\n", + " <th>7065</th>\n", + " <td>Amon</td>\n", + " <td>landOrbit</td>\n", + " <td>MetUM-ENT</td>\n", + " <td>wap</td>\n", + " <td>v20180423</td>\n", + " <td>gs://cmip6/tracmip/Amon/landOrbit/MetUM-ENT/wa...</td>\n", + " </tr>\n", + " <tr>\n", + " <th>7066</th>\n", + " <td>Amon</td>\n", + " <td>landOrbit</td>\n", + " <td>MetUM-ENT</td>\n", + " <td>zg</td>\n", + " <td>v20180423</td>\n", + " <td>gs://cmip6/tracmip/Amon/landOrbit/MetUM-ENT/zg...</td>\n", + " </tr>\n", + " </tbody>\n", + "</table>\n", + "</div>" + ], + "text/plain": [ + " frequency experiment model variable version \\\n", + "7062 Amon landOrbit MetUM-ENT uas v20180423 \n", + "7063 Amon landOrbit MetUM-ENT va v20180423 \n", + "7064 Amon landOrbit MetUM-ENT vas v20180423 \n", + "7065 Amon landOrbit MetUM-ENT wap v20180423 \n", + "7066 Amon landOrbit MetUM-ENT zg v20180423 \n", + "\n", + " source \n", + "7062 gs://cmip6/tracmip/Amon/landOrbit/MetUM-ENT/ua... \n", + "7063 gs://cmip6/tracmip/Amon/landOrbit/MetUM-ENT/va... \n", + "7064 gs://cmip6/tracmip/Amon/landOrbit/MetUM-ENT/va... \n", + "7065 gs://cmip6/tracmip/Amon/landOrbit/MetUM-ENT/wa... \n", + "7066 gs://cmip6/tracmip/Amon/landOrbit/MetUM-ENT/zg... " + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "col.df.tail()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we load the monthly-mean precip data for the aquaControl experiment into a dictionary, in analogy to what we did for approach 1.\n", + "\n", + "Note: the option \"zarr_kwargs={'consolidated': True}\" for to_dataset_dicts does not seem necessary but is still included here." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Dataset(s): 0%| | 0/14 [00:00<?, ?it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "--> The keys in the returned dictionary of datasets are constructed as follows:\n", + "\t'model.experiment.frequency'\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Dataset(s): 100%|██████████████████████████████| 14/14 [00:07<00:00, 1.79it/s]\n" + ] + } + ], + "source": [ + "ds_dict2 = col.search(frequency=\"Amon\", experiment=\"aquaControl\",\n", + " variable=\"pr\").to_dataset_dict(zarr_kwargs={'consolidated': True})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For the sake of demonstration, we print the dictionary content for the ECHAM61 model. Note that the keys are now 'model.experiment.frequency'." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n", + "<defs>\n", + "<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n", + "<title>Show/Hide data repr</title>\n", + "<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n", + "<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n", + "<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n", + "</symbol>\n", + "<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n", + "<title>Show/Hide attributes</title>\n", + "<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n", + "<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", + "<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", + "<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", + "</symbol>\n", + "</defs>\n", + "</svg>\n", + "<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n", + " *\n", + " */\n", + "\n", + ":root {\n", + " --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n", + " --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n", + " --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n", + " --xr-border-color: var(--jp-border-color2, #e0e0e0);\n", + " --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n", + " --xr-background-color: var(--jp-layout-color0, white);\n", + " --xr-background-color-row-even: var(--jp-layout-color1, white);\n", + " --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n", + "}\n", + "\n", + ".xr-wrap {\n", + " min-width: 300px;\n", + " max-width: 700px;\n", + "}\n", + "\n", + ".xr-header {\n", + " padding-top: 6px;\n", + " padding-bottom: 6px;\n", + " margin-bottom: 4px;\n", + " border-bottom: solid 1px var(--xr-border-color);\n", + "}\n", + "\n", + ".xr-header > div,\n", + ".xr-header > ul {\n", + " display: inline;\n", + " margin-top: 0;\n", + " margin-bottom: 0;\n", + "}\n", + "\n", + ".xr-obj-type,\n", + ".xr-array-name {\n", + " margin-left: 2px;\n", + " margin-right: 10px;\n", + "}\n", + "\n", + ".xr-obj-type {\n", + " color: var(--xr-font-color2);\n", + "}\n", + "\n", + ".xr-sections {\n", + " padding-left: 0 !important;\n", + " display: grid;\n", + " grid-template-columns: 150px auto auto 1fr 20px 20px;\n", + "}\n", + "\n", + ".xr-section-item {\n", + " display: contents;\n", + "}\n", + "\n", + ".xr-section-item input {\n", + " display: none;\n", + "}\n", + "\n", + ".xr-section-item input + label {\n", + " color: var(--xr-disabled-color);\n", + "}\n", + "\n", + ".xr-section-item input:enabled + label {\n", + " cursor: pointer;\n", + " color: var(--xr-font-color2);\n", + "}\n", + "\n", + ".xr-section-item input:enabled + label:hover {\n", + " color: var(--xr-font-color0);\n", + "}\n", + "\n", + ".xr-section-summary {\n", + " grid-column: 1;\n", + " color: var(--xr-font-color2);\n", + " font-weight: 500;\n", + "}\n", + "\n", + ".xr-section-summary > span {\n", + " display: inline-block;\n", + " padding-left: 0.5em;\n", + "}\n", + "\n", + ".xr-section-summary-in:disabled + label {\n", + " color: var(--xr-font-color2);\n", + "}\n", + "\n", + ".xr-section-summary-in + label:before {\n", + " display: inline-block;\n", + " content: '►';\n", + " font-size: 11px;\n", + " width: 15px;\n", + " text-align: center;\n", + "}\n", + "\n", + ".xr-section-summary-in:disabled + label:before {\n", + " color: var(--xr-disabled-color);\n", + "}\n", + "\n", + ".xr-section-summary-in:checked + label:before {\n", + " content: '▼';\n", + "}\n", + "\n", + ".xr-section-summary-in:checked + label > span {\n", + " display: none;\n", + "}\n", + "\n", + ".xr-section-summary,\n", + ".xr-section-inline-details {\n", + " padding-top: 4px;\n", + " padding-bottom: 4px;\n", + "}\n", + "\n", + ".xr-section-inline-details {\n", + " grid-column: 2 / -1;\n", + "}\n", + "\n", + ".xr-section-details {\n", + " display: none;\n", + " grid-column: 1 / -1;\n", + " margin-bottom: 5px;\n", + "}\n", + "\n", + ".xr-section-summary-in:checked ~ .xr-section-details {\n", + " display: contents;\n", + "}\n", + "\n", + ".xr-array-wrap {\n", + " grid-column: 1 / -1;\n", + " display: grid;\n", + " grid-template-columns: 20px auto;\n", + "}\n", + "\n", + ".xr-array-wrap > label {\n", + " grid-column: 1;\n", + " vertical-align: top;\n", + "}\n", + "\n", + ".xr-preview {\n", + " color: var(--xr-font-color3);\n", + "}\n", + "\n", + ".xr-array-preview,\n", + ".xr-array-data {\n", + " padding: 0 5px !important;\n", + " grid-column: 2;\n", + "}\n", + "\n", + ".xr-array-data,\n", + ".xr-array-in:checked ~ .xr-array-preview {\n", + " display: none;\n", + "}\n", + "\n", + ".xr-array-in:checked ~ .xr-array-data,\n", + ".xr-array-preview {\n", + " display: inline-block;\n", + "}\n", + "\n", + ".xr-dim-list {\n", + " display: inline-block !important;\n", + " list-style: none;\n", + " padding: 0 !important;\n", + " margin: 0;\n", + "}\n", + "\n", + ".xr-dim-list li {\n", + " display: inline-block;\n", + " padding: 0;\n", + " margin: 0;\n", + "}\n", + "\n", + ".xr-dim-list:before {\n", + " content: '(';\n", + "}\n", + "\n", + ".xr-dim-list:after {\n", + " content: ')';\n", + "}\n", + "\n", + ".xr-dim-list li:not(:last-child):after {\n", + " content: ',';\n", + " padding-right: 5px;\n", + "}\n", + "\n", + ".xr-has-index {\n", + " font-weight: bold;\n", + "}\n", + "\n", + ".xr-var-list,\n", + ".xr-var-item {\n", + " display: contents;\n", + "}\n", + "\n", + ".xr-var-item > div,\n", + ".xr-var-item label,\n", + ".xr-var-item > .xr-var-name span {\n", + " background-color: var(--xr-background-color-row-even);\n", + " margin-bottom: 0;\n", + "}\n", + "\n", + ".xr-var-item > .xr-var-name:hover span {\n", + " padding-right: 5px;\n", + "}\n", + "\n", + ".xr-var-list > li:nth-child(odd) > div,\n", + ".xr-var-list > li:nth-child(odd) > label,\n", + ".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n", + " background-color: var(--xr-background-color-row-odd);\n", + "}\n", + "\n", + ".xr-var-name {\n", + " grid-column: 1;\n", + "}\n", + "\n", + ".xr-var-dims {\n", + " grid-column: 2;\n", + "}\n", + "\n", + ".xr-var-dtype {\n", + " grid-column: 3;\n", + " text-align: right;\n", + " color: var(--xr-font-color2);\n", + "}\n", + "\n", + ".xr-var-preview {\n", + " grid-column: 4;\n", + "}\n", + "\n", + ".xr-var-name,\n", + ".xr-var-dims,\n", + ".xr-var-dtype,\n", + ".xr-preview,\n", + ".xr-attrs dt {\n", + " white-space: nowrap;\n", + " overflow: hidden;\n", + " text-overflow: ellipsis;\n", + " padding-right: 10px;\n", + "}\n", + "\n", + ".xr-var-name:hover,\n", + ".xr-var-dims:hover,\n", + ".xr-var-dtype:hover,\n", + ".xr-attrs dt:hover {\n", + " overflow: visible;\n", + " width: auto;\n", + " z-index: 1;\n", + "}\n", + "\n", + ".xr-var-attrs,\n", + ".xr-var-data {\n", + " display: none;\n", + " background-color: var(--xr-background-color) !important;\n", + " padding-bottom: 5px !important;\n", + "}\n", + "\n", + ".xr-var-attrs-in:checked ~ .xr-var-attrs,\n", + ".xr-var-data-in:checked ~ .xr-var-data {\n", + " display: block;\n", + "}\n", + "\n", + ".xr-var-data > table {\n", + " float: right;\n", + "}\n", + "\n", + ".xr-var-name span,\n", + ".xr-var-data,\n", + ".xr-attrs {\n", + " padding-left: 25px !important;\n", + "}\n", + "\n", + ".xr-attrs,\n", + ".xr-var-attrs,\n", + ".xr-var-data {\n", + " grid-column: 1 / -1;\n", + "}\n", + "\n", + "dl.xr-attrs {\n", + " padding: 0;\n", + " margin: 0;\n", + " display: grid;\n", + " grid-template-columns: 125px auto;\n", + "}\n", + "\n", + ".xr-attrs dt, dd {\n", + " padding: 0;\n", + " margin: 0;\n", + " float: left;\n", + " padding-right: 10px;\n", + " width: auto;\n", + "}\n", + "\n", + ".xr-attrs dt {\n", + " font-weight: normal;\n", + " grid-column: 1;\n", + "}\n", + "\n", + ".xr-attrs dt:hover span {\n", + " display: inline-block;\n", + " background: var(--xr-background-color);\n", + " padding-right: 10px;\n", + "}\n", + "\n", + ".xr-attrs dd {\n", + " grid-column: 2;\n", + " white-space: pre-wrap;\n", + " word-break: break-all;\n", + "}\n", + "\n", + ".xr-icon-database,\n", + ".xr-icon-file-text2 {\n", + " display: inline-block;\n", + " vertical-align: middle;\n", + " width: 1em;\n", + " height: 1.5em !important;\n", + " stroke-width: 0;\n", + " stroke: currentColor;\n", + " fill: currentColor;\n", + "}\n", + "</style><div class='xr-wrap'><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-cf22e0f1-e901-4086-90d9-7faa38e684f8' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-cf22e0f1-e901-4086-90d9-7faa38e684f8' class='xr-section-summary' title='Expand/collapse section'>Dimensions:</label><div class='xr-section-inline-details'><ul class='xr-dim-list'><li><span>bnds</span>: 2</li><li><span class='xr-has-index'>lat</span>: 96</li><li><span class='xr-has-index'>lon</span>: 192</li><li><span class='xr-has-index'>time</span>: 360</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-b0ebef32-7d55-449e-9f9d-504a494c7351' class='xr-section-summary-in' type='checkbox' checked><label for='section-b0ebef32-7d55-449e-9f9d-504a494c7351' class='xr-section-summary' >Coordinates: <span>(3)</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'>-88.57 -86.72 ... 86.72 88.57</div><input id='attrs-6bdcbfb9-c2c4-407d-9c99-875718ab5d3d' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-6bdcbfb9-c2c4-407d-9c99-875718ab5d3d' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-2705f8c0-ef9e-4b47-ac06-a843bd1509d6' class='xr-var-data-in' type='checkbox'><label for='data-2705f8c0-ef9e-4b47-ac06-a843bd1509d6' 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>axis :</span></dt><dd>Y</dd><dt><span>bounds :</span></dt><dd>lat_bnds</dd><dt><span>long_name :</span></dt><dd>latitude</dd><dt><span>standard_name :</span></dt><dd>latitude</dd><dt><span>units :</span></dt><dd>degrees_north</dd></dl></div><pre class='xr-var-data'>array([-88.572169, -86.722531, -84.86197 , -82.998942, -81.134977, -79.270559,\n", + " -77.405888, -75.541061, -73.676132, -71.811132, -69.946081, -68.080991,\n", + " -66.215872, -64.35073 , -62.485571, -60.620396, -58.755209, -56.890013,\n", + " -55.024808, -53.159595, -51.294377, -49.429154, -47.563926, -45.698694,\n", + " -43.833459, -41.96822 , -40.102979, -38.237736, -36.372491, -34.507243,\n", + " -32.641994, -30.776744, -28.911492, -27.046239, -25.180986, -23.315731,\n", + " -21.450475, -19.585219, -17.719962, -15.854704, -13.989446, -12.124187,\n", + " -10.258928, -8.393669, -6.528409, -4.66315 , -2.79789 , -0.93263 ,\n", + " 0.93263 , 2.79789 , 4.66315 , 6.528409, 8.393669, 10.258928,\n", + " 12.124187, 13.989446, 15.854704, 17.719962, 19.585219, 21.450475,\n", + " 23.315731, 25.180986, 27.046239, 28.911492, 30.776744, 32.641994,\n", + " 34.507243, 36.372491, 38.237736, 40.102979, 41.96822 , 43.833459,\n", + " 45.698694, 47.563926, 49.429154, 51.294377, 53.159595, 55.024808,\n", + " 56.890013, 58.755209, 60.620396, 62.485571, 64.35073 , 66.215872,\n", + " 68.080991, 69.946081, 71.811132, 73.676132, 75.541061, 77.405888,\n", + " 79.270559, 81.134977, 82.998942, 84.86197 , 86.722531, 88.572169])</pre></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.0 1.875 3.75 ... 356.2 358.1</div><input id='attrs-c5fe4eb7-0f1d-4c70-bee9-585a223790d8' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-c5fe4eb7-0f1d-4c70-bee9-585a223790d8' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-eac6b863-de29-46f6-afe2-0ef8164de635' class='xr-var-data-in' type='checkbox'><label for='data-eac6b863-de29-46f6-afe2-0ef8164de635' 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>axis :</span></dt><dd>X</dd><dt><span>bounds :</span></dt><dd>lon_bnds</dd><dt><span>long_name :</span></dt><dd>longitude</dd><dt><span>standard_name :</span></dt><dd>longitude</dd><dt><span>units :</span></dt><dd>degrees_east</dd></dl></div><pre class='xr-var-data'>array([ 0. , 1.875, 3.75 , 5.625, 7.5 , 9.375, 11.25 , 13.125,\n", + " 15. , 16.875, 18.75 , 20.625, 22.5 , 24.375, 26.25 , 28.125,\n", + " 30. , 31.875, 33.75 , 35.625, 37.5 , 39.375, 41.25 , 43.125,\n", + " 45. , 46.875, 48.75 , 50.625, 52.5 , 54.375, 56.25 , 58.125,\n", + " 60. , 61.875, 63.75 , 65.625, 67.5 , 69.375, 71.25 , 73.125,\n", + " 75. , 76.875, 78.75 , 80.625, 82.5 , 84.375, 86.25 , 88.125,\n", + " 90. , 91.875, 93.75 , 95.625, 97.5 , 99.375, 101.25 , 103.125,\n", + " 105. , 106.875, 108.75 , 110.625, 112.5 , 114.375, 116.25 , 118.125,\n", + " 120. , 121.875, 123.75 , 125.625, 127.5 , 129.375, 131.25 , 133.125,\n", + " 135. , 136.875, 138.75 , 140.625, 142.5 , 144.375, 146.25 , 148.125,\n", + " 150. , 151.875, 153.75 , 155.625, 157.5 , 159.375, 161.25 , 163.125,\n", + " 165. , 166.875, 168.75 , 170.625, 172.5 , 174.375, 176.25 , 178.125,\n", + " 180. , 181.875, 183.75 , 185.625, 187.5 , 189.375, 191.25 , 193.125,\n", + " 195. , 196.875, 198.75 , 200.625, 202.5 , 204.375, 206.25 , 208.125,\n", + " 210. , 211.875, 213.75 , 215.625, 217.5 , 219.375, 221.25 , 223.125,\n", + " 225. , 226.875, 228.75 , 230.625, 232.5 , 234.375, 236.25 , 238.125,\n", + " 240. , 241.875, 243.75 , 245.625, 247.5 , 249.375, 251.25 , 253.125,\n", + " 255. , 256.875, 258.75 , 260.625, 262.5 , 264.375, 266.25 , 268.125,\n", + " 270. , 271.875, 273.75 , 275.625, 277.5 , 279.375, 281.25 , 283.125,\n", + " 285. , 286.875, 288.75 , 290.625, 292.5 , 294.375, 296.25 , 298.125,\n", + " 300. , 301.875, 303.75 , 305.625, 307.5 , 309.375, 311.25 , 313.125,\n", + " 315. , 316.875, 318.75 , 320.625, 322.5 , 324.375, 326.25 , 328.125,\n", + " 330. , 331.875, 333.75 , 335.625, 337.5 , 339.375, 341.25 , 343.125,\n", + " 345. , 346.875, 348.75 , 350.625, 352.5 , 354.375, 356.25 , 358.125])</pre></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'>0016-01-16 00:00:00 ... 0045-12-16 00:00:00</div><input id='attrs-671900c1-0da3-465d-9e5e-61ee5cf408f1' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-671900c1-0da3-465d-9e5e-61ee5cf408f1' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-8a90b3f8-8a26-482c-bb1f-94caaedfe988' class='xr-var-data-in' type='checkbox'><label for='data-8a90b3f8-8a26-482c-bb1f-94caaedfe988' 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>axis :</span></dt><dd>T</dd><dt><span>bounds :</span></dt><dd>time_bnds</dd><dt><span>long_name :</span></dt><dd>time</dd><dt><span>standard_name :</span></dt><dd>time</dd></dl></div><pre class='xr-var-data'>array([cftime.Datetime360Day(0016-01-16 00:00:00),\n", + " cftime.Datetime360Day(0016-02-16 00:00:00),\n", + " cftime.Datetime360Day(0016-03-16 00:00:00), ...,\n", + " cftime.Datetime360Day(0045-10-16 00:00:00),\n", + " cftime.Datetime360Day(0045-11-16 00:00:00),\n", + " cftime.Datetime360Day(0045-12-16 00:00:00)], dtype=object)</pre></li></ul></div></li><li class='xr-section-item'><input id='section-561e58a1-d4eb-4e7a-8736-24e29d687cb9' class='xr-section-summary-in' type='checkbox' checked><label for='section-561e58a1-d4eb-4e7a-8736-24e29d687cb9' class='xr-section-summary' >Data variables: <span>(4)</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>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<chunksize=(96, 2), meta=np.ndarray></div><input id='attrs-de2d9e02-66c4-463b-a2f1-ef7bef3291b7' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-de2d9e02-66c4-463b-a2f1-ef7bef3291b7' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-d436b60c-434b-4ff9-8873-c58c3e907265' class='xr-var-data-in' type='checkbox'><label for='data-d436b60c-434b-4ff9-8873-c58c3e907265' 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><pre class='xr-var-data'><table>\n", + "<tr>\n", + "<td>\n", + "<table>\n", + " <thead>\n", + " <tr><td> </td><th> Array </th><th> Chunk </th></tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr><th> Bytes </th><td> 1.54 kB </td> <td> 1.54 kB </td></tr>\n", + " <tr><th> Shape </th><td> (96, 2) </td> <td> (96, 2) </td></tr>\n", + " <tr><th> Count </th><td> 2 Tasks </td><td> 1 Chunks </td></tr>\n", + " <tr><th> Type </th><td> float64 </td><td> numpy.ndarray </td></tr>\n", + " </tbody>\n", + "</table>\n", + "</td>\n", + "<td>\n", + "<svg width=\"79\" height=\"170\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"0\" y1=\"0\" x2=\"29\" y2=\"0\" style=\"stroke-width:2\" />\n", + " <line x1=\"0\" y1=\"120\" x2=\"29\" y2=\"120\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"120\" style=\"stroke-width:2\" />\n", + " <line x1=\"29\" y1=\"0\" x2=\"29\" y2=\"120\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"0.000000,0.000000 29.261234,0.000000 29.261234,120.000000 0.000000,120.000000\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", + "\n", + " <!-- Text -->\n", + " <text x=\"14.630617\" y=\"140.000000\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >2</text>\n", + " <text x=\"49.261234\" y=\"60.000000\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(0,49.261234,60.000000)\">96</text>\n", + "</svg>\n", + "</td>\n", + "</tr>\n", + "</table></pre></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<chunksize=(192, 2), meta=np.ndarray></div><input id='attrs-2b47e201-8b7c-4b65-a217-83d857fb7eb0' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-2b47e201-8b7c-4b65-a217-83d857fb7eb0' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-f0071bcd-d1e5-4dc5-aa8d-a9c8e2eac01e' class='xr-var-data-in' type='checkbox'><label for='data-f0071bcd-d1e5-4dc5-aa8d-a9c8e2eac01e' 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><pre class='xr-var-data'><table>\n", + "<tr>\n", + "<td>\n", + "<table>\n", + " <thead>\n", + " <tr><td> </td><th> Array </th><th> Chunk </th></tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr><th> Bytes </th><td> 3.07 kB </td> <td> 3.07 kB </td></tr>\n", + " <tr><th> Shape </th><td> (192, 2) </td> <td> (192, 2) </td></tr>\n", + " <tr><th> Count </th><td> 2 Tasks </td><td> 1 Chunks </td></tr>\n", + " <tr><th> Type </th><td> float64 </td><td> numpy.ndarray </td></tr>\n", + " </tbody>\n", + "</table>\n", + "</td>\n", + "<td>\n", + "<svg width=\"75\" height=\"170\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"0\" y1=\"0\" x2=\"25\" y2=\"0\" style=\"stroke-width:2\" />\n", + " <line x1=\"0\" y1=\"120\" x2=\"25\" y2=\"120\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"120\" style=\"stroke-width:2\" />\n", + " <line x1=\"25\" y1=\"0\" x2=\"25\" y2=\"120\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"0.000000,0.000000 25.609134,0.000000 25.609134,120.000000 0.000000,120.000000\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", + "\n", + " <!-- Text -->\n", + " <text x=\"12.804567\" y=\"140.000000\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >2</text>\n", + " <text x=\"45.609134\" y=\"60.000000\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,45.609134,60.000000)\">192</text>\n", + "</svg>\n", + "</td>\n", + "</tr>\n", + "</table></pre></li><li class='xr-var-item'><div class='xr-var-name'><span>pr</span></div><div class='xr-var-dims'>(time, lat, lon)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array<chunksize=(360, 96, 192), meta=np.ndarray></div><input id='attrs-839e6f30-2711-4d00-92ff-f0945d4389dd' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-839e6f30-2711-4d00-92ff-f0945d4389dd' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-cf8ea54f-89d6-49f6-acd9-8b92a59c78a0' class='xr-var-data-in' type='checkbox'><label for='data-cf8ea54f-89d6-49f6-acd9-8b92a59c78a0' 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>associated_files :</span></dt><dd>baseURL: https://www.sites.google.com/site/tracmip/ gridspecFile: gridspec_atmos_fx_ECHAM61_aquaControlTRACMIP_r0i0p0.nc areacella: areacella_fx_ECHAM61_aquaControlTRACMIP_r0i0p0.nc</dd><dt><span>cell_measures :</span></dt><dd>area: areacella</dd><dt><span>cell_methods :</span></dt><dd>time: mean</dd><dt><span>comment :</span></dt><dd>at surface; includes both liquid and solid phases from all types of clouds (both large-scale and convective)</dd><dt><span>history :</span></dt><dd>2018-02-25T12:21:01Z altered by CMOR: replaced missing value flag (-9e+33) with standard missing value (1e+20). 2018-02-25T12:21:01Z altered by CMOR: Inverted axis: lat.</dd><dt><span>long_name :</span></dt><dd>Precipitation</dd><dt><span>original_name :</span></dt><dd>pr</dd><dt><span>standard_name :</span></dt><dd>precipitation_flux</dd><dt><span>units :</span></dt><dd>kg m-2 s-1</dd></dl></div><pre class='xr-var-data'><table>\n", + "<tr>\n", + "<td>\n", + "<table>\n", + " <thead>\n", + " <tr><td> </td><th> Array </th><th> Chunk </th></tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr><th> Bytes </th><td> 26.54 MB </td> <td> 26.54 MB </td></tr>\n", + " <tr><th> Shape </th><td> (360, 96, 192) </td> <td> (360, 96, 192) </td></tr>\n", + " <tr><th> Count </th><td> 2 Tasks </td><td> 1 Chunks </td></tr>\n", + " <tr><th> Type </th><td> float32 </td><td> numpy.ndarray </td></tr>\n", + " </tbody>\n", + "</table>\n", + "</td>\n", + "<td>\n", + "<svg width=\"194\" height=\"163\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n", + " <line x1=\"10\" y1=\"43\" x2=\"80\" y2=\"113\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"10\" y2=\"43\" style=\"stroke-width:2\" />\n", + " <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"113\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"10.000000,0.000000 80.588235,70.588235 80.588235,113.723911 10.000000,43.135675\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"74\" y2=\"0\" style=\"stroke-width:2\" />\n", + " <line x1=\"80\" y1=\"70\" x2=\"144\" y2=\"70\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n", + " <line x1=\"74\" y1=\"0\" x2=\"144\" y2=\"70\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"10.000000,0.000000 74.000000,0.000000 144.588235,70.588235 80.588235,70.588235\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"80\" y1=\"70\" x2=\"144\" y2=\"70\" style=\"stroke-width:2\" />\n", + " <line x1=\"80\" y1=\"113\" x2=\"144\" y2=\"113\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"113\" style=\"stroke-width:2\" />\n", + " <line x1=\"144\" y1=\"70\" x2=\"144\" y2=\"113\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"80.588235,70.588235 144.588235,70.588235 144.588235,113.723911 80.588235,113.723911\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", + "\n", + " <!-- Text -->\n", + " <text x=\"112.588235\" y=\"133.723911\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >192</text>\n", + " <text x=\"164.588235\" y=\"92.156073\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(0,164.588235,92.156073)\">96</text>\n", + " <text x=\"35.294118\" y=\"98.429793\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(45,35.294118,98.429793)\">360</text>\n", + "</svg>\n", + "</td>\n", + "</tr>\n", + "</table></pre></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<chunksize=(360, 2), meta=np.ndarray></div><input id='attrs-b9c3d8e8-75f1-4532-b850-821193a61236' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-b9c3d8e8-75f1-4532-b850-821193a61236' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-51ac5365-c498-4d35-87a7-99ab923a2479' class='xr-var-data-in' type='checkbox'><label for='data-51ac5365-c498-4d35-87a7-99ab923a2479' 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><pre class='xr-var-data'><table>\n", + "<tr>\n", + "<td>\n", + "<table>\n", + " <thead>\n", + " <tr><td> </td><th> Array </th><th> Chunk </th></tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr><th> Bytes </th><td> 5.76 kB </td> <td> 5.76 kB </td></tr>\n", + " <tr><th> Shape </th><td> (360, 2) </td> <td> (360, 2) </td></tr>\n", + " <tr><th> Count </th><td> 2 Tasks </td><td> 1 Chunks </td></tr>\n", + " <tr><th> Type </th><td> object </td><td> numpy.ndarray </td></tr>\n", + " </tbody>\n", + "</table>\n", + "</td>\n", + "<td>\n", + "<svg width=\"75\" height=\"170\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"0\" y1=\"0\" x2=\"25\" y2=\"0\" style=\"stroke-width:2\" />\n", + " <line x1=\"0\" y1=\"120\" x2=\"25\" y2=\"120\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"120\" style=\"stroke-width:2\" />\n", + " <line x1=\"25\" y1=\"0\" x2=\"25\" y2=\"120\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"0.000000,0.000000 25.412617,0.000000 25.412617,120.000000 0.000000,120.000000\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", + "\n", + " <!-- Text -->\n", + " <text x=\"12.706308\" y=\"140.000000\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >2</text>\n", + " <text x=\"45.412617\" y=\"60.000000\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,45.412617,60.000000)\">360</text>\n", + "</svg>\n", + "</td>\n", + "</tr>\n", + "</table></pre></li></ul></div></li><li class='xr-section-item'><input id='section-35b1e177-36b1-4cf6-9cf8-af2f9f7f0f07' class='xr-section-summary-in' type='checkbox' ><label for='section-35b1e177-36b1-4cf6-9cf8-af2f9f7f0f07' class='xr-section-summary' >Attributes: <span>(30)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'><dt><span>Conventions :</span></dt><dd>CF-1.4</dd><dt><span>branch_time :</span></dt><dd>0.0</dd><dt><span>cmor_version :</span></dt><dd>2.9.1</dd><dt><span>comment :</span></dt><dd>aqua planet control of TRACMIP; for TRACMIP see Voigt et al., 2016, The Tropical Rain belts with an Annual cycle and a Continent Model Intercomparison Project: TRACMIP, 9, 1868–1891, doi:10.1002/2016MS000748</dd><dt><span>contact :</span></dt><dd>aiko@ldeo.columbia.edu; aiko.voigt@kit.edu</dd><dt><span>creation_date :</span></dt><dd>2018-02-25T12:21:01Z</dd><dt><span>experiment :</span></dt><dd>aqua planet control of TRACMIP</dd><dt><span>experiment_id :</span></dt><dd>aquaControlTRACMIP</dd><dt><span>forcing :</span></dt><dd>CTRL</dd><dt><span>frequency :</span></dt><dd>mon</dd><dt><span>history :</span></dt><dd>N/A 2018-02-25T12:21:01Z CMOR rewrote data to comply with CF standards and TRACMIP requirements.</dd><dt><span>initialization_method :</span></dt><dd>1</dd><dt><span>institute_id :</span></dt><dd>LDEO</dd><dt><span>institution :</span></dt><dd>Lamont-Doherty Earth Observatory, Columbia University; Karlsruhe Institute of Technology</dd><dt><span>model_id :</span></dt><dd>ECHAM61</dd><dt><span>modeling_realm :</span></dt><dd>atmos</dd><dt><span>parent_experiment :</span></dt><dd>N/A</dd><dt><span>parent_experiment_id :</span></dt><dd>N/A</dd><dt><span>parent_experiment_rip :</span></dt><dd>N/A</dd><dt><span>physics_version :</span></dt><dd>1</dd><dt><span>product :</span></dt><dd>output</dd><dt><span>project_id :</span></dt><dd>TRACMIP</dd><dt><span>realization :</span></dt><dd>1</dd><dt><span>references :</span></dt><dd>ECHAM6.1: Stevens et al., 2013, Atmospheric component of the MPI-M Earth System Model: ECHAM6, JAMES, 5, 146-172, doi:10.1002/jame.2015;</dd><dt><span>source :</span></dt><dd>ECHAM61, 2013, T63, 47 levels;</dd><dt><span>table_id :</span></dt><dd>Table Amon (11 September 2017) b0abd1a83fe45ef2ed9e415b249165bd</dd><dt><span>title :</span></dt><dd>ECHAM61 model output prepared for TRACMIP aqua planet control of TRACMIP</dd><dt><span>tracking_id :</span></dt><dd>a6042360-356a-4d4e-8357-9699f6c18da1</dd><dt><span>intake_esm_varname :</span></dt><dd>pr</dd><dt><span>intake_esm_dataset_key :</span></dt><dd>ECHAM61.aquaControl.Amon</dd></dl></div></li></ul></div></div>" + ], + "text/plain": [ + "<xarray.Dataset>\n", + "Dimensions: (bnds: 2, lat: 96, lon: 192, time: 360)\n", + "Coordinates:\n", + " * lat (lat) float64 -88.57 -86.72 -84.86 -83.0 ... 84.86 86.72 88.57\n", + " * lon (lon) float64 0.0 1.875 3.75 5.625 ... 352.5 354.4 356.2 358.1\n", + " * time (time) object 0016-01-16 00:00:00 ... 0045-12-16 00:00:00\n", + "Dimensions without coordinates: bnds\n", + "Data variables:\n", + " lat_bnds (lat, bnds) float64 dask.array<chunksize=(96, 2), meta=np.ndarray>\n", + " lon_bnds (lon, bnds) float64 dask.array<chunksize=(192, 2), meta=np.ndarray>\n", + " pr (time, lat, lon) float32 dask.array<chunksize=(360, 96, 192), meta=np.ndarray>\n", + " time_bnds (time, bnds) object dask.array<chunksize=(360, 2), meta=np.ndarray>\n", + "Attributes:\n", + " Conventions: CF-1.4\n", + " branch_time: 0.0\n", + " cmor_version: 2.9.1\n", + " comment: aqua planet control of TRACMIP; for TRACMIP see ...\n", + " contact: aiko@ldeo.columbia.edu; aiko.voigt@kit.edu\n", + " creation_date: 2018-02-25T12:21:01Z\n", + " experiment: aqua planet control of TRACMIP\n", + " experiment_id: aquaControlTRACMIP\n", + " forcing: CTRL\n", + " frequency: mon\n", + " history: N/A 2018-02-25T12:21:01Z CMOR rewrote data to co...\n", + " initialization_method: 1\n", + " institute_id: LDEO\n", + " institution: Lamont-Doherty Earth Observatory, Columbia Unive...\n", + " model_id: ECHAM61\n", + " modeling_realm: atmos\n", + " parent_experiment: N/A\n", + " parent_experiment_id: N/A\n", + " parent_experiment_rip: N/A\n", + " physics_version: 1\n", + " product: output\n", + " project_id: TRACMIP\n", + " realization: 1\n", + " references: ECHAM6.1: Stevens et al., 2013, Atmospheric comp...\n", + " source: ECHAM61, 2013, T63, 47 levels;\n", + " table_id: Table Amon (11 September 2017) b0abd1a83fe45ef2e...\n", + " title: ECHAM61 model output prepared for TRACMIP aqua p...\n", + " tracking_id: a6042360-356a-4d4e-8357-9699f6c18da1\n", + " intake_esm_varname: pr\n", + " intake_esm_dataset_key: ECHAM61.aquaControl.Amon" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ds_dict2['ECHAM61.aquaControl.Amon']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot zonal-mean time-mean precip for last 20 years for ECHAM61 model using the dictionaries from the two approaches" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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0LQoLy8nPT2d0tJSf5sS9ERGRtKhQwfCw8PdfsYIvMFg8Jj09HSaN29Oly5dEJG6HzB4hKqSk5NDeno6Xbt2dfs546IxGAweU1paSmJiohF3HyMiJCYm1vubkhF4g8EP7Ph+C4e2H/S3GV7BiHvj4Mn7bATeYGhk5l7wb1LO6g09upO9Icvf5hiCGCPwBkMjkr5gF+Nn3Q1Agh5iy3Pu7NFhaMrExta1WyJs3ryZUaNG0axZM6ZMmeK1vo3AGwyNSPql9xxxblux0k+WGGqjoqKiUftr2bIlU6dO5d577/Vqu0bgDYZGYuUzPzMyY+YR11qk1bSZlMFdLrjgAoYNG0a/fv148803nddjY2O55557GDp0KKeeeirZ2dkAjB8/njvvvJPRo0fTv39/li5dCsDkyZOZOHEiZ5xxBtdccw1paWmceuqpDBw4kFNPPZXdu3cD8PXXXzNixAiGDBnCaaedxv79+wEoLCzk+uuvZ8CAAQwcOJDPP//cacs///lPBg0axMiRI531XWndujXDhw+vVwikO/hU4EXkryKyXkQ2iMiddT9hMAQn5cXlxD14xxHX/sGTPFTxMMGSsVvEd0dtvPPOO6xYsYLly5czdepUcnJyACgqKmLo0KGsXLmScePG8cgjjzifKSoqYtGiRbz66qvccMMNzusrVqxg1qxZfPTRR9x2221cc801rF27liuvvJI77rD//saMGcOSJUtYtWoVl112Gc888wwAjz32GHFxcaxbt461a9dyyimnOPsaOXIka9asYezYsfznP//x5tteKz6LgxeR/sCNwAlAGfA/EflWVbf6qk+DIVBZeMXLjC/bBEA+zRkW+zvbCttCEaSlgUmi6jlTp07liy++AGDPnj1s3bqVxMREQkJCuPTSSwG46qqruOiii5zPXH65fW/3sWPHkp+fT25uLgDnnXceUVFRACxevJiZM+3fuK6++mruu+8+wB77f+mll5KZmUlZWZkzLv3nn3/mk08+cfaRkJAAQEREBOeccw4Aw4YN46effvLNG1ENvhzB9wGWqGqxqlYA84ALfdifwRCwpHz7krO88uyH6Di8rfN89Wp/WBQczJ07l59//pnFixezZs0ahgwZUmOsuGuY4dEhh1XnMTExNfZVVef222/ntttuY926dbzxxhvO/lS12lDG8PBw5/XQ0NBG9e/7UuDXA2NF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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(ds_dict1['ECHAM61'].lat, \n", + " ds_dict1['ECHAM61']['pr'].isel(time=slice(120,360)).mean(['lon', 'time'])*86400,\n", + " 'b', linewidth=3, label='approach 1')\n", + "plt.plot(ds_dict2['ECHAM61.aquaControl.Amon'].lat, \n", + " ds_dict2['ECHAM61.aquaControl.Amon']['pr'].isel(time=slice(120,360)).mean(['lon', 'time'])*86400,\n", + " 'r--', linewidth=3, label='approach 2')\n", + "plt.xlabel('degree latitude')\n", + "plt.ylabel('precipitation (mm/day)')\n", + "plt.title('ECHAM61, aquaControl');\n", + "plt.legend();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Closing remark" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The above hopefully provides a helpful and clear recipe for accessing TRACMIP data from the Pangeo Cloud. It should be straightforward to condense the approaches into wrapper functions." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.4" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} -- GitLab