diff --git a/06_metrics.ipynb b/06_metrics.ipynb new file mode 100644 index 0000000..de5d135 --- /dev/null +++ b/06_metrics.ipynb @@ -0,0 +1,2399 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# CMIP6 Earth System Model example\n", + "\n", + "Grid-aware operations such as average, integrate and cumulative integration rely on user-provided [grid metrics](https://xgcm.readthedocs.io/en/latest/grid_metrics.html). This notebook demonstrates the methods `interp_like()`, `get_metric()`, and `set_metrics()` which makes working with metrics easier, better, faster, and shorter when processing ocean models such as CMIP6 Earth System Models. The main objective of this notebook is to calculate and plot the time series of area-averaged temperature and zonal velocity from an ESM." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Setting up the sample dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First, we import the packages we need for this example. To run a piece of code, click on the cell and hit `Shift` + `Enter`." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import intake\n", + "import matplotlib as plt\n", + "import xarray as xr\n", + "import numpy as np\n", + "import cftime\n", + "import dask" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting git+https://github.com/xgcm/xgcm.git\n", + " Cloning https://github.com/xgcm/xgcm.git to /tmp/pip-req-build-owswiym0\n", + " Running command git clone -q https://github.com/xgcm/xgcm.git /tmp/pip-req-build-owswiym0\n", + " Running command git submodule update --init --recursive -q\n", + "Requirement already satisfied: xarray>=0.14.1 in /srv/conda/envs/notebook/lib/python3.8/site-packages (from xgcm==0.5.3.dev24+g6e68f71) (0.16.2)\n", + "Requirement already satisfied: dask in /srv/conda/envs/notebook/lib/python3.8/site-packages (from xgcm==0.5.3.dev24+g6e68f71) (2021.1.1)\n", + "Requirement already satisfied: numpy in /srv/conda/envs/notebook/lib/python3.8/site-packages (from xgcm==0.5.3.dev24+g6e68f71) (1.20.0)\n", + "Requirement already satisfied: future in /srv/conda/envs/notebook/lib/python3.8/site-packages (from xgcm==0.5.3.dev24+g6e68f71) (0.18.2)\n", + "Requirement already satisfied: docrep<=0.2.7 in /srv/conda/envs/notebook/lib/python3.8/site-packages (from xgcm==0.5.3.dev24+g6e68f71) (0.2.7)\n", + "Requirement already satisfied: six in /srv/conda/envs/notebook/lib/python3.8/site-packages (from docrep<=0.2.7->xgcm==0.5.3.dev24+g6e68f71) (1.15.0)\n", + "Requirement already satisfied: pandas>=0.25 in /srv/conda/envs/notebook/lib/python3.8/site-packages (from xarray>=0.14.1->xgcm==0.5.3.dev24+g6e68f71) (1.2.1)\n", + "Requirement already satisfied: setuptools>=38.4 in /srv/conda/envs/notebook/lib/python3.8/site-packages (from xarray>=0.14.1->xgcm==0.5.3.dev24+g6e68f71) (49.6.0.post20210108)\n", + "Requirement already satisfied: python-dateutil>=2.7.3 in /srv/conda/envs/notebook/lib/python3.8/site-packages (from pandas>=0.25->xarray>=0.14.1->xgcm==0.5.3.dev24+g6e68f71) (2.7.5)\n", + "Requirement already satisfied: pytz>=2017.3 in /srv/conda/envs/notebook/lib/python3.8/site-packages (from pandas>=0.25->xarray>=0.14.1->xgcm==0.5.3.dev24+g6e68f71) (2021.1)\n", + "Requirement already satisfied: pyyaml in /srv/conda/envs/notebook/lib/python3.8/site-packages (from dask->xgcm==0.5.3.dev24+g6e68f71) (5.3.1)\n" + ] + }, + { + "data": { + "text/plain": [ + "'0.5.3.dev24+g6e68f71'" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "!python -m pip install git+https://github.com/xgcm/xgcm.git\n", + "import xgcm\n", + "xgcm.__version__" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

Client

\n", + "\n", + "
\n", + "

Cluster

\n", + "
    \n", + "
  • Workers: 0
  • \n", + "
  • Cores: 0
  • \n", + "
  • Memory: 0 B
  • \n", + "
\n", + "
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from dask_gateway import GatewayCluster\n", + "cluster = GatewayCluster()\n", + "cluster.adapt(minimum=2, maximum=10) \n", + "client = cluster.get_client()\n", + "client" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we download temperature (`thetao`), zonal velocity (`uo`) and horizontal area (`areacello`) for the CNRM-ESM2-1 model, just one example of an [Earth System Model](https://pcmdi.llnl.gov/CMIP6/ArchiveStatistics/esgf_data_holdings/). ESMs are global, 4-dimensional, coupled ocean-atmosphere-biogeochemical models commonly used to evaluate the effects of increased atmospheric carbon dioxide concentrations on planetary processes. Check out [this page](https://www.carbonbrief.org/cmip6-the-next-generation-of-climate-models-explained) for further information. In this example, we are using historical data from 1850 to 2014, but we can change the code to download [model results from 2015 to 2100](https://www.carbonbrief.org/explainer-how-shared-socioeconomic-pathways-explore-future-climate-change) under high to low climate change mitigation scenarios, so feel free to explore! The latest version of these datasets are under CMIP6 and are hosted in the cloud by the [Pangeo project](https://pangeo.io/). " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "--> The keys in the returned dictionary of datasets are constructed as follows:\n", + "\t'activity_id.institution_id.source_id.experiment_id.member_id.table_id.variable_id.grid_label.zstore.dcpp_init_year.version'\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + " \n", + " \n", + " 100.00% [3/3 00:00<00:00]\n", + "
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "col = intake.open_esm_datastore(\"https://storage.googleapis.com/cmip6/pangeo-cmip6.json\")\n", + "cat = col.search(\n", + " source_id = 'CNRM-ESM2-1', # use a different source ID if you want to try other models\n", + " member_id = 'r1i1p1f2', # common values are r1i1p1f1 or r1i1p1f2\n", + " experiment_id = 'historical', # other possible inputs: ssp126, ssp370, and ssp585 \n", + " variable_id= ['thetao','uo','areacello'],\n", + " grid_label = 'gn', # common values are gn or gr \n", + " \n", + ")\n", + "ddict = cat.to_dataset_dict(zarr_kwargs={'consolidated':True, 'use_cftime':True}, aggregate=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_keys(['CMIP.CNRM-CERFACS.CNRM-ESM2-1.historical.r1i1p1f2.Ofx.areacello.gn.gs://cmip6/CMIP6/CMIP/CNRM-CERFACS/CNRM-ESM2-1/historical/r1i1p1f2/Ofx/areacello/gn/v20181206/.nan.20181206', 'CMIP.CNRM-CERFACS.CNRM-ESM2-1.historical.r1i1p1f2.Omon.uo.gn.gs://cmip6/CMIP6/CMIP/CNRM-CERFACS/CNRM-ESM2-1/historical/r1i1p1f2/Omon/uo/gn/v20181206/.nan.20181206', 'CMIP.CNRM-CERFACS.CNRM-ESM2-1.historical.r1i1p1f2.Omon.thetao.gn.gs://cmip6/CMIP6/CMIP/CNRM-CERFACS/CNRM-ESM2-1/historical/r1i1p1f2/Omon/thetao/gn/v20181206/.nan.20181206'])" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ddict.keys()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We manually extract thetao, uo and areacello so we can do subsetting and renaming before we save the datasets into one array." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "thetao = ddict['CMIP.CNRM-CERFACS.CNRM-ESM2-1.historical.r1i1p1f2.Omon.thetao.gn.gs://cmip6/CMIP6/CMIP/CNRM-CERFACS/CNRM-ESM2-1/historical/r1i1p1f2/Omon/thetao/gn/v20181206/.nan.20181206'].thetao\n", + "uo = ddict['CMIP.CNRM-CERFACS.CNRM-ESM2-1.historical.r1i1p1f2.Omon.uo.gn.gs://cmip6/CMIP6/CMIP/CNRM-CERFACS/CNRM-ESM2-1/historical/r1i1p1f2/Omon/uo/gn/v20181206/.nan.20181206'].uo\n", + "areacello = ddict['CMIP.CNRM-CERFACS.CNRM-ESM2-1.historical.r1i1p1f2.Ofx.areacello.gn.gs://cmip6/CMIP6/CMIP/CNRM-CERFACS/CNRM-ESM2-1/historical/r1i1p1f2/Ofx/areacello/gn/v20181206/.nan.20181206'].areacello" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can see that the uo grid is shifted to the right along the x-axis (`lon`) compared to thetao." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.figure(figsize=(8,4))\n", + "diff = uo.lon-thetao.lon\n", + "diff.plot(vmin=-2,vmax=2)\n", + "plt.show" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We assign areacello as a coordinate for thetao since they are on a similar grid." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "thetao = thetao.assign_coords(areacello=areacello.reset_coords(drop=True).fillna(0)) # drop areacello lat/lon coordinates, fill missing values with 0" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we subset our preferred patch of ocean from the global datasets. For now the domain limits are set to the California Current, but you can adjust lat_north, lat_south, lon_west, and lon_east to your liking. As you change these values, make sure `subset_thetao` and `subset_uo` are the same size (see cell below). To do that, we recommend changing the longitude/latitude values incrementally by 0.25 deg until you get a satisfactory domain size.\n", + "\n", + "Additionally, CNRM-ESM2-1 uses negative values east of the IDL (i.e., 130 W is -130), and this can vary per model so if you change `source_id` in the beginning, make sure you know which longitude convention that model uses. We also do surface plots to make sure we did the subsetting correctly." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/srv/conda/envs/notebook/lib/python3.8/site-packages/xarray/core/indexing.py:1375: PerformanceWarning: Slicing is producing a large chunk. To accept the large\n", + "chunk and silence this warning, set the option\n", + " >>> with dask.config.set(**{'array.slicing.split_large_chunks': False}):\n", + " ... array[indexer]\n", + "\n", + "To avoid creating the large chunks, set the option\n", + " >>> with dask.config.set(**{'array.slicing.split_large_chunks': True}):\n", + " ... array[indexer]\n", + " value = value[(slice(None),) * axis + (subkey,)]\n", + "/srv/conda/envs/notebook/lib/python3.8/site-packages/xarray/core/indexing.py:1375: PerformanceWarning: Slicing is producing a large chunk. To accept the large\n", + "chunk and silence this warning, set the option\n", + " >>> with dask.config.set(**{'array.slicing.split_large_chunks': False}):\n", + " ... array[indexer]\n", + "\n", + "To avoid creating the large chunks, set the option\n", + " >>> with dask.config.set(**{'array.slicing.split_large_chunks': True}):\n", + " ... array[indexer]\n", + " value = value[(slice(None),) * axis + (subkey,)]\n" + ] + } + ], + "source": [ + "lat_north = 50\n", + "lat_south = 25\n", + "lon_west = -130\n", + "lon_east = -110.75\n", + "\n", + "subset_thetao = thetao.where((thetao.lat > lat_south) & (thetao.lat < lat_north) & (thetao.lon > lon_west) & (thetao.lon < lon_east), drop=True)\n", + "subset_uo = uo.where((uo.lat > lat_south) & (uo.lat < lat_north) & (uo.lon > lon_west) & (uo.lon < lon_east), drop=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Replace `subset_thetao` in the cell below with `subset_uo` to double-check if subset_thetao and subset_uo are the same size (e.g., the 'x' and 'y' values for variables such as 'lat' and 'lon' should be equal, and for this example `y: 38`, `x: 20`)." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'thetao' (time: 1980, lev: 75, y: 38, x: 20)>\n",
+       "dask.array<where, shape=(1980, 75, 38, 20), dtype=float32, chunksize=(4, 75, 38, 20), chunktype=numpy.ndarray>\n",
+       "Coordinates:\n",
+       "    lat        (y, x) float64 dask.array<chunksize=(38, 20), meta=np.ndarray>\n",
+       "  * lev        (lev) float64 0.5058 1.556 2.668 ... 5.698e+03 5.902e+03\n",
+       "    lon        (y, x) float64 dask.array<chunksize=(38, 20), meta=np.ndarray>\n",
+       "  * time       (time) object 1850-01-16 12:00:00 ... 2014-12-16 12:00:00\n",
+       "    areacello  (y, x) float32 dask.array<chunksize=(38, 20), meta=np.ndarray>\n",
+       "Dimensions without coordinates: y, x\n",
+       "Attributes:\n",
+       "    cell_measures:       area: areacello volume: volcello\n",
+       "    cell_methods:        area: mean where sea time: mean\n",
+       "    description:         Diagnostic should be contributed even for models usi...\n",
+       "    history:             none\n",
+       "    interval_operation:  1800 s\n",
+       "    interval_write:      1 month\n",
+       "    long_name:           Sea Water Potential Temperature\n",
+       "    online_operation:    average\n",
+       "    standard_name:       sea_water_potential_temperature\n",
+       "    units:               degC
" + ], + "text/plain": [ + "\n", + "dask.array\n", + "Coordinates:\n", + " lat (y, x) float64 dask.array\n", + " * lev (lev) float64 0.5058 1.556 2.668 ... 5.698e+03 5.902e+03\n", + " lon (y, x) float64 dask.array\n", + " * time (time) object 1850-01-16 12:00:00 ... 2014-12-16 12:00:00\n", + " areacello (y, x) float32 dask.array\n", + "Dimensions without coordinates: y, x\n", + "Attributes:\n", + " cell_measures: area: areacello volume: volcello\n", + " cell_methods: area: mean where sea time: mean\n", + " description: Diagnostic should be contributed even for models usi...\n", + " history: none\n", + " interval_operation: 1800 s\n", + " interval_write: 1 month\n", + " long_name: Sea Water Potential Temperature\n", + " online_operation: average\n", + " standard_name: sea_water_potential_temperature\n", + " units: degC" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "subset_thetao" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plot the zonal velocity subset." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAVQAAAD3CAYAAABCbaxBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABDzUlEQVR4nO29eXxcV3n//35mNKN932xJtiXLsrzFa2ISQkgISxaWUPa0hbQsaYBQKG0hlC7wK0uAL1CglBBCSKBAGkoLgSakgZKEJY43EsebvMiyrcW29n2deX5/3KvxaOZeaSTNSJrxeb9e96W555x7zrl3rj5zznnOeY6oKgaDwWCYP57FroDBYDCkCkZQDQaDIU4YQTUYDIY4YQTVYDAY4oQRVIPBYIgTRlANBoMhTswoqCLSJCKvWIjKGAzxQERWisiAiHgXuy6GS4uka6GKyMtF5KiIDInIr0Vk1TRpnxSREfufa0BEGmLNS0Q+ISLjYdcOiMhqO25lRPiAiKiI/HXY9aUi8gMR6RGRbhH5flhcuojcLyJ9InJORD4cUa+tIrLPrtc+EdkaFrdJRB4XkQ4RiZpE7FCvgIh8LcZ7FhH5nIh02sfnRUTsuDIR+aGItIpIr4j8TkReFHbtdSISjCj7trD4B0RkLCLeGxZ/vYjst59Jo4jc7va9OtzzlB99VT2jqjmqGog1j4VGRO4Ukb0iMioiDzjEv0VEjohIv4gcFpHXh8W5vpt2fLX93Q7Z3/W0DaLp0ovIchF5xP7eVUSqZ8hrxvQi8gr7ux4UkbMi8haXvPwi8p/296sicl1E/N+KyEH7GZ0Skb+d633GDVWd9gCagFfMlG4hDqAE6AXeDGQAXwB2TZP+SeDdc8kL+ATw7zHWqwYIANVhYb8BvgTkAz5gW1jcZ+34QmA9cA640Y7zA6eBvwLSgb+0z/12fD3wLuAW6+ubtl7ZwADw0hjv+S+ABqAKqAQOA3fYcauBDwPLAS9wO9AB5Njx1wHN09TlAeBTLnE+u15/AQhwhV3vLTE+/yXzjs7iXX4D8HrgG8ADEXGVwBhwk/08Xg0MAWWxvJvAM/a7lwm8EegBSueSHigH3gdcBWj4O+6S17TpgQ3ABfve0oBioNYlLz/wIeAlQBtwXUT8R4Dtdj719v/J2+L1XOb0vc7mZcVq0d4FnAQ6gYeBIjvuF8CdEdc+D7whji/h7cDvw86zgWFgnUv6J3EX1Gnzmumljcjrn4Bfh52/yn5uXpf0LcCrws7/GXgo7NoWQMLiz2ALbljYGmYW1NuAxsm8Yrjn3wO3h8W/i+l/sPqAHfbn65i7oJbb/3xZYWF7gFtjePbfA4L2fQzY/2TVdn5pYe/Bp+z7GwB+hvWP/H37HvYw9cdwHfAE0IX1A/OWeL3DDvX/FNGC+iLgQkRYO3DVTO8msBYYBXLDwn6D/cM41/RYojWjoM6UHvgB8M9zeE7NRAiqQ5qvAl+Lx3OZ6zHbLv9fYv2qXgtUAN3A1+24HwC3TiYUkQ3AKuB/nDKyu8Jux10u5W/EEmkAVHUQS9w3TlPnz9rd499FdBliyeu1ItIlIodE5L3TlPEO4MGw8yux/hEftLvOe0TkWvu+C7Ge3fNh6Z8PK3cjcEDtb9zmwAz36MZtwHfD8prpnqfER9RrCvYwhB84ERZcJiLn7e7Xl0UkO+Ky99nPc5+IvDGsHueBHwJ/LiJeEbkK69357Uw3qKpvx/rBea1a3fzPuyR9G/B2rNZfLVZr5TtAEXAE60cRu85PYL3PZVjv9L+JiNtz+Ldp3uMDM9Xfhb3AERF5nf08Xo8lBuH5ub2bG4FGVe0PC3P9HueQfr5cCSAiL4hIm4j8u4gUzTdTERHgGuBQWNjPw7RkQe5ztoL6F8DHVbVZVUexfinfJCJpwH8DW+XimNyfAP9lp4tCVQumOe52KT8Hq2sYTi+Q65L+o1hd1UrgXuBnIlIbY14PY3XHS4H3AP8oIrdGpEdErsFqYf1nWHAVVkvz18Ay4IvAT0WkxC53siyncmd7j46IyEqsH75woZ8p78j4XiDHflnD887Dahl+UlUn0x8FtmINCVwP7MDqXk3yVaAOS6T+AXhARK4Oi/8h8I9YwvEbrPfsbIy3GwvfUdWTdn0fA06q6i9VdQL4EbDNTvcaoElVv6OqE6q6H/gx8CanTFX1fdO8x5vnUlG1xn6/iyXqo/bfv7B/AGH6d3O2709c3rdZUIX1w/ZGrPchE/jatFfExiew9Ow7kwGq+powLVmQ+5ytoK4C/nvyFxjrlz0AlNvK/z9YLQHsv993zGXuDAB5EWF5QL9DWlT1WVXtV9VRVX0Q+B1wcyx5qephVW1V1YCq/h74Cs7/VLcBP1bVgbCwYax/ym+r6riqPgScBa62y50sy+keZnWP0/AO4LeqeiosbKa8I+PzgIHw1rKIZGJ1mXep6mcnw1X1nP3MgnaZHyHseanqflXttEXqUax34w12nuuA/7Dr7MdqNXxERF49y3uejvNhn4cdzid/6FYBLwpvaWI1DpbFsS7TYhtLPo81jOLH+mG8z+4VzPRuTvsd2y3aSUPWNTOln6Ge14TldWim9DbDWD9ux+z/mc9w8X9yTojInVjvzqvdGnDE7/9qWmYrqGeBmyJ+hTNUtcWO/yFwq91ly8RqoTki0dbo8OPvXC47BGwJyyMbq/sW65epWIP8c8kr/NrJazKxDDwPRqQ9YKePzkS1G2uAfUtY8Jawcg8BmyNahZunqZcbkcMQk3lPd89T4iPqhYikAz/BGuP9ixnKj3pe08RvAhpU9XFbkBuwfpxvmqGM8LzixVngqYh3PEdVHYd8ROSead7j2X5nk2wFnlbVvfbz2AM8C7hZpSPf69UiEt7yCn2PqrrRvp8cVf3NTOmnQ1V/E5ZXrF1n1/+NuSAi78Sy67xcVZunSTrn+5wVMw2yMtUo9VdYA/yr7PNS4JawtOlY46pPAF+eKe/ZHnZ5vVjdhQzgc7gYTYAC4AY7XRpWK2MQqI8lLywreiHWi7oTS0Ruiyjjj7EsixIRXmQ/h9uwLOJvwjJwlNjxdwNP2fmvwxLYSCv/B+3neSdTrfxi13cD1ouZAaRHlP9i+15zZ/P8gDuweh2VWOO8h7ho5fdhtUx/gm3sicj7OmClXb8VWD+m3wmLfxNWK9CDNRzSj21kwBL1AayhArHPTwDvCctbp3kvdjHVmFZNtFHq3WHxUwxBWEJ1wv6caz/vt9v37MOadbA+zu9ymv0dfBZr+CQjrL7XYs2g2Gqfb8MyAr8qlnfTfh7/z87zj5jZyj9tejs8236m9UDGDPfmmh54J3AKayguC2v44nvT5JVu59dsvzcZXDSy/gnWDJmYvpvZPpc5fa8xVKKJqVb+D2MZXPqxDBqfiUj/bftBXhHPika8/Eexug5PMtU6+3fAY/bnUizrbb/94HYBr5xFXj+0X+IBO81fOtTlcVwsllgD5C/Y1+8Frol4Se7HsjCfBz4cce02YJ9dr/1MnXJVbT/f8KMp4vpvur2kM9yzYHU1u+zj82Ev77V2WUP2PU0e19jxH8b6xx7CauV9jWiLaq99z88TMb0FeAtw0P6+mrHE3mPHvZ2w2QkO93QLlmGqB/gb5iGo9nk9Vgu53X4H/g9b3OL4Hn/C4Xv8RFj8nVg/Kv1YMzX+OtZ3077/J+3vuIEZppTNlN6hnjpDftOmBz5pP9t2rB+TwmnyanLIr9qOOwWMR7yP94Rd+xjwd7HcJ9b/64CTljjl5XZM/rMYDEsWEbkP+JGqPr7YdTEYpsMIqsFgMMSJpFt6ajAYDEsVI6gGg8EQJ4ygGgwGQ5xIW+wKGGbmxhtv1I6OjrjlFwwGCQQCjI+Pk5WVBcDQ0BAAHo8Hn8/H6Kjb/GjDYnLkyJHHVfXGeOe7QjJ1hGBMaTsYS0gdUgEjqElAR0cHe/funXc+qkp3dzfZ2dn09vZSVlbmmnbfvn3zLs8Qfy6//PKSROQ7QpA3sjymtN/kdELqkAoYQb2EGB0dJT8/n0AgMEVMR0dHGRgYwOfzkZeXR3t7+yLW0rAYCOCdbl1bOGZikCtGUC8hMjIyaGxsZPXq1dYkZBEGBgZoaGiY+WJDSiOA3xOjoi5Zt92LjzFKXWIUFhbS2trK2NgYYA0D5ObmsmPHjkWumWExsVqoEtNhcMe0UC8xCgsLKSwsDJ3n5uaSm5soT22GpEFm0eU3uGIE9RJlbGyM3t5euru7GR4eZmJiYsZr0tLSYkpnSD4mW6iG+WG6/Jcovb29FBUVUVNTEyWSFRUVVFRUTAnLyspiy5Yt+Hy+haymYYGYNErFchjcMS3US5BgMEhxcTGDg4Pk5uZSX1+Px+NhbGyMoaEhli+3ps8sX76cpqYmOjs7Q/NSly1bxtmzliP9oqIiAoEAvb2RjtANyYcZH40HpoV6CRAIWGbZvXv3MjIygoigqqSlpdHf38/o6ChZWVnk5eWFWqaqSjAYpLq6Go/Hw+rV1i7FfX19AKSnp1NTU0NxcfHi3JQhrgjgE4npMLhjWqiXACJCb28vW7du5fjx4wwNDZGZmUl5eTnFxcXs27ePoqIiJjcJGBkZISMjIyS8mzZtCnX18/Ly6O3txev1AjA8PLxo92WIH2K683HBCOolgMfjIRAIkJaWFpomtXbtWoJBa6nh1q1bUdVQtz8jIwOwhgYml6JOUlRUxNmzZ0PXGkFNHUyXf/4YQb1EKCoq4tSpU6xZswaPxxrpmfx75MgRli9fTnFxMX6/n2AwiIiE4sfGxvD7/YBl6d+yZQtpadarMzQ0hIhQVVXFhQsXjA+AJGVWK6UMrhhBvYSoqamhs7MzatxzdHSUpqYmmpqaSEtLo6SkZEoX3+fzTW4DgYiEWroiQn19fUhsz507t7A3ZIgbZtpUfDCCeokRLqbPPfccRUVFU+InJiamCKOIUFhYSG5uLl6vl/z8fDweDyJCMBjE7/czPj7OwYMHQ8MAhuRDZBZLTw2uGEG9RNhy16Ohz+vT23nok7exdetWxsfHmZiYYHx8nIGBgajrVJWuri66uroA2LhxI+np6VOGBCbFFaxpVZWVlRw+fNiMryYZpss/f8y0qUuQa7fVhT77fD5Wr15NfX096enpM17b09MDEFoMEAwG6e/vD8V3d3cDsGHDhjjW2JBozMT++GBaqJcg9+zq4WfHfk1L1zC/+pudlJSU0NHREZprevToUdw2b2xpaaGgoIBz584xMjLCunXrGBwcDMVv2rQJgFOnTiX+RgxxQ8zE/rhgWqiXAOHd/UlauqzueElJCU1NTWRmZpKVlUVWVhbr1q0LdeedaGtrIz09nbKyMl544QWKiorw+/2heayAWT2VhJgW6vwxLdQU41zv4MyJIqiurg6tgAoGg2RlZbFt2zZeeOEFgsFg1Fr/rq4uysvL8Xq9ZGRkkJWVFWqZhpOVlcXQ0BAZGRmMjY0Zo9USxprYb9RyvhhBvQTIzPEzPDDmGPfae58BwCPwjdetIScrg5zsbDweD5dddhkA+/fvjxoCGB4epqqqKiSSIkJfXx+5ubmICFu3bgWs4YN169Zx/PjxkGgblh6zcjBtcMUIagoxXes0M8cfFVZalh36HFR4308beFXRIG952eVkpKfT3t5Of3+/43hqX18ffX195OfnMzY2Rnt7O5WVlZw6dYqamhqrPufOsXbt2lD6yaWshqWHmdgfH8wYqiFEAC+PdeXhT08nJyeHmpoaNm/ezI4dOxydULe2thIMBjl16hQZGRmoKllZWTQ3NwPW+CxYvgEAtm/fHlphZVh6xMtjv4jcKCINInJCRO5yiBcR+aodf0BEtofFFYjIf4rIURE5IiJXxfk2E4oRVEMUX3zsDzQ2Noa2SQFCLc1wBgcHOXz4MPn5+Xi93tAeVZWVlXR3d3P06FE8Hg8ZGRmhLVaMg+qliQh4RGI6ps9HvMDXgZuADcCtIhI5h+4moM4+bge+ERb3FeAXqroO2AIcic8dLgxGUFOIkqHWuOTzyTdfw+rVqzl27NiUcc/IfadWrVpFXV0dLS0tnDx5kvb2dmpra+nt7aWgoIBNmzZNMUQdP348LvUzJAJBvLEdM7ATOKGqjao6BjwE3BKR5hbgu2qxCygQkeUikge8FPg2gKqOqWpPXG8zwZj+V4rhJKo3XFEVFfb4nmbXPC7/p8dDn7euHORTr1/PsmJre2mfz0daWhrDw8MUFBRM6cKfOXOGc+fOsX79egKBAE8//TTXX399KL64uJiBgQFj7V+CiIDX7401eYmI7A07v1dV77U/VwJnw+KagRdFXO+UphKYANqB74jIFmAf8EFVnf3UlUXCCOolysjQGGeboi3/ab6p/1TPnenhvQ/u4a+uKeOyNVVs3rx5SnxLS8uU80mv/3l5eVx//fU8/fTTFBQUsHnzZoqKiigqKmLfvn3xvyHD/BBiaX1O0qGql7vnFEWkJdItTRqwHfiAqj4rIl8B7gL+IdaKLTamy2+YkbO9E/zto22cO3eOxsZGOjs7Abhw4YKjh6lTp04xPDxMMBjkpS99KevXr6e1tZW2traFrrohVkTweGM7ZqAZWBF2XgVEdpvc0jQDzar6rB3+n1gCmzQYQTXERCCorF+/ntWrV9PV1UUwGOT8+fOOaScmJujv78fj8aCq+Hw+KioqGB0dRVXZsWOH2exvCSIeT0zHDOwB6kSkRkT8wNuARyLSPAK8w7b2Xwn0qmqbqp4DzopIvZ3u5cDhON5iwjFd/hRi4g+/jApL2/aKuJezZs0a9uzZw/r16xkYGODcuXOISGjvKrDmoJaVlSEidHd3U1hYSHV1NUBo14BJD1aGxUeEWFqfM6KqEyJyJ/A44AXuV9VDInKHHX8P8ChwM3ACGAL+PCyLDwDft8W4MSJuyWMENcXpy6nkgy+ODh8eC0SF/e8zp6fN6/97oiHsLJ+f//IQb6nLYdu2bQCcOHEitIZ/fHw8lHKyZSoijI+P4/P5yM/PN4K6xJjFGOq0qOqjWKIZHnZP2GcF3u9y7XOA2/jskscIaoow8ug3Zk40A6+6ahUP//SgY9w737o1KiwtpxCPJ8ChQ4cYHByksrKSwsJCBgYGGBgY4OzZs6xYsYK2tjaWLVsGEPL+PzkOa1gaiMhsrPwGF8wYqmFGnMR0kpUrV7Jx40aKi4tpbGzk3Llz9PX1UV9fz4oVK9i7d2+oqz9pwBIR6urqXPM0LAIC4pGYDoM7poVqmBe9vb20t7cjImzYsIHR0VGOHz/Oc889R25uLiUlJQwPDzMxMcHQ0NBiV9fgiuDxmvbVfDGCmiK0PP6UY3jFxPiU8+GXvTuu5QYCAQKBAL29vXR3d5Ofn09dXR0ej4eSkpIpE/9LS0tDn1WVysrKqHmshkVidvNQDS4YQb3EyPz1fQB8euerHeO3Vl0dFXaiw32hSktLCytWrAgZo3p7e0Ofw8WyvLycqqqLK7ZEhGXLlhlBXSKIEdS4YATVEOJHbc57Sr3psuWu16QPplFeXk5fX9+0m/KdP3+egoICcnJyAMuR9bFjx+ZXYUNcMV3++WOeoGFe1NbWcuDAgZAVfzomxVRV8Xg8U/aiMiwuIoLX54npMLhjnk6K0NO4eNOQtm/fTkZGxrSrn1asuLjScHLvKa/XTNNZMgiI1xPTYXDHdPlTCCdR9fj2RIUVrl3B6CPfBiD7de+ad7kiQmNjI9nZ2aFtpsNJS0ujrKyM9vZ2SktLCQaDUzb0MywN4rFS6lLHCOolzqAtrABvqK51TvO7o+4Z3PkFwGpt5uXlOQrqmjVrgItW/skdVf1+/7TjroYFRGLydZoUiEik7wAnulT1z+JdthHUFKaofuZxzXhRUlJCaWkpZ8+ejdo36sKFC6F9poBQfPjyVMPiInaXP0VYD0w3P1CwdhWIO0ZQDXGhtLSUpqYmsrKyooxN4a3WQCCA1+vl0KFDZjuUpYSQSganj6uq88RsGxH5ZCIKNoKaInSdiHY0spAtVLCs+NXV1VOcpMDFLj5YrdNDhw6FNu4zLA0khVZKqerD8UgzF4ygpgBPrN/hGN62x9l71Ehnr2P44E8sv76bPvTHMZc9fv5U6HNJudWtX7NmDY2NjXR3dwOWf9R9+/bh8/lMN3+pcolM7BeRe1X19kTlbwTVEMXBf/nBlPP2wx1RaV7x7E+iwpqOvkD1ustob28PiWk4RkyXMCk0hioiRW5RWH5YE4YRVEPcKMnJAKzxVFXl7NmzM1xhWDpILN74k4V24DRT965S+7wskQUbQTVMi1Pr1I1038XXaWBgIBHVMSQIy2N/yghqI/ByVT0TGSEiCf2VN4KaAgQDkZtKWox0XzT8ZBRmLEhdVBVVpb+/f0HKM8QJETz+lJGDfwEKgShBBT6fyIJT5gkapidcXDuOOi9T/f6uaM9Pf/P+naHPx3/eEBUfiYigqpSXl9PZ2cnY2BjBYHAONTYsLKnT5VdV1zmmqvq1RJZtBNUAOItpJHWvqQ99DmZHj/urKj6saVLLli2jvLycYDDI6dOn6enpiZrwb1hCCEicfCuIyI3AV7A26btPVe+OiBc7/masTfr+TFX3h8V7gb1Ai6q+Jk51Sqh1f5LU+EkyLAlEhN27ngmd9/T04PV6Wb16tXGEssQRJC7OUWwx/DpwE7ABuFVENkQkuwmos4/bgcgN0T4IHInHfYWxIBv/mRaqIa4MDQ0xMDDAyZMnzUqoZEKmLsCYBzuBE6raCCAiDwG3AIfD0twCfNfe/XSXiBSIyHJVbRORKuDVwKeBD8ejQjYX4piXK0ZQU4BMF4NT7vIcx/C1b30p+7/6WELq4vf7GR0dNWKahMxiHmqJiOwNO79XVe+1P1cC4Zb0ZuBFEdc7pakE2rAMSh8BcmOtTIzcLCJ5qtoX53ynYAT1EmPtW18KwPa/vGlKuD/nV47piz77gGP4Dd+y3AI+/p6tU8KzsrIoLi6mqalpXvU0LCwigscXsxx0qKpbF9ppuVXk4LljGhF5DXBBVfeJyHWxVsYNEfkBcAcQAPYB+SLyJVX9wnzzdsMIqmFe3PCt56ac/1GNl63bre6jse4nESLxWinVDKwIO68CWmNM8ybgdSJyM5AB5InIv6vqn86xLhtUtU9E/gR4FPgolrAmTFCNUcoQV+qrSgCMRT/ZiJ/H/j1AnYjUiIgfeBsQ6Z/0EeAdYnEl0Kuqbar6MVWtUtVq+7r/m4eYAvhExAe8Hvipqo4T3VqOK6aFmqK4jZ8mmtK8TMAIajISj5VSqjohIncCj2NNm7pfVQ+JyB12/D1YrcWbgRNY06b+fN4FO/NNoAl4HnhaRFYBZgzVMD1Oq6DcPAf1nkzsts1HGs+ycWV5QsswxB+R+E3sV9VHsUQzPOyesM8KvH+GPJ4EnpxnPb4KfHXyXETOAC+bT54zYQTVAMDlX/57x/Dg0HnH8H++ZZNjeO/hZxy3QTEscVJr6akjtpAndPpJaj/BS4DdN16/2FWYQmlpKWNjY4tdDcMcSJWlp4uJEVRDXMnNzTWCmoSICB6zmm3eGEFNcorWWFb1rhOxu9lLJGvWrOHIkXivGjQsBKniYHoSexnsq4FqwrROVb+UqDKNoKYIk8I6E8Fx5yGk1oemeumveJv7Nii7BvNc4/x+P5bvC0NSkUIe+8P4GTACvAAsyKRoI6gGRyIFNpxqtwhvGnzym/j9frPdSdKROu77wqhS1c0LWaARVEPc8GRlA5h1/EmIeFLSyv+YiLxKVf93oQpMuSdoWDzagmlUYjbjS1ZSsIW6C/hvEfEA41g+BFRV3ces5okR1CTHn5sd+jzWP7iINYE+8XH+/Hmzhj8ZEUE8KWfl/yJwFfCCLtDSPSOoKUS4uAZcjE9urZCM4ugf7cDIxelPY31DM5Y/kZ5plpwmM6knqMeBgwslpmAE1RAj/rys0Of+M86rp6Qi21j4kxaB1OvytwFPishjwOhkoJk2ZUgo6YXxcaSSu6zCdPeTlTjuKbWEOGUffvtIOEZQDXHjyje8FYDW1kj3l4YljwikLYjmLBiq+smFLjPl2viXGoHxiahjMZgcpjp16tSilG+YH2LPQ43lWOqIyCfikWYumBZqCjKdqI4PjUSF5VSVOqb1+nwxl9lbsxGAwcHFnWlgmCNCKhml3i0i0/k9FSwH1p+Id8FGUC8h4rW0sHjjagrfe7djXG5uLqOjo45xhqWMpJKgfouZN/n7ViIKNoJqiBsNDQ0MDAwsdjUMcyQZuvOxsBhjp5MYQTXMm7a2NnJzc42YJjPiSTmj1GJgBDXJCYxEd6+9GekLWoejR4+ycePGBS3TEGdSc9rUgmMENQVxGyvNqXR28ecvLnYMH73QHlN527ZtM9ueJD3xm9gvIjcCX8HapO8+Vb07Il7s+JuxNun7M1XdLyIrgO8Cy7Dc7d2rql+ZRz2KVLVrrtfPhdQYNDEsKo2NjWRnZ8+c0LB0mbTyx3JMl43l1PnrwE3ABuBWEdkQkewmoM4+bge+YYdPAH+tquuBK4H3O1w7G54VkR+JyM2yQEv4jKAa5k15eTlFRUVm2WlSYzlHieWYgZ3ACVVtVNUx4CHglog0twDfVYtdQIGILFfVNlXdD6Cq/cARoHIeN7UWuBd4O3BCRD4jImvnkd+MGEE1zJuCggJU1ThGSXY8ntgOKBGRvWHH7WG5VAJnw86biRbFGdOISDWwDXh2rrdjC/YTqnor8G7gNmC3iDwlIlfNNd/pMGOoSczx974pKmyhtrEYGr64QGBgcGZPVIYljniQ2K38Hap6uVtODmGRv7TTphGRHODHwIdUdboJ+tMiIsXAn2K1UM8DHwAeAbYCPwJq5pq3G0ZQUwwNBNGAs4OS0W7naU3icV5778vOdAxPe9vfTTnPycnB70vD7/ebHU+TFSFeRqlmYEXYeRUQ+YK5phERH5aYfl9V/2uedXkG+B7welVtDgvfKyL3zDNvR0yX3zBvRITDhw9TWuq8hNWw9BEE8XpjOmZgD1AnIjUi4sda4vlIRJpHgHeIxZVAr6q22YajbwNH4uRi7+9V9Z/DxVRE3gygqp+LQ/5RGEE1xIWi4hJycnJIT1/YObCGOBEnK7+qTgB3Ao9jGZUeVtVDInKHiNxhJ3sUaAROYC0BfZ8dfjVW9/x6EXnOPm6ex13d5RD2sXnkNyOmy2+IC0VFRWRnZRp/qElL/Nbyq+qjWKIZHnZP2GcF3u9w3W9xHl+dFSJyE9Yc10oR+WpYVB7W1KyEYQQ1iQn3KuX1Lf5XOTY2RlFREefPO3v0NyxhRJC02L2LLXFagb3A64B9YeH9wF8lsuDF/y80xIUp4hoIOKZx88zvz3OelO+vWu0YLqPOhtfnDjaxdu1aI6jJiqTGCKCqPg88LyLft4cgFgwjqIa4UVtbS0FBwWJXwzAnJGUEVUQeVtW3AH8QkajJ0aq6OVFlG0E1xI2JiQmGh4cXuxqGOaIpIqjAB+2/r1nogo2gGmaFbL/RNe7UqVPU1tYuYG0McUNImRaqqrbZHz1Am6qOAIhIJlCeyLJT4wkalgQ+n8+s509axNqoL5YjefgRlteqSQJ2WMIwLdQkZmJ43CW81zHcbeWTPzd2T1Ey0u8aNzAwgNf41ExKFFBvyslBmu2gBQBVHbMXGyQM00I1xAVV5dprr6WwsHCxq2KYC2IbpWI5kod2EXnd5ImI3AJ0JLLApHo6hqXL/oYmAI4fP764FTHMndQT1DuAvxORsyJyFvgolv/VhJFybXzD4pBfuozm5mb6+ubsHMiwqKTOtKlJVPUkcKXtvUpsH6sJJbWeoCFupK9aM6v0tXVr6e7uTlBtDAuBiiemI1kQkXwR+RLwJPBrEfmiiOQnskzTQk1ihjqd53yOdI84hvc1O/9Adxw8GxVWuqXNISWUjAxGhXm3v4rms2fIzs427vuSmSQSyxi5HzgIvMU+fzvwHeANiSrQCKph3gT2/y+jniJWvOTVTExM0N+f8J6VId5I/JyjLCFqVfWNYeefFJHnEllgyv0kGRaHmmAXZ86coba2Fr/f7O+ejKRalx8YFpGXTJ6IyNVAQpfymRaqIW5s2LCBZ555hvr6epqamsweU0lF/LaRXkK8F3jQHjcVoAv4s0QWaATVEFeuvPJKmpqaKCgoMEaqZCKFlp5OoqrPAVtEJM8+T/gUFCOoScz4gPNKqWEXo5QvI/rrzl+VTzAQ3ZL052bNqU4iQnNzM3V1dUZQk4rUmTYlIh92CQcgTturOGIE1TArfNXrZ0yTnp6OJ/W6jymPelJGDnIXq+CUeYKGpUMwGGR83Ln1bFiiSOq0UFX1k4tVdmo8QcOSwufzkZZmfquTjjh5mxKRG0WkQUROiEjURnn2bqdfteMPiMj2WK+d3e3IWhH5lYgctM83i8jfzyfPmTCCaog7a9asobCw0HieSiri4xxFRLzA14GbgA3ArSKyISLZTUCdfdwOfGMW186Gb2HtcjoOoKoHsLa1ThimGZHEBMad944KjjmHjzqET4xc3HInzcFoNRt2ne4Kfb4y34/P5yPgsr+VYekRpzmmO4ETqtoIICIPAbcAh8PS3AJ81979dJeIFIjIcqA6hmtnQ5aq7o7w0Wt2PTUsDOHiOj7oPFPAbWfM3elTjVUtra0UFhbS1ua8hNWwBIldUEtEZG/Y+b2qeq/9uRIIX8vcDLwo4nqnNJUxXjsbOkSkFsvdKyLyJiChL6QRVENCONEzQU2usGzZMs6dO7fY1THMgCIEidkbf4eqXu4S55RJ5Lw8tzSxXDsb3g/cC6wTkRbgFPAn88hvRswYqiEhpGfncKxrlJycHIqKiha7OoYZUYIa2zEDzcCKsPMqoDXGNLFcOyMiclhEPo7lsu8VQCmwTlVfoqqnZ5vfbDCCakgYOQVFPH3gGDk5OZSWli52dQwzoDEeM7AHqBORGnu7kbcBj0SkeQR4h23tvxLotTfWi+XaWLgVyAH+V0SeBd7DAs1NNV3+JMbNiJRZksVwx9AC18aZ0pW1jIwMsnLlSgYHBxkaWhr1MkxFgWAcXC+o6oSI3Ak8DniB+1X1kIjcYcffAzwK3AycAIaAP5/u2jnU4XngeeBjtmC/Fcv4dQL4oap+a7736YYR1BQls2Tq0lE3y38wEHQMH+1xdsE3fuaYY/iOLSscwwF8pSsBWL9+Pfv27SMjI4PCwkLa29spLi6mo6ODFStW0NbWxujoqGs+hsQSL2c2qvoolmiGh90T9lmxxjdjunaeddmFJaY/Bb4M/CvWdKqEYAQ1xRgbXNorlIqKiigvLycrK4uKigoAqqqqACguLqahoYGBgYHFrOIlSbxaqEsJEbkCq/v/RqAJy0BltpE2JD9NTU1kZ2dTU1MTCuvv76etrY38/HyKioro6uoy81YXCwUHHzlJiYh8Bqub3w08BFytqs0LUbYRVMOCUF1dDUBDQwP19fUA5ObmcuzYMfr7+2luXpD33TANKeS/dhS4SVWdx6cSiBFUQ8L53v5wscymqKOD0pISALKysoyhagmggPNoevKxmM5RjKAmMV5/9Fr5rEznr9TjcZ60LV7nmXPisg5fx5xXULnx0Nno/CfFFGD16tUcPHhwVnkaEkPqNFAXDzMP1bDgPPTYk1y40M7Jkyfp60u4E3VDjAQ1tsPgjhFUw4IzkZ5Deno6PT09nDlzZrGrY8BqnQZUYzqWOiLyRpdwv4j8QyLLNoKapDz7ypctdhXmTl4JQQ1SXl6+2DUxhKEa25EE3C4ij4lIaEqJiNwEHACKE1mwGUM1LDjqSeN/DrXymo0VFBUVMTg4aFqqi4w1DzU51HImVPUGEbkV+KWI/ADYhLWe/632KqqEYQQ1SckqyXQMzyhw3lzPzfjk8Tm/AmkZfsfwQG+nY7hvpJdgRr5jnBOamUdWVhanT58mNzeXgoICenp6Yr7eEH9SQ05DPAxsBP4K6AGuX4hpVEZQDXHDM9IbFXbjmlrX9H6/n7q6OgC6u7uNoC4yqWJwEpGXAP8G/A7Le9W1wM9E5D+AT6tqwtY3mzFUw6IyuTLq9OmEelUzxEAKjaH+C/BuVX2vqnar6k+AbUA6ltOUhGFaqIZF5ezZsxQWFpolp4uMJokFP0Z2quqUdQqqOgR8VEQeSGTBRlANi0phYSH5+flkZGQwMjK7RQOG+JIqXf5IMY2IO5LIso2gJik5lc6zP3JXltF9ZOl3n2/+8m9Dn2+p8/Oh113OmTNnGB4eXsRaXbooSdOdX9IYQU1BCtevigrz+pw313Oz/o/1DTqn98xua+i2gWh3gu/61rNTzn96fAz90VN86E0vpbGxkYmJhG5MaXAhmEJ2frG2Oq1S1bMzJo4jxihlWBI8csbHngNHzVYpi0gKGaUmnVj/ZKHLNYJqWDJ87tdtZGVlUVyc0MUsBgcmJ/bHYZO+pcQu28n0gmG6/IYlQ1cgg5MnT7Jjxw7Gx8eN45QFRBXGU8XD9EVeBtwhIk3AINY21aqqmxNVoBFUw5Jix44dHD16lOrqanp6emhpaVnsKl0iLMy0KREpAv4DqMbaluQtqtrtkO5G4CtYm/Xdp6p32+FfAF4LjAEngT9X1R6X4m6Kc/VnxAhqkpJRnOcS7rz80+PPcAwXF2PVbAk0O6/qq98UvXnf9+64ctq81q1bx/PPP8+WLVtobW1NJU/yS5YFXMt/F/ArVb1bRO6yzz8ankBEvMDXgVcCzcAeEXlEVQ8DTwAfs3dI/RzwscjrJ1HV0/aqqTpV/Y6IlGJtL50wzBiqYUlSWVkJwMqVK/F4zGuacBQCwdiOeXIL8KD9+UHg9Q5pdgInVLVRVcew9oW6BUBV/1dVJ6eB7AKq3AoSkX/CEtuP2UE+4N/newPTYd5Uw5KkpKSErq4uvF4vWVnODl8M8WOWRqkSEdkbdtw+i6LKVbUNwP5b5pCmEgif7tRsh0XyTuCxacr6I+B1WOOnqGorkDuLus4a0+U3LFmKiooIBAKcP39+sauS8igwHvtSqQ5VvdwtUkR+CSxziPp4jPk77dczpXIi8nFgAvj+NPmMqaqKiNrXZMdY/pwxgmpY0hw/fpz09HQGB50XGhjihEIgTmtPVfUVbnEicl5Elqtqm4gsBy44JGvG8hI1SRXQGpbHbcBrgJfr9APsD4vIN4ECEXkPVov2vlncyqwxgpqk5K+JXg0FkFZR7Rguac7+TSOZaDs11yrFhYwr7phy/quvvZPqFU69PUM8URZsjukjwG3A3fbfnzqk2QPU2R73W4C3AX8MIev/R4FrbYcnrqjq/xORVwJ9QD3wj6r6RLxuxAkjqIYppC23do2QDOfeUXDQeW5osNupoQH+9hNRYd6cese0l736b6PCfv7kH/j0Ry7H402zV+kogjIyMsLw8LBZ+x9HFmga6t1YLcd3AWeANwOISAXW9KibbQv+ncDjWNOm7lfVQ/b1/4rlhu8Ja3Upu1T1jshC7Dw/p6ofxZoZEBmWEIygGpY0X/7xHzgd/Am5nhFGgl7WlPh43dUbGRsbZfOGenp7e2lubjZTq+bJQk2bUtVO4OUO4a3AzWHnjwKPOqRbM4viXkn0lKqbHMLihhFUQ8Lwr4vPqr8/tKcxOX1wdzv84EgDALlyhF/8/StZuXKlcVA9X+I4hrrYiMh7gfcBq0XkQFhULpYX/4RhBNWw5HlN9Qhf+OBb+OFPf8GKiuW85IotAPzrw7+is7OTuro6ioqK6OvrY3x8nOHhYdrb2xe51snFLK38S50fYE2n+izWwoFJ+lW1K5EFG0E1LHkOtStP/HYPt95y45TwrsEJbvziAeAA64vGuG5tLmfP9/Dxd95AVlYWQ0PT2iwMYaTYrqe9QC9wK4CIlAEZQI6I5KhqwrbYNYKapHhLnS3f3uLlzhekOxuZJDDmHO6yVHXsxAHH8Inu6BahHvy9Y9qaHc51efyhTzmG/9eBNn7eDr996ElGPOmM+Kzu/8+fHQilOdLl58iuUSCTVx85xSuvuQIR4cCBA4yPR/tkNUSgSjB1WqgAiMhrgS8BFVjTs1YBR7B2Q00IZqWUIWnoSS8Oiel0fPln1i4Xg4ODrFq1itzchC6OSQkUy8ofy5FEfAq4EjimqjVYxrCEjqEaQTWkFO+5Ko+vvPc6Ojo6yM7O5vDhw5SWlhrH1TGQgv5Qx+1ZBR4R8ajqr4GtiSzQdPkNSUn6+ADbS4bY156JPR8RgPFAkLWrLy56uOqqq2htbUVEWLZsGefOnVuM6i55LH+o8/d8ssToEZEc4Gng+yJyAWu5asIwLVRDUlIlvfzoU2/nsuKpE/sf2D3Auz/zEHv37g2FVVRUkJ2djdfrpaCgYIFrmhykUpdfRArtj7cAQ8BfAb/A8p/62kSWbVqoSYon08XI5OLqTtOc/Z6qJOdv6sm0Sra+93v0BTMJa6Dy5st8HD3Tw1vvOw33TZ2buq2wl/s++gZ6enoWtrJJQpJ156ejQUTagd9jjZn+XlUfnOGauGAE1eCIJ9vZkOPJLXAMV4elp27LVANHdjmGX73hxY7hFVdXO4YX50T7J/iTukxqq1dy7QcfpHl0qgHrD9255OTk4Pf7GRtznt1wqaIL5LF/IVDVMhFZC7zYPv7Gdi69C/idqn4+UWUnZ/PEYHDhx8f7AXjHS5y8x3lIS0ujvLx8YSuVDNgrpWI5kgFVPaaqD6jq7Vhd/09hTZf6ZCLLNS1UQ0oxQhq1d/x42jRlZWVm/X8ESkotPZ1smV6F5QawEat1+qfA/kSWbQTVcEkxMDBATk6OEdMIVGFsImWs/L/FEs4vAT+Zyc1fPDGCarikyM7OprW1lYKCAmOcCkNJnu58DFRwcfz0DhFJwxLYZ4BnVLUxUQUbQU1SJGOW+ywFArNLn5buHOyy5BWPNzpswsXw45QW4Lyzc+vq5c6v6XuucN6f7WW1Jc75AyJCZ2cna9asYXh4mNHRUde0lxQp5G1KVc8B/2UfiEgWlrf+TwI1WD5WE4IRVMMlx2WXXcbu3bupqqqira1txvRer5fAbH+QkowUG0PNxxo/nWylbgNOAD/DuO8zGOJPTk4OFRUVBAIBLlxw3m1gkrVr15KVlcXhw4dTdocATaEWKpZ47sKah/rPwG5VXZAvzgiq4ZJkw4YNnDx5ktra2hkF9cSJE2zevJkNGzbQ2dnJ2bNnU7LFmiqCqqqL5rjBCKrhkiUzMzOmdOPj4zQ3N1NaWkp7eztr1qwJGbbKyso4duwY/f39Ca5tYgmqMpo6Vv5Fw0zsN1xSvPyrvwkd9++ylqZmZ8+8XXtaWhq7du1i3bp1tLS0UFZWRllZGQDFxcUUFxcntN4LwUJM7BeRIhF5QkSO238LXdLdKCINInJCRO5yiP8bEVERcbdALgKmhZqkuK3ld7Wgu+F1Th90WfsvRc4OrP0OS1KDg86ttuDI4KzCvV1nHcOLlzm3MIfznJfNvucHz005/3XzBF1f/xH/9Kev4tSpU9N24z0eDzk51lLW+vqpu7a2tLSwefNmvF4vHo8nKT1aLeAY6l3Ar1T1blso7yJi0zwR8QJfx9pkrxnYIyKPqOphO36FHZcwz/tzxbRQDZc0zweW8fOnd8+4HNXr9eLzOf/IbNy4kQMHDuDxeKisrGTHjh2JqGrCCajGdMyTW4BJRyUPAq93SLMTOKGqjao6BjxkXzfJl4GPYE1OcEVEMkTk/SLybyJy/+Qx3xuYDiOohkueP1wYD7U+3fB6vXR2drrGbd68mcrKShoaGhJRxYQzObE/xi5/iYjsDTtun0VR5araBmD/LXNIUwmEd0ua7TBE5HVAi6o+H0NZ3wOWATcATwFVQEIHu02X33DJM5ZRSHp6+rQOqM+dO8eLX/xixsfHXVuqABMTCfVfnDBmufS0Q1Uvd4sUkV9iCVkkH48xf3EIU3uC/seBV8WYzxpVfbOI3KKqD4rID4DHY7x2ThhBNVzyHOqcoK+vj8zMTPLy8ujri3Y7ODg4SH9/P52dnVFjqOGMjIzMOA1rKWJN7I+PlV9VX+EWJyLnRWS5qraJyHKszfMiacZyajJJFdAK1GKtdHre3qWhCtgvIjvt1VGRTO7O2CMim4BzQPVs72c2GEFNUsYrNjmGS8Blh091/mdRz+xeAaddUmVsGIg21nr8vY55eId6nOsy7GyU0nHnJayeoW7H8Mp852W5X3/rFsdwgJKSPHbvnn4sNRgM0t7ePq2g1tbW4vP5SEtLS67Wqi7YWv5HgNuAu+2/P3VIsweoE5EaoAV4G/DHqnqIsCECEWkCLlfVDpey7rVnEfyDXW4O8I9xug9HzBiqwWBzxRVXsGrVqil7VIUzMjKC3x/t1DqcgoICnn/++WnzWYpMLj1dAH+odwOvFJHjWJb6uwFEpEJEHgVQ1QngTqzu+RHgYVtMZ3dPqvepareqPqWqq1W1TFXvme8NTIdpoRoMNn19feTn57N8+XJaW1sd08Ti9u/yy63hxby8PHp7nVvpSw1VmFiAFqq9C+nLHcJbgZvDzh8FHp0hr+rp4kWkHPgMUKGqN4nIBuAqVf32HKoeE6aFajDY5Ofns3//flejk9frjUlQ/X4/e/fuTaoNARewhbqQPIDVyq2wz48BH0pkgUZQDYYwfD6fqxB2dXWxbds2mpqaZswnNzcXr8uiiaWIqjI2EYzpSCJKVPVhIAihoYSEOmEwXX6DAXjrA7sByAwO84ncFgoLC+nunmr0Ghsbo729nVWrVnHo0CE2btzoml9dXR0ZGRnk5uYmzTr/JGt9xsKgiBRjLwAQkSuBhI7BGEFNUsY9zsaRMXXurrrtp+7WhXVrh/jSMqLCMjMKHNOmpbtsdZ1d5Bw+7uxhzZpFEI3bv79nxHm3Vb/Xcdk4H/v5kdDnYU8mvzl4gtdcvZ3BwcGo3VHPnz9PVVUVGzdu5Pe//z0vfrHzTq0ZGRmhtf/JIKgp5r5vkg9jWfdrReR3QCnwpkQWaATVYIjgF505lBw+yStftJXW1lba29unxO/bt4+cnBx27NjB7t27qays5ODBg5SWlrJ9+/ZQup07d3LmzBnKy8s5f/78Qt/GrNEUE1RV3S8i1wL1WIsFGlTVZV5hfDBjqAZDBBMqPHA8yAe+8wTBYJCamhry8/OnpBkYGOD48eOsX7+erq4ubrjhBrZv3z5lmMDjsf69qqqqlvx4qioEgxrTsdQRkStEZBmExk13AJ8Gvigizt2jOGEE1ZByDA+PcKZt/quVunzFlJaWcuTIEUpLS6OMVaOjo5w8eZLq6upQK7awsHDKSqu8vDxUlbVr1867PolFUY3tSAK+CYwBiMhLsea6fhdr/PTeRBZsBNWQcvzHz35B7ebL6Rt22SRwFmRnZ3P11VfT0tJCbW0tRUVTGziBQIChoSHy8/NDzlPC/QE0NzcjImRkZEzrA2DRUQhMBGM6kgCvqnbZn98K3KuqP1bVfwDWJLJgI6iGlKO22loG3nzB2TvUbPjSb07ypd+c5Bed6fz7/+2hpqaGvLy8KWlaWlrw+Xyhbn1JyUWfx8XFxZw6Ze3mOumQeimiWKuTYzmSAK+9dTRYiwj+LywuoXYjY5RKUtqHnNeJD407d8nc/FiOu5j/vS4/tT5PdER6mvMSyzy/ixNsl/D0LOdCM3BZE+/it+DF11qCuqyyimDWRfHzjzrX87p1zkI3PD51yuIFXxE//vUu3viyK3nhhRdCMwBUlf7+fgoKCujt7Z3iCrCy0tp2+8KFCyxbtozs7GyOHTvmfD+LTJJ052Phh8BTItIBDAO/ARCRNSR42pRpoRpSDhFhdLCfgoiWZDw4nVbKqVOn2LhxI1lZF52wHD9+nIaGBtLT03nhhRemXHPs2DE6OjpobW0lNzd3aXb9U8gopaqfBv4aa6XUS/TiL4UH+EAiyzYtVINhltTU1HDgwAHWrVs3RTwHBgZob28nPT2dkZER0tPTEZEpBqnf/e53rF+/nqampiXWItSUmjalqrscwhLeNTAtVIPBgZUFmQTGx3hR1gDpo9ELBerr6/H7/aGpUZN0dnZSWlpKRkYGIyMjUdddddVVtLe3s337dgoLnRcaLAaqEAgEYzoM7hhBNRgi8Ajk+r1ofxdX79hC4XB7VJpJJ9LBCKfMgUCA5uZmxsfHOXDgQHTeHg/19fU0NDRQXl6+pFz8aVBjOgzumC5/kpLtc/4tnHDxut436hw+MOZs8BmfxT+Oz+MsCh1pznV0MmwBZLrcU6aL0cvvTXeukIv7CzftemWt8xbQN660ltlWZApvrp86MX9SCEXEseve09PD0NCQc4FYLdzGxkYqKytpbm7G5/MxPp7QRTwzYsRy/hhBNRhcqFteyNmmk1SvqKCh6SylBXkUFeRz8OBBNm1y3jFhkrGxMUpLS6dNs2LFCnp7e0O7pI6OjtLR0bEo21CrJofBaaljuvwGgwtpHg/LCnJYtXYDm3ZeQ/naLXQGM6aIqdvc0v7+fjZt2sS+fftc8/f5fBQXF3PixAlGR0dJT08PTbNaDFJopdSiYQTVYJiOsWFOHLBEcXRkhK6uLg4ePBiKdjMsDQ4O0tbWxrp163j22WddhUhEWLNmDenp1vDFdMMEiSaFJvYvGkZQDYYZqF5eQldTA319fSxftoxAIMAf/vAHGhoaOHr0qOt1ra2tnD59mvXr17N//34g2ogVzoEDB6LcBS4UmlpLTxcNI6gGQwzkZqWTG+jnyOHDlJWVEQwGGRgYmPG64eFh+vv7Q8tVp7Pqb968mfz8/BnHXhOCLoyVX0SKROQJETlu/3Vs4ovIjSLSICInROSuiLgP2HGHROTz86pQnDFGqRTD7f913KVl5GbNH3FpiTjNCnBbvupWptelkm6zBXLSnV/TwgznFUc+r3M+bvV8YPcZx/DGc9GOoV+/2suLX7KcjIxMLlw4H5OoXrhwgW3btjEwMDBlWaoTvb29VFVVkZaWhtfrpaWlZYHGLZXgwoyP3gX8SlXvtoXyLuCj4QlExAt8HWtX1GZgj4g8oqqHReRlwC3AZlUdFZEl5SDBtFANhlnwdEcaH3voNzz06z3U19dTUVE5ZSlpfn5+aDx0kmAwyJEjR8jJyQl5pHKjoKCAtrY2Ojs7KS8vp66uLiH3EYnlHGVB5qHeAjxof34QeL1Dmp3ACVVtVNUx4CH7OoD3Aner6iiAqs7fT2McMYJqMMySY0N+ftmTx0e++wS/f/4QyysqyczMpLS0lDVr1jha6oeGhmhvb6e4uJhdu3ZNO5ZaWVnJZZddRnt7O7m5uYm8lYvMrstfIiJ7w47bZ1FSuaq2Adh/nVqYlcDZsPNmOwxgLXCNiDwrIk+JyBWzv9nEYbr8BsMcOTmRR2NLkNVV59m2aUPIyXS405RwJpelXnnllTz11FNce+210+bv9/unzFOddAOYKGYxD7VDVS93ixSRXwLLHKI+HmP+TmM2k5VLAwqBK4ErgIdFZLUukflcRlANhnmg4uHuPX2UvfAsX7v1RfT395OZmUlxcXFU935wcJBAIIDX6+Xaa6+lp6fHdctqsIYP2traaG5uZuPGjaxcuTJx96FKME7r9FX1FW5xInJeRJarapuILAecuuzNwIqw8yqgNSzuv2wB3S0iQaAEiF4fvAiYLr/BME8mVGgdhg/+9wv8/S+b+MxPdpGRkcmy5cuj9pJ64YUXOHLE2mW1sbFxxryXL18e2q66q6trhtTzY4Hc9z0C3GZ/vg34qUOaPUCdiNSIiB94m30dwE+A6wFEZC3gBzrmW6l4YVqoSUrfmHNrYszN4u4SPjTuvPC9e9h5XblT+khHzJMMjLg4hnbB62blz3B+TQeynLfSdpsVkON33ijvqtXO+7YdOhFtQLrgcq/b11z00t/pzecLTzfx1roMdm7byrlz52hpaQEubply+vRpNm/e7JiXG4meTqVBFycI8eVurG76u4AzwJsBRKQCuE9Vb1bVCRG5E3gc8AL3q+oh+/r7gftF5CDWvlG3LZXuPhhBNRgSwoQvi+83weNNz/DOnSspLS2dsh11d3c3K1eu5NSpU5SXl7uOu07yzDPPcNVVVyWuwqoLIqiq2om1LUlkeCtwc9j5o8CjDunGgD9NZB3ng+nyGwwJpIMcenp6KC0tJS3tYvslEAggItTU1MwopmAtcU2kUUqxBDWWw+COaaEaDAlm48aN7Nmzh5UrV9Lc3DwlzvLyFIwaa41k2bJlMQnvnFElOL44y15TCdNCNRgWgNraWsrLy6eEnT17lsHBwZg8OWVlZeH3O48ZxwU1LdR4YATVYFgAcnJyogTzwoULeL3eKUMBbvj9fg4dOjRjuvlgBHX+mC5/kuLWmBlzmUvYO+pscR9wCXez/rd0D0eF9Qw5zwhwq0umz7l7m+7i4d/vEu7mh8Dj4isgy6Xcl6xydsF3ze07o8KauqP3iQL3GQqTBAIBx91ODx8+zI4dO2hubqaqqmraPCanTyWCyTFUw/wwLVSDYQHIyMhgeDj6xwis7VJ6e3td4xcENS3UeGAE1WBIMENDQ4iIa9e+tbWVTZs2kZWVxRNPPLHAtZtECQYDMR0Gd4ygGgwRCPGdJ37smLUdvN/vd7TUDw8Pc+aM5ULwFa9wXbWZUFSV4MRYTIfBHSOoBkME6uibY+6ET4lav369Y5q+vj4AJiZmt7osbqiigUBMh8EdY5RKUurKZufWbevi7f2WUtSX5c3hqotLRlWVHTt20NDQMMU5dU5ODs899xxbt26dfyXniBkfnT+mhWowLAC9vb3s3r0bESEYDLJ27dopnqaGhobYsGFDyE/quXPnGB0dZXzceQZF3DHzUOOCEVSDYQHIz89n586dNDc3h0S1traWsrIyRITh4WHGx8d5/vnnAWtlVG9vLz6fj9HR0QWooRHUeGAE1WBYQKqqqhARvF4vra2tdHd3U1NTQ1paGo2NjWzbtg2ApqYmysosZ/Y9PT0Jr5e1BUowpsPgjhlDNRgWiYqKCpYvX86TTz7JFVdcwcmTJ9m3bx9er5dAIIDf76eioiKxS04nsa38hvlhWqgGwyIiIlx33XUcOXKEqqqqkJgCtLW10dHRwYkTJxJfETXzUOOBEVSDYZEREa644gpaW1upq6sLdfXBWu9/2WWX8dhjjyV0O2kFM20qDhhBNRiWCJdddhmBQIBgMEhRkbWLwPDwMKdOneKGG27gmWeeSVzhxsofF4ygGgxLiLy8PM6fPz9lu5OhoSE6OjoSPJZqBDUeGKOUwbDE2LlzJ+3t7WRkZDAyMkJOTg7Z2dlUVFQkrlBjlIoLsoT2tzK4ICJ7F7sOhiVDh6reGO9MReQXWNsxL1odUgEjqAaDwRAnzBiqwWAwxAkjqAaDwRAnjKAaDAZDnDCCajAYDHHCCKrBYDDEif8fl47nfUx26C8AAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import cartopy.crs as ccrs\n", + "import cartopy.feature as cfeature\n", + "import matplotlib.pyplot as plt\n", + "\n", + "plt.figure(figsize=(8,4))\n", + "ax = plt.axes(projection=ccrs.Mercator())\n", + "subset_uo.isel(lev=0,time=0).squeeze().plot.pcolormesh(ax=ax, x='lon', y='lat', transform=ccrs.PlateCarree())\n", + "ax.coastlines()\n", + "coast_10m = cfeature.NaturalEarthFeature('physical', 'land', '10m', edgecolor='w', facecolor='0.8')\n", + "ax.add_feature(coast_10m)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plot the temperature subset." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import cartopy.crs as ccrs\n", + "import cartopy.feature as cfeature\n", + "import matplotlib.pyplot as plt\n", + "\n", + "plt.figure(figsize=(8,4))\n", + "ax = plt.axes(projection=ccrs.PlateCarree())\n", + "subset_thetao.isel(lev=0,time=0).squeeze().plot.pcolormesh(ax=ax, x='lon', y='lat', transform=ccrs.PlateCarree())\n", + "coast_10m = cfeature.NaturalEarthFeature('physical', 'land', '10m', edgecolor='w', facecolor='0.8')\n", + "ax.add_feature(coast_10m)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Since `uo` is shifted to the right compared to `thetao`, we rename its coordinates (such that `thetao` coordinates will be referred to as 'x', 'lon', and 'lat')." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "subset_uo = subset_uo.rename({'x':'x_c','lon':'lon_u', 'lat':'lat_u'})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After renaming, we can merge the datasets into one DataArray using `xarray.merge`." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset>\n",
+       "Dimensions:    (lev: 75, time: 1980, x: 20, x_c: 20, y: 38)\n",
+       "Coordinates:\n",
+       "    lat        (y, x) float64 dask.array<chunksize=(38, 20), meta=np.ndarray>\n",
+       "  * lev        (lev) float64 0.5058 1.556 2.668 ... 5.698e+03 5.902e+03\n",
+       "    lon        (y, x) float64 dask.array<chunksize=(38, 20), meta=np.ndarray>\n",
+       "  * time       (time) object 1850-01-16 12:00:00 ... 2014-12-16 12:00:00\n",
+       "    areacello  (y, x) float32 dask.array<chunksize=(38, 20), meta=np.ndarray>\n",
+       "    lat_u      (y, x_c) float64 dask.array<chunksize=(38, 20), meta=np.ndarray>\n",
+       "    lon_u      (y, x_c) float64 dask.array<chunksize=(38, 20), meta=np.ndarray>\n",
+       "Dimensions without coordinates: x, x_c, y\n",
+       "Data variables:\n",
+       "    thetao     (time, lev, y, x) float32 dask.array<chunksize=(4, 75, 38, 20), meta=np.ndarray>\n",
+       "    uo         (time, lev, y, x_c) float32 dask.array<chunksize=(3, 75, 38, 20), meta=np.ndarray>
" + ], + "text/plain": [ + "\n", + "Dimensions: (lev: 75, time: 1980, x: 20, x_c: 20, y: 38)\n", + "Coordinates:\n", + " lat (y, x) float64 dask.array\n", + " * lev (lev) float64 0.5058 1.556 2.668 ... 5.698e+03 5.902e+03\n", + " lon (y, x) float64 dask.array\n", + " * time (time) object 1850-01-16 12:00:00 ... 2014-12-16 12:00:00\n", + " areacello (y, x) float32 dask.array\n", + " lat_u (y, x_c) float64 dask.array\n", + " lon_u (y, x_c) float64 dask.array\n", + "Dimensions without coordinates: x, x_c, y\n", + "Data variables:\n", + " thetao (time, lev, y, x) float32 dask.array\n", + " uo (time, lev, y, x_c) float32 dask.array" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ds_subset = xr.merge([subset_thetao, subset_uo], compat='override')\n", + "ds_subset" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we look more closely, the dimensions of temperature and zonal velocity are now different. Take note that the metrics used for each variable when doing grid-aware operations should match. This means we can use `areacello` for temperature, but what about for the zonal velocity? (Stay tuned!)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "('time', 'lev', 'y', 'x')\n", + "('y', 'x')\n", + "('time', 'lev', 'y', 'x_c')\n" + ] + } + ], + "source": [ + "print(ds_subset.thetao.dims)\n", + "print(ds_subset.areacello.dims)\n", + "print(ds_subset.uo.dims)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot a time series of average surface temperature data from CNRM-ESM2-1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Calculating average temperature over time is straightforward since we have the metric `areacello` with the right axes `(\"X\",\"Y\")` and dimensions `(x, y)`. The xgcm package uses a `Grid` class, and so first we create a `grid` object which contains our dataset `ds_subset` and assign parameters such as metrics. Then we perform a grid-weighted `average` based on this `grid` object, and plot the result as a time series." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{frozenset({'X',\n", + " 'Y'}): [\n", + " dask.array\n", + " Dimensions without coordinates: y, x\n", + " Attributes:\n", + " cell_methods: area: sum\n", + " description: Cell areas for any grid used to report ocean variables...\n", + " history: none\n", + " long_name: Grid-Cell Area\n", + " online_operation: once\n", + " standard_name: cell_area\n", + " units: m2]}" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from xgcm import Grid\n", + "grid = Grid(\n", + " ds_subset,\n", + " coords={\n", + " 'X':{'center':'x', 'right':'x_c'},\n", + " 'Y':{'center':'y', 'right':'y_c'},\n", + " 'Z':{'center':'lev'},\n", + " },\n", + " periodic=False,\n", + " boundary='extend',\n", + " metrics={('X','Y'): 'areacello'}\n", + ")\n", + "grid._metrics" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "mean_sst = grid.average(ds_subset.thetao.isel(lev=0),['X','Y'])\n", + "mean_sst.plot()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot a time series of average surface zonal velocity data from CNRM-ESM2-1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In previous versions of `xgcm`, trying to plot u-velocity the way we did with temperature would have failed, because we did not provide metrics at the right dimensions. (Recall that along the x-axis, areacello is at 'x', while uo is at 'x_c')." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![xgcm-version](xgcm-version.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![average-uo.png](average-uo.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To do it successfully, we would have had to do it the long way: create a `grid` object with `areacello` as a metric, interpolate the area metric to the u-velocity grid (`areacello_uo`), create another grid object with updated metrics, then calculate the `average`." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEWCAYAAABrDZDcAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABGDklEQVR4nO2dZ5gcxbWw37O7WuWIIkqrBEIiIwkECAQiSCRhG2wwNrKNDRi4JtjmEyY7AAYcLsHGmGAwydhwQVhCIkkIAQIFQKC8SALlCMphQ30/unt2pqd7pnumZ2d257zPM8/MdFdVV1dX16k651SVGGNQFEVRipeSfGdAURRFyS8qCBRFUYocFQSKoihFjgoCRVGUIkcFgaIoSpGjgkBRFKXIUUGgJCEiK0TklHznQ1GU+kEFgVLwiMgoEVkkIrtEZKqI9E4RdpqI7BGRHfZncdC0ROQ2EamKi7tDRPra53q5ju8QESMiP4+L30lEnhGRr0XkKxF5Ou5cUxF5TES2icg6EbnOla/DRWSOna85InJ43LmDRWSKiGwSkaSJPx75qhGR+wPes4jI70Vks/25W0TEPtdZRJ4VkTUislVE3hWRo+PijhSRWte1x8Wd/4eI7HOdL407f7KIzLXLZJmIXOr3XJXcooJAKWhEpCPwInAz0AGYDfwrTbSrjDGt7M+BIdP6V1zcVsaYZQDGmC/jjwOHALXAC3FxXwTWAb2BzsC9ceduAwbY504CrheR0Xa+yoGXgaeA9sATwMv2cYAq4HngEq+bdeWrC7Ab+HfAe74UOBc4DDgUOAu4zD7XCpgFHGXHfQKYKCKt4uKvcZXXE67s3e06X2Pnqwnwf8DfgLbAd4A/ishhXveo5BhjjH70k/ABVgCn2L9LgPHA58BmrAapg31uMlajGx/3E+CbEeblUuC9uP8tsRq6gT7hpwE/ziQtrMb6qYD5uhWYGvf/NLvcSn3CrwZOi/v/G+C5uLirAYk7/yUw2pVGf+uVTZmvccAyJ60A9/wecGnc+UuAmSnS3wYcZf8eCaxKEfYfwG99znUBDNAi7tgs4MJ81v1i/eiIQEnHz7B6jCcC+wNfAQ/a554BLnQCisggrB7vRK+EbJWJ32e8z/UHYwkXAIwxO7GE0uAUeb7TVqO8KyIjQ6Z1tohsEZH5IvLTFNe4GKuH7HAMsBh4wlaxzBKRE+37bo9Vdp/Ehf8k7rqDgXnGbg1t5qW5Rz/GAU/GpZXunhPOu/KVgK2uKgcq4w53FpH1IrJcRP4kIi1d0a6wy3OOiHwrLh/rgWeBH4pIqYgMx6o7M8LdrhIFKgiUdFwG3GiMWWWM2YvVaz5PRMqwhvaHx+mcLwJetMMlYYxpl+Jzl8/1WwFbXce2Aq19wv8/oC/QHXgYeEVE+gVM63ngIKAT8BPgFhG50BUeERmB1aP9T9zhHlg9+6lAV+APWOqdjvZ1nWt5XTfsPXoiIr2wBHa8gEqXtvv8VqCVYyeIS7sN8E/gdmOME34RcDjQDTgZS4X0x7ho92Gpwzpjqab+ISLHxZ1/FrgF2Au8g1XPVga8XSVCVBAo6egN/J/TcwcWAjVAF2PMdqze/wV22AuApz1TyZwdQBvXsTbAdq/AxpgPjDHbjTF7jaWvfhc4I0haxpgFxpg1xpgaY8x7wP8C53lcZhzwgjFmR9yx3cAKY8yjxpgqY8xzwErgOPu6zrW87iHUPabgYmCGMWZ53LF0abvPtwF2xI9ORKQ58AqWyuhO57gxZp1dZrX2Na8nrryMMXONMZuNMdXGmElYdeObdpoDsWwVF2ONMgZj2U3ODHnPSgSoIFDSsRIY4+q9NzPGrLbPPwtcaA/tm2P1iD3x8G6J//zKJ9p8LEOmk0ZLoJ99PAgGcHq3YdOKj+vEaQ6cT2KvGyxVjudSvsaYr4C18de2fzvXnQ8c6uqFH5oiX3641VVO2qnuOeG8K1+ISFPgJSwbxmWkJqm8Upw/GFhsjJliC5LFWJ2KMWmuoeSCfBsp9FN4HxKNxddiGWB72/87AWPjwjbFshu8DvwpB3nphKWu+BbQDPg9PsZMoB1wuh2uDEtVtRM4MEhawFgsrx0BhmE1fuNc1/gu8AVxhl37eAe7HMYBpVg94y1AR/v8XcDbdvoDsQTDaPtcuZ3m1XZ5XmX/L7fPi53fQViNaTOgqev6x9r32jpM+QGXY43yumPZMeYDl9vnmmCNBF4CyjzKeyTQy85fT6xOwONx58/DUj2VYKnNtgMj7XP9sEYjJ9vx+2HZHn6S7/pfjJ+8Z0A/hfch2WvoOixD6HYsQ+MdrvCP2g3U0Bzl5xQsffRuLKFUEXfuV8Cr9u9OWJ4n24GvgZnAqSHSehbLM2qHHeZnHnmZAvzGJ58jgE/t+LOBEXHnmgKPYXndrAeuc8U9Aphj52sucETcuQq7fOM/K1zx/wb8M4PyE+BuLKG1xf7teBydaF9rl31PzmeEff46LGG5C2vkeD9xgghL77/VvudPgAtc+fo28Jn9vFZhCamSfNf/Yvw4D1xRFEUpUtRGoCiKUuSoIFAURSlyVBAoiqIUOSoIFEVRipyyfGcgEzp27GgqKirynQ1FUZQGxZw5czYZYzq5jzdIQVBRUcHs2bPznQ1FUZQGhYh84XVcVUOKoihFjgoCRVGUIkcFgaIoSpGjgkBRFKXIUUGgKIpS5KggUBRFKXJUECiKohQ5KggUJY4p89exYfuefGdDUeoVFQSKYrO3uobL/jmHi/7+Qb6zoij1igoCRbFxtub4Ysuu/GZEUeoZFQSKoihFjgoCRXGjm/YpRYYKAkWxEbG+jUoCpchQQaAoilLkqCBQFEUpciIRBCIyWkQWi0iliIz3OC8icp99fp6IHOk6XyoiH4nIf6PIj6JkglGNkFKkZC0IRKQUeBAYAwwCLhSRQa5gY4AB9udS4K+u81cDC7PNi6JEgQoEpdiIYkQwDKg0xiwzxuwDngPGusKMBZ40FjOBdiLSDUBEegBnAo9EkBdFyRqVA0p9UFNrqKqpzXc2gGgEQXdgZdz/VfaxoGH+DFwPFEaJKIrSINm6q6pgGtYgnP7n6Qy48dV8ZwOIRhCIxzF3p8ozjIicBWwwxsxJexGRS0VktojM3rhxYyb5VJRAGNUNNUgO+/VrXPn03HxnIzCVG3bkOwsxohAEq4Cecf97AGsChjkOOEdEVmCplE4Wkae8LmKMedgYM8QYM6RTp04RZFtRlMbGawvW5zsLDZIoBMEsYICI9BGRcuACYIIrzATgYtt76BhgqzFmrTHmBmNMD2NMhR3vLWPM9yLIk6KERgcCSrFSlm0CxphqEbkKmAKUAo8ZY+aLyOX2+YeAScAZQCWwC/hhttdVlFyh8kApNrIWBADGmElYjX38sYfifhvgyjRpTAOmRZEfJbdUbthOv06tEPEy/TRcdGkJpVjRmcVKKKYu2sApf5zOyx+7zUCNB1URKcWGCgIlFEvWbwdgwdptec6JoihRoYJAyYjG6GLZCG9JUQKhgkBRFKXIUUGgZERjMxSDegspxYsKAkVRlCJHBYGiKA2exmizqk9UECgZ0RhfvMZ4T8WCPrrsUEGQA/ZV17Jjb3W+s6EoihIIFQQ54KJHZnLwrVPynY2c0pCMxXO++Io9VTVpw2mnsuGizy47VBDkgFkrvsp3FnJOQ1GjrN26m2/99T3GvzAv31lRckhDqY+FigoCpVGzr9raqGTOl41fOCtKpqggUBo15WVWFd9TlX7nKu1UNlzcj27Fpp2ceM9UNmzfk5f8NDRUECiNGrE3xwtiI1AaLm4h/vi7y/li8y4mzVubnww1MFQQKBnRUIzFtXYLUVMboLuvIwKlSFFBoGREQzHOObksiRNcL3+8mq27q/KTISUn+O0lEXUtfXvJRqYt3hBxqvlHBYHSIFm/bQ/b9qRvzGvtkYAjBj7fuIOrn/uY6/71ce4y14iorqllzde7852NgmHcYx/yg8dn5TsbkaOCQGmQHH3Hm4y8Z1rwCLYk2L3PshWs3ZpsRNQdypL57cSFHHvXW2zZuS/fWUlJAxmgFiwqCJRQ5No0sG1PFRXjJ/Li3FVpwwZpnBwbQb4sGq8vWM9NL32ap6tnj6MGaWiqtIZiwyoUVBAoSTw/eyWbduz1PJfrnteqLZYa4uHpyyJJz8mvu2Gor3biJ0/O5qmZX8ZUVPFU19TybuWm+slIkaIjhWCoIFASWLt1N9f/Zx6XPjk7L9cP0kBvD2AbcIiNCAKkm8tG4/63KpOO3ffmUi565ANmLtvsGWfLzn2s+mpX7jLViAjz7Hbureb52SsbjMNDfaCCICAfLNvMbRPm5zsbOcdxs1y/zXtEUAgj7kufnBM4bKG86m95eJp8vmknABu3e5f1MXe+yfG/n5rTfDUWwth3bp0wn+v/M48Pl2/JYY4aFioIXGzdVcVDb3+e1Fv4zsMz+cd7K/KTqXqktMRq6QP53eeQVJ21eau+Dp2OuP57hg2cangykZ/O8hhheHvJRqprwsfLN19s3llvPfQNtuDdrZMMY6ggcHHjS59y16uLeP9z7+F6PC/OXUXF+Ik8++GX9ZCz+sHxt1+3bY+vnSCXBBlxhDEEmphqKD82giCEaf5WfbWLGUu97QrTl2xk3GMf8uDUz6PJWEjumLSQivETQ8f7cPkWTrxnGv+atdI3zBebd6YUjKrlyQ4VBC4c74h9AXpVf3x9CQA3vFj4XiGPv7ucpeu3pw0XP/Hq5pc+Szrf0F44J7sF1O7HyCRPp/zxbb736Aee55ye7hdbdmaRq8zJ1MC/bOMOAD768mvP89v2VHHiPdNSvmdhqqXTOZgyfx0V4yeyzsOVuNhQQeBDY3M/u/2VBZx534y04Uribruqpv5bfWdtoFQ63zBPxm0sTpVuWNXE5M/W8vaSjaHi+LG3OpiaIsjiebkgTNmELcd0z2anvcnTjMrwZZ0qJ8/ZI5CFa7eFTrexoYLAhVunHCRsQyHIKCcduZaPsUYhorKtS8elGopgjHD5U3MZ99iHWacz4ePVHHjTZD63e8YNnbDPLib808RL9czcwidIPS1pZJ29bFBB4MLplTSmOhL/kvxlWiWDb5mcFMbPwFhdU0vlhvQqpWxYvG47X7kmhy3dsIN/vLvcO0Lcs3no7c9TupOGch9NHyQnvLHQ8ihatDaacn5x7upI0oknlF0mdOIZxsvmmglxrdgbt+9l1B+m8cXm/KjW8okKAhd1I4LGIwniO0t3T17Mzn2JaogvN++i/42v8sKcVQkvlAjc+9oSTvnj9JgeNxec/ufpnHHfO0nHb3tlQdq4d726iNtfWUDF+In87xtLY0tIODj3XhJypLG3uiZS75vG1LFIR2jVUCyeX3qp4+/eV8P2PcH3CPcb9b/yyRo+37iTx99dETitKLjsn7N5Y8H6er2mm0gEgYiMFpHFIlIpIuM9zouI3GefnyciR9rHe4rIVBFZKCLzReTqKPKTDXUzUf3OG8/fhUy6XC62jciTPk1eu32uvbPXBh9f96hw1v7JpL10lpr40xtLOOiWyQneJX6CPV3DfOBNkznvofczyE1wCs0OtWHbHs8Z0GEJm4JTDunmAvgV1wn3TOW4u97yPDd/9VY+XbXVlT/rOo5qaPueai7752zW25vY1LfKaMr89fw4TxM4HbIWBCJSCjwIjAEGAReKyCBXsDHAAPtzKfBX+3g18HNjzEHAMcCVHnHrlZhqKFDYhkFtGoEV72LpDuqUQ7o0/Hh+1kpWbol2dqz72bj/xxtew6j63Lf48cqvQ+ctn2TTfK3+ejfD7niT+95amnU+Mu4fZRjPb0IewIsfrebsB3ycJOwCe2HuaqbMX8/f3ra8nkoKSz7XC1GMCIYBlcaYZcaYfcBzwFhXmLHAk8ZiJtBORLoZY9YaY+YCGGO2AwuB7hHkKWNildh3ROD9u5BJl8/aFKOgEvFW4P79HR/9fRw1tYbrX5jHN/7yXoBcZo67Zx2f1VofNUB9P7tCb1scF8ppi7P3ggq7imtMNYRl83Hr6FOl5jXxcefe6qSRzbY9VbH5F8mTDBPDlhShJIhCEHQH4meCrCK5MU8bRkQqgCMATydpEblURGaLyOyNG6Nx2fOiTg54V4bERia61mRvdQ13TloYc5WLkvQvZt0oyB3WaWOz0Rhs2RlcrZTJhLJUcUK5PTaYMZ432eS+xFve16Udyn003LWd57dpx17uenWR7zwJr8f86IzkuQuDb53CE+9/kXDsf575iO89+kHC6MGv3hSjN1EUgsCr1NxVIWUYEWkFvABcY4zxdOo1xjxsjBlijBnSqVOnjDOblhA2gihXYXjuw5X8bfoyz6H5R19+RcX4iRl7M6R7MVPZRUoC6m+9081Pw5owarO/C3FmcRRZqK01VIU0an+2eitTXWsfxfT0ET8zYwyPvLMs5ZLhTh1zOlZug38qvPaV8KJyg+XsEK829HNbDTIgmL1iC0++vyLQtRsCUQiCVUDPuP89gDVBw4hIEywh8LQx5sUI8pMV6WwE8XUmypfGeZmrqpPT/M8ca23+6RlOXkorCGJ5MEneF9mMCPwa4dSkD5s2uQT1XcPu5afjiqfnMuDGV0PFOev+GfzQtctWOs+dIM/Qaw7IvFVb+e3EhVz3/MeB4xkDD0//nHeWbrT/R2DATnDysL7rRkEu1ZDrXjds35O0XPh5D73PLS83nkUooxAEs4ABItJHRMqBC4AJrjATgItt76FjgK3GmLVi1a5HgYXGmD9GkJdAfLl5Fys2efeu/davT8ezH35JxfiJ/PSp4CtjBiU+K19u3hXYs2PXvmr2VtekXTPIuee3Fm1g1B/edl07fU9x8brtkTW4mfTUk/T/JL/0PqYOd8QGx+T56yJJJ93s3kxVbNW1VgfHvbHNpE/Xplwy4o5Ji/j+o4mT9bzeyaDZiu+U1DkQeFc2t43gGw++x0WPeKurGgtZCwJjTDVwFTAFy9j7vDFmvohcLiKX28EmAcuASuDvwBX28eOA7wMni8jH9ueMbPOUjhPumcrIe6fx3uebqBg/kQVr6rRRdRXGO66X2gHq1ht69bPsXkyv6z4101rUrnLDDk64Zyp/fTv9omJzvtjCoFumcOBNkxlx99SUYf1sHUL6nuLrC9Zz+p+nM+ET9yAwOc7arbv592z/hcWC4i6i1Sn21PUzhNe3ZihMjzofuNUkxpjQrqTedcVb/XLF03NjizXWdTZCXS4jPHXUaVRDTv3KZEG9hkJZFIkYYyZhNfbxxx6K+22AKz3izSCPDhWvzbcmccxctplB+7dx8gQpMuX0Jobf+WZO93GdOG8tJw3sRIvyuke06iurQs5akX4d9TlffBX4WqneP7/hs8Mie52WJR4L2rnjjHvsQ5as38Fpg7rStkWTwPlLx/w1iWYl58Wev2ZrLF9u4/8nq7ZSMX4iK+46M5I8rPl6Nys27eTY/h0zTiOfWiy3eubv7yzjjkmL6NCy3D6f2cziICOxOq8h4xk2inLxSsOvk6PG4iLGGMMLc1bFFlpLNyIIaqQKfv263x99+RVXPjM3aSOcMPvvhnl5Ug37nQag1sceWWX3GpuUJlclt5ueMyltYwpVVRSv4L9mr+Tlj1dz5n0zuMleQbWuofO/12zam9P+NJ3vhlQfRN3uZ1N27gbbWZAtTGfHS41Ykka1+NnqrazftscOEybHmSGS7CKebCPI7hprvt7NzS99lvXM9G0hduLLFhUEWJVj4qdr+fm/P+HT1c4sxNz0ClZs2plyY3YBttkGW7ew+cDeUak+eyzp3Aqdyu4lCNx8vcuq2Le/kp2RLV3v9K5XF3H1cx8nxvEJG9WeCzvSuP16qyQKxyhRpxqy8lTqnpuRIq81Ls+lhBGBK+zyTTsTFtc76/4Z/HbiwswyHYIEu5FP3hyynfF9/X/m8c+ZX8Te10yYOG8th972WtKs6FyhgsDGvehZFG2t18tz1v0zuO75T1LGq1soLTETu2y3uqgXUEvdHiW69rmptkcEpR7dKL90t+6u4h/vLs94OYNMHo3fy/0/z3wU+13f7XLSLG6fG6sYP5FP6nmWc5jOxrkPvss3//Kep6olXuX0wFtLOeneaUkOCQ6ZFH/4dY0kdiGnwxW1aijd/KLKDdtZk8KuBZbjBsDCdfWzRHYkNoKGSqo5Ab42glAql+SX26/nmDA8dbm3JZO+oobJp6+xWOp6Cn7pOT3BshDj6XmrtjJv1Va6tm3G6IO7JZzzukxtraHvrybxqzMGcukJ/QJfJx6/3Lm9WeoTt0oi1TObvmQjh/VsFxfWpO25rv56N7NXbGHs4ekn67ttBEnG9RTXckbRZR7DR4nrSNz72pK0+bDyEMZDKTzOmkJ110s8n6uJxRXjJ3LZCX35W4ANfJwl45uW1U9fXUcEWI2Ee6q6X8UPM7EqXcjaWsO9UxYnqCdE0tsCotYMpXrvUunWr3xmLtU1yTYCYwyVG3akLSuvPWO98lJjH/z95MUp00uJj4orH8qZ2lrDxY99yDtLvLechGSHgEwMqN9+6H2ufu7jQLpq98RBd6/Yef6H3jaF6/+TekR75TNzOfbON4G6+hPIpuZzT3e+mr3qyCmvNxetj9VZP3KpeQ0iBAD22RPfygOoXKOgqAVBfHVw94pf8/HPtpa8zb4XuaeqhpnLN/PA1Er+33/mJeYrzVyGVD2WHXurueLpOaF0336vxZwvvuKTlVt9w0yctzbmJ15WKnywbDMV4ydy56uLOOWPb8d0pH4vVtClvuNdGlOll4pABvYIxUJNrWGPh6B7a9F6tu6uYvqSjWxPYVeY5pr56274H39vRdoJhuscI2yA/LonDnqp+sBSpzw/29vG5aQxo3ITa1wNfxCjs1/5T/o0+7kSTso3/t9nSe7G1S5PiKoak5f9uuNxVtAt1xFB/eG16uZfpnn76o+4eyqH3PZaoHQff3e5r4/7+Q+9HxuF7HFtU+hkxa/B910HyfZ8mvTpOh6dsTxQHp14Xmzasa+uMfFVDdkjgpISXvrY2hDF2bv28w2p9zDwbtATL7Rpx14+spfCrhu0hZcEviO8HBkGrnh6DgNvTtwA6N3KTfzoH7Nje127ic+i1zOOV2P95r8LuDjN7mhOCl4Ls/mFdZZiiEo9EkZoxwR+mnCPzljO/DVbE+Jkw1zXXsn3TFnMkN++kX3CWVDlMdLOJSoIbGoC1qhdIdZB+e3Ehfzwce+X9dPVW30b9LrRifd5r5fr+Vkr6XPDpIx03kHu3NdYXFM3IvAzsjn3OWJAeB/7c+6fwXcenhk6XnIeLFI95igalQenVvKb/y5gyvzEjUZE6jyUvgiwLLe7KKcv3chhtwfrgLjTmPzZutjKm0Gv5z7gLpqZyzYnp+FRX8Ns8BS0+H/z37r9t4OO4vLtoBW2w+G8b/XlIVjkxuK631GuJBrPtt3pVxM1xjVjOY2x2KtuOOsROT7Z6Vi7dTd7qmrp07FloErq6z5q9zbLSkuSDMbuZNu1KE/4H2TJALeKIVOifJ9+/coCPlhe1xDGl989U9LbMfzKO8HbxnUuzATBujQEMFzzr48B0kyeS7xiuhHBBQ/P5P+uOJYjerVPnYcQ5Z6rd7AQCHtr6dqAqClqQeCQMMkkYmqMYde+6oQZwvHX9SKdLtyrl+WMaFo2DfZIh99p7ei04q4zA927X+PlGN4efWcZn/jsBOWXhqdvffqsZIQg9kYz2V/hMddeyjMqU/e2MyGS3ctCJZFYLsnzCJJjbN7h0vtnmWVHg+VXH1d/vZvPVm/1Ppkntu+poryshMmfraNfp1Yc3L1t7JzfcjSpcN6RmFBUQVC/BNGjZsLG7XsZdMuUlL2xRL9ribMRBFMNPT9rZWw3LT8jXyqC3HldvUxM3zG0uYVAfBw/Hn93Oa9+lrw9ZjoyaSMXr9/OuQ++y/eP6e0bJtMaEGTUl3AdnwstXLuNZk1KGHVQl0hGMO4k+v1qEpcc3ydQ3OS6l5zpbFSKngQIe9b9PruNpSFXxt9DbnuNo3q3j43YVtx1puezC6oaeuCtSv7w+hIOsQWKqobqgfhNKnI9LK2uqaXMZfiJf8ReHky+IwLXietfqPM6cvfkghDk1p08uXv5VSlc8dyy1R3SbaQLmpdsXo1KDwP21t1VtG2e+dpHYbfB9KtrD0ytBKzGJIp+iTtfNbUmZsiP58PlW1i7NdGpwR030+cSbj5L8LBW2ibnuv8gHoJB1HZBs/nPmV8AdY4B9TQgKG5jsbOEr+BdYZ2NJ6LwLNlTnezLPdN2r4xvXB+evoxde50ZxH7GV38y0SkGMbj5FYHb9c4z3TCeIzn27Henv2jddg67/TVmLN2U0yUf1m7dw167DqS7zGG3v8Z9b2a/d3BQQ+23//Z+wpIce6pqPEeWUWxsn4pYZyPgc6iqyf2ecn9+I/Pn8PqCdVSMn8imHXtDL5fttwBfrihqQRCPV+W75eX5bNy+lz1V2S0eBdbL9cg7ib0xv5fdMfxmMqEsk/1Wg7zftcZQMX4id0xalHB8b4qyCduufvfvM1NuRB4Ffnma/UXm68IEKfHVX+/mlpetBfDSNV9RzXbOVKsw8ObJSeVkCO5Z57B8086YyjIIYevLV7v25XxEsLc6uJegG2e7zCXrt4f2bnJ/55qiVg0FYejv3sjI7dHNnqoa38W1kryGfGZ3OqTSG4ZVDU3+bF2g2uYXYnaKYXG6Jb3dvPf55kATaLJRm/rdahg3x0xxOhT19XJnc0dfu4SRMentaO7nctK900JdM6x69ug73gwVPiyfb9yRdhZyEJqWlYR45okB/ztvDe1aNOGgbm2yzkcqVBAAN6fZcu6dND7YQQhToWatsBpXf68hf8KOCC5/ak4gQZeJ2iQpSo71/0FI1dh4nXpwaiVXntQ/ZZrTl4bbQrS+BMHOEHNe3Hg972qXIFi5ZVdOvHgKxYnUb3G8sJSXlgZXDbnCPf3Blzz9wZeR7ZvhhwqCeiJ+6V0vvNaD8e35p2gtM2mwtwVQRWSiHs5ETRWEbHrvYW/jnimL+cGxFSndcp/9MNyua7nXbEePwVDj6sz8+r8LEv5nO6pqrPMIystKgquGnG9X8NP/NJ3vD+/NgrXbGDe8ggO7to40jyoI6olLnpid8vwfPJYd8LURpHjhMnmXgqhjonhJg7wMkfjPpyCT+4i6eVr9VeoliAuBJBuBCW8jCItXZ+PXryxIPljA/PP9FaxzTYIsLUlewsaPKtuhYJ1rYuji9dtjmyydPrirCoLGiF8defGj1fTv0irpeKqOdiavapD1TDJpA6JyQUyXbhj8RjZB0ty9rybl/shBiWq2dDyH3jaF84f0jDxdB2NSe4hB9rO3Y0I67hm5J+8VOt5q5uBjQGchwlT2mCY5GGmrIChw7vZYejn+hXO79GXSYAeZhJaJyul/bde7QtoCNpPtA50G6spn5sY2DCk0tu2pDrXQIMC6rXtoUhr84aQzFodZh8uTxqkZYv6abSzflH59qeue/zhQeplMGk1H0QmCXPtCZ0LQ9YEc4m0H7uF6JqqPNs3ST6bKpNT2esydSEcQoZHNa+C1NLSTpl/ROXWmUIVAphxzp7/XTdLyIJhIPGhSsWzTzpymny/c26b68eLc1YHCuSemRkFRCYLbJsy33CULjC82p+8txOM0llt3VyWrXzK4fhDhsXBt/WyZl2syUe0UYN8h53jaCOqpIIqwuEMRZjfAwGlGnmIB07RJCVt2pd8go9B5Ye5qLhzWi3MeeDfZvziDEUGQFzysZ0w8xsDJf5jGso1BenypK/ljM5ZnpWPPZHJgfTWAhYTXHbvdR3NFY/UeioqyEOq8oBTVzOJ2zctjO/80ZPZV13LOA+8CyT11Z72aMOT6/TaGgEIgvWrI7bIYFSL+Jj1jTF73Ni4U6ksgZm1raOTkYrOaohIE9bURdD7J5F3N5Ro7kHu3w6h4YY73FozvL9scelOYho67ThhDo+hENQbUWJwlheS9UkjkeigepieZT5kxdbH3DOGgxr7GjMGwqgHMfygGmpToiCArVA54U0gq8FyPTlLRmHTT3/jLu1nF99psvioD11slekpzYCMoshGBigIvCqkBfDNPLpr/nbeWReu25+XaueAjj70ewvDVruRF5wqomhQ1uZhQFsmIQERGi8hiEakUkfEe50VE7rPPzxORI4PGjRKVA94UkiBIRefWTXOWdmMSArngifdXRLL4opI9BWkjEJFS4EHgVGAVMEtEJhhj4t07xgAD7M/RwF+BowPGjQyVA97sbiBeGkHWRFJyQ9DJTkruycWEsihSHAZUGmOWGWP2Ac8BY11hxgJPGouZQDsR6RYwbnTokMCThmIEbCADF0XJKWGWBQlKFIKgOxA/22iVfSxImCBxARCRS0VktojM3rgx3PrvDjlaFbnB01AmTO3YG26TeEVpjORCNRSFIPDcszpgmCBxrYPGPGyMGWKMGdKpU6eQWXQyoZLAi4ZiI9BJXYqSG/fRKLyGVgHx69/2ANYEDFMeIG5kqGbImwYyIFAUhdxs+BSFaJkFDBCRPiJSDlwATHCFmQBcbHsPHQNsNcasDRg3MlQOeJNP331FUfJP1iMCY0y1iFwFTAFKgceMMfNF5HL7/EPAJOAMoBLYBfwwVdxs8+SHjgi8UTmgKMVNJBPKjDGTsBr7+GMPxf02wJVB4+YKtRF401BsBIqi5IbicsxWOeCJ2ggUpbgpKkGgcsAbHREoSnFTXIJAjQSeZLKlpKIojYeiEgQ6oUxRFCWZohIEOiBQFEVJprgEgVoJFEVRkiguQaByQFEUJYmiEgSKoihKMkUlCNRrSFEUJZniEgT5zoCiKEoBUlSCQKdNKYqiJFNcgkBn0CqKoiRRZIIg3zlQFEUpPIpKEDSULRkVRVHqk6ISBLq4mqIoSjIqCBRFUYqcIhME+c6BoihK4VFkgkAlgaIoipviEgQ6JFAURUmiqASBeg0piqIkU1SCYMfe6nxnQVEUpeAoKkHw/WMq8p0FRVGUgqOoBEHbFk3ynQVFUZSCo6gEgaIoipKMCgJFUZQiRwWBoihKkaOCQFEUpchRQaAoilLkZCUIRKSDiLwuIkvt7/Y+4UaLyGIRqRSR8XHH7xGRRSIyT0T+T0TaZZMfRVEUJTzZjgjGA28aYwYAb9r/ExCRUuBBYAwwCLhQRAbZp18HDjbGHAosAW7IMj+KoihKSLIVBGOBJ+zfTwDneoQZBlQaY5YZY/YBz9nxMMa8ZoxxpvvOBHpkmR9FURQlJNkKgi7GmLUA9ndnjzDdgZVx/1fZx9z8CHg1y/woiqIoISlLF0BE3gC6epy6MeA1xONYwupvInIjUA08nSIflwKXAvTq1SvgpRVFUZR0pBUExphT/M6JyHoR6WaMWSsi3YANHsFWAT3j/vcA1sSlMQ44CxhljP+GAcaYh4GHAYYMGaLLiCqKokREtqqhCcA4+/c44GWPMLOAASLSR0TKgQvseIjIaOD/AecYY3ZlmRdFURQlA7IVBHcBp4rIUuBU+z8isr+ITAKwjcFXAVOAhcDzxpj5dvwHgNbA6yLysYg8lGV+FEVRlJCkVQ2lwhizGRjlcXwNcEbc/0nAJI9w/bO5vqIoipI9OrNYURSlyFFBoCiKUuSoIFAURSlyVBAoiqIUOSoIFEVRihwVBIqiZExpidfCAUpDQwWBoigZ07K8NN9ZUCJABYGiKEqRo4JAUZSMEVHVUGNABYGiKBmjcqBxoIJAURSlyFFBoCiKUuSoIFAURSlyVBAoipIxaiJoHKggUBRFKXJUECiKohQ5KggKgAuG9kwfSFEKEJ1H0DhQQVAAfO+Y3qy468x8Z0NRQqNrDdUvuSpuFQQFgHaqlKg557D9c5p+aYnwm3MPpleHFjm9jpJISY4aCxUEBUCuHq5SvLRqltV25Gnp1Kop3z+md06voSSTq6ZCBUEBoHJAUZQg5Momo4KgANARQX4YPbgrPzi2It/ZyAlaoxonuXquKggKAC8DkNrgMuP60Qdy/egDA4W96Jhe3HbO4Jzl5aBubWiRp/X62zZvktP0nb6LMSan11ESURtBoyb54eooIRh9O7Vk1MDOsf9H9WrPFSP7B4qb6zK+57xDmX/76Tm9hhdTfzGSTq2bho532qAugcM6JadioH5RG0Ejxqv3r255wRjYtTWP/mBo7H8YHWp9CNt8+Nn36dgydJyrTurPyAM7JxzL9agiE1qUl9K9XfN8ZyNvqGqoEePVIKkgyIww7W6uyzifo7qwGptfnH4gpa7WYNLVI3j7lyM9w+drItnUX4zknetPysu1CwFVDRU4R/Vun3Fcr2dbqqqhQIirj+QutR8eV8Fd3zzEM6674Yuahv4Iu7ZpRu/9wo8ucokQTbm2b9GEv188hMN6tM0+sfpEVUOFzcXDe/PpbadlFNdLypfoiCAUh/dsByT3VG89ezAdW/npyxvviCAbeu/XgvOP6hFoxFTvtmIJPhpp1dR/LkV1jeHUQV0anI1DRwQFjojQullmOlWvZ1tT29CqaOHiV5K5lrUNVA4wrKID95x/WKCwub7HQ7q35Scj+sT+h2kIn/rx0Uz62QjPc7uqaoDsBFnfDGwx2VKQxmIR6SAir4vIUvvbUz8iIqNFZLGIVIrIeI/zvxARIyIds8lPPsmmUfHq4XRsVc5lJ/bl3MNzu1RAYyHVC+Ln4pjrHnvUgubWswdx2Ql9KS8L/9p+e0gP/n7xkJRh3Gq2lGHtoGU5lqYtyku58cxBddcNEbdNszIG7d/G85zT0TJ2N6Fjq6acclBnz7B+XD/6wHpfI6xQRwTjgTeNMQOAN+3/CYhIKfAgMAYYBFwoIoPizvcETgW+zDIvoXjk4iE8/P2jIksvzEvkxu9dumHMQfTr1CrjdKOmb8eW/Oi4Ppw8MNwLk1OyeC8yaVDDEe1L26FlOTeccVBG9qM+HVtxahr3UBNCUeI0SPWt/gpjpO7Sppnn8ctP7Md/Lh8O1I0IHhk3hEfGDfUMH0VeoqJQF50bCzxh/34CONcjzDCg0hizzBizD3jOjufwJ+B66tkleUhFew7o0jqy9LKpE542ggLUK5SVCrecPYhOvjr3+qdVuaUHTjXEd041a2JV9x8cW8FD3zuKgV2DP///Obl/aHfKXL20YRrsTAhS9Zx7KyvNbT1132mQq511aDcm/ux4WvrYCMaPGciQig5W+iZ4um7y8Y4W6hITXYwxawHsb6+uYndgZdz/VfYxROQcYLUx5pN0FxKRS0VktojM3rhxY5bZtgo0yjINklT7Fk24YczApAbIK66Tt1w89w9vHMWj41KrCbwIOupZ8OvTufXsQekDRkCb5okve6ryOr5/J/5y0ZHccMZARh/cNdRLNfLATnxyazhnAL/0e3ZozhmHdA2VVnx6QfTaue5VOY1gaUn9mhlTPbJuba0RwEVH92bw/sG8gZxyyqRRz0dXLVfXTLtEoYi8AXjV2hsDXsMr70ZEWthpBHq7jDEPAw8DDBkyJOt6HnUDG6wXJVx2Yj+mLt7gius/IshFD6Bz62Y0b7IjdLzYsgJpmpkW5WU51x2DtdRykFnEsV6fwBmHdMvwauHvx68I3rn+ZJ6a+QWTPl2X4xzUkeqZuatYIANqPdkI3KTypuvTsSXv3zDK9/wPjq1gQJdEVatjP8rkNatnGQjkzlicVhAYY07xOyci60WkmzFmrYh0AzZ4BFsFxG/B1QNYA/QD+gCf2I1dD2CuiAwzxoR7QzLAqzw7tCxn8P5teGfpptDpBXl5/Br1Qp5ZfMtZg1i3bQ8PT1+W0+v87hsHs/brPTwwtZLWTcvYvrc6ZfgW5aXcd+ERoa5R3yWaagSVzfMN0k6HWQPIsTmEsXPVjQgyv48rRvZjb3Utj85YHvq6XqRrJFOtKxWkgR3YtTWL1m2Pi2NFev3aE1i/bS/fe/SD9IlkSaEaiycA4+zf44CXPcLMAgaISB8RKQcuACYYYz41xnQ2xlQYYyqwBMaR9SEEwFYNuSp+s7IS/nnJ0Tm7pvPOuN9RLwERxUjg4uG9ue7UA7zzEvAF/tHxfUKtQeMQdsh20dG96b2ftcnJqYO78PkdZ4S+ZnS5SSaTx5EqTibtZyy9iPU+mTQuMRtBFoJg9MFdufms1CrEYbYu333dqPErg1+PHcy/Lx/O5GtG8B3XlrJOnAFdWmc1oTQMuerMZCsI7gJOFZGlWJ4/dwGIyP4iMgnAGFMNXAVMARYCzxtj5md53azJi34vplpJJNXqo9nIgxEDOvGzUQM8z4XpydXZK4LHcQu7kwd25u7zDk1znboCSpc/99lA2gyfJO89/zD+etGRAVIIh3O99284mcnXJPqzZ6aTDh6nNsSIIBMVh5OXoPXol6cfyGCXK2eq+2lRXsq0X4zkWldHJuWIIIO3ujaNauji4RUMrejAwK5tklKP995yx8/VHIOCNBYbYzYbY0YZYwbY31vs42uMMWfEhZtkjDnAGNPPGPM7n7QqjDHhdTIZUhK1sTigjQBgX3WtK25y5ChmbFbX1Pqey2RIny7GqIGdOdNHBz+gSyu+PaSn57mg6SeE9SlwT4NUmrI876gejEljO3DSPX1wiBU67Tx2a9ucgV0TG8FMvG2C2mgAwsxHzEgo2VGC1qMrT+pPz/aJ21qmuqwAFR1bJqWfK9VIGCEyenBXfnx8H4b3268uvit69/bNWfq7MfRoH3yBvLbNm/Dbcw+OGb0985kvG0FjRSRa17dANgL7e489q9HB612K9VSyGLtUpWgNwvmiO4br1KHiVwHNZp36qD1enPSyKUuHv1x0FFU1tQy8eXLasKnayKANWovyUtq3KGf117uDZhEIOSLISDUU3kYQhdtr1KqhTKpp5zZNucml0vKqW01KSwI33M2blPK7bxzMWYfuz1+mVvqGK1QbQYPGXYmzqaZBno/TQ3QLgiYeq585Mx+zee6pRgRhKpTblfVnowYwvO9+/hE8aFqWvEGLey0Yvyy9cd0JSaqVTMimLCWu4WvWJNhmM1EYixf8ejSP/3Aog7q14fgB1sT7QO6joUYEwcPG4thVNoyNwN0vSTki8DkZtRNFnftodun43UubgMvOLPzNaM46dH87LSuxX48dzLjhiftCF+QSEw0ZkeC94m8e2T3A9PP0aTkvzwkHdEo4Xp5CEPjx1s9P9F1HxaG6JsWIICPVkBWnR/sWPHvpMSnDOle+cFgvfnZyf356Yr+E8384/zD+89Ph3nFdrViXNs2SVCthch+219ekVBgxIPvVTtxFfMIBnWJ2EqfutWvRhP6dW6XcQ+CALq2ZdPWIWKMStdfQxcMrAod1qLMRJNbdm848iKEV3oZTd55SCUq/M6l05Jk0kmHcR8vs99SrE+U+stdW/3ZoWR4+UzbH9uvI7WMP5n8vOJybzjzI99pRULyCAKEsoJXspjMHcevZ2W9p6FT8m88axPs3nBw77uXBUxNTDXnTe7+WCeuoLPj16fx0pNXYOoaqfp0tn+nXrj0haQJZKGNx4JB1OO9807ISrjvtQJq7tmz81lE9kjYY8TemB8hBgIYv6Du09HdncMOYgxLjBovqumDi3yd/NCxmJ3EatKEVHXjjuhM50dU5yJagNoJld5zBz09LNMj6RR3YtXXsmbm9hi49oS/P/PhofjyiL/++/FjP+MnecnXpJk2wqydvjjB9hPOO6sEPjq1IMmBDsoD6cPkWoG4kfPNZg2LLWqTDUVk7SY49vDtH97FG4IXqNdRgKZFkbwm/tiRI4QdpZJzGt0lpCd3apjYidWntbzDyylOL8rKYXvi8IT344FejYi5tB3RpzaiDEo2cmazFH/0kvMQE3T1Ep7EJp8byMLzXw+olN581iG8e0T3hWKp8O3Wh1m6xbzzzIN78+Ymx8z3aN/fd7/iQ7ulnzaazETjXLymRujJLU8yTrzkhNncjXlUG1qjt2P7Jo6h/Xz6c6b88yTNPzmUnX3MCf7noKPp2bBnzLAo6oLn7W4dyhd0BaprJ2lGx66SvY82alHLbOYM9lxrx61c1tZc16dS6aWxZi3SUueoG5HalAShiQSDiPyJ4/doTEhakE0l8ANN+MZJ/B5Tu8QTthf/5O4fz1+8dGbu2F17HHVVQeWmJ74JbDpk0rlHXQXd6sRFBbDRhNYTxDYizcFpGfv0h7iCs8Ljk+D5UuNQ7qa7mCGJn5NektCRhgcHpvzyJT2/z3u/4iR8O44Wfeve6HdwjAnfDOu/W0/gso/2UrYTcI4KaWm971NCKDvSy54c4ixXGXKNdJfTWL0bG5vG47Wh+fHtoTw7qZgkPLztUfeGnsnKE096A9wN1NsMqD9WuqoYiRkhumJ0yHtClNacN7sqgbnW9E+dB79eynIqOLWnfIlH3F+TxuA1rfoLh3CO6s5+9sJtf4xVf8Tq2svLiGIeDGPAq9mvJuOG9GT04/Zo3Md1umHkEAcL4JefEfewHQxk9uCvNbePsirvOjK1hFMpbJYIBQapb79LGelZhXB0d3bqfLaikRHzvsW2LJmknMKWzEbRsWpa8cUuAcnKy69zbVSf355tHdOe7R/dOEcvie8f05pNbT4sJTK/icUZB1SH8Xx19fCYjArexeNaNp/DhjaNoWlbChcNSuzsHwe9+Du3Rll+efqBnnDpBkCxc1X00YkQ8vIZcde+flwxj2uKNtG9Zzm6X+577gfj1CB4dN4RaAz95cnbS9aZffxLrtu7J7AZsPrnltJhOsb1tmOoQYHXQkhLh9rEHc9+bS5k8P/Vk7jr3y/Ck9hX3Puk0YsP77Zfgqx2PXyPp1QCGGP2H5sNfjYrZP9wNUap7d4zFUW9A5NiHcrVz2CHd23JYz3bcYgvkdi3K+eN3Dg8UV0QS1CpexZNJY+6MRvxWG01FnbHYyk2n1ta7s/i3Y0Kn5cUvTxsIwDdcasMJVx0PwD1TFifFaWK/z9VxoyynLuVqRFDEgkAoSdMF2q9VU751VA9XPOvb/UCcf/++fDivzV/H39+x1k8ZdVAXPvryKyC5p969XfMkg2lyPlOepm2LuhfripH96dG+BWcfGnxhtSBeDRkMCOpesFSeIT7CNNVTiampcvRC+O214HcfneNUcE1dbqWp7t3RSkYpCCb9bAT7t7PyE2YegYPjzXbxcP/efbMmpbx85XGZZdBJw1bh7K326vEK48cM5FifDoAX5x7RnUXrtnPNKd7LqaQiSnk5sGtrlqzfnqCWa9uiCb8913vPbIBfnTGQg102H7e2oT4oWkEA4RoTd1A/zcTQig4MrejAMX33o539QJ2XMtcLyZWXlXCeS3Cl44KhPdlXXUtpiXDrBL+VP1J7MKUiTHsdyChvf/u5/nrP0g6W/89uPz0zg6NN0oggRVJO/t3t9WM/GMKeKv/5H6mI9yLLRL50bdusXnbcatnUEgQ7fRYWvNzlapyOpmWlGXv1ZbMfgZvJ15zA//vPPP41e2X6wDaXnpB8r/ecfxjPzfqSI3vVqf+MSyUXNUVnI3D06Q4/Pr5PzLc75VK9uEcA3vYFh1EHdYnpcR2jT1B31fqkrLSEHx3fh4uH9/Zd6M2vc+leECwsvnU6RSOWiVA9eWBnDu/ZztPtL55WTcti+tmDurbhkuP70LpZWeq8xnFkr3YJ/1NFcVyGa1yFe/LALlkslV3HhcN60ql1U8YW4FanfTtaRvFCWGHXeeejal+jSKdDy3KuGNk/oVOTyag8DIXXMuWYl648jge/W7fA2E1nDWKo3aAlGc/iqHsA4vrvPp+MM/zPpOLX18si4m+cNHFh4nnmJ0ez6DejveMEWnLDW5imEsiO2jSMTG3drAkvXXlcqG0/S0qEm88alLQ+Tir6d25N5e/GxHZCS9V7c85FbSNw6L1fS2bdeAr7p1E95oPbzhnMn75zWL2t2JmKuhFBNO9ZrhpqE/PWUhtBJPRo34Ierpe7V4cWjBvemx+P6Js2fsxGEKKBdnqVfTqFX5HwgqG9WLJ+B89+WK9bOvPUJUfz9e59Ccfcd1xWWkI6jz13nMH7t+HLLbuscxnUaacH7X4h3M3p5Sf2o3/n3O33/MpVx7OnOtklsCxugkaq++tqLyzmZwwPwpiDuzJz2Wa+2lXlG2bEgI78ddrnHNM3u9FblDQvL+UbR4RTYU6+ZgTLNu6MPC+57mlHRW2O81l0gsCLUtuDJhVJPu8h0j+0RzseuXhIbK2YMDQvL+XObx4SEwSdWjdl4/a9odNx4rq9F/yIz2tGxmKfXv3EuGUxnOTq5jN5683jiamG/GwE9vf4MQMD5zUVflk5pIf/pK4gvczu7ZrzzvUnZdVj/+v3rLku1/7r49hMVjfH9uvI0t+N8VzPKpe88NNjIx3tDOzaJmmZkcIk9UsyrE+HmFdQGNzeTVGjgiBDnF6+Q7qh5SkZbO7ixX//5/iEXZLCMOtG383mUhLEAyg5jvUdZGExZ3kF94QyL5zZlu4R2eD92zJv1dbQG8wHJZwQDBanZ4fgaqdU/CmN+2Z9CwGgINQ+YagvG8Hzl4WfiApxI4KMYqdHBUGGtG7WhA9+NYqfP/8JMyo35XxtlCalQlWNoUubZmlnDWfDO9efxF6XyiMbP/xUPZjSEmHqL0bS1b6f4wd05IAurbjmVO/NdKBONeQeEdx2ziC+PaRH0uzebMloOe3cr2ihRERtxD3t3DUD0Rq13aggCIjXu92lTbNQtoJ0tGlWlqBjjufVq0cwe8VXkV3LD69eaiYudkHbwvhVN9s0a8Jr156YInTdGkznD0nUMTctK+WIXtH3Qp3JYhmt1lrgemcFRh3UmadmfpnSUSQMOTMW59h9VAVBSNyPIaiPehDm3nyq77n+nVvTv3PrCK4Snmxc7KKutu1blvP5HWfkbO9aNw9+90ien72SA7sEL/vbzhnMb/67gCYF6C6sJHLr2YO56qQBOVMpRoWqhhoIUQwt/UYDeSdiF7tsqU//8/3bNQ89Y/W7R/fiu0f3ylGOlLCcf1QPevnYY5qUlsQ8uKIgV+9IrY+3XFSoIIiIwmgi88PjPxya1PuNqdaLuWCUguCe8w/Ldxayps6WkZv0VRAExM8LJleLexUS6bxgTjoweX2emDpJJUFB8fKVxzFv9dZ8ZyNr7r/wiJS7uuWLKPdBT0CXmCgM/Bq2kQdaro9+Q8/GQGaLzuUmL0p2HNazHd8/Jv2S0YXO2Yftn7RYWyFw7akHIGJNOIwSnVBW4FxyfB/OPaI7HQMs/dxQyaR377iEdm+XO1dXRSk02jRrwvI7o1+4T5eYKHBEpFELAchsRPDNI7vTtnkT32WdlYbDhKuOy3g2uxINOiIoEIpZ1ZHJrYtIZLOplfxyaI92+c5C0ZPRxMYQqI0gJMU4SSjXlVBRlNTUbampxuK84kw4uWBo8fqH52rBK0VRUtPObn/6ZrCCcRBUNRSQlk3LqPzdmILYTKO+0SkBipJfjujVnid+NIzhfTNftjwVWY0IRKSDiLwuIkvtb8/FXkRktIgsFpFKERnvOvc/9rn5InJ3NvnJNWWlJcXZK24ga7YrSmPmxAM6UZ7FVqqpyDbV8cCbxpgBwJv2/wREpBR4EBgDDAIuFJFB9rmTgLHAocaYwcC9WeZHyQF17qOKojRGshUEY4En7N9PAOd6hBkGVBpjlhlj9gHP2fEAfgrcZYzZC2CM2ZBlfpQcUOc+qqJAURoj2QqCLsaYtQD2t5fTeHdgZdz/VfYxgAOAESLygYi8LSJD/S4kIpeKyGwRmb1x48Yss62EwVlqu2mOhqWKouSXtMZiEXkD6Opx6saA1/DqRjr2xzKgPXAMMBR4XkT6Gg9/RWPMw8DDAEOGDFF/xnrkhAGduGJkPy45vk++s6IoSg5IKwiMMb77G4rIehHpZoxZKyLdAC/VziqgZ9z/HsCauHMv2g3/hyJSC3QEtMtfQJSWCNePjmYPYEVRCo9sx/oTgHH273HAyx5hZgEDRKSPiJQDF9jxAF4CTgYQkQOAcmBTlnlSFEVRQpCtILgLOFVElgKn2v8Rkf1FZBKAMaYauAqYAiwEnjfGzLfjPwb0FZHPsIzI47zUQoqiKErukIbY7g4ZMsTMnj0739lQFEVpUIjIHGPMEPdxdQNRFEUpclQQKIqiFDkqCBRFUYocFQSKoihFjgoCRVGUIqdBeg2JyEbgiwyjd0TnKtQnWt71j5Z5/dKQyru3MaaT+2CDFATZICKzvdynlNyg5V3/aJnXL42hvFU1pCiKUuSoIFAURSlyilEQPJzvDBQZWt71j5Z5/dLgy7vobASKoihKIsU4IlAURVHiUEGgKIpS5DR4QSAij4nIBnspa+fY4SIyU0Q+tre3HGYfrxCR3fbxj0Xkobg4R4nIpyJSKSL3iW7Q64tPmR8mIu/bZfiKiLSJO3eDXa6LReT0uONa5gEIU95ax7NHRHqKyFQRWSgi80Xkavt4BxF5XUSW2t/t4+I07DpujGnQH+AE4Ejgs7hjrwFj7N9nANPs3xXx4VzpfAgMx9pa81Unvn4Cl/ks4ET794+A39i/BwGfAE2BPsDnQKmWec7KW+t49uXdDTjS/t0aWGLX47uB8fbx8cDv7d8Nvo43+BGBMWY6sMV9GHB6pG2p2xrTE3ubzTbGmPeN9fSeBM6NOKuNBp8yPxCYbv9+HfiW/Xss8JwxZq8xZjlQCQzTMg9OyPL2RMs7OMaYtcaYufbv7VgbanXHqstP2MGeoK78Gnwdb/CCwIdrgHtEZCVwL3BD3Lk+IvKRiLwtIiPsY92x9k92WGUfU4LzGXCO/ft86vap7g6sjAvnlK2WeXb4lTdoHY8MEakAjgA+ALoYY9aCJSyAznawBl/HG6sg+ClwrTGmJ3At8Kh9fC3QyxhzBHAd8IytW/XS26lfbTh+BFwpInOwhtP77ON+Zatlnh1+5a11PCJEpBXwAnCNMWZbqqAexxpUHS/LdwZyxDjgavv3v4FHAIwxe4G99u85IvI5cACWpO4RF78HadRJSiLGmEXAaQAicgBwpn1qFYm9VadstcyzwK+8tY5Hg4g0wRICTxtjXrQPrxeRbsaYtbbaZ4N9vMHX8cY6IlgDnGj/PhlYCiAinUSk1P7dFxgALLOHedtF5Bjbqn8x8HL9Z7vhIiKd7e8S4CbA8VaZAFwgIk1FpA9WmX+oZZ4dfuWtdTx77PJ5FFhojPlj3KkJWJ1M7O+X44437Dqeb2t1th/gWazhcBWWBL4EOB6Yg2XJ/wA4yg77LWC+fXwucHZcOkOw9K6fAw9gz7rWT+AyvxrLu2IJcFd8+QE32uW6mDivCS3z6Mtb63gk5X08lgpnHvCx/TkD2A94E6tj+SbQIS5Og67jusSEoihKkdNYVUOKoihKQFQQKIqiFDkqCBRFUYocFQSKoihFjgoCRVGUIkcFgVJUiMh+cStzrhOR1fbvHSLylwLI3+UicnG+86EUF+o+qhQtInIbsMMYc2++86Io+URHBIoCiMhIEfmv/fs2EXlCRF4TkRUi8k0RudteV36yvfyAs9b82yIyR0Sm2MsOuNM9W0Q+sBeBe0NEutjH7xORW+zfp4vIdBEpsa/9C/v4z0RkgYjME5Hn6q80lGJDBYGieNMPa/2escBTwFRjzCHAbuBMWxjcD5xnjDkKeAz4nUc6M4BjjLUI3HPA9fbx8cB3ROQk4D7gh8aYWlfc8cARxphDgcsjvTtFiaOxLjqnKNnyqjGmSkQ+BUqByfbxT7E2fzkQOBh43d50qhRrGQg3PYB/2aOFcmA5gDFml4j8BGtPgWuNMZ97xJ0HPC0iLwEvRXNbipKMjggUxRtnBc9aoMrUGdNqsTpQAsw3xhxufw4xxpzmkc79wAP2aOIyoFncuUOAzcD+Pnk4E3gQOAqYIyLacVNyggoCRcmMxUAnERkO1rLFIjLYI1xbYLX921m5EhHpDfwca9OTMSJydHwke1XRnsaYqVjqpHZAq6hvQlFABYGiZIQxZh9wHvB7EfkEa4XKYz2C3gb8W0TeATZBwjLHvzDGrMFaTfQREYkfLZQCT9mqqY+APxljvs7N3SjFjrqPKoqiFDk6IlAURSlyVBAoiqIUOSoIFEVRihwVBIqiKEWOCgJFUZQiRwWBoihKkaOCQFEUpcj5/6vzCisnv2TwAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from xgcm import Grid\n", + "\n", + "# Step 1: Create a grid object with the available metric\n", + "grid = Grid(\n", + " ds_subset,\n", + " coords={\n", + " 'X':{'center':'x', 'right':'x_c'},\n", + " 'Y':{'center':'y', 'right':'y_c'},\n", + " 'Z':{'center':'lev'},\n", + " },\n", + " periodic=False,\n", + " boundary='extend',\n", + " metrics={('X','Y'): 'areacello'}\n", + ")\n", + "\n", + "# Step 2: Interpolate the available metric to the desired variable grid and assign it as a coordinate\n", + "areacello_uo = grid.interp(ds_subset.areacello,(\"X\")) \n", + "ds_subset = ds_subset.assign_coords(areacello_uo=areacello_uo.reset_coords(drop=True).fillna(0))\n", + "\n", + "# Step 3: Create a new grid object \n", + "grid_demo = Grid(\n", + " ds_subset,\n", + " coords={\n", + " 'X':{'center':'x', 'right':'x_c'},\n", + " 'Y':{'center':'y', 'right':'y_c'},\n", + " 'Z':{'center':'lev'},\n", + " },\n", + " periodic=False,\n", + " boundary='extend',\n", + " metrics={('X','Y'): 'areacello_uo'}\n", + ")\n", + "\n", + "# Step 4: Calculate the average and plot the time series\n", + "mean_uo_demo = grid_demo.average(ds_subset.uo.isel(lev=0),['X','Y'])\n", + "mean_uo_demo.plot()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But now we can do it the short way! With the addition of `interp_like`, and updated versions of `get_metric` and `set_metrics`, we can use the exact same lines of code as we did for calculating the temperature time series (do it in 1 step vs 4 steps)." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/srv/conda/envs/notebook/lib/python3.8/site-packages/xgcm/grid.py:1363: UserWarning: Metric at ('time', 'y', 'x_c') being interpolated from metrics at dimensions ('y', 'x'). Boundary value set to 'extend'.\n", + " warnings.warn(\n" + ] + }, + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "mean_uo = grid.average(ds_subset.uo.isel(lev=0),['X','Y'])\n", + "mean_uo.plot()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Demonstrating updated functionality for the xgcm package" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's take a closer look at how and why this worked. Since our available horizontal area metric (areacello) is in temperature dimensions, to get the metric for the u-velocity grid, we need to interpolate areacello to u-velocity dimensions. We can use the `interp_like` method or `get_metric` (which uses `interp_like` \"under the hood\"). For this example, the inputs for `interp_like` are the available metric (\"ds_subset.areacello\") and the array you need a metric for (\"ds_subset.uo\"). The inputs for `get_metric` are the array you need a metric for (\"ds_subset.uo\") and the axes to interpolate it to ((\"X\",\"Y\")). The method will use the metric available on the (\"X\",\"Y\") axis already assigned to the grid object (\"areacello\") for the interpolation." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/srv/conda/envs/notebook/lib/python3.8/site-packages/xgcm/grid.py:1363: UserWarning: Metric at ('time', 'lev', 'y', 'x_c') being interpolated from metrics at dimensions ('y', 'x'). Boundary value set to 'extend'.\n", + " warnings.warn(\n" + ] + } + ], + "source": [ + "areacello_uo = grid.interp_like(ds_subset.areacello,ds_subset.uo)\n", + "areacello_uo_getmetric = grid.get_metric(ds_subset.uo,(\"X\",\"Y\"))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Double-check if the interpolated metrics are equal." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "None\n" + ] + } + ], + "source": [ + "equal_metric = xr.testing.assert_equal(areacello_uo,areacello_uo_getmetric) # raises an assertion error if two objects are not equal\n", + "print(equal_metric)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now that we have this interpolated metric, we can update the grid object with `set_metrics`. Take note at this point that if you just want to do grid-aware operations such as `average`, `integrate` and `cumint`, they already use `get_metric` internally. There's no need to update the metrics through `set_metrics`, this is just to show how this method can give you a level of flexibility when you are experimenting with getting the right metrics for your dataset." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{frozenset({'X',\n", + " 'Y'}): [\n", + " dask.array\n", + " Dimensions without coordinates: y, x_c, \n", + " dask.array\n", + " Dimensions without coordinates: y, x\n", + " Attributes:\n", + " cell_methods: area: sum\n", + " description: Cell areas for any grid used to report ocean variables...\n", + " history: none\n", + " long_name: Grid-Cell Area\n", + " online_operation: once\n", + " standard_name: cell_area\n", + " units: m2]}" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Step 1: Assign areacello_uo as a coordinate of subset so that you can assign it as a metric \n", + "subset = ds_subset.assign_coords(areacello_uo=areacello_uo.reset_coords(drop=True).fillna(0)) # fill missing values with 0\n", + "\n", + "# Step 2: Create an updated grid object\n", + "grid_updated = Grid(\n", + " subset,\n", + " coords={\n", + " 'X':{'center':'x', 'right':'x_c'},\n", + " 'Y':{'center':'y', 'right':'y_c'},\n", + " 'Z':{'center':'lev'},\n", + " },\n", + " periodic=False,\n", + " boundary='extend',\n", + ")\n", + "\n", + "# Step 3a: Assign areacello_uo as a metric. \n", + "grid_updated.set_metrics(('X','Y'),'areacello_uo')\n", + "\n", + "# Step 3b: Take note that with set_metrics you can assign multiple metrics on the same axes to your dataset as long as they have different dimensions.\n", + "grid_updated.set_metrics(('X','Y'),'areacello')\n", + "\n", + "# Step 4: Double check if the metrics were assigned\n", + "grid_updated._metrics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Confirm that we get the same temperature and u-velocity time series with this updated grid object." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "mean_sst_updated = grid_updated.average(subset.thetao.isel(lev=0),['X','Y'])\n", + "diff_sst = mean_sst-mean_sst_updated\n", + "diff_sst.plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeQAAAFDCAYAAADrt32vAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAWAElEQVR4nO3df6zdd33f8edrdsxKGn4EnGCcuBjklXnSGsKRS5X+yhIzxwJMtm5yVIHVVbIyEamwH5qrTIw/KYhWQs0SmdVqmIC0FaSxWkMSrGopY7S5zhzHITG+pEEx9uIQKgJLtczte3+cr9nJzTn3R87J9efc+3xIR+f7/fw438/nnnPPy9/PPefrVBWSJOnC+nsXegCSJMlAliSpCQayJEkNMJAlSWqAgSxJUgMMZEmSGjCRQE5yIMnZJMdH1CfJp5PMJjmW5OqBuh1JTnR1+yYxHkmSps2kzpB/H9gxT/0NwJbuthe4HSDJGuC2rn4rcFOSrRMakyRJU2MigVxVDwDfn6fJLuCz1fcN4HVJNgDbgNmqeqKqXgDu6tpKkrSqLNffkDcCTw3sn+rKRpVLkrSqrF2m42RIWc1T/tIHSPbSX+7m4osvfufb3/72yY1OkqRlcOTIke9V1fphdcsVyKeAKwf2rwBOA+tGlL9EVe0H9gP0er2amZl5ZUYqSdIrJMl3RtUt15L1QeCD3aet3wX8oKrOAA8CW5JsTrIO2N21lSRpVZnIGXKSLwC/DLwxySngPwEXAVTVHcAhYCcwCzwP/FpXdy7JLcC9wBrgQFU9OokxSZI0TSYSyFV10wL1BXxoRN0h+oEtSdKq5ZW6JElqgIEsSVIDDGRJkhpgIEuS1AADWZKkBhjIkiQ1wECWJKkBBrIkSQ0wkCVJaoCBLElSAwxkSZIaYCBLktQAA1mSpAYYyJIkNcBAliSpAQayJEkNMJAlSWqAgSxJUgMMZEmSGmAgS5LUAANZkqQGGMiSJDXAQJYkqQEGsiRJDTCQJUlqgIEsSVIDDGRJkhowkUBOsiPJiSSzSfYNqf/3SY52t+NJ/jbJpV3dk0ke6epmJjEeSZKmzdpxHyDJGuA2YDtwCngwycGq+ub5NlX1SeCTXfv3Ah+pqu8PPMy1VfW9ccciSdK0msQZ8jZgtqqeqKoXgLuAXfO0vwn4wgSOK0nSijGJQN4IPDWwf6ore4kkrwZ2AF8cKC7gviRHkuydwHgkSZo6Yy9ZAxlSViPavhf473OWq6+pqtNJLgPuT/J4VT3wkoP0w3ovwKZNm8YdsyRJTZnEGfIp4MqB/SuA0yPa7mbOcnVVne7uzwJ3018Cf4mq2l9VvarqrV+/fuxBS5LUkkkE8oPAliSbk6yjH7oH5zZK8lrgl4B7BsouTnLJ+W3g3cDxCYxJkqSpMvaSdVWdS3ILcC+wBjhQVY8mubmrv6NreiNwX1X974HulwN3Jzk/ls9X1VfGHZMkSdMmVaP+3NuuXq9XMzN+ZVmSNF2SHKmq3rA6r9QlSVIDDGRJkhpgIEuS1AADWZKkBhjIkiQ1wECWJKkBBrIkSQ0wkCVJaoCBLElSAwxkSZIaYCBLktQAA1mSpAYYyJIkNcBAliSpAQayJEkNMJAlSWqAgSxJUgMMZEmSGmAgS5LUAANZkqQGGMiSJDXAQJYkqQEGsiRJDTCQJUlqgIEsSVIDDGRJkhpgIEuS1ICJBHKSHUlOJJlNsm9I/S8n+UGSo93to4vtK0nSarB23AdIsga4DdgOnAIeTHKwqr45p+mfV9V7XmZfSZJWtEmcIW8DZqvqiap6AbgL2LUMfSVJWjEmEcgbgacG9k91ZXP9XJKHk3w5yT9aYl9Jkla0sZesgQwpqzn7DwE/VVU/SrIT+GNgyyL79g+S7AX2AmzatOllD1aSpBZN4gz5FHDlwP4VwOnBBlX1XFX9qNs+BFyU5I2L6TvwGPurqldVvfXr109g2JIktWMSgfwgsCXJ5iTrgN3AwcEGSd6UJN32tu64zy6mryRJq8HYS9ZVdS7JLcC9wBrgQFU9muTmrv4O4FeAf53kHPA3wO6qKmBo33HHJEnStEk/F6dLr9ermZmZCz0MSZKWJMmRquoNq/NKXZIkNcBAliSpAQayJEkNMJAlSWqAgSxJUgMMZEmSGmAgS5LUAANZkqQGGMiSJDXAQJYkqQEGsiRJDTCQJUlqgIEsSVIDDGRJkhpgIEuS1AADWZKkBhjIkiQ1wECWJKkBBrIkSQ0wkCVJaoCBLElSAwxkSZIaYCBLktQAA1mSpAYYyJIkNcBAliSpAQayJEkNmEggJ9mR5ESS2ST7htT/apJj3e3rSX5moO7JJI8kOZpkZhLjkSRp2qwd9wGSrAFuA7YDp4AHkxysqm8ONPsr4Jeq6q+T3ADsB352oP7aqvreuGORJGlaTeIMeRswW1VPVNULwF3ArsEGVfX1qvrrbvcbwBUTOK4kSSvGJAJ5I/DUwP6prmyUXwe+PLBfwH1JjiTZO4HxSJI0dcZesgYypKyGNkyupR/IPz9QfE1VnU5yGXB/kser6oEhffcCewE2bdo0/qglSWrIJM6QTwFXDuxfAZye2yjJPwb+C7Crqp49X15Vp7v7s8Dd9JfAX6Kq9ldVr6p669evn8CwJUlqxyQC+UFgS5LNSdYBu4GDgw2SbAK+BHygqr41UH5xkkvObwPvBo5PYEySJE2VsZesq+pckluAe4E1wIGqejTJzV39HcBHgTcA/zkJwLmq6gGXA3d3ZWuBz1fVV8YdkyRJ0yZVQ//c27Rer1czM35lWZI0XZIc6U5IX8IrdUmS1AADWZKkBhjIkiQ1wECWJKkBBrIkSQ0wkCVJaoCBLElSAwxkSZIaYCBLktQAA1mSpAYYyJIkNcBAliSpAQayJEkNMJAlSWqAgSxJUgMMZEmSGmAgS5LUAANZkqQGGMiSJDXAQJYkqQEGsiRJDTCQJUlqgIEsSVIDDGRJkhpgIEuS1AADWZKkBhjIkiQ1YCKBnGRHkhNJZpPsG1KfJJ/u6o8luXqxfSVJWg3GDuQka4DbgBuArcBNSbbOaXYDsKW77QVuX0JfSZJWvEmcIW8DZqvqiap6AbgL2DWnzS7gs9X3DeB1STYssq8kSSve2gk8xkbgqYH9U8DPLqLNxkX2fcXMnv0Ru373a8t1OEnSFPr6b17Ha3/iolf8OJMI5Awpq0W2WUzf/gMke+kvd7Np06aljG+k1/zEWm7aNpnHkiStTK9auzyff55EIJ8CrhzYvwI4vcg26xbRF4Cq2g/sB+j1ekNDe6kuu+Tv8x/f45+sJUkX3iRi/0FgS5LNSdYBu4GDc9ocBD7Yfdr6XcAPqurMIvtKkrTijX2GXFXnktwC3AusAQ5U1aNJbu7q7wAOATuBWeB54Nfm6zvumCRJmjapmsjq77Lq9Xo1MzNzoYchSdKSJDlSVb1hdV6pS5KkBhjIkiQ1wECWJKkBBrIkSQ0wkCVJaoCBLElSAwxkSZIaYCBLktQAA1mSpAYYyJIkNcBAliSpAQayJEkNMJAlSWqAgSxJUgMMZEmSGmAgS5LUAANZkqQGGMiSJDXAQJYkqQEGsiRJDTCQJUlqgIEsSVIDDGRJkhpgIEuS1AADWZKkBhjIkiQ1wECWJKkBYwVykkuT3J/kZHf/+iFtrkzyZ0keS/Jokt8YqPtYku8mOdrddo4zHkmSptW4Z8j7gMNVtQU43O3PdQ74t1X1D4F3AR9KsnWg/neq6qrudmjM8UiSNJXGDeRdwJ3d9p3A++c2qKozVfVQt/1D4DFg45jHlSRpRRk3kC+vqjPQD17gsvkaJ3kL8A7gLwaKb0lyLMmBYUvekiStBgsGcpKvJjk+5LZrKQdK8pPAF4EPV9VzXfHtwNuAq4AzwKfm6b83yUySmWeeeWYph5YkqXlrF2pQVdePqkvydJINVXUmyQbg7Ih2F9EP489V1ZcGHvvpgTafAf5knnHsB/YD9Hq9WmjckiRNk3GXrA8Ce7rtPcA9cxskCfB7wGNV9dtz6jYM7N4IHB9zPJIkTaVxA/njwPYkJ4Ht3T5J3pzk/CemrwE+APyTIV9v+kSSR5IcA64FPjLmeCRJmkoLLlnPp6qeBa4bUn4a2Nltfw3IiP4fGOf4kiStFF6pS5KkBhjIkiQ1wECWJKkBBrIkSQ0wkCVJaoCBLElSAwxkSZIaYCBLktQAA1mSpAYYyJIkNcBAliSpAQayJEkNMJAlSWqAgSxJUgMMZEmSGmAgS5LUAANZkqQGGMiSJDXAQJYkqQEGsiRJDTCQJUlqgIEsSVIDDGRJkhpgIEuS1AADWZKkBhjIkiQ1wECWJKkBYwVykkuT3J/kZHf/+hHtnkzySJKjSWaW2l+SpJVu3DPkfcDhqtoCHO72R7m2qq6qqt7L7C9J0oo1biDvAu7stu8E3r/M/SVJWhHGDeTLq+oMQHd/2Yh2BdyX5EiSvS+jvyRJK9rahRok+SrwpiFVty7hONdU1ekklwH3J3m8qh5YQn+6IN8LsGnTpqV0lSSpeQsGclVdP6ouydNJNlTVmSQbgLMjHuN0d382yd3ANuABYFH9u777gf0AvV6vFhq3JEnTZNwl64PAnm57D3DP3AZJLk5yyflt4N3A8cX2lyRpNRg3kD8ObE9yEtje7ZPkzUkOdW0uB76W5GHgL4E/raqvzNdfkqTVZsEl6/lU1bPAdUPKTwM7u+0ngJ9ZSn9JklYbr9QlSVIDDGRJkhpgIEuS1AADWZKkBhjIkiQ1wECWJKkBBrIkSQ0wkCVJaoCBLElSAwxkSZIaYCBLktQAA1mSpAYYyJIkNcBAliSpAQayJEkNMJAlSWqAgSxJUgMMZEmSGmAgS5LUAANZkqQGGMiSJDXAQJYkqQEGsiRJDTCQJUlqgIEsSVIDDGRJkhpgIEuS1ICxAjnJpUnuT3Kyu3/9kDY/neTowO25JB/u6j6W5LsDdTvHGY8kSdNq3DPkfcDhqtoCHO72X6SqTlTVVVV1FfBO4Hng7oEmv3O+vqoOjTkeSZKm0riBvAu4s9u+E3j/Au2vA75dVd8Z87iSJK0o4wby5VV1BqC7v2yB9ruBL8wpuyXJsSQHhi15S5K0GiwYyEm+muT4kNuupRwoyTrgfcAfDRTfDrwNuAo4A3xqnv57k8wkmXnmmWeWcmhJkpq3dqEGVXX9qLokTyfZUFVnkmwAzs7zUDcAD1XV0wOP/ePtJJ8B/mSecewH9gP0er1aaNySJE2TcZesDwJ7uu09wD3ztL2JOcvVXYifdyNwfMzxSJI0lcYN5I8D25OcBLZ3+yR5c5Iff2I6yau7+i/N6f+JJI8kOQZcC3xkzPFIkjSVFlyynk9VPUv/k9Nzy08DOwf2nwfeMKTdB8Y5viRJK4VX6pIkqQEGsiRJDTCQJUlqgIEsSVIDDGRJkhpgIEuS1AADWZKkBhjIkiQ1wECWJKkBBrIkSQ0wkCVJaoCBLElSAwxkSZIaYCBLktQAA1mSpAYYyJIkNcBAliSpAQayJEkNMJAlSWqAgSxJUgMMZEmSGmAgS5LUAANZkqQGGMiSJDXAQJYkqQEGsiRJDTCQJUlqwFiBnORfJHk0yd8l6c3TbkeSE0lmk+wbKL80yf1JTnb3rx9nPJIkTatxz5CPA/8MeGBUgyRrgNuAG4CtwE1JtnbV+4DDVbUFONztS5K06owVyFX1WFWdWKDZNmC2qp6oqheAu4BdXd0u4M5u+07g/eOMR5KkabUcf0PeCDw1sH+qKwO4vKrOAHT3ly3DeCRJas7ahRok+SrwpiFVt1bVPYs4RoaU1SL6zR3HXmBvt/ujJAudmS/FG4HvTfDxLoSVMAdYGfNYCXMA59GSlTAHWBnzGHcOPzWqYsFArqrrxzgw9M+IrxzYvwI43W0/nWRDVZ1JsgE4O8849gP7xxzLUElmqmrkh9KmwUqYA6yMeayEOYDzaMlKmAOsjHm8knNYjiXrB4EtSTYnWQfsBg52dQeBPd32HmAxZ9ySJK04437t6cYkp4CfA/40yb1d+ZuTHAKoqnPALcC9wGPAH1bVo91DfBzYnuQksL3blyRp1VlwyXo+VXU3cPeQ8tPAzoH9Q8ChIe2eBa4bZwwT8ooshS+zlTAHWBnzWAlzAOfRkpUwB1gZ83jF5pCqJX++SpIkTZiXzpQkqQGrOpBHXdKzNUmuTPJnSR7rLlX6G135x5J8N8nR7rZzoM9vdvM6keSfXrjRv1iSJ5M80o13pisbeQnVFueR5KcHfuZHkzyX5MOtPx9JDiQ5m+T4QNmSf/ZJ3tk9h7NJPp1k2Fcbl3sen0zyeJJjSe5O8rqu/C1J/mbgObmj8Xks+TV0IecxYg5/MDD+J5Mc7cqbfC7meX9d/t+NqlqVN2AN8G3grcA64GFg64Ue14ixbgCu7rYvAb5F/zKkHwP+3ZD2W7v5vArY3M1zzYWeRze2J4E3zin7BLCv294H/Fbr85jzOvpf9L9b2PTzAfwicDVwfJyfPfCX9D/IGeDLwA0NzOPdwNpu+7cG5vGWwXZzHqfFeSz5NXQh5zFsDnPqPwV8tOXngtHvr8v+u7Gaz5Dnu6RnU6rqTFU91G3/kP6n1TfO02UXcFdV/Z+q+itglv58WzXqEqrTMI/rgG9X1XfmadPEPKrqAeD7Q8a26J99+tcLeE1V/Y/qvwN9lmW+5O2weVTVfdX/RgfAN+hf72CkVucxjyafj/nm0J0d/kvgC/M9RgNzGPX+uuy/G6s5kOe7pGezkrwFeAfwF13RLd0y3YGBJZWW51bAfUmOpH/1NRh9CdWW53Hebl78hjNtz8dSf/Ybu+255S35V/TPTs7bnOR/JvlvSX6hK2t5Hkt5DbU8j18Anq6qkwNlTT8Xc95fl/13YzUH8kQu6bmckvwk8EXgw1X1HHA78DbgKuAM/eUhaHtu11TV1fT/968PJfnFedq2PA/Sv9DN+4A/6oqm8fkYZdSYm55LkluBc8DnuqIzwKaqegfwb4DPJ3kN7c5jqa+hVucBcBMv/sdq08/FkPfXkU2HlE3kuVjNgTzfJT2bk+Qi+i+Wz1XVlwCq6umq+tuq+jvgM/z/ZdBm51b976hTVWfpf4d9G90lVOHHy1fnL6Ha7Dw6NwAPVdXTMJ3PB0v/2Z/ixcvBzcwlyR7gPcCvdkuGdMuKz3bbR+j/ve8f0Og8XsZrqMl5JFlL/7/m/YPzZS0/F8PeX7kAvxurOZDnu6RnU7q/xfwe8FhV/fZA+YaBZjfS//+poT+P3UlelWQzsIX+hw0uqCQXJ7nk/Db9D+IcZ/QlVJucx4AXnQFM2/PRWdLPvlu6+2GSd3Wvyw/SwCVvk+wA/gPwvqp6fqB8ffr/JztJ3kp/Hk80PI8lvYZanQdwPfB4Vf14CbfV52LU+ysX4ndjuT7J1uKN/tXEvkX/X2q3XujxzDPOn6e/9HEMONrddgL/FXikKz8IbBjoc2s3rxMs86dH55nHW+l/OvFh4NHzP3PgDcBh4GR3f2nL8+jG9WrgWeC1A2VNPx/0//FwBvi/9P81/+sv52cP9OgHxbeB36W7wNAFnscs/b/rnf/9uKNr+8+719rDwEPAexufx5JfQxdyHsPm0JX/PnDznLZNPheMfn9d9t8Nr9QlSVIDVvOStSRJzTCQJUlqgIEsSVIDDGRJkhpgIEuS1AADWZKkBhjIkiQ1wECWJKkB/w8sXY6ry2I8mAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "mean_uo_updated = grid_updated.average(subset.uo.isel(lev=0),['X','Y'])\n", + "diff_uo = mean_uo-mean_uo_updated\n", + "\n", + "fig = plt.figure()\n", + "ax = fig.add_axes([1,1,1,1])\n", + "ax.plot(diff_uo)\n", + "ax.set_ylim(-1,1)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "interpreter": { + "hash": "42143b80c7e25dd10a9414519f35ae1b958f66e22d4c0d866543ab216d08a4c6" + }, + "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.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/average-uo.png b/average-uo.png new file mode 100644 index 0000000..99c5b1b Binary files /dev/null and b/average-uo.png differ diff --git a/xgcm-version.png b/xgcm-version.png new file mode 100644 index 0000000..5d5c0da Binary files /dev/null and b/xgcm-version.png differ