{ "cells": [ { "cell_type": "markdown", "id": "cc2904fd-533c-4a66-901f-3e4d10686b3d", "metadata": {}, "source": [ "# Regrid" ] }, { "cell_type": "code", "execution_count": 1, "id": "69554423-9c37-41c0-98e9-88691a829ead", "metadata": {}, "outputs": [], "source": [ "import xarray\n", "import numpy\n", "import pandas\n", "import climtas\n", "import xesmf\n", "import dask.array" ] }, { "cell_type": "markdown", "id": "dfd7e675-ec1c-439e-872c-1252fb571e46", "metadata": {}, "source": [ "We have a large Dask dataset that we'd like to regrid to a different resolution, so we can compare it with a different dataset" ] }, { "cell_type": "code", "execution_count": 2, "id": "763858b4-deca-4f29-981d-bc09af00e8d2", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
<xarray.DataArray 'temperature' (time: 1095, lat: 50, lon: 100)>\n", "dask.array<random_sample, shape=(1095, 50, 100), dtype=float64, chunksize=(90, 25, 25), chunktype=numpy.ndarray>\n", "Coordinates:\n", " * time (time) datetime64[ns] 2001-01-01 2001-01-02 ... 2003-12-31\n", " * lat (lat) float64 -90.0 -86.33 -82.65 -78.98 ... 78.98 82.65 86.33 90.0\n", " * lon (lon) float64 -180.0 -176.4 -172.8 -169.2 ... 169.2 172.8 176.4
\n",
"
| \n",
"\n", "\n", " | \n", "
array(['2001-01-01T00:00:00.000000000', '2001-01-02T00:00:00.000000000',\n", " '2001-01-03T00:00:00.000000000', ..., '2003-12-29T00:00:00.000000000',\n", " '2003-12-30T00:00:00.000000000', '2003-12-31T00:00:00.000000000'],\n", " dtype='datetime64[ns]')
array([-90. , -86.326531, -82.653061, -78.979592, -75.306122, -71.632653,\n", " -67.959184, -64.285714, -60.612245, -56.938776, -53.265306, -49.591837,\n", " -45.918367, -42.244898, -38.571429, -34.897959, -31.22449 , -27.55102 ,\n", " -23.877551, -20.204082, -16.530612, -12.857143, -9.183673, -5.510204,\n", " -1.836735, 1.836735, 5.510204, 9.183673, 12.857143, 16.530612,\n", " 20.204082, 23.877551, 27.55102 , 31.22449 , 34.897959, 38.571429,\n", " 42.244898, 45.918367, 49.591837, 53.265306, 56.938776, 60.612245,\n", " 64.285714, 67.959184, 71.632653, 75.306122, 78.979592, 82.653061,\n", " 86.326531, 90. ])
array([-180. , -176.4, -172.8, -169.2, -165.6, -162. , -158.4, -154.8, -151.2,\n", " -147.6, -144. , -140.4, -136.8, -133.2, -129.6, -126. , -122.4, -118.8,\n", " -115.2, -111.6, -108. , -104.4, -100.8, -97.2, -93.6, -90. , -86.4,\n", " -82.8, -79.2, -75.6, -72. , -68.4, -64.8, -61.2, -57.6, -54. ,\n", " -50.4, -46.8, -43.2, -39.6, -36. , -32.4, -28.8, -25.2, -21.6,\n", " -18. , -14.4, -10.8, -7.2, -3.6, 0. , 3.6, 7.2, 10.8,\n", " 14.4, 18. , 21.6, 25.2, 28.8, 32.4, 36. , 39.6, 43.2,\n", " 46.8, 50.4, 54. , 57.6, 61.2, 64.8, 68.4, 72. , 75.6,\n", " 79.2, 82.8, 86.4, 90. , 93.6, 97.2, 100.8, 104.4, 108. ,\n", " 111.6, 115.2, 118.8, 122.4, 126. , 129.6, 133.2, 136.8, 140.4,\n", " 144. , 147.6, 151.2, 154.8, 158.4, 162. , 165.6, 169.2, 172.8,\n", " 176.4])
<xarray.DataArray 'zeros-18791f2cff3f47059e412e1e9c5470f9' (lat: 10, lon: 50)>\n", "dask.array<zeros, shape=(10, 50), dtype=float64, chunksize=(10, 50), chunktype=numpy.ndarray>\n", "Coordinates:\n", " * lat (lat) float64 -90.0 -70.0 -50.0 -30.0 -10.0 ... 30.0 50.0 70.0 90.0\n", " * lon (lon) float64 0.0 7.2 14.4 21.6 28.8 ... 331.2 338.4 345.6 352.8
\n",
"
| \n",
"\n", "\n", " | \n", "
array([-90., -70., -50., -30., -10., 10., 30., 50., 70., 90.])
array([ 0. , 7.2, 14.4, 21.6, 28.8, 36. , 43.2, 50.4, 57.6, 64.8,\n", " 72. , 79.2, 86.4, 93.6, 100.8, 108. , 115.2, 122.4, 129.6, 136.8,\n", " 144. , 151.2, 158.4, 165.6, 172.8, 180. , 187.2, 194.4, 201.6, 208.8,\n", " 216. , 223.2, 230.4, 237.6, 244.8, 252. , 259.2, 266.4, 273.6, 280.8,\n", " 288. , 295.2, 302.4, 309.6, 316.8, 324. , 331.2, 338.4, 345.6, 352.8])
<xarray.DataArray 'temperature' (time: 1095, lat: 10, lon: 50)>\n", "dask.array<transpose, shape=(1095, 10, 50), dtype=float64, chunksize=(90, 10, 50), chunktype=numpy.ndarray>\n", "Coordinates:\n", " * time (time) datetime64[ns] 2001-01-01 2001-01-02 ... 2003-12-31\n", " * lon (lon) float64 0.0 7.2 14.4 21.6 28.8 ... 331.2 338.4 345.6 352.8\n", " * lat (lat) float64 -90.0 -70.0 -50.0 -30.0 -10.0 ... 30.0 50.0 70.0 90.0\n", "Attributes:\n", " regrid_method: bilinear
\n",
"
| \n",
"\n", "\n", " | \n", "
array(['2001-01-01T00:00:00.000000000', '2001-01-02T00:00:00.000000000',\n", " '2001-01-03T00:00:00.000000000', ..., '2003-12-29T00:00:00.000000000',\n", " '2003-12-30T00:00:00.000000000', '2003-12-31T00:00:00.000000000'],\n", " dtype='datetime64[ns]')
array([ 0. , 7.2, 14.4, 21.6, 28.8, 36. , 43.2, 50.4, 57.6, 64.8,\n", " 72. , 79.2, 86.4, 93.6, 100.8, 108. , 115.2, 122.4, 129.6, 136.8,\n", " 144. , 151.2, 158.4, 165.6, 172.8, 180. , 187.2, 194.4, 201.6, 208.8,\n", " 216. , 223.2, 230.4, 237.6, 244.8, 252. , 259.2, 266.4, 273.6, 280.8,\n", " 288. , 295.2, 302.4, 309.6, 316.8, 324. , 331.2, 338.4, 345.6, 352.8])
array([-90., -70., -50., -30., -10., 10., 30., 50., 70., 90.])
<xarray.DataArray 'temperature' (time: 1095, lat: 10, lon: 50)>\n", "dask.array<reshape, shape=(1095, 10, 50), dtype=float64, chunksize=(90, 10, 50), chunktype=numpy.ndarray>\n", "Coordinates:\n", " * time (time) datetime64[ns] 2001-01-01 2001-01-02 ... 2003-12-31\n", " * lat (lat) float64 -90.0 -70.0 -50.0 -30.0 -10.0 ... 30.0 50.0 70.0 90.0\n", " * lon (lon) float64 0.0 7.2 14.4 21.6 28.8 ... 331.2 338.4 345.6 352.8
\n",
"
| \n",
"\n", "\n", " | \n", "
array(['2001-01-01T00:00:00.000000000', '2001-01-02T00:00:00.000000000',\n", " '2001-01-03T00:00:00.000000000', ..., '2003-12-29T00:00:00.000000000',\n", " '2003-12-30T00:00:00.000000000', '2003-12-31T00:00:00.000000000'],\n", " dtype='datetime64[ns]')
array([-90., -70., -50., -30., -10., 10., 30., 50., 70., 90.])
array([ 0. , 7.2, 14.4, 21.6, 28.8, 36. , 43.2, 50.4, 57.6,\n", " 64.8, 72. , 79.2, 86.4, 93.6, 100.8, 108. , 115.2, 122.4,\n", " 129.6, 136.8, 144. , 151.2, 158.4, 165.6, 172.8, 180. , 187.2,\n", " 194.4, 201.6, 208.8, 216. , 223.2, 230.4, 237.6, 244.8, 252. ,\n", " 259.2, 266.4, 273.6, 280.8, 288. , 295.2, 302.4, 309.6, 316.8,\n", " 324. , 331.2, 338.4, 345.6, 352.8])