{ "cells": [ { "cell_type": "markdown", "id": "dominant-indicator", "metadata": {}, "source": [ "# Regridding model data with xESMF" ] }, { "cell_type": "markdown", "id": "reflected-chambers", "metadata": {}, "source": [ "## Import python packages" ] }, { "cell_type": "code", "execution_count": 1, "id": "novel-indicator", "metadata": {}, "outputs": [], "source": [ "# supress warnings\n", "import warnings\n", "warnings.filterwarnings('ignore') # don't output warnings\n", "\n", "import os\n", "# import packages\n", "import xarray as xr\n", "xr.set_options(display_style='html')\n", "import intake\n", "import cftime\n", "import cartopy.crs as ccrs\n", "import matplotlib.pyplot as plt\n", "import matplotlib.path as mpath\n", "import numpy as np\n", "import xesmf as xe\n", "from pathlib import Path\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "id": "f92cb741-50d7-4aab-995a-a4d583b9c5ca", "metadata": {}, "source": [ "## Set path to save data:\n", "Further down in this notebook, an intermediate data product is saved. It is often smart to put this in another directory than your code directory. Below we set the path where this is saved:" ] }, { "cell_type": "code", "execution_count": 2, "id": "0bb51f46-ae06-4a30-b7f6-b0272652ff37", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "/home/fc-3auid-3aeb54868a-2dc3bf-2d4cf2-2d9a1a-2d7ab42345078a/eScience2024/docs/learning/notebooks\n" ] } ], "source": [ "!pwd" ] }, { "cell_type": "markdown", "id": "b408b2bf-06ec-4dcd-a4c1-0ce6eae38eaa", "metadata": {}, "source": [ "You can copy the home path from above, or you can make a relative path. " ] }, { "cell_type": "code", "execution_count": 3, "id": "8fa841e0-4936-4230-ac09-8cbd7a622305", "metadata": {}, "outputs": [], "source": [ "path_to_save_data = '../../../../Data_processed'" ] }, { "cell_type": "code", "execution_count": 4, "id": "60312b33-2113-49d1-8066-53e8d2d7e21d", "metadata": {}, "outputs": [], "source": [ "path_to_save_data = Path(path_to_save_data)\n", "\n", "path_to_save_data.mkdir(exist_ok=True)" ] }, { "cell_type": "markdown", "id": "conditional-configuration", "metadata": {}, "source": [ "## Open CMIP6 online catalog" ] }, { "cell_type": "code", "execution_count": 5, "id": "formed-symbol", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
pangeo-cmip6 catalog with 7674 dataset(s) from 514818 asset(s):
\n", " | unique | \n", "
---|---|
activity_id | \n", "18 | \n", "
institution_id | \n", "36 | \n", "
source_id | \n", "88 | \n", "
experiment_id | \n", "170 | \n", "
member_id | \n", "657 | \n", "
table_id | \n", "37 | \n", "
variable_id | \n", "700 | \n", "
grid_label | \n", "10 | \n", "
zstore | \n", "514818 | \n", "
dcpp_init_year | \n", "60 | \n", "
version | \n", "736 | \n", "
derived_variable_id | \n", "0 | \n", "
\n", " | activity_id | \n", "institution_id | \n", "source_id | \n", "experiment_id | \n", "member_id | \n", "table_id | \n", "variable_id | \n", "grid_label | \n", "zstore | \n", "dcpp_init_year | \n", "version | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "CMIP | \n", "NCAR | \n", "CESM2-WACCM | \n", "historical | \n", "r1i1p1f1 | \n", "AERmon | \n", "od550aer | \n", "gn | \n", "gs://cmip6/CMIP6/CMIP/NCAR/CESM2-WACCM/histori... | \n", "NaN | \n", "20190227 | \n", "
1 | \n", "CMIP | \n", "NCAR | \n", "CESM2 | \n", "historical | \n", "r1i1p1f1 | \n", "AERmon | \n", "od550aer | \n", "gn | \n", "gs://cmip6/CMIP6/CMIP/NCAR/CESM2/historical/r1... | \n", "NaN | \n", "20190308 | \n", "
2 | \n", "CMIP | \n", "CCCma | \n", "CanESM5 | \n", "historical | \n", "r1i1p1f1 | \n", "AERmon | \n", "od550aer | \n", "gn | \n", "gs://cmip6/CMIP6/CMIP/CCCma/CanESM5/historical... | \n", "NaN | \n", "20190429 | \n", "
3 | \n", "CMIP | \n", "HAMMOZ-Consortium | \n", "MPI-ESM-1-2-HAM | \n", "historical | \n", "r1i1p1f1 | \n", "AERmon | \n", "od550aer | \n", "gn | \n", "gs://cmip6/CMIP6/CMIP/HAMMOZ-Consortium/MPI-ES... | \n", "NaN | \n", "20190627 | \n", "
4 | \n", "CMIP | \n", "MPI-M | \n", "MPI-ESM1-2-LR | \n", "historical | \n", "r1i1p1f1 | \n", "AERmon | \n", "od550aer | \n", "gn | \n", "gs://cmip6/CMIP6/CMIP/MPI-M/MPI-ESM1-2-LR/hist... | \n", "NaN | \n", "20190710 | \n", "
5 | \n", "CMIP | \n", "MPI-M | \n", "MPI-ESM1-2-HR | \n", "historical | \n", "r1i1p1f1 | \n", "AERmon | \n", "od550aer | \n", "gn | \n", "gs://cmip6/CMIP6/CMIP/MPI-M/MPI-ESM1-2-HR/hist... | \n", "NaN | \n", "20190710 | \n", "
6 | \n", "CMIP | \n", "NCC | \n", "NorESM2-LM | \n", "historical | \n", "r1i1p1f1 | \n", "AERmon | \n", "od550aer | \n", "gn | \n", "gs://cmip6/CMIP6/CMIP/NCC/NorESM2-LM/historica... | \n", "NaN | \n", "20190815 | \n", "
7 | \n", "CMIP | \n", "BCC | \n", "BCC-ESM1 | \n", "historical | \n", "r1i1p1f1 | \n", "AERmon | \n", "od550aer | \n", "gn | \n", "gs://cmip6/CMIP6/CMIP/BCC/BCC-ESM1/historical/... | \n", "NaN | \n", "20190918 | \n", "
8 | \n", "CMIP | \n", "NCAR | \n", "CESM2-WACCM-FV2 | \n", "historical | \n", "r1i1p1f1 | \n", "AERmon | \n", "od550aer | \n", "gn | \n", "gs://cmip6/CMIP6/CMIP/NCAR/CESM2-WACCM-FV2/his... | \n", "NaN | \n", "20191120 | \n", "
9 | \n", "CMIP | \n", "NCAR | \n", "CESM2-FV2 | \n", "historical | \n", "r1i1p1f1 | \n", "AERmon | \n", "od550aer | \n", "gn | \n", "gs://cmip6/CMIP6/CMIP/NCAR/CESM2-FV2/historica... | \n", "NaN | \n", "20191120 | \n", "
10 | \n", "CMIP | \n", "MRI | \n", "MRI-ESM2-0 | \n", "historical | \n", "r1i1p1f1 | \n", "AERmon | \n", "od550aer | \n", "gn | \n", "gs://cmip6/CMIP6/CMIP/MRI/MRI-ESM2-0/historica... | \n", "NaN | \n", "20200207 | \n", "
<xarray.Dataset> Size: 110MB\n", "Dimensions: (lat: 96, bnds: 2, lon: 144, member_id: 1,\n", " dcpp_init_year: 1, time: 1980)\n", "Coordinates:\n", " * lat (lat) float64 768B -90.0 -88.11 -86.21 ... 86.21 88.11 90.0\n", " lat_bnds (lat, bnds) float64 2kB dask.array<chunksize=(96, 2), meta=np.ndarray>\n", " * lon (lon) float64 1kB 0.0 2.5 5.0 7.5 ... 352.5 355.0 357.5\n", " lon_bnds (lon, bnds) float64 2kB dask.array<chunksize=(144, 2), meta=np.ndarray>\n", " * time (time) object 16kB 1850-01-16 12:00:00 ... 2014-12-16 12:...\n", " time_bnds (time, bnds) object 32kB dask.array<chunksize=(1980, 2), meta=np.ndarray>\n", " wavelength float64 8B ...\n", " * member_id (member_id) object 8B 'r1i1p1f1'\n", " * dcpp_init_year (dcpp_init_year) float64 8B nan\n", "Dimensions without coordinates: bnds\n", "Data variables:\n", " od550aer (member_id, dcpp_init_year, time, lat, lon) float32 109MB dask.array<chunksize=(1, 1, 990, 96, 144), meta=np.ndarray>\n", "Attributes: (12/65)\n", " Conventions: CF-1.7 CMIP-6.2\n", " activity_id: CMIP\n", " branch_method: Hybrid-restart from year 1600-01-01 of ...\n", " branch_time: 0.0\n", " branch_time_in_child: 0.0\n", " branch_time_in_parent: 430335.0\n", " ... ...\n", " intake_esm_attrs:variable_id: od550aer\n", " intake_esm_attrs:grid_label: gn\n", " intake_esm_attrs:zstore: gs://cmip6/CMIP6/CMIP/NCC/NorESM2-LM/hi...\n", " intake_esm_attrs:version: 20190815\n", " intake_esm_attrs:_data_format_: zarr\n", " intake_esm_dataset_key: CMIP.NCC.NorESM2-LM.historical.AERmon.gn
<xarray.Dataset> Size: 1MB\n", "Dimensions: (lat: 96, bnds: 2, lon: 144, time: 24)\n", "Coordinates:\n", " * lat (lat) float64 768B -90.0 -88.11 -86.21 ... 86.21 88.11 90.0\n", " lat_bnds (lat, bnds) float64 2kB dask.array<chunksize=(96, 2), meta=np.ndarray>\n", " * lon (lon) float64 1kB 0.0 2.5 5.0 7.5 ... 352.5 355.0 357.5\n", " lon_bnds (lon, bnds) float64 2kB dask.array<chunksize=(144, 2), meta=np.ndarray>\n", " * time (time) object 192B 1985-01-16 12:00:00 ... 1986-12-16 12:...\n", " time_bnds (time, bnds) object 384B dask.array<chunksize=(24, 2), meta=np.ndarray>\n", " wavelength float64 8B ...\n", " member_id <U8 32B 'r1i1p1f1'\n", " dcpp_init_year float64 8B nan\n", "Dimensions without coordinates: bnds\n", "Data variables:\n", " od550aer (time, lat, lon) float32 1MB dask.array<chunksize=(24, 96, 144), meta=np.ndarray>\n", "Attributes: (12/65)\n", " Conventions: CF-1.7 CMIP-6.2\n", " activity_id: CMIP\n", " branch_method: Hybrid-restart from year 1600-01-01 of ...\n", " branch_time: 0.0\n", " branch_time_in_child: 0.0\n", " branch_time_in_parent: 430335.0\n", " ... ...\n", " intake_esm_attrs:variable_id: od550aer\n", " intake_esm_attrs:grid_label: gn\n", " intake_esm_attrs:zstore: gs://cmip6/CMIP6/CMIP/NCC/NorESM2-LM/hi...\n", " intake_esm_attrs:version: 20190815\n", " intake_esm_attrs:_data_format_: zarr\n", " intake_esm_dataset_key: CMIP.NCC.NorESM2-LM.historical.AERmon.gn
<xarray.Dataset> Size: 29MB\n", "Dimensions: (lat: 96, lon: 144, time: 48, model: 11)\n", "Coordinates:\n", " * lat (lat) float64 768B -90.0 -88.11 -86.21 ... 86.21 88.11 90.0\n", " * lon (lon) float64 1kB 0.0 2.5 5.0 7.5 ... 352.5 355.0 357.5\n", " * time (time) datetime64[ns] 384B 1985-01-10 ... 1986-12-31\n", " wavelength (model) float64 88B 550.0 550.0 550.0 ... 550.0 550.0 550.0\n", " member_id (model) <U8 352B 'r1i1p1f1' 'r1i1p1f1' ... 'r1i1p1f1'\n", " dcpp_init_year (model) float64 88B nan nan nan nan nan ... nan nan nan nan\n", " * model (model) object 88B 'NorESM2-LM' ... 'CESM2-WACCM'\n", "Data variables:\n", " od550aer (model, time, lat, lon) float32 29MB dask.array<chunksize=(1, 48, 64, 128), meta=np.ndarray>\n", "Attributes: (12/66)\n", " Conventions: CF-1.7 CMIP-6.2\n", " activity_id: CMIP\n", " branch_method: Hybrid-restart from year 1600-01-01 of ...\n", " branch_time: 0.0\n", " branch_time_in_child: 0.0\n", " branch_time_in_parent: 430335.0\n", " ... ...\n", " intake_esm_attrs:grid_label: gn\n", " intake_esm_attrs:zstore: gs://cmip6/CMIP6/CMIP/NCC/NorESM2-LM/hi...\n", " intake_esm_attrs:version: 20190815\n", " intake_esm_attrs:_data_format_: zarr\n", " intake_esm_dataset_key: CMIP.NCC.NorESM2-LM.historical.AERmon.gn\n", " regrid_method: bilinear
<xarray.Dataset> Size: 223kB\n", "Dimensions: (season: 4, lat: 96, lon: 144)\n", "Coordinates:\n", " * lat (lat) float64 768B -90.0 -88.11 -86.21 -84.32 ... 86.21 88.11 90.0\n", " * lon (lon) float64 1kB 0.0 2.5 5.0 7.5 10.0 ... 350.0 352.5 355.0 357.5\n", " * season (season) object 32B 'DJF' 'JJA' 'MAM' 'SON'\n", "Data variables:\n", " od550aer (season, lat, lon) float32 221kB dask.array<chunksize=(4, 64, 128), meta=np.ndarray>\n", "Attributes: (12/66)\n", " Conventions: CF-1.7 CMIP-6.2\n", " activity_id: CMIP\n", " branch_method: Hybrid-restart from year 1600-01-01 of ...\n", " branch_time: 0.0\n", " branch_time_in_child: 0.0\n", " branch_time_in_parent: 430335.0\n", " ... ...\n", " intake_esm_attrs:grid_label: gn\n", " intake_esm_attrs:zstore: gs://cmip6/CMIP6/CMIP/NCC/NorESM2-LM/hi...\n", " intake_esm_attrs:version: 20190815\n", " intake_esm_attrs:_data_format_: zarr\n", " intake_esm_dataset_key: CMIP.NCC.NorESM2-LM.historical.AERmon.gn\n", " regrid_method: bilinear