{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Workflow Example\n", "Here we illustrate a complete workflow example including the following steps:\n", "- Data loading\n", "- Converting the data to CF format\n", "- Preprocessing the data\n", "- Running a diagnostic\n", "- Visualizing the results\n", "\n", "## Imports" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from pathlib import Path\n", "\n", "import xarray as xr\n", "from datatree import DataTree\n", "\n", "import valenspy as vp #The Valenspy package\n", "from valenspy.inputconverter_functions import _non_convertor" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Input Convertors\n", "\n", "Input convertors are used to convert the data to CF format.\n", "There main component is a function that takes the file and returns the data CF convention.\n", "See input_convertors_functions.py for examples.\n", "\n", "The Input convertor is a class that does the following:\n", "- Convert the data\n", "- Check if the converted data meets the CF convention\n", "- ..." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "#Import Converter - This input converter will not do anything to the data.\n", "ic = vp.InputConverter(_non_convertor)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Loading datasets\n", "Load the data and convert to CF format if necessary.\n", "\n", "In this illustration we will load EOBS data, CMIP6 historical and future data" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.Dataset> Size: 1MB\n",
       "Dimensions:  (lat: 20, lon: 20, time: 730)\n",
       "Coordinates:\n",
       "  * lat      (lat) float64 160B 49.05 49.15 49.25 49.35 ... 50.75 50.85 50.95\n",
       "  * lon      (lon) float64 160B 3.05 3.15 3.25 3.35 3.45 ... 4.65 4.75 4.85 4.95\n",
       "  * time     (time) datetime64[ns] 6kB 1953-01-01 1953-01-02 ... 1954-12-31\n",
       "Data variables:\n",
       "    tas      (time, lat, lon) float32 1MB dask.array<chunksize=(26, 20, 20), meta=np.ndarray>\n",
       "Attributes:\n",
       "    E-OBS_version:  29.0e\n",
       "    Conventions:    CF-1.4\n",
       "    References:     http://surfobs.climate.copernicus.eu/dataaccess/access_eo...\n",
       "    history:        Fri Mar 22 09:55:59 2024: ncks --no-abc -d time,0,27027 /...\n",
       "    NCO:            netCDF Operators version 5.1.4 (Homepage = http://nco.sf....
" ], "text/plain": [ " Size: 1MB\n", "Dimensions: (lat: 20, lon: 20, time: 730)\n", "Coordinates:\n", " * lat (lat) float64 160B 49.05 49.15 49.25 49.35 ... 50.75 50.85 50.95\n", " * lon (lon) float64 160B 3.05 3.15 3.25 3.35 3.45 ... 4.65 4.75 4.85 4.95\n", " * time (time) datetime64[ns] 6kB 1953-01-01 1953-01-02 ... 1954-12-31\n", "Data variables:\n", " tas (time, lat, lon) float32 1MB dask.array\n", "Attributes:\n", " E-OBS_version: 29.0e\n", " Conventions: CF-1.4\n", " References: http://surfobs.climate.copernicus.eu/dataaccess/access_eo...\n", " history: Fri Mar 22 09:55:59 2024: ncks --no-abc -d time,0,27027 /...\n", " NCO: netCDF Operators version 5.1.4 (Homepage = http://nco.sf...." ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#Observational dataset\n", "EOBS_data_dir = Path(\"/dodrio/scratch/projects/2022_200/project_input/External/observations/EOBS/0.1deg/\")\n", "\n", "EOBS_obs_files = list(EOBS_data_dir.glob(\"*tg*mean*.nc\")) #Select all the netCDF files in the directory\n", "EOBS_obs_files = ic.convert_input(EOBS_obs_files) #Convert the input to the correct format\n", "\n", "EOBS_ds = xr.open_mfdataset(EOBS_obs_files, combine='by_coords', chunks='auto')\n", "\n", "#THIS SHOULD ALL BE IN THE INPUT CONVERTER FOR THE DATASET\n", "EOBS_ds = EOBS_ds.rename_vars({\"tg\": \"tas\"})\n", "EOBS_ds = EOBS_ds.rename({\"latitude\": \"lat\", \"longitude\": \"lon\"})\n", "#Convert from Celsius to Kelvin\n", "EOBS_ds[\"tas\"] = EOBS_ds[\"tas\"] + 273.15\n", "\n", "#Select a small region covering Belgium for testing\n", "EOBS_ds = EOBS_ds.sel(time=slice(\"1953-01-01\", \"1954-12-31\"))\n", "EOBS_ds = EOBS_ds.sel(lat=slice(49, 51), lon=slice(3, 5))\n", "\n", "EOBS_ds" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.Dataset> Size: 13MB\n",
       "Dimensions:    (time: 24, bnds: 2, lat: 256, lon: 512)\n",
       "Coordinates:\n",
       "  * time       (time) datetime64[ns] 192B 1953-01-16T12:00:00 ... 1954-12-16T...\n",
       "  * lat        (lat) float64 2kB -89.46 -88.77 -88.07 ... 88.07 88.77 89.46\n",
       "  * lon        (lon) float64 4kB 0.0 0.7031 1.406 2.109 ... 357.9 358.6 359.3\n",
       "    height     float64 8B 2.0\n",
       "Dimensions without coordinates: bnds\n",
       "Data variables:\n",
       "    time_bnds  (time, bnds) datetime64[ns] 384B dask.array<chunksize=(12, 2), meta=np.ndarray>\n",
       "    lat_bnds   (time, lat, bnds) float64 98kB dask.array<chunksize=(12, 256, 2), meta=np.ndarray>\n",
       "    lon_bnds   (time, lon, bnds) float64 197kB dask.array<chunksize=(12, 512, 2), meta=np.ndarray>\n",
       "    tas        (time, lat, lon) float32 13MB dask.array<chunksize=(12, 256, 512), meta=np.ndarray>\n",
       "Attributes: (12/46)\n",
       "    Conventions:                        CF-1.7 CMIP-6.2\n",
       "    activity_id:                        CMIP\n",
       "    branch_method:                      standard\n",
       "    branch_time_in_child:               0.0\n",
       "    branch_time_in_parent:              29219.0\n",
       "    contact:                            cmip6-data@ec-earth.org\n",
       "    ...                                 ...\n",
       "    variant_label:                      r1i1p1f1\n",
       "    license:                            CMIP6 model data produced by EC-Earth...\n",
       "    cmor_version:                       3.4.0\n",
       "    tracking_id:                        hdl:21.14100/18af2970-6a17-45fe-b629-...\n",
       "    history:                            2019-06-06T07:27:13Z ; CMOR rewrote d...\n",
       "    latest_applied_cmor_fixer_version:  v3.0
" ], "text/plain": [ " Size: 13MB\n", "Dimensions: (time: 24, bnds: 2, lat: 256, lon: 512)\n", "Coordinates:\n", " * time (time) datetime64[ns] 192B 1953-01-16T12:00:00 ... 1954-12-16T...\n", " * lat (lat) float64 2kB -89.46 -88.77 -88.07 ... 88.07 88.77 89.46\n", " * lon (lon) float64 4kB 0.0 0.7031 1.406 2.109 ... 357.9 358.6 359.3\n", " height float64 8B 2.0\n", "Dimensions without coordinates: bnds\n", "Data variables:\n", " time_bnds (time, bnds) datetime64[ns] 384B dask.array\n", " lat_bnds (time, lat, bnds) float64 98kB dask.array\n", " lon_bnds (time, lon, bnds) float64 197kB dask.array\n", " tas (time, lat, lon) float32 13MB dask.array\n", "Attributes: (12/46)\n", " Conventions: CF-1.7 CMIP-6.2\n", " activity_id: CMIP\n", " branch_method: standard\n", " branch_time_in_child: 0.0\n", " branch_time_in_parent: 29219.0\n", " contact: cmip6-data@ec-earth.org\n", " ... ...\n", " variant_label: r1i1p1f1\n", " license: CMIP6 model data produced by EC-Earth...\n", " cmor_version: 3.4.0\n", " tracking_id: hdl:21.14100/18af2970-6a17-45fe-b629-...\n", " history: 2019-06-06T07:27:13Z ; CMOR rewrote d...\n", " latest_applied_cmor_fixer_version: v3.0" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#CMIP6 dataset\n", "#Now make an ensemble member object\n", "EC_Earth3_dir = Path(\"/dodrio/scratch/projects/2022_200/project_output/RMIB-UGent/vsc46032_kobe/ValEnsPy/tests/data\")\n", "EC_Earth3_hist_files = list(EC_Earth3_dir.glob(\"*historical*.nc\")) #Select all the netCDF files in the directory\n", "EC_Earth3_hist_files = ic.convert_input(EC_Earth3_hist_files) #Convert the input to the correct format\n", "EC_Earth3_ds = xr.open_mfdataset(EC_Earth3_hist_files, combine='by_coords', chunks='auto')\n", "EC_Earth3_ds" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.Dataset> Size: 13MB\n",
       "Dimensions:    (time: 24, bnds: 2, lat: 256, lon: 512)\n",
       "Coordinates:\n",
       "  * time       (time) datetime64[ns] 192B 2015-01-16T12:00:00 ... 2016-12-16T...\n",
       "  * lat        (lat) float64 2kB -89.46 -88.77 -88.07 ... 88.07 88.77 89.46\n",
       "  * lon        (lon) float64 4kB 0.0 0.7031 1.406 2.109 ... 357.9 358.6 359.3\n",
       "    height     float64 8B 2.0\n",
       "Dimensions without coordinates: bnds\n",
       "Data variables:\n",
       "    time_bnds  (time, bnds) datetime64[ns] 384B dask.array<chunksize=(12, 2), meta=np.ndarray>\n",
       "    lat_bnds   (time, lat, bnds) float64 98kB dask.array<chunksize=(12, 256, 2), meta=np.ndarray>\n",
       "    lon_bnds   (time, lon, bnds) float64 197kB dask.array<chunksize=(12, 512, 2), meta=np.ndarray>\n",
       "    tas        (time, lat, lon) float32 13MB dask.array<chunksize=(12, 256, 512), meta=np.ndarray>\n",
       "Attributes: (12/45)\n",
       "    Conventions:            CF-1.7 CMIP-6.2\n",
       "    activity_id:            ScenarioMIP\n",
       "    branch_method:          standard\n",
       "    branch_time_in_child:   60265.0\n",
       "    branch_time_in_parent:  60265.0\n",
       "    contact:                cmip6-data@ec-earth.org\n",
       "    ...                     ...\n",
       "    variable_id:            tas\n",
       "    variant_label:          r1i1p1f1\n",
       "    license:                CMIP6 model data produced by EC-Earth-Consortium ...\n",
       "    cmor_version:           3.4.0\n",
       "    tracking_id:            hdl:21.14100/697b3a82-4ffc-49ce-b070-2ca86ce8a06f\n",
       "    history:                2019-06-29T08:25:09Z ; CMOR rewrote data to be co...
" ], "text/plain": [ " Size: 13MB\n", "Dimensions: (time: 24, bnds: 2, lat: 256, lon: 512)\n", "Coordinates:\n", " * time (time) datetime64[ns] 192B 2015-01-16T12:00:00 ... 2016-12-16T...\n", " * lat (lat) float64 2kB -89.46 -88.77 -88.07 ... 88.07 88.77 89.46\n", " * lon (lon) float64 4kB 0.0 0.7031 1.406 2.109 ... 357.9 358.6 359.3\n", " height float64 8B 2.0\n", "Dimensions without coordinates: bnds\n", "Data variables:\n", " time_bnds (time, bnds) datetime64[ns] 384B dask.array\n", " lat_bnds (time, lat, bnds) float64 98kB dask.array\n", " lon_bnds (time, lon, bnds) float64 197kB dask.array\n", " tas (time, lat, lon) float32 13MB dask.array\n", "Attributes: (12/45)\n", " Conventions: CF-1.7 CMIP-6.2\n", " activity_id: ScenarioMIP\n", " branch_method: standard\n", " branch_time_in_child: 60265.0\n", " branch_time_in_parent: 60265.0\n", " contact: cmip6-data@ec-earth.org\n", " ... ...\n", " variable_id: tas\n", " variant_label: r1i1p1f1\n", " license: CMIP6 model data produced by EC-Earth-Consortium ...\n", " cmor_version: 3.4.0\n", " tracking_id: hdl:21.14100/697b3a82-4ffc-49ce-b070-2ca86ce8a06f\n", " history: 2019-06-29T08:25:09Z ; CMOR rewrote data to be co..." ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#Now make an \"future\" ensemble member object\n", "EC_Earth3_ssp_files = list(EC_Earth3_dir.glob(\"*ssp245*.nc\")) #Select all the netCDF files in the directory\n", "EC_Earth3_ssp_files = ic.convert_input(EC_Earth3_ssp_files) #Convert the input to the correct format\n", "EC_Earth3_ssp_ds = xr.open_mfdataset(EC_Earth3_ssp_files, combine='by_coords', chunks='auto')\n", "EC_Earth3_ssp_ds" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## DataTree\n", "\n", "The DataTree structures the data.\n", "This will be very useful for the preprocessing and the diagnostics." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DatasetView> Size: 0B\n",
       "Dimensions:  ()\n",
       "Data variables:\n",
       "    *empty*
" ], "text/plain": [ "DataTree('None', parent=None)\n", "├── DataTree('obs')\n", "│ └── DataTree('EOBS')\n", "│ Dimensions: (lat: 20, lon: 20, time: 730)\n", "│ Coordinates:\n", "│ * lat (lat) float64 160B 49.05 49.15 49.25 49.35 ... 50.75 50.85 50.95\n", "│ * lon (lon) float64 160B 3.05 3.15 3.25 3.35 3.45 ... 4.65 4.75 4.85 4.95\n", "│ * time (time) datetime64[ns] 6kB 1953-01-01 1953-01-02 ... 1954-12-31\n", "│ Data variables:\n", "│ tas (time, lat, lon) float32 1MB dask.array\n", "│ Attributes:\n", "│ E-OBS_version: 29.0e\n", "│ Conventions: CF-1.4\n", "│ References: http://surfobs.climate.copernicus.eu/dataaccess/access_eo...\n", "│ history: Fri Mar 22 09:55:59 2024: ncks --no-abc -d time,0,27027 /...\n", "│ NCO: netCDF Operators version 5.1.4 (Homepage = http://nco.sf....\n", "└── DataTree('ensembles')\n", " └── DataTree('cmip6')\n", " └── DataTree('EC_Earth3')\n", " ├── DataTree('hist')\n", " │ Dimensions: (time: 24, bnds: 2, lat: 256, lon: 512)\n", " │ Coordinates:\n", " │ * time (time) datetime64[ns] 192B 1953-01-16T12:00:00 ... 1954-12-16T...\n", " │ * lat (lat) float64 2kB -89.46 -88.77 -88.07 ... 88.07 88.77 89.46\n", " │ * lon (lon) float64 4kB 0.0 0.7031 1.406 2.109 ... 357.9 358.6 359.3\n", " │ height float64 8B 2.0\n", " │ Dimensions without coordinates: bnds\n", " │ Data variables:\n", " │ time_bnds (time, bnds) datetime64[ns] 384B dask.array\n", " │ lat_bnds (time, lat, bnds) float64 98kB dask.array\n", " │ lon_bnds (time, lon, bnds) float64 197kB dask.array\n", " │ tas (time, lat, lon) float32 13MB dask.array\n", " │ Attributes: (12/46)\n", " │ Conventions: CF-1.7 CMIP-6.2\n", " │ activity_id: CMIP\n", " │ branch_method: standard\n", " │ branch_time_in_child: 0.0\n", " │ branch_time_in_parent: 29219.0\n", " │ contact: cmip6-data@ec-earth.org\n", " │ ... ...\n", " │ variant_label: r1i1p1f1\n", " │ license: CMIP6 model data produced by EC-Earth...\n", " │ cmor_version: 3.4.0\n", " │ tracking_id: hdl:21.14100/18af2970-6a17-45fe-b629-...\n", " │ history: 2019-06-06T07:27:13Z ; CMOR rewrote d...\n", " │ latest_applied_cmor_fixer_version: v3.0\n", " └── DataTree('ssp245')\n", " Dimensions: (time: 24, bnds: 2, lat: 256, lon: 512)\n", " Coordinates:\n", " * time (time) datetime64[ns] 192B 2015-01-16T12:00:00 ... 2016-12-16T...\n", " * lat (lat) float64 2kB -89.46 -88.77 -88.07 ... 88.07 88.77 89.46\n", " * lon (lon) float64 4kB 0.0 0.7031 1.406 2.109 ... 357.9 358.6 359.3\n", " height float64 8B 2.0\n", " Dimensions without coordinates: bnds\n", " Data variables:\n", " time_bnds (time, bnds) datetime64[ns] 384B dask.array\n", " lat_bnds (time, lat, bnds) float64 98kB dask.array\n", " lon_bnds (time, lon, bnds) float64 197kB dask.array\n", " tas (time, lat, lon) float32 13MB dask.array\n", " Attributes: (12/45)\n", " Conventions: CF-1.7 CMIP-6.2\n", " activity_id: ScenarioMIP\n", " branch_method: standard\n", " branch_time_in_child: 60265.0\n", " branch_time_in_parent: 60265.0\n", " contact: cmip6-data@ec-earth.org\n", " ... ...\n", " variable_id: tas\n", " variant_label: r1i1p1f1\n", " license: CMIP6 model data produced by EC-Earth-Consortium ...\n", " cmor_version: 3.4.0\n", " tracking_id: hdl:21.14100/697b3a82-4ffc-49ce-b070-2ca86ce8a06f\n", " history: 2019-06-29T08:25:09Z ; CMOR rewrote data to be co..." ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dt = DataTree.from_dict({\"obs/EOBS\": EOBS_ds, \"ensembles/cmip6/EC_Earth3/hist\": EC_Earth3_ds, \"ensembles/cmip6/EC_Earth3/ssp245\": EC_Earth3_ssp_ds})\n", "dt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Preprocessing\n", "\n", "Define and add preprocessing steps to a preprocessor. These can then be applied to the whole or part of the DataTree.\n", "\n", "Here we define a regridding step and select a region." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "#Apply some postprocessing operations on the datatree\n", "pp = vp.Preprocessor()\n", "pp.add_preprocessing_task(vp.preprocessing_tasks.Regrid(dt.obs.EOBS.ds, name=\"to_obs\", description=\"Regrid the CMIP6 data to the EOBS grid\"))\n", "pp.add_preprocessing_task(vp.preprocessing_tasks.Set_Domain(dt.obs.EOBS.ds, name=\"to_obs\", description=\"Select the common area of the EOBS grid\"))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Applying the preprocessing tasks\n", "The preprocessing tasks can be applied on all models in an ensemble in the datatree.\n", "In this example we will apply the regridding and region selection to the CMIP6 data (EC-Earth3 - historical and ssp245)." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DatasetView> Size: 0B\n",
       "Dimensions:  ()\n",
       "Data variables:\n",
       "    *empty*
" ], "text/plain": [ "DataTree('None', parent=None)\n", "├── DataTree('obs')\n", "│ └── DataTree('EOBS')\n", "│ Dimensions: (lat: 20, lon: 20, time: 730)\n", "│ Coordinates:\n", "│ * lat (lat) float64 160B 49.05 49.15 49.25 49.35 ... 50.75 50.85 50.95\n", "│ * lon (lon) float64 160B 3.05 3.15 3.25 3.35 3.45 ... 4.65 4.75 4.85 4.95\n", "│ * time (time) datetime64[ns] 6kB 1953-01-01 1953-01-02 ... 1954-12-31\n", "│ Data variables:\n", "│ tas (time, lat, lon) float32 1MB dask.array\n", "│ Attributes:\n", "│ E-OBS_version: 29.0e\n", "│ Conventions: CF-1.4\n", "│ References: http://surfobs.climate.copernicus.eu/dataaccess/access_eo...\n", "│ history: Fri Mar 22 09:55:59 2024: ncks --no-abc -d time,0,27027 /...\n", "│ NCO: netCDF Operators version 5.1.4 (Homepage = http://nco.sf....\n", "└── DataTree('ensembles')\n", " └── DataTree('cmip6')\n", " └── DataTree('EC_Earth3')\n", " ├── DataTree('hist')\n", " │ Dimensions: (time: 24, bnds: 2, lat: 256, lon: 512)\n", " │ Coordinates:\n", " │ * time (time) datetime64[ns] 192B 1953-01-16T12:00:00 ... 1954-12-16T...\n", " │ * lat (lat) float64 2kB -89.46 -88.77 -88.07 ... 88.07 88.77 89.46\n", " │ * lon (lon) float64 4kB 0.0 0.7031 1.406 2.109 ... 357.9 358.6 359.3\n", " │ height float64 8B 2.0\n", " │ Dimensions without coordinates: bnds\n", " │ Data variables:\n", " │ time_bnds (time, bnds) datetime64[ns] 384B dask.array\n", " │ lat_bnds (time, lat, bnds) float64 98kB dask.array\n", " │ lon_bnds (time, lon, bnds) float64 197kB dask.array\n", " │ tas (time, lat, lon) float32 13MB dask.array\n", " │ Attributes: (12/46)\n", " │ Conventions: CF-1.7 CMIP-6.2\n", " │ activity_id: CMIP\n", " │ branch_method: standard\n", " │ branch_time_in_child: 0.0\n", " │ branch_time_in_parent: 29219.0\n", " │ contact: cmip6-data@ec-earth.org\n", " │ ... ...\n", " │ variant_label: r1i1p1f1\n", " │ license: CMIP6 model data produced by EC-Earth...\n", " │ cmor_version: 3.4.0\n", " │ tracking_id: hdl:21.14100/18af2970-6a17-45fe-b629-...\n", " │ history: 2019-06-06T07:27:13Z ; CMOR rewrote d...\n", " │ latest_applied_cmor_fixer_version: v3.0\n", " └── DataTree('ssp245')\n", " Dimensions: (time: 24, bnds: 2, lat: 256, lon: 512)\n", " Coordinates:\n", " * time (time) datetime64[ns] 192B 2015-01-16T12:00:00 ... 2016-12-16T...\n", " * lat (lat) float64 2kB -89.46 -88.77 -88.07 ... 88.07 88.77 89.46\n", " * lon (lon) float64 4kB 0.0 0.7031 1.406 2.109 ... 357.9 358.6 359.3\n", " height float64 8B 2.0\n", " Dimensions without coordinates: bnds\n", " Data variables:\n", " time_bnds (time, bnds) datetime64[ns] 384B dask.array\n", " lat_bnds (time, lat, bnds) float64 98kB dask.array\n", " lon_bnds (time, lon, bnds) float64 197kB dask.array\n", " tas (time, lat, lon) float32 13MB dask.array\n", " Attributes: (12/45)\n", " Conventions: CF-1.7 CMIP-6.2\n", " activity_id: ScenarioMIP\n", " branch_method: standard\n", " branch_time_in_child: 60265.0\n", " branch_time_in_parent: 60265.0\n", " contact: cmip6-data@ec-earth.org\n", " ... ...\n", " variable_id: tas\n", " variant_label: r1i1p1f1\n", " license: CMIP6 model data produced by EC-Earth-Consortium ...\n", " cmor_version: 3.4.0\n", " tracking_id: hdl:21.14100/697b3a82-4ffc-49ce-b070-2ca86ce8a06f\n", " history: 2019-06-29T08:25:09Z ; CMOR rewrote data to be co..." ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dt.ensembles = pp.apply_preprocessing(dt.ensembles)\n", "\n", "dt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Diagnostics\n", "Finally we will make a diagnostic (validation/evaluation) which takes the processed data and compares them.\n", "There are different types of comparisons, here we will use a Model2Ref comparison which compares the model data to the reference dataset.\n", "\n", "## Diagnostic object\n", "The diagnostic object consists of the following components:\n", "- A name\n", "- A description\n", "- A function that takes the processed data and returns the results\n", "- A function that takes the results and returns a plot\n", "\n", "Common standard diagnostics are (will be) predefined in package.\n", "The users can define there own diagnostic functions and visualizations functions thus creating there own diagnostics." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray 'tas' (lat: 20, lon: 20)> Size: 2kB\n",
       "dask.array<sub, shape=(20, 20), dtype=float32, chunksize=(20, 20), chunktype=numpy.ndarray>\n",
       "Coordinates:\n",
       "    height   float64 8B 2.0\n",
       "  * lon      (lon) float64 160B 3.05 3.15 3.25 3.35 3.45 ... 4.65 4.75 4.85 4.95\n",
       "  * lat      (lat) float64 160B 49.05 49.15 49.25 49.35 ... 50.75 50.85 50.95
" ], "text/plain": [ " Size: 2kB\n", "dask.array\n", "Coordinates:\n", " height float64 8B 2.0\n", " * lon (lon) float64 160B 3.05 3.15 3.25 3.35 3.45 ... 4.65 4.75 4.85 4.95\n", " * lat (lat) float64 160B 49.05 49.15 49.25 49.35 ... 50.75 50.85 50.95" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#Apply a diagnostic operation\n", "#First make a diagnostic object\n", "from valenspy.diagnostic_functions import spatial_bias\n", "from valenspy.diagnostic_visualizations import plot_spatial_bias \n", "\n", "diag = vp.Model2Ref(spatial_bias, plot_spatial_bias, name=\"spatial_bias\", description=\"Calculate the time averaged spatial bias between the model and the observations\")\n", "\n", "#Apply the \n", "#Expects tas\n", "def warming_levels(ds, ref, levels=[1.5, 2.0], rol_years=21):\n", " #Calculate the warming levels\n", " ref_temp = ref.tas.mean()\n", "\n", "def calc_crossing_time(xr, wl, base, rol_years=21):\n", " try:\n", " rol = xr.rolling(time=rol_years*12).mean().mean(dim=['lat','lon'])\n", " rol = rol - base\n", " days = int(365.24*(rol_years-1)/2)\n", " return rol.where(rol>wl, drop=True).idxmin('time').astype('datetime64[ns]').values - np.timedelta64(days,'D')\n", " except ValueError:\n", " return False\n", "\n", "\n", "ds = diag.apply(dt.ensembles.cmip6.EC_Earth3.hist, dt.obs.EOBS)\n", "ds" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we are using dask the resulting data needs to be computed. \n", "Note that when plotting, the data is automatically computed." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[########################################] | 100% Completed | 13.04 ss\n" ] } ], "source": [ "from dask.diagnostics import ProgressBar\n", "with ProgressBar():\n", " ds.compute()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plotting\n", "Finaly the diagnostic has some built in plotting functionality to visualize the results.\n", "The user can tweek the visualization or make his own starting from the resulting ds." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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RERERCaKU/WqDqfqERERERERacARJyIiIiIiEyUIRlhVT+BYijaYOBERERERmShO1as6TC+JiIiIiIg04IgTEREREZGJMsqqekqOOGmDiRMRERERkYniVL2qw6l6REREREREGnDEiYiIiIjIRAkyI6yqZ+DxNQUTJ4nlW9jB3MKuyuNa52dUecwS8qI8yWLL8nMkiw1FsWShi9NuShY74+8UyWKbWVlIFtumtrtksc3l1ySLbWdhJVnsfHdbyWJbyp0li+3mKN1nS0GxdF+28gulnFokXWw7K6VksfOL+OX6acSpelWH/wKIiIiIiIg04IgTEREREZGJ4ohT1WHiRERERERkopg4VR1O1SMiIiIiItKAI05ERERERCbq8YiToavqccRJGyY94jRnzhwIgqC2BQYGqvbn5+djwoQJcHFxgZ2dHQYNGoTbt29X2OZ/2yvZ3n//fVUdPz+/UvsXLVpUaedJRERERFQWQSZAJjdsY+KkHZMfcWratCl27dqlem1m9u8pRUVF4ddff8XmzZvh6OiIiRMnYuDAgTh06FC57aWlpam9/u233zBmzBgMGjRIrXzu3LkYO3as6rW9vb2hp0JERERERE8pk0+czMzM4OnpWao8MzMTa9aswcaNG9G1a1cAwNq1a9G4cWMcOXIEbdu2LbO9/7b1448/okuXLvD391crt7e3LzNueQoKClBQUKB6nZWVpfWxRERERERl4eIQVcekp+oBwMWLF+Ht7Q1/f39ERkYiNTUVAJCYmIiioiKEh4er6gYGBqJu3bpISEjQqu3bt2/j119/xZgxY0rtW7RoEVxcXNCqVSu8//77KC6u+AGEcXFxcHR0VG0+Pj46nCUREREREUnJpEecQkJCEB8fj4CAAKSlpSE2NhYdOnTA2bNnkZ6eDgsLCzg5Oakd4+HhgfT0dK3aX7duHezt7TFw4EC18jfeeAPBwcFwdnbG4cOHERMTg7S0NCxZsqTctmJiYhAdHa16nZWVxeSJiIiIiAwiyGRGWBzC5MdSqoRJJ049e/ZU/RwUFISQkBD4+vriu+++g7W1tcHtf/nll4iMjISVlZVa+ZMJUFBQECwsLPDqq68iLi4OlpaWZbZlaWlZ7j4iIiIiIn1wql7VqVbppZOTExo1aoRLly7B09MThYWFyMjIUKtz+/Ztre5NOnDgAJKTk/HKK69orBsSEoLi4mJcvXpVz54TEREREdHTrFolTtnZ2UhJSYGXlxdat24Nc3Nz7N69W7U/OTkZqampCA0N1djWmjVr0Lp1a7Ro0UJj3aSkJMhkMri7uxvUfyIiIiIiXZSMOBm6kWYmPVVv6tSp6NOnD3x9fXHr1i3Mnj0bcrkcw4YNg6OjI8aMGYPo6Gg4OzvDwcEBkyZNQmhoqNqKeoGBgYiLi8OAAQNUZVlZWdi8eTM+/PDDUjETEhJw9OhRdOnSBfb29khISEBUVBReeukl1KpVq0rOm4iIiIgI4D1OVcmkE6cbN25g2LBhuH//Ptzc3NC+fXscOXIEbm5uAIClS5dCJpNh0KBBKCgoQEREBFasWKHWRnJyMjIzM9XKNm3aBFEUMWzYsFIxLS0tsWnTJsyZMwcFBQWoV68eoqKi1O57IiIiIiKi6sWkE6dNmzZVuN/KygqffvopPv3003LriKJYqmzcuHEYN25cmfWDg4Nx5MgR3TpKRERERFQJuDhE1THpxImIiIiIqCbjVL2qw6tERERERESkAUecJFYos0Kh3PBnTunK3KygymOWkJtLGDsvW7LYeHhfstCF9x5IF/tRrmSxH916KFnsh5dvSxbboY6zZLGliwy4yOSSxRZcS0/7rirZNo6SxX5QIF3szHzpno1oU6tYstgyQSlZ7Nwic8liW5pJ8+/bEgpJ4upEEB5vhrZBGjFxIiIiIiIyUYJghHucmDhphVP1iIiIiIiINOCIExERERGRieLiEFWHiRMRERERkYnicuRVh+klERERERGRBhxxIiIiIiIyUZyqV3V4lYiIiIiITJQg+3e6nv6bbjH//PNP9OnTB97e3hAEAT/88IPGY/bt24fg4GBYWlqiQYMGiI+P1+t8pcTEiYiIiIiItJaTk4MWLVrg008/1ar+lStX0Lt3b3Tp0gVJSUmYMmUKXnnlFfz++++V3FPj4lQ9IiIiIiITZczFIbKystTKLS0tYWlZ+mHTPXv2RM+ePbVuf9WqVahXrx4+/PBDAEDjxo1x8OBBLF26FBEREQb0vGpxxImIiIiIyFTJZMbZAPj4+MDR0VG1xcXFGaWLCQkJCA8PVyuLiIhAQkKCUdqvKhxxIiIiIiIiXL9+HQ4ODqrXZY026SM9PR0eHh5qZR4eHsjKykJeXh6sra2NEqeyMXEiIiIiIjJRgiBAEAycqvf/xzs4OKglTqSOiRMRERERkYkyheXIPT09cfv2bbWy27dvw8HBwWRGmwDe40RERERERJUoNDQUu3fvVivbuXMnQkNDJeqRfpg4ERERERGZKMOf4aT7qnzZ2dlISkpCUlISgMfLjSclJSE1NRUAEBMTgxEjRqjqv/baa7h8+TKmTZuGCxcuYMWKFfjuu+8QFRVltOtQFThVj4iIiIjIVAn/ropnUBs6+Ouvv9ClSxfV6+joaADAyJEjER8fj7S0NFUSBQD16tXDr7/+iqioKHz00UeoU6cOvvjiC5Naihxg4kRERERERDro3LkzRFEsd398fHyZx5w8ebISe1X5mDgREREREZkqIzwAF4YeX0MwcZKYIIoQRGWVxy2WW1R5zBLWikLJYgtFBZLFhqWVZKFl5uaSxZbSnXN3JYudfSlPstj+fSULDRvPG5LFtraxlSy2k5l0n6lWNi6SxTazKpYstq25jWSxi5Q18zNVLpQ/wlDZrM2luS3fUpTwe4OWBEEGQcepdmW1QZrxKhEREREREWnAESciIiIiIlMlEwyfasepelph4kREREREZKJM4QG41QWvEhERERERkQYccSIiIiIiMlH6PMC2rDZIMyZORERERESmShB0foBtmW2QRpyqR0REREREpAFHnIiIiIiITBSn6lUdJk5ERERERKZKJnu8GdoGacSrREREREREpAFHnIiIiIiITJQgCBAMXNzB0ONrCiZORERERESmSjDCVD1DV+WrIXiViIiIiIiINOCIExERERGRieKqelWHiRMRERERkakSZEZ4AC4noWnDpK/SnDlzVDfElWyBgYGq/fn5+ZgwYQJcXFxgZ2eHQYMG4fbt2xW2OWrUqFJt9ujRQ63OgwcPEBkZCQcHBzg5OWHMmDHIzs6ulHMkIiIiIiLpmfyIU9OmTbFr1y7VazOzf08pKioKv/76KzZv3gxHR0dMnDgRAwcOxKFDhypss0ePHli7dq3qtaWlpdr+yMhIpKWlYefOnSgqKsLo0aMxbtw4bNy40UhnRURERESkBZnweDO0DdLI5BMnMzMzeHp6lirPzMzEmjVrsHHjRnTt2hUAsHbtWjRu3BhHjhxB27Zty23T0tKyzDYB4Pz589ixYweOHz+ONm3aAAA+/vhj9OrVCx988AG8vb2NcFZERERERJoJggyCgVPtDD2+pjD5q3Tx4kV4e3vD398fkZGRSE1NBQAkJiaiqKgI4eHhqrqBgYGoW7cuEhISKmxz3759cHd3R0BAAMaPH4/79++r9iUkJMDJyUmVNAFAeHg4ZDIZjh49Wm6bBQUFyMrKUtuIiIiIiMg0mPSIU0hICOLj4xEQEIC0tDTExsaiQ4cOOHv2LNLT02FhYQEnJye1Yzw8PJCenl5umz169MDAgQNRr149pKSk4O2330bPnj2RkJAAuVyO9PR0uLu7qx1jZmYGZ2fnCtuNi4tDbGxsqXKFTA6FrOp/DcWieZXHLJFv6ypZbFEmlyy2haHPWDCAZW3pRkJd5BJecztryWIXhRZIFtupYR3JYlt6uEkWG/+ZVl2VzO/ekCy2wstKstgWlvmSxc6DdP++CxTS/T9UKUoWGtkFFpLFNpNLc+IFxSbwVZlT9aqMCbwbytezZ0/Vz0FBQQgJCYGvry++++47WFvr94E6dOhQ1c/NmzdHUFAQ6tevj3379iEsLEzvvsbExCA6Olr1OisrCz4+Pnq3R0REREQkyGQQDPzjrKHH1xTV6io5OTmhUaNGuHTpEjw9PVFYWIiMjAy1Ordv3y73/qWy+Pv7w9XVFZcuXQIAeHp64s6dO2p1iouL8eDBgwrbtbS0hIODg9pGRERERESmoVolTtnZ2UhJSYGXlxdat24Nc3Nz7N69W7U/OTkZqampCA0N1brNGzdu4P79+/Dy8gIAhIaGIiMjA4mJiao6e/bsgVKpREhIiPFOhoiIiIhIE0EwzkYamXTiNHXqVOzfvx9Xr17F4cOHMWDAAMjlcgwbNgyOjo4YM2YMoqOjsXfvXiQmJmL06NEIDQ1VW1EvMDAQ27ZtA/A48Xrrrbdw5MgRXL16Fbt370a/fv3QoEEDREREAAAaN26MHj16YOzYsTh27BgOHTqEiRMnYujQoVxRj4iIiIiqlkwAZDIDNyZO2jDpe5xu3LiBYcOG4f79+3Bzc0P79u1x5MgRuLk9vjl56dKlkMlkGDRoEAoKChAREYEVK1aotZGcnIzMzEwAgFwux+nTp7Fu3TpkZGTA29sb3bt3x7x589Se5bRhwwZMnDgRYWFhqvaXL19edSdORERERERVyqQTp02bNlW438rKCp9++ik+/fTTcuuI4r+rtFhbW+P333/XGNfZ2ZkPuyUiIiIi6Rljqh2n6mnFpBMnIiIiIqKajKvqVR1eJSIiIiIiIg044kREREREZKoE2ePN0DZIIyZORERERESmShAMXxWP9zhpheklERERERGRBhxxIiIiIiIyUYIgg2DgVDtDj68pmDgREREREZkqmRGm6vEBuFpheklERERERKQBR5yIiIiIiEwVV9WrMkyciIiIiIhMlSAYvioeV9XTCtNLIiIiIiIiDTjiRERERERkqmSyx5uhbZBGTJwkVixaoEi0qPrA8qoPWcJCkS9ZbKXcUrLYoky6iy7IpYutLCqSLHZhdp5ksXPu5UgW29olS7LYZjbWksUWFTckiy13dpEstnlehmSxayml+/dtY50pWezaymLJYudaOkkW+5KynmSxPW0eSBI3W3wkSVyd8B6nKsOrREREREREpAFHnIiIiIiITBWf41RlmDgREREREZkqQTDCVD0mTtrgVD0iIiIiIiINOOJERERERGSq+BynKsPEiYiIiIjIVHE58goVFBTA0tI4qypX36tEREREREQ1ym+//YaRI0fC398f5ubmsLGxgYODAzp16oQFCxbg1q1berfNxImIiIiIyFSVTNUzdDNx27ZtQ6NGjfDyyy/DzMwM06dPx9atW/H777/jiy++QKdOnbBr1y74+/vjtddew927d3WOwal6RERERESmig/ABQAsXrwYS5cuRc+ePSErY+rhkCFDAAA3b97Exx9/jK+//hpRUVE6xWDiREREREREJi0hIUGreh4eHli0aJFeMUw/vSQiIiIiqqkE2b8LROi76Tni9Omnn8LPzw9WVlYICQnBsWPHyq0bHx8PQRDUNisrK33PukzfffddhfuLi4tVI0/6YOJERERERGSqJLrH6dtvv0V0dDRmz56NEydOoEWLFoiIiMCdO3fKPcbBwQFpaWmq7dq1a4aceSkjRozAzp07y9ynUCgwZMgQrUemysLEiYiIiIiIdLJkyRKMHTsWo0ePRpMmTbBq1SrY2Njgyy+/LPcYQRDg6emp2jw8PIzap/feew8DBw7E0aNH1cqVSiWGDBmCQ4cOYdeuXXq3z8SJiIiIiMhUlSwOYegGICsrS20rKCgoM2RhYSESExMRHh6uKpPJZAgPD69wRCc7Oxu+vr7w8fFBv3798Pfffxv1UkyePBnR0dHo1auXqu2SkaYDBw5g9+7daNq0qd7tM3EiIiIiIjJVRpyq5+PjA0dHR9UWFxdXZsh79+5BoVCUGjHy8PBAenp6mccEBATgyy+/xI8//oivv/4aSqUS7dq1w40bN4x6OWJjYzF8+HB0794d//zzD4YNG4b9+/dj165daNasmUFtc1U9IiIiIiLC9evX4eDgoHptaWlptLZDQ0MRGhqqet2uXTs0btwYq1evxrx584wWBwA+/vhjPHz4EC1atICdnR12796NoKAgg9tl4kREREREZKpKVsYztA08XrzhycSpPK6urpDL5bh9+7Za+e3bt+Hp6alVSHNzc7Rq1QqXLl3Svb/liI6OVv1cq1YtiKKIli1bIj4+Xq3ekiVL9GqfiRMRERERkYkSBQGiHqvi/bcNXVhYWKB169bYvXs3+vfvD+DxAgy7d+/GxIkTtWpDoVDgzJkz6NWrl67dLdfJkyfVXoeGhqK4uFitXDDgWjFxkpgMSsigrPK4cmVxlccsoRTkksUWJDxvQamQLLaysOybO6skdkGhZLEt7Kwli23paCtZbJmZdLevFj3Kliy2uaF/cTWALDdHstjyrAeSxRaspfv3bZb9ULLYSksbyWLnWWgeDagsBn43N8iDAkdJ4uYUSnjST7no6GiMHDkSbdq0wbPPPotly5YhJycHo0ePBvB4afDatWur7pOaO3cu2rZtiwYNGiAjIwPvv/8+rl27hldeecVofdq7d6/R2ioLEyciIiIiIlMlCHo/wFatDR29+OKLuHv3LmbNmoX09HS0bNkSO3bsUC0YkZqaCtkTf9B6+PAhxo4di/T0dNSqVQutW7fG4cOH0aRJE8P6XoWYOBERERERmaonlhM3qA09TJw4sdypefv27VN7vXTpUixdulSvONpYtGgR3njjDdjYaB4RPnr0KO7du4fevXvrFIPLkRMRERERkUk7d+4cfH198frrr+O3337D3bt3VfuKi4tx+vRprFixAu3atcOLL74Ie3t7nWNwxImIiIiIyERJsTjE02j9+vU4deoUPvnkEwwfPhxZWVmQy+WwtLREbm4uAKBVq1Z45ZVXMGrUKFhZWekcg4kTEREREZGpknCq3tOmRYsW+Pzzz7F69WqcPn0a165dQ15eHlxdXdGyZUu4uroa1L7BV0mhUCApKQkPH1b96jZz5syBIAhqW2BgoGp/fn4+JkyYABcXF9jZ2WHQoEGl1pt/UlFREaZPn47mzZvD1tYW3t7eGDFiBG7duqVWz8/Pr1TcRYsWVdp5EhERERGRdmQyGVq2bIl+/fph6NChCA8PNzhpAvQYcZoyZQqaN2+OMWPGQKFQoFOnTjh8+DBsbGzwyy+/oHPnzuUe6+zsrFMsQRBw4sQJ+Pr6llunadOm2LVrl+q1mdm/pxQVFYVff/0VmzdvhqOjIyZOnIiBAwfi0KFDZbaVm5uLEydOYObMmWjRogUePnyIyZMno2/fvvjrr7/U6s6dOxdjx45VvdZnniQRERERkUEEwfC14qvBVL2qoHPitGXLFrz00ksAgJ9//hlXrlzBhQsX8NVXX+Gdd94pNykBgIyMDCxbtgyOjprX4hdFEa+//joUioqffWNmZlbmE4ozMzOxZs0abNy4EV27dgUArF27Fo0bN8aRI0fQtm3bUsc4Ojpi586damWffPIJnn32WaSmpqJu3bqqcnt7e62fjExEREREVClksseboW2QRjonTvfu3VMlDNu3b8fgwYPRqFEjvPzyy/joo480Hj906FC4u7trFWvSpEka61y8eBHe3t6wsrJCaGgo4uLiULduXSQmJqKoqAjh4eGquoGBgahbty4SEhLKTJzKkpmZCUEQ4OTkpFa+aNEizJs3D3Xr1sXw4cMRFRWlNtr1XwUFBSgo+PchpFlZWVrFJyIiIiIi6emcOHl4eODcuXPw8vLCjh07sHLlSgCPp7nJ5fIKj1UqlTrFevToUYX7Q0JCEB8fj4CAAKSlpSE2NhYdOnTA2bNnkZ6eDgsLi1IJj4eHB9LT07WKn5+fj+nTp2PYsGFwcPj3Sd1vvPEGgoOD4ezsjMOHDyMmJgZpaWlYsmRJuW3FxcUhNjZWq7hERERERNrgqnpVR+fEafTo0RgyZAi8vLwgCIJqROfo0aNqCzNUhZ49e6p+DgoKQkhICHx9ffHdd9/B2traoLaLioowZMgQiKKoSg5LREdHq8W1sLDAq6++iri4OFhaWpbZXkxMjNpxWVlZ8PHxMaiPRERERFTDcVU9jbKysrBnzx4EBASgcePGerejc+I0Z84cNGvWDNevX8fgwYNViYJcLseMGTN0auvixYvYu3cv7ty5U2o0atasWbp2DU5OTmjUqBEuXbqEbt26obCwEBkZGWqjTrdv39Z4b1JJ0nTt2jXs2bNHbbSpLCEhISguLsbVq1cREBBQZh1LS8tykyoiIiIiIjKOIUOGoGPHjpg4cSLy8vLQpk0bXL16FaIoYtOmTRg0aJBe7er1HKcXXngBwOOpbCVGjhypUxuff/45xo8fD1dXV3h6ekJ4YohQEAS9Eqfs7GykpKTgf//7H1q3bg1zc3Ps3r1bdXGSk5ORmpqK0NDQctsoSZpKkjoXFxeNcZOSkiCTybS+d4uIiIiIyBhEQQbRwBEjQ49/2vz555945513AADbtm2DKIrIyMjAunXrMH/+fL0TJ52vkkKhwLx581C7dm3Y2dnh8uXLAICZM2dizZo1Wrczf/58LFiwAOnp6UhKSsLJkydV24kTJ7RqY+rUqdi/fz+uXr2Kw4cPY8CAAZDL5Rg2bBgcHR0xZswYREdHY+/evUhMTMTo0aMRGhqqtjBEYGAgtm3bBuBx0vTCCy/gr7/+woYNG6BQKJCeno709HQUFhYCABISErBs2TKcOnUKly9fxoYNGxAVFYWXXnoJtWrV0vr8iYiIiIgMVrIcuaFbNZKZmal6DNKOHTswaNAg2NjYoHfv3rh48aLe7eqcOC1YsADx8fFYvHgxLCwsVOXNmjXDF198oXU7Dx8+xODBg3UNr+bGjRsYNmwYAgICMGTIELi4uODIkSNwc3MDACxduhTPP/88Bg0ahI4dO8LT0xNbt25VayM5ORmZmZkAgJs3b+Knn37CjRs30LJlS3h5eam2w4cPA3g85W7Tpk3o1KkTmjZtigULFiAqKgqfffaZQedCRERERESG8/HxQUJCAnJycrBjxw50794dwOP8w8rKSu92dZ6qt379enz22WcICwvDa6+9pipv0aIFLly4oHU7gwcPxh9//KHWhq42bdpU4X4rKyt8+umn+PTTT8utI4qi6mc/Pz+112UJDg7GkSNHdOsoEREREVElEGGEqXq6j6U81aZMmYLIyEjY2dnB19cXnTt3BvB4Cl/z5s31blfnxOnmzZto0KBBqXKlUomioqIKj12+fLnq5wYNGmDmzJk4cuQImjdvDnNzc7W6b7zxhq5dIyIiIiKqWYwx1a6aTdV7/fXXERISgtTUVHTr1g2y/3/Ar7+/P+bPn693uzonTk2aNMGBAwfg6+urVr5lyxa0atWqwmOXLl2q9trOzg779+/H/v371coFQWDiREREREREemndujVat26tVta7d2+D2tQ5cZo1axZGjhyJmzdvQqlUYuvWrUhOTsb69evxyy+/VHjslStX9O5odWWtfAQbRcXTAyuDlKunWBTlSBbbrCBbstgoyNdcp7JomIJamWSWFporVRLb2m6SxRYVCsliKwuLJYstaHgQemVS5kv3b0yRJd1fa+USfp4LdWwli53r6qu5UiXJsKn4sSaVKS3fQ7LYClG697lCoddC0AbLlyiuTgTBCM9xql4jTsDjtRB++uknpKamqhZ5K7FkyRK92tT53dCvXz/8/PPPmDt3LmxtbTFr1iwEBwfj559/Rrdu3bRuZ+7cuZg6dSpsbGzUyvPy8vD+++/rtRw5EREREVFNIgoCRAMTH0OPf9rs3r0bffv2hb+/Py5cuIBmzZqpnuMUHBysd7t6pacdOnTAzp07cefOHeTm5uLgwYOq1Sq0FRsbi+zs0n/9z83NRWxsrD7dIiIiIiKiGi4mJgZTp07FmTNnYGVlhe+//x7Xr19Hp06dDFrVW7LxfVEU1R56W+LUqVOqddeJiIiIiKgCgsw4WzVy/vx5jBgxAgBgZmaGvLw82NnZYe7cuXjvvff0blfnqXoymazMhKeEQsO8/lq1akEQBAiCgEaNGqm1pVAokJ2dbdAS5URERERENYUIASIMnKpn4PFPG1tbW9V9TV5eXkhJSUHTpk0BAPfu3dO7XZ0Tp23btqm9LioqwsmTJ7Fu3TqtptgtW7YMoiji5ZdfRmxsLBwdHVX7LCws4Ofnh9DQUF27RUREREREhLZt2+LgwYNo3LgxevXqhTfffBNnzpzB1q1b0bZtW73b1WtxiP964YUX0LRpU3z77bcYM2ZMhcePHDkSxcXFEAQBXbt2hY+Pj65dICIiIiIiPF4p2eAH4FazqXpLlixRraVQsq7Ct99+i4YNG+q9oh6gR+JUnrZt22LcuHHaBTUzw/jx43H+/HljhSciIiIiqnmMcY9SNUuc/P39VT/b2tpi1apVRmnXKFcpLy8Py5cvR+3atbU+5tlnn8XJkyeNEZ6IiIiIiKhS6TziVLK4QwlRFPHo0SPY2Njg66+/1rqd119/HW+++SZu3LiB1q1bw9ZW/SF6QUFBunaNiIiIiKhG4XOcHnN2dsY///wDV1fXUvnKfz148ECvGDonTkuXLlXriEwmg5ubG0JCQlCrVi2t2xk6dCgA4I033lCVCYKgWqZc0+p8REREREQ1He9xemzp0qWwt7cH8Hgxusqgc+I0atQoowS+cuWKUdohIiIiIqKabeTIkWX+bExaJU6nT5/WukFtp9j5+vpq3SYREREREZVBEB5vhrZRzSgUCmzbtk21GF2TJk3Qr18/mJnpvzaeVke2bNlSNY2uIrpOsUtJScGyZcvUTmjy5MmoX7++1m0QEREREdVYRpiqV91W1fv777/Rt29fpKenIyAgAADw3nvvwc3NDT///DOaNWumV7taJU6VMa3u999/R9++fdGyZUs899xzAIBDhw6hadOm+Pnnn9GtWzejxyQiIiIiourtlVdeQdOmTfHXX3+p1mB4+PAhRo0ahXHjxuHw4cN6tatV4lQZ0+pmzJiBqKgoLFq0qFT59OnTmTgREREREWkgQoAIA1fVM/D4p01SUpJa0gQ8Xhl8wYIFeOaZZ/RuV+9JfufOnUNqaioKCwvVyvv27avV8efPn8d3331Xqvzll1+utJUwiIiIiIiqE66qV1qjRo1w+/ZtNG3aVK38zp07aNCggd7t6pw4Xb58GQMGDMCZM2fU7nsqWaJc23uc3NzckJSUhIYNG6qVJyUlwd3dXdduERERERFRDZWVlaX6OS4uDm+88QbmzJmDtm3bAgCOHDmCuXPn4r333tM7hs6J0+TJk1GvXj3s3r0b9erVw7Fjx3D//n28+eab+OCDD7RuZ+zYsRg3bhwuX76Mdu3aAXh8j9N7772H6OhoXbtFRERERFTzCDDCqnpG6YmknJyc1J41K4oihgwZoiorGezp06eP3s+L1TlxSkhIwJ49e+Dq6gqZTAaZTIb27durMruTJ09q1c7MmTNhb2+PDz/8EDExMQAAb29vzJkzR+2huEREREREVDYRMogwcKqegcc/Dfbu3VvpMXROnBQKheqpvK6urrh16xYCAgLg6+uL5ORkrdsRBAFRUVGIiorCo0ePAEDVbk3ikHUTDkpbqbtRpeQFOZLFlmXelyw2Mh9KF1tCZnbSvb/z0u9KFltKFg52UndBEqKy4kdmVCZFbp5ksWW20v0bkxXmSxbb5k6KZLGtzW9KFtvepZ5ksa3z70gWW1AUSxI3KzdXkriku06dOlV6DJ0Tp2bNmuHUqVOoV68eQkJCsHjxYlhYWOCzzz6Dv7+/Xp2oiQkTEREREZGhREGAaOBUPUOPryl0Hpd79913oVQqAQBz587FlStX0KFDB2zfvh3Lly/Xup3bt2/jf//7H7y9vWFmZga5XK62ERERERFRxUpW1TN0I810HnGKiIhQ/dygQQNcuHABDx48QK1atdRuyNJk1KhRSE1NxcyZM+Hl5aXTsURERERERFVJ58Tp66+/xoABA2D7xJxqZ2dnnQMfPHgQBw4cQMuWLXU+loiIiIiI+ADcqqTzuFxUVBQ8PDwwfPhwbN++Xe/l/Hx8fFTLAhIRERERke44Va9sxcXF2LVrF1avXq1aiO7WrVvIzs7Wu02dr1JaWho2bdoEQRAwZMgQeHl5YcKECTh8+LBO7SxbtgwzZszA1atXde0CERERERFRma5du4bmzZujX79+mDBhAu7efbzK7nvvvYepU6fq3a7OU/XMzMzw/PPP4/nnn0dubi62bduGjRs3okuXLqhTpw5SUrRbHvTFF19Ebm4u6tevDxsbG5ibm6vtf/Dgga5dIyIiIiKqUbiqXmmTJ09GmzZtcOrUKbi4uKjKBwwYgLFjx+rdrs6J05NsbGwQERGBhw8f4tq1azh//rzWxy5btsyQ0ERERERENR7vcSrtwIEDOHz4MCwsLNTK/fz8cPOm/s9h0ytxKhlp2rBhA3bv3g0fHx8MGzYMW7Zs0bqNkSNHalVv0aJFeO211+Dk5KRPV4mIiIiIqAZRKpVlrsNw48YNg54fq/M9TkOHDoW7uzuioqLg7++Pffv24dKlS5g3bx4CAwP17kh5Fi5cyGl7RERERERl4OIQpXXv3l1tdpsgCMjOzsbs2bPRq1cvvdvVecRJLpfju+++Q0RERJU8qJYr7xERERERlY1T9Ur74IMP0KNHDzRp0gT5+fkYPnw4Ll68CFdXV3zzzTd6t6tz4rRhwwa9gxEREREREVUmHx8fnDp1Ct9++y1OnTqF7OxsjBkzBpGRkbC2tta7XYMWhyAiIiIiIumIMHyqnaj73TtPraKiIgQGBuKXX35BZGQkIiMjjdY2EyciIiIiIhPFqXrqzM3NkZ+fXyltm3R6OWfOHAiCoLY9uUBFfn4+JkyYABcXF9jZ2WHQoEG4fft2hW2KoohZs2bBy8sL1tbWCA8Px8WLF9XqPHjwAJGRkXBwcICTkxPGjBlj0FOIiYiIiIhMzaeffgo/Pz9YWVkhJCQEx44dq7D+5s2bERgYCCsrKzRv3hzbt2+vlH5NmDAB7733HoqLi43a7lOfOHXo0KHCuYhNmzZFWlqaajt48KBqX1RUFH7++Wds3rwZ+/fvx61btzBw4MAK4y1evBjLly/HqlWrcPToUdja2iIiIkItc42MjMTff/+NnTt34pdffsGff/6JcePGGX6yREREREQ6ePwAXENX1dN9xOnbb79FdHQ0Zs+ejRMnTqBFixaIiIjAnTt3yqx/+PBhDBs2DGPGjMHJkyfRv39/9O/fH2fPnjX0EpRy/PhxbN26FXXr1kVERAQGDhyotulLEPVYti4lJQVr165FSkoKPvroI7i7u+O3335D3bp10bRpU63aOHHiBMzNzdG8eXMAwI8//oi1a9eiSZMmmDNnTqkHVpVlzpw5+OGHH5CUlFRqX2ZmJtzc3LBx40a88MILAIALFy6gcePGSEhIQNu2bUsdI4oivL298eabb2Lq1Kmqdjw8PBAfH4+hQ4fi/PnzaNKkCY4fP442bdoAAHbs2IFevXrhxo0b8Pb21ur8s7Ky4OjoiBt7t8DBzlarY6oLeUGOZLFlmfcli43Mh5KFVhZUzpC1NhSPpBuNzUu/K1lsKVk42EndhRpHkEk3zcXczVWy2DLvupLFFs2ku9tANLeSLHa2Sz3JYlvnlP2FuCoICuOOHGgrKycXtcOHITMzEw4ODpL0oTwl3yWTTp406NlEAPDo0SO0bNVKp/MMCQnBM888g08++QTA42cn+fj4YNKkSZgxY0ap+i+++CJycnLwyy+/qMratm2Lli1bYtWqVQb1/79Gjx5d4f61a9fq1a7OI0779+9H8+bNcfToUWzdulU1Re3UqVOYPXu21u28+uqr+OeffwAAly9fxtChQ2FjY4PNmzdj2rRpWrdz8eJFeHt7w9/fH5GRkUhNTQUAJCYmoqioCOHh4aq6gYGBqFu3LhISEsps68qVK0hPT1c7xtHRESEhIapjEhIS4OTkpEqaACA8PBwymQxHjx4tt58FBQXIyspS24iIiIiInhb//a5aUFBQZr3CwkIkJiaqfWeWyWQIDw8v93t2QkKCWn0AiIiIKLe+IdauXVvhpi+d/1wzY8YMzJ8/H9HR0WrZbdeuXVUZpzb++ecftGzZEsDj+Y4dO3bExo0bcejQIQwdOlTtoVXlCQkJQXx8PAICApCWlobY2Fh06NABZ8+eRXp6OiwsLODk5KR2jIeHB9LT08tsr6Tcw8Oj3GPS09Ph7u6utt/MzAzOzs7ltgsAcXFxiI2NLVVebG6NYnP9l0XUl1lRXpXHLCHKKv/5X+XGtqr6a11CUJZ+gnVVkUn413DBzFyy2NL9toHibOlGVqUc/ZBpMVugshRmPpIsdv79TMlii9fK/39PZVMWn5Istr2vp2SxrVs/I1lscd1HksUWfGtLFlvu5ChN3FzpZmxo6/FUPQMXh/j/4318fNTKZ8+ejTlz5pSqf+/ePSgUijK/M1+4cKHMGOnp6RV+xzYFOidOZ86cwcaNG0uVu7u74969e1q3I4oilEolAGDXrl14/vnnATz+hWnbTs+ePVU/BwUFISQkBL6+vvjuu+8MWqO9MsTExCA6Olr1Oisrq9Sbk4iIiIhIF6IoQBQNTJz+//jr16+rTdWztLQ0qF2p1KtXD0IFyeTly5f1alfnxMnJyQlpaWmoV099ju3JkydRu7b2f4lo06YN5s+fj/DwcOzfvx8rV64E8Hi63H+zUV361qhRI1y6dAndunVDYWEhMjIy1Eadbt++DU/Psv9KVVJ++/ZteHl5qR1TMjrm6elZ6qa34uJiPHjwoNx2gcdvPFN98xERERFR9efg4KDVPU6urq6Qy+WlVqvW9D1bl/qGmDJlitrroqIinDx5Ejt27MBbb72ld7s63+M0dOhQTJ8+Henp6RAEAUqlEocOHcLUqVMxYsQIrdtZtmwZTpw4gYkTJ+Kdd95BgwYNAABbtmxBu3btdO0WACA7OxspKSnw8vJC69atYW5ujt27d6v2JycnIzU1FaGhoWUeX69ePXh6eqodk5WVhaNHj6qOCQ0NRUZGBhITE1V19uzZA6VSiZCQEL36TURERESkH9njh+AasOmaElhYWKB169Zq35mVSiV2795d7vfs0NBQtfoAsHPnznLrG2Ly5Mlq29SpU7FhwwbMnTsXycnJerer84jTwoULMWHCBPj4+EChUKBJkyZQKBQYPnw43n33Xa3bCQoKwpkzZ0qVv//++5DLtbsHZurUqejTpw98fX1x69YtzJ49G3K5HMOGDYOjoyPGjBmD6OhoODs7w8HBAZMmTUJoaKjainqBgYGIi4vDgAEDIAgCpkyZgvnz56Nhw4aoV68eZs6cCW9vb/Tv3x8A0LhxY/To0QNjx47FqlWrUFRUhIkTJ2Lo0KFar6hHRERERGQMUj0ANzo6GiNHjkSbNm3w7LPPYtmyZcjJyVGtaDdixAjUrl0bcXFxAB4nM506dcKHH36I3r17Y9OmTfjrr7/w2WefGdR3XfTs2RMxMTF6LxChc+JkYWGBzz//HDNnzsTZs2eRnZ2NVq1aoWHDhjoHz8jIwJYtW5CSkoK33noLzs7OOHfuHDw8PLSa9nfjxg0MGzYM9+/fh5ubG9q3b48jR47Azc0NALB06VLIZDIMGjQIBQUFiIiIwIoVK9TaSE5ORmbmvzf1Tps2DTk5ORg3bhwyMjLQvn177NixA1ZW/y49umHDBkycOBFhYWGq9pcvX67z+RMRERERmaIXX3wRd+/exaxZs5Ceno6WLVtix44dqltuUlNTIZP9O5LVrl07bNy4Ee+++y7efvttNGzYED/88AOaNWtWZX3esmULnJ2d9T5er+c4GcPp06cRFhYGJycnXL16FcnJyfD398e7776L1NRUrF+/XopuVZmStfevHvxVkuc4SbmqnqxIuhVqZHnSrbol5Er3PCPkSHfeYpE0z94AgOKH0j07S8pV9WRm0q1cyVX1qp6oUEoWW1ks3WqhNXVVvczdeySLbVsDV9XLys2H59i5T/VznP46+TfsDHyOU/ajR2jTqulTeZ76aNWqldriEKIoIj09HXfv3sWKFSswbtw4vdrVasTpydXgNFmyZIlW9aKjozF69GgsXrxYbVnzXr16Yfjw4VrHIyIiIiKqqaSaqvc069evn1riJJPJ4Obmhs6dOyMwMFDvdrVKnE6ePKn2+sSJEyguLkZAQACAx89kksvlaN26tdaBjx8/jtWrV5cqr127tkmt505ERERERE+Psp49ZQxaJU579+5V/bxkyRLY29tj3bp1qFWrFgDg4cOHGD16NDp06KB1YEtLS2RlZZUq/+eff1T3KBERERERUfk44lSaXC5HWloa3N3d1crv378Pd3d3KBT6TTPWeTnyDz/8EHFxcaqkCQBq1aqF+fPn48MPP9S6nb59+2Lu3LkoKioCAAiCgNTUVEyfPh2DBg3StVtERERERDVOyQNwDd2qk/KWcCgoKICFAffi6ryqXlZWFu7evVuq/O7du3j0SPsbcz/88EO88MILcHd3R15eHjp16oT09HSEhoZiwYIFunaLiIiIiIhqsJJVrgVBwBdffAE7OzvVPoVCgT///LPy73F60oABAzB69Gh8+OGHePbZZwEAR48exVtvvYWBAwdq3Y6joyN27tyJgwcP4vTp08jOzkZwcDDCw8N17RIRERER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bBtbyWLD3EKy0Ep7/ZcUNtRDz8aSxc6V6zfFyBgsldL9G6v18LIkcbOyc1EnbAgyMzP1nt5VWUq+S27adx82dob1LTc7C0M7uzyV56kPGxsbnDx5Um2GmTFU6T1Ooihi5syZsLGx0ap+YWFhJfeIiIiIiIiqkzZt2uD69eumnTh17NgRycnJWtcPDQ2FtbV1JfaIiIiIiMh0iUZYVc/gVfmeMpMmTcLkyZPx1ltvoXnz5qUWh9B3TYIqTZz27dtXleGIiIiIiKo1PgC3tBdffBEA1NYqEASh6haHoMphnfcQNvKqn5IoyuSaK1WSPMuKFxqpTHJlsWSxRSvp/poj5b1dkPD2C0FUShZbZi/de808L0Oy2IKDdPfTCcXSTe8utnWSLHa+ratksa1y70sWW1Yk3f2TDhmpksW2saz6+6JLZNjVliz2XZdASeI+sngkSVwyzJUrVyqlXVmltEpERERERJWu5DlOhm6V5cGDB4iMjISDgwOcnJwwZswYZGdXvJBQ586dIQiC2vbaa69pHdPX17fCTV9MnIiIiIiITJQIwShbZYmMjMTff/+NnTt34pdffsGff/6JcePGaTxu7NixSEtLU22LFy/WKe5XX32F5557Dt7e3rh27RoAYNmyZfjxxx/1Og+AiRMREREREeHxEudPbgUFhj3e4vz589ixYwe++OILhISEoH379vj444+xadMm3Lp1q8JjbWxs4Onpqdp0WSZ95cqViI6ORq9evZCRkaG6p8nJyQnLli3T+3yYOBERERERmSgl/l0gQu/t/9vy8fGBo6OjaouLizOobwkJCXByckKbNm1UZeHh4ZDJZDh69GiFx27YsAGurq5o1qwZYmJikJur/XPEPv74Y3z++ed45513IJf/e19/mzZtcObMGd1P5P9xcQgiIiIiIhNljHuUSo6/fv262siOpaWlQe2mp6fD3d1drczMzAzOzs5IT08v97jhw4fD19cX3t7eOH36NKZPn47k5GRs3bpVq7hXrlxBq1atSpVbWloiJydHt5N4su96H0lERERERNWGg4ODVlPiZsyYgffee6/COufPn9e7H0/eA9W8eXN4eXkhLCwMKSkpqF+/vsbj69Wrh6SkpFILQezYsQONGzfWu19MnIiIiIiITJQxR5y09eabb2LUqFEV1vH394enpyfu3LmjVl5cXIwHDx7A09NT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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f = diag.visualize(dt.ensembles.cmip6.EC_Earth3.hist, dt.obs.EOBS)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0sAAAHmCAYAAACiWRVvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAACQeElEQVR4nOzdeVxUVf8H8M+dYd9BdkUBF1zR1ETKXRSX3NM0yiXSMjSFx1TKDZcwMyVzTc2lNMsyeyzTFEVTcUNxKSUlFVTAFRCQde7vD3/M48QAs8F15PN+ve5L5txzz/fcyzDy5Zx7riCKoggiIiIiIiJSIZO6A0RERERERM8iJktERERERERqMFkiIiIiIiJSg8kSERERERGRGkyWiIiIiIiI1GCyREREREREpAaTJSIiIiIiIjWYLBEREREREanBZImIiIiIiEgNJktERKSRLl26oEuXLjodKwgC5syZ88z0h4iISBNMloiInkEXLlzAq6++inr16sHCwgK1a9dGjx498MUXX1Rp3L/++gtz5szB9evXqzSOOtevX4cgCCqbnZ0dWrVqheXLl6OkpKTa+0RERDWbidQdICIiVceOHUPXrl1Rt25djB07Fu7u7khNTcXx48fx+eefY+LEiVUW+6+//kJUVBS6dOkCb29vlX2///57lcV92ogRI9CnTx8AQFZWFnbv3o2JEyfixo0b+PTTT6u9P0REVHMxWSIiesYsWLAA9vb2OHXqFBwcHFT23blzR5pOATAzM6uWOK1bt8Ybb7yhfP3ee+8hICAAW7duVUmWqqs/RERUc3EaHhHRMyY5ORnNmjUrkygBgKurq8prQRAwYcIEbNmyBX5+frCwsECbNm1w+PBhlXo3btzAe++9Bz8/P1haWqJWrVoYOnSoynS7jRs3YujQoQCArl27KqfCxcXFASh7j1BhYSFmzZqFNm3awN7eHtbW1ujYsSMOHjxokOvw9Dm6ubnBxET173v69Gfbtm1o06YNbG1tYWdnhxYtWuDzzz83aL+JiMj4cWSJiOgZU69ePcTHx+PixYto3rx5pfUPHTqE7777Du+//z7Mzc2xcuVK9OrVCydPnlQef+rUKRw7dgzDhw9HnTp1cP36daxatQpdunTBX3/9BSsrK3Tq1Anvv/8+li1bhg8//BBNmjQBAOW//5adnY1169ZhxIgRGDt2LB49eoT169cjODgYJ0+eRKtWrXQ6/7y8PNy7d08Z47fffsOePXsQGRlZ4XGa9mffvn0YMWIEunfvjk8++QQAcOnSJRw9ehSTJk3Sqc9ERPScEomI6Jny+++/i3K5XJTL5WJgYKA4depUce/evWJhYWGZugBEAOLp06eVZTdu3BAtLCzEQYMGKcvy8vLKHBsfHy8CEDdv3qws2759uwhAPHjwYJn6nTt3Fjt37qx8XVxcLBYUFKjUefjwoejm5ia+9dZbZfo5e/bsCs/72rVryvP59zZ+/HhRoVAYpD+TJk0S7ezsxOLi4gr7Q0RExGl4RETPmB49eiA+Ph79+/fHuXPnsGjRIgQHB6N27dr473//W6Z+YGAg2rRpo3xdt25dDBgwAHv37lWuIGdpaancX1RUhPv376NBgwZwcHDAmTNndOqnXC5X3jekUCjw4MEDFBcXo23btjq3CQDjxo3Dvn37sG/fPvz4448ICwvDmjVrEBERYZD+ODg4IDc3F/v27dO5j0REVDMwWSIiega9+OKL2LFjBx4+fIiTJ08iMjISjx49wquvvoq//vpLpW7Dhg3LHN+oUSPk5eXh7t27AIDHjx9j1qxZ8PLygrm5OZydneHi4oLMzExkZWXp3M9NmzbB398fFhYWqFWrFlxcXPDrr7/q1WbDhg0RFBSEoKAgDB48GMuXL8d7772HmJgYXLhwQe/+vPfee2jUqBF69+6NOnXq4K233sKePXt07i8RET2/mCwRET3DzMzM8OKLL+Ljjz/GqlWrUFRUhO3bt2vdzsSJE7FgwQIMGzYM33//PX7//Xfs27cPtWrVgkKh0Klv33zzDUaPHo369etj/fr12LNnD/bt24du3brp3GZ5unfvDgBlFq7QpT+urq5ITEzEf//7X/Tv3x8HDx5E7969MWrUKIP2mYiIjB8XeCAiMhJt27YFAKSlpamUX7lypUzdv//+G1ZWVnBxcQEA/PDDDxg1ahQ+++wzZZ38/HxkZmaqHCcIgsb9+eGHH+Dr64sdO3aoHDd79myN29BUcXExACAnJ8cg/TEzM0O/fv3Qr18/KBQKvPfee1izZg1mzpyJBg0aGLz/RERknDiyRET0jDl48CBEUSxTvnv3bgCAn5+fSnl8fLzKPTmpqan4+eef0bNnT8jlcgBP7uf5d5tffPGF8p6mUtbW1gBQJolSp7Ttp9s9ceIE4uPjKz1WW7t27QIAtGzZUu/+3L9/X+W1TCaDv78/AKCgoMAg/SUioucDR5aIiJ4xEydORF5eHgYNGoTGjRujsLAQx44dw3fffQdvb2+MGTNGpX7z5s0RHByssnQ4AERFRSnrvPLKK/j6669hb2+Ppk2bIj4+Hvv370etWrVU2mrVqhXkcjk++eQTZGVlwdzcHN26dSvzfKfSNnfs2IFBgwahb9++uHbtGlavXo2mTZtWOAJUmTNnzuCbb74BADx69AixsbH48ccf8dJLL6Fnz57lHqdpf95++208ePAA3bp1Q506dXDjxg188cUXaNWqVbnLpBMRUc3EZImI6BmzePFibN++Hbt378aXX36JwsJC1K1bF++99x5mzJhR5mG1nTt3RmBgIKKiopCSkoKmTZti48aNytESAPj8888hl8uxZcsW5Ofn4+WXX8b+/fsRHBys0pa7uztWr16N6OhohIaGoqSkBAcPHlSbLI0ePRrp6elYs2YN9u7di6ZNm+Kbb77B9u3blQ+y1cW3336Lb7/9FgBgYmKCunXr4oMPPsCsWbMgk5U/IULT/rzxxhv48ssvsXLlSmRmZsLd3R2vvfYa5syZU2H7RERU8wiiurkeRERkFARBQFhYGJYvXy51V4iIiJ47/BMaERERERGRGkyWiIiIiIiI1GCyREREREREpAYXeCAiMmK87ZSIiKjqcGSJiIiIiIhIDY4sSUShUOD27duwtbVVedI8ERERET0bRFHEo0eP4Onp+Uw+WiA/Px+FhYUGacvMzAwWFhYGaet5wmRJIrdv34aXl5fU3SAiIiKiSqSmpqJOnTpSd0NFfn4+PC1t8BAlBmnP3d0d165dY8L0L0yWJGJrawsA+O/BP2FtY1vt8eUyw/xg6cJMKJYstgwK6WIL0sU2FQokiy0TpTtvy+IcyWIXyK0ki31frCVZ7OT7jpLFzsyWbpT+n+u5ksVOvXJHsth3b6ZLFltRLN3/Y1Iyt5buF1kLGxvpYluaSxK3qDAHv23ooPy97VlSWFiIhyjBRrkPrPS8syYPCoxOv4bCwkImS//CZEkipVPvrG1sYWNjV+3xJU2WZEWSxa6pyZKZYCZZbEmTJeneajAzkS5ZKlBU/2dKKat86WIXlEiXLJlbyiWLbWr+WLLYJqaPJIutEGpmsmRiailZbFMz6ZIlU3Npf4F/lm+ZsDaVw0rQ7zNIEEtgoAGq5w6TJSIiIiIiIyWYCJDpmcwJ4rObDErt2btTjYiIiIiI6BnAkSUiIiIiIiMlmMogCPqNfwh8Zl+5mCwRERERERkpmVyATKbfNDqZgtPwysNpeERERERERGpwZImIiIiIyEgJpgIEPUeWBI4slYvJEhERERGRkZKZcBpeVeI0PCIiIiIiIjU4skREREREZKQ4Da9qMVkiIiIiIjJSMrkAmVzPaXglTJbKw2l4REREREREanBkiYiIiIjISAlyAYKeI0sCOLJUHiZLRERERERGyiDT8JgslYvT8IiIiIiISGPR0dF48cUXYWtrC1dXVwwcOBBJSUkVHrN27Vp07NgRjo6OcHR0RFBQEE6ePKlSZ/To0RAEQWXr1atXVZ5KpZgsEREREREZKUEmGGTTxqFDhxAWFobjx49j3759KCoqQs+ePZGbm1vuMXFxcRgxYgQOHjyI+Ph4eHl5oWfPnrh165ZKvV69eiEtLU25ffvttzpdF0PhNDwiIiIiIiMlyGUQ5PqNfwgQtaq/Z88eldcbN26Eq6srEhIS0KlTJ7XHbNmyReX1unXr8OOPPyI2NhYjR45Ulpubm8Pd3V2r/lQljiwRERERERGys7NVtoKCAo2Oy8rKAgA4OTlpHCsvLw9FRUVljomLi4Orqyv8/Pwwfvx43L9/X/MTqAIcWZJYQYkJTEqq/9sgV8irPaaShO86S1m+ZLEdiu5KFtsyP1Oy2KZ5DySLLc+WLrbC0kay2HKP5pLFzrS1kix2Vo6FZLHzcoski51176FksS1srCWLbWZhLlns/Jw8yWJb2kl3zU3NTSWLLdX7vLgoR5K42jDkAg9eXl4q5bNnz8acOXMqPFahUGDy5Ml4+eWX0by55v//TJs2DZ6enggKClKW9erVC4MHD4aPjw+Sk5Px4Ycfonfv3oiPj4dcLs3vrkyWiIiIiIiMlCBof89RmTYUT45PTU2FnZ2dstzcvPI/SoSFheHixYs4cuSIxvEWLlyIbdu2IS4uDhYW//tD1/Dhw5Vft2jRAv7+/qhfvz7i4uLQvXt3jds3JE7DIyIiIiIi2NnZqWyVJUsTJkzAL7/8goMHD6JOnToaxVi8eDEWLlyI33//Hf7+/hXW9fX1hbOzM65evarxORgaR5aIiIiIiIyUIIfe0/AE7dZ3gCiKmDhxIn766SfExcXBx8dHo+MWLVqEBQsWYO/evWjbtm2l9W/evIn79+/Dw8NDuw4aEJMlIiIiIiIjJcgFCHonS9odHxYWhq1bt+Lnn3+Gra0t0tPTAQD29vawtLQEAIwcORK1a9dGdHQ0AOCTTz7BrFmzsHXrVnh7eyuPsbGxgY2NDXJychAVFYUhQ4bA3d0dycnJmDp1Kho0aIDg4GC9zk8fnIZHREREREQaW7VqFbKystClSxd4eHgot++++05ZJyUlBWlpaSrHFBYW4tVXX1U5ZvHixQAAuVyO8+fPo3///mjUqBFCQ0PRpk0b/PHHHxrdO1VVOLJERERERGSkBJkMgkzP5yxpebwoVj5vLy4uTuX19evXK6xvaWmJvXv3atWP6sBkiYiIiIjISAkyA6yGp+fxzzNOwyMiIiIiIlKDI0tEREREREbKIA+l1XKBh5qEyRIRERERkZHiNLyqxWl4REREREREanBkiYiIiIjISAmCAVbDEzh+Uh4mS0RERERERorT8KoW00giIiIiIiI1OLJERERERGSkDLIanoIjS+VhskREREREZKQ4Da9qcRoeERERERGRGhxZIiIiIiIyUoLMAKvh6Xn884zJksSy881RbGJe7XGdLPOrPWYpC1mBZLEthTzJYpsoCiWLbZF+VbLYjxMSJIstt7aULLZZ3XqSxXY0NZMsdj03a8liZzlId83NLaT777R2wzqSxX6cI93/JXmPpPs8F0WFZLEdXR0ki/3oYY5ksal8nIZXtZhGEhERERERqcGRJSIiIiIiI8WRparFZImIiIiIyEgxWapanIZHRERERESkBkeWiIiIiIiM1JORJX1Xw+PIUnmMemRpzpw5EARBZWvcuLFyf35+PsLCwlCrVi3Y2NhgyJAhyMjIqLDNf7dXun366afKOt7e3mX2L1y4sMrOk4iIiIhIHUEmQCbXb2OyVD6jH1lq1qwZ9u/fr3xtYvK/UwoPD8evv/6K7du3w97eHhMmTMDgwYNx9OjRcttLS0tTef3bb78hNDQUQ4YMUSmfO3cuxo4dq3xta2ur76kQEREREdEzxOiTJRMTE7i7u5cpz8rKwvr167F161Z069YNALBhwwY0adIEx48fR/v27dW29++2fv75Z3Tt2hW+vr4q5ba2tmrjlqegoAAFBf97vlB2drbGxxIRERERqcMFHqqWUU/DA4ArV67A09MTvr6+CAkJQUpKCgAgISEBRUVFCAoKUtZt3Lgx6tati/j4eI3azsjIwK+//orQ0NAy+xYuXIhatWrhhRdewKeffori4uIK24qOjoa9vb1y8/Ly0uIsiYiIiIiouhn1yFJAQAA2btwIPz8/pKWlISoqCh07dsTFixeRnp4OMzMzODg4qBzj5uaG9PR0jdrftGkTbG1tMXjwYJXy999/H61bt4aTkxOOHTuGyMhIpKWlYcmSJeW2FRkZiYiICOXr7OxsJkxEREREpBdBJjPAAg9GP35SZYw6Werdu7fya39/fwQEBKBevXr4/vvvYWlpqXf7X331FUJCQmBhYaFS/nTS4+/vDzMzM7zzzjuIjo6Gubm52rbMzc3L3UdEREREpAtOw6taz1Ua6eDggEaNGuHq1atwd3dHYWEhMjMzVepkZGRodK/RH3/8gaSkJLz99tuV1g0ICEBxcTGuX7+uY8+JiIiIiOhZ81wlSzk5OUhOToaHhwfatGkDU1NTxMbGKvcnJSUhJSUFgYGBlba1fv16tGnTBi1btqy0bmJiImQyGVxdXfXqPxERERGRNkpHlvTdSD2jnoY3ZcoU9OvXD/Xq1cPt27cxe/ZsyOVyjBgxAvb29ggNDUVERAScnJxgZ2eHiRMnIjAwUGUlvMaNGyM6OhqDBg1SlmVnZ2P79u347LPPysSMj4/HiRMn0LVrV9ja2iI+Ph7h4eF444034OjoWC3nTUREREQE8J6lqmbUydLNmzcxYsQI3L9/Hy4uLujQoQOOHz8OFxcXAMDSpUshk8kwZMgQFBQUIDg4GCtXrlRpIykpCVlZWSpl27ZtgyiKGDFiRJmY5ubm2LZtG+bMmYOCggL4+PggPDxc5T4mIiIiIiIyfkadLG3btq3C/RYWFlixYgVWrFhRbh1RFMuUjRs3DuPGjVNbv3Xr1jh+/Lh2HSUiIiIiqgJc4KFqGXWyRERERERUk3EaXtXilSEiIiIiIlKDI0sSyymQQ2Eir/a45iZm1R5TGVtuUXmlKmJlkitZbMtHGZLFFu9q9iDmqlCQ+Ui62DfSJIstXkyWLLZDQ+keeO3RUbLQKHKT7nNNCKj8kRRVJeOhjWSxU24WSBY743a2ZLHtWkj3M2Yqwe8MpSytpXtepKWN/s/P1EVRgZUkcbUiCE82fdsgtTiyRERERERkpATBAEuHa5ksRUdH48UXX4StrS1cXV0xcOBAJCUlVXrc9u3b0bhxY1hYWKBFixbYvXu3yn5RFDFr1ix4eHjA0tISQUFBuHLlilZ9MzQmS0REREREpLFDhw4hLCwMx48fx759+1BUVISePXsiN7f8GTzHjh3DiBEjEBoairNnz2LgwIEYOHAgLl68qKyzaNEiLFu2DKtXr8aJEydgbW2N4OBg5OfnV8dpqcVpeERERERERkqKBR727Nmj8nrjxo1wdXVFQkICOnXqpPaYzz//HL169cIHH3wAAJg3bx727duH5cuXY/Xq1RBFETExMZgxYwYGDBgAANi8eTPc3Nywc+dODB8+XIcz0x9HloiIiIiIjJTeU/CeWno8OztbZSso0Oy+xNJnljo5OZVbJz4+HkFBQSplwcHBiI+PBwBcu3YN6enpKnXs7e0REBCgrCMFJktERERERAQvLy/Y29srt+jo6EqPUSgUmDx5Ml5++WU0b9683Hrp6elwc3NTKXNzc0N6erpyf2lZeXWkwGl4RERERERGypDT8FJTU2FnZ6csNzevfAXEsLAwXLx4EUeOHNGrD88qJktEREREREZKkEE5jU6fNgDAzs5OJVmqzIQJE/DLL7/g8OHDqFOnToV13d3dkZGh+hiVjIwMuLu7K/eXlnl4eKjUadWqlcZ9MjROwyMiIiIiIo2JoogJEybgp59+woEDB+Dj41PpMYGBgYiNjVUp27dvHwIDAwEAPj4+cHd3V6mTnZ2NEydOKOtIgSNLRERERERG6ukFGvRpQxthYWHYunUrfv75Z9ja2irvKbK3t4el5ZMHCI8cORK1a9dW3vc0adIkdO7cGZ999hn69u2Lbdu24fTp0/jyyy+f9EEQMHnyZMyfPx8NGzaEj48PZs6cCU9PTwwcOFCv89MHkyUiIiIiImMlkz3Z9G1DC6tWrQIAdOnSRaV8w4YNGD16NAAgJSUFsqfafemll7B161bMmDEDH374IRo2bIidO3eqLAoxdepU5ObmYty4ccjMzESHDh2wZ88eWFhY6HZeBsBkiYiIiIiINCaKYqV14uLiypQNHToUQ4cOLfcYQRAwd+5czJ07V5/uGRSTJSIiIiIiIyUIAgRBz2l4eh7/PGOyRERERERkpAy5dDiVxStDRERERESkBkeWiIiIiIiMlBSr4dUkTJaIiIiIiIyVYIDV8ARONisPrwwREREREZEaHFkiIiIiIjJWBpiGB07DKxeTJYmJ4pOtuuUXyas/6P8zsSqWLLZpSb5ksYvNbSWLbWIu3cPcpJwHffNUqmSxMy/mSBa7Rah0P9+uda9IFtvD0kGy2AWOZpLFtrOU7rPF3Ey6zxYnx1qSxc57rJAstpSzpUxMpQtuay/Ne63g8bP/q7IgyCDo+cbQ9/jnGa8MERERERGRGs9+ukxEREREROrJBP2n0XEaXrmYLBERERERGSk+lLZq8coQERERERGpwZElIiIiIiIjxYfSVi0mS0RERERExkoQ9F8mUWCyVB5OwyMiIiIiIlKDI0tEREREREaK0/CqFpMlIiIiIiJjJZM92fRtg9TilSEiIiIiIlKDI0tEREREREZKEAQIei7QoO/xzzMmS0RERERExkowwDQ8fVfTe47xyhAREREREanBkSUiIiIiIiPF1fCqFpMlIiIiIiJjJcgM8FBaTjYrj1FfmTlz5ihvaivdGjdurNyfn5+PsLAw1KpVCzY2NhgyZAgyMjIqbHP06NFl2uzVq5dKnQcPHiAkJAR2dnZwcHBAaGgocnJyquQciYiIiIhIGkY/stSsWTPs379f+drE5H+nFB4ejl9//RXbt2+Hvb09JkyYgMGDB+Po0aMVttmrVy9s2LBB+drc3Fxlf0hICNLS0rBv3z4UFRVhzJgxGDduHLZu3WqgsyIiIiIi0oBMeLLp2wapZfTJkomJCdzd3cuUZ2VlYf369di6dSu6desGANiwYQOaNGmC48ePo3379uW2aW5urrZNALh06RL27NmDU6dOoW3btgCAL774An369MHixYvh6elpgLMiIiIiIqqcIMgg6DmNTt/jn2dGf2WuXLkCT09P+Pr6IiQkBCkpKQCAhIQEFBUVISgoSFm3cePGqFu3LuLj4ytsMy4uDq6urvDz88P48eNx//595b74+Hg4ODgoEyUACAoKgkwmw4kTJ8pts6CgANnZ2SobERERERE9u4x6ZCkgIAAbN26En58f0tLSEBUVhY4dO+LixYtIT0+HmZkZHBwcVI5xc3NDenp6uW326tULgwcPho+PD5KTk/Hhhx+id+/eiI+Ph1wuR3p6OlxdXVWOMTExgZOTU4XtRkdHIyoqqkx5UbGAwuLqH/rML5JuuPVOnr1ksYstpHvLu1rLJYttUreRZLHtTUwli93UwVay2EV98iSLbde8iWSxFZ71JItdZG4jWWyP4hTJYheaNpAstrWFmWSxH0g4bSg3t0iy2KJCstC4f1e6+7NNzaT5/7swv0CSuFrhNLwqZdTJUu/evZVf+/v7IyAgAPXq1cP3338PS0tLndocPny48usWLVrA398f9evXR1xcHLp3765zXyMjIxEREaF8nZ2dDS8vL53bIyIiIiISZDIIej6UVt/jn2fP1ZVxcHBAo0aNcPXqVbi7u6OwsBCZmZkqdTIyMsq9H0kdX19fODs74+rVqwAAd3d33LlzR6VOcXExHjx4UGG75ubmsLOzU9mIiIiIiOjZ9VwlSzk5OUhOToaHhwfatGkDU1NTxMbGKvcnJSUhJSUFgYGBGrd58+ZN3L9/Hx4eHgCAwMBAZGZmIiEhQVnnwIEDUCgUCAgIMNzJEBERERFVRhAMs5FaRp0sTZkyBYcOHcL169dx7NgxDBo0CHK5HCNGjIC9vT1CQ0MRERGBgwcPIiEhAWPGjEFgYKDKSniNGzfGTz/9BOBJsvXBBx/g+PHjuH79OmJjYzFgwAA0aNAAwcHBAIAmTZqgV69eGDt2LE6ePImjR49iwoQJGD58OFfCIyIiIqLqJRMAmUzPjclSeYw6Wbp58yZGjBgBPz8/DBs2DLVq1cLx48fh4uICAFi6dCleeeUVDBkyBJ06dYK7uzt27Nih0kZSUhKysrIAAHK5HOfPn0f//v3RqFEjhIaGok2bNvjjjz9UnrW0ZcsWNG7cGN27d0efPn3QoUMHfPnll9V34kREREREEjl8+DD69esHT09PCIKAnTt3Vlh/9OjREAShzNasWTNlnTlz5pTZ37hx4yo+k8oZ9QIP27Ztq3C/hYUFVqxYgRUrVpRbRxRF5deWlpbYu3dvpXGdnJz4AFoiIiIikp4hptFpeXxubi5atmyJt956C4MHD660/ueff46FCxcqXxcXF6Nly5YYOnSoSr1mzZph//79ytcmJtKnKtL3gIiIiIiIdCLFani9e/dWWZW6Mvb29rC3/9+jY3bu3ImHDx9izJgxKvVMTEy0WoitOhj1NDwiIiIiIjKM7Oxsla2goGqeM7V+/XoEBQWhXj3VZ/NduXIFnp6e8PX1RUhICFJSpHuGXSkmS0RERERExkqQGWYD4OXlpRwFsre3R3R0tMG7e/v2bfz22294++23VcoDAgKwceNG7NmzB6tWrcK1a9fQsWNHPHr0yOB90Aan4RERERERGStB0H81u/+/Zyk1NVXlWaBPL3BmKJs2bYKDgwMGDhyoUv70tD5/f38EBASgXr16+P777xEaGmrwfmiKyRIREREREcHOzk4lWTI0URTx1Vdf4c0334SZmVmFdR0cHNCoUSNcvXq1yvqjCU7DIyIiIiIyUoIgM8hWHQ4dOoSrV69qNFKUk5OD5ORkeHh4VEPPyseRJSIiIiIiYyUzwDQ8LY/PyclRGfG5du0aEhMT4eTkhLp16yIyMhK3bt3C5s2bVY5bv349AgIC0Lx58zJtTpkyBf369UO9evVw+/ZtzJ49G3K5HCNGjNDtnAyEyRIREREREWns9OnT6Nq1q/J1REQEAGDUqFHYuHEj0tLSyqxkl5WVhR9//BGff/652jZv3ryJESNG4P79+3BxcUGHDh1w/PhxuLi4VN2JaIDJEhERERGRsXpqNTu92tBCly5dIIpiufs3btxYpsze3h55eXnlHrNt2zat+lBdmCwRERERERkrQVCuZqdXG6QWF3ggIiIiIiJSgyNLRERERETGSiZ7sunbBqnFZEliufmAQpL3p3Q/FJZm0sUuVEj3li82qfh5AlVJlEv4o15cJFnoouwcyWLn3c2SLLaV533JYpvY2UsW20ZxRbLYBY61JYttayvd+7xBrWLJYjta2UgW26xh+fdqVLUHuYZ/SKimDp2wlCx240bSfL8f58oliasVCe5Zqkl4ZYiIiIiIiNTgyBIRERERkbGS4DlLNQmTJSIiIiIiYyUIBpiGx2SpPJyGR0REREREpAZHloiIiIiIjBWfs1SlmCwRERERERkrLh1eRkFBAczNDbNy5PN1ZYiIiIiIqEb57bffMGrUKPj6+sLU1BRWVlaws7ND586dsWDBAty+fVvntpksEREREREZq9JpePpuRuinn35Co0aN8NZbb8HExATTpk3Djh07sHfvXqxbtw6dO3fG/v374evri3fffRd3797VOgan4RERERERGasa/FDaRYsWYenSpejduzdkaqYSDhs2DABw69YtfPHFF/jmm28QHh6uVQwmS0REREREZHTi4+M1qufm5oaFCxfqFMM400giIiIiInoyKiTTczPSkSUA+P777yvcX1xcrBxh0oXxXhkiIiIiopquBt+zBAAjR47Evn371O4rKSnBsGHDNB6BUofJEhERERER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BR6qFxd4qH5c4KH6cYGH6scFHqofF3ioflzg4dla+KD0d8ltcfdhpecCD3k52RjepdYzeZ6asrKywtmzZ1VmjxlCtd6zJIoiZs6cCSsrK43qFxYWVnGPiIiIiIjI2LVt2xapqanGnSx16tQJSUlJGtcPDAyEpaVlFfaIiIiIiMh4iQZYDU/v1fSeARMnTsSkSZPwwQcfoEWLFmUWeNB1XYFqTZbi4uKqMxwRERER0XNNiofSPotee+01AFBZb0AQhOpb4IGqRi2bIljbFFV7XCl/KB7kSDe3X8p7tRQK6UZJDXSPo46xrSWLLZPwvM3kDpLFdjKX7n4pubVm96RWBXMb6e7VyiqpeBGkqnQ3z0ay2K5m0r3XLCHd99vX4b5ksd1sLCSLff2BrWSxz6W7SxI3L1ezW0dIeteuXauSdpksEREREREZKT5n6Yl69epVSbuyKmmViIiIiIiqnAjBINvz4Ouvv8bLL78MT09P3LhxAwAQExODn3/+Wec2mSwREREREZFRW7VqFSIiItCnTx9kZmYq71FycHBATEyMzu0yWSIiIiIiMlIK/G+RB503qU/CAL744gusXbsWH330EeTy/z2PrG3btrhw4YLO7fKeJSIiIiIiI8V7lp64du0aXnjhhTLl5ubmyM3N1bldjiwREREREZFR8/HxQWJiYpnyPXv2oEmTJjq3y5ElIiIiIiIjVdNHlubOnYspU6YgIiICYWFhyM/PhyiKOHnyJL799ltER0dj3bp1OrfPZImIiIiIyEgpRAEKUb/V7PQ9XkpRUVF499138fbbb8PS0hIzZsxAXl4eXn/9dXh6euLzzz/H8OHDdW6fyRIRERERERkl8alhsZCQEISEhCAvLw85OTlwdXXVu30mS0RERERERqqmT8MDAEFQHRmzsrKClZWVQdpmskREREREZKSYLAGNGjUqkzD924MHD3Rqm8kSEREREREZraioKNjb21dJ20yWiIiIiIiMlPj/D5bVtw1jNnz4cIPcn6QOkyUiIiIiIiMligJEPVez0/d4KVU2/U5ffCgtEREREREZJbGKh8U4skREREREZKRq+gIPCoWiSttnskREREREZKQUBrhnSd/jn2echkdERERERKQGR5YklvXYBEWy6v825BdKlyebmUr354umzhmSxZYLJZLFvpnrIllsQZDu+21lUihZ7Nwic8li38+3lSz246Ka+d9K1mPpzvt+lmShceaRg2SxaznKJYvt5VwkWez8YunOO79QukUAXOyLJYlropDu/25N1fRpeFWtZv6vRkRERET0HGCyVLU4DY+IiIiIiEgNjiwRERERERkpLvBQtZgsEREREREZKU7Dq1qchkdERERERFpbsWIFvL29YWFhgYCAAJw8ebLcul26dIEgCGW2vn37KuuMHj26zP5evXpVx6mUiyNLRERERERGSqF4sunbhra+++47REREYPXq1QgICEBMTAyCg4ORlJQEV1fXMvV37NiBwsL/rVJ7//59tGzZEkOHDlWp16tXL2zYsEH52txcutVlASZLRERERERGy5DT8LKzs1XKzc3Ny01WlixZgrFjx2LMmDEAgNWrV+PXX3/FV199henTp5ep7+TkpPJ627ZtsLKyKpMsmZubw93dXddTMThOwyMiIiIiInh5ecHe3l65RUdHq61XWFiIhIQEBAUFKctkMhmCgoIQHx+vUaz169dj+PDhsLa2VimPi4uDq6sr/Pz8MH78eNy/f1/3EzIAjiwRERERERkpQ44spaamws7OTlle3qjSvXv3UFJSAjc3N5VyNzc3XL58udJ4J0+exMWLF7F+/XqV8l69emHw4MHw8fFBcnIyPvzwQ/Tu3Rvx8fGQy6V5IDOTJSIiIiIiI6WAAZYO//9/7ezsVJKlqrJ+/Xq0aNEC7dq1UykfPny48usWLVrA398f9evXR1xcHLp3717l/VKH0/CIiIiIiEhjzs7OkMvlyMjIUCnPyMio9H6j3NxcbNu2DaGhoZXG8fX1hbOzM65evapXf/XBZImIiIiIyEiJomiQTRtmZmZo06YNYmNjlWUKhQKxsbEIDAys8Njt27ejoKAAb7zxRqVxbt68ifv378PDw0Or/hkSkyUiIiIiIiNVes+Svpu2IiIisHbtWmzatAmXLl3C+PHjkZubq1wdb+TIkYiMjCxz3Pr16zFw4EDUqlVLpTwnJwcffPABjh8/juvXryM2NhYDBgxAgwYNEBwcrNO1MQTes0RERERERFp57bXXcPfuXcyaNQvp6elo1aoV9uzZo1z0ISUlBTKZ6rhMUlISjhw5gt9//71Me3K5HOfPn8emTZuQmZkJT09P9OzZE/PmzZP0WUtMloiIiIiIjJRogIfSijoeP2HCBEyYMEHtvri4uDJlfn5+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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f = diag.visualize(dt.ensembles.cmip6.EC_Earth3.ssp245, dt.obs.EOBS)" ] } ], "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.9.18" } }, "nbformat": 4, "nbformat_minor": 2 }