Skip to content

Instantly share code, notes, and snippets.

@s-kganz
Created January 6, 2025 18:36
Show Gist options
  • Select an option

  • Save s-kganz/f740d6b755ad93eeb48994eda60856be to your computer and use it in GitHub Desktop.

Select an option

Save s-kganz/f740d6b755ad93eeb48994eda60856be to your computer and use it in GitHub Desktop.
Windowing xarray data
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import xarray as xr\n",
"import numpy as np\n",
"import cartopy.crs as ccrs\n",
"from matplotlib import pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>elev</th>\n",
" <th>fire</th>\n",
" <th>latitude</th>\n",
" <th>longitude</th>\n",
" <th>mort</th>\n",
" <th>near</th>\n",
" <th>prcp</th>\n",
" <th>rhost</th>\n",
" <th>rwc</th>\n",
" <th>tmin</th>\n",
" <th>year</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>925.0</td>\n",
" <td>0.0</td>\n",
" <td>38.722502</td>\n",
" <td>-120.643743</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1286.197498</td>\n",
" <td>0.999065</td>\n",
" <td>0.455582</td>\n",
" <td>-6.6150</td>\n",
" <td>1999</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1072.0</td>\n",
" <td>0.0</td>\n",
" <td>38.722502</td>\n",
" <td>-120.607810</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1317.052495</td>\n",
" <td>1.000000</td>\n",
" <td>0.455582</td>\n",
" <td>-6.9725</td>\n",
" <td>1999</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1156.0</td>\n",
" <td>0.0</td>\n",
" <td>38.722502</td>\n",
" <td>-120.571877</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1391.329998</td>\n",
" <td>1.000000</td>\n",
" <td>0.455582</td>\n",
" <td>-7.7800</td>\n",
" <td>1999</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1146.0</td>\n",
" <td>0.0</td>\n",
" <td>38.722502</td>\n",
" <td>-120.535945</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1383.149995</td>\n",
" <td>0.998043</td>\n",
" <td>0.455582</td>\n",
" <td>-8.1975</td>\n",
" <td>1999</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1278.0</td>\n",
" <td>0.0</td>\n",
" <td>38.722502</td>\n",
" <td>-120.500012</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1401.067500</td>\n",
" <td>0.997517</td>\n",
" <td>0.455582</td>\n",
" <td>-9.0075</td>\n",
" <td>1999</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" elev fire latitude longitude mort near prcp rhost \\\n",
"0 925.0 0.0 38.722502 -120.643743 0.0 0.0 1286.197498 0.999065 \n",
"1 1072.0 0.0 38.722502 -120.607810 0.0 0.0 1317.052495 1.000000 \n",
"2 1156.0 0.0 38.722502 -120.571877 0.0 0.0 1391.329998 1.000000 \n",
"3 1146.0 0.0 38.722502 -120.535945 0.0 0.0 1383.149995 0.998043 \n",
"4 1278.0 0.0 38.722502 -120.500012 0.0 0.0 1401.067500 0.997517 \n",
"\n",
" rwc tmin year \n",
"0 0.455582 -6.6150 1999 \n",
"1 0.455582 -6.9725 1999 \n",
"2 0.455582 -7.7800 1999 \n",
"3 0.455582 -8.1975 1999 \n",
"4 0.455582 -9.0075 1999 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# This is a ~40 MB csv, takes <1 min to download. Just covers California.\n",
"ds_csv = pd.read_csv(\"https://zenodo.org/records/14606048/files/preisler_dim_allyears.csv?download=1\", index_col=0)\n",
"ds_csv.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
"<defs>\n",
"<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n",
"<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"</symbol>\n",
"<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n",
"<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"</symbol>\n",
"</defs>\n",
"</svg>\n",
"<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n",
" *\n",
" */\n",
"\n",
":root {\n",
" --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n",
" --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n",
" --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n",
" --xr-border-color: var(--jp-border-color2, #e0e0e0);\n",
" --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
" --xr-background-color: var(--jp-layout-color0, white);\n",
" --xr-background-color-row-even: var(--jp-layout-color1, white);\n",
" --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n",
"}\n",
"\n",
"html[theme=dark],\n",
"html[data-theme=dark],\n",
"body[data-theme=dark],\n",
"body.vscode-dark {\n",
" --xr-font-color0: rgba(255, 255, 255, 1);\n",
" --xr-font-color2: rgba(255, 255, 255, 0.54);\n",
" --xr-font-color3: rgba(255, 255, 255, 0.38);\n",
" --xr-border-color: #1F1F1F;\n",
" --xr-disabled-color: #515151;\n",
" --xr-background-color: #111111;\n",
" --xr-background-color-row-even: #111111;\n",
" --xr-background-color-row-odd: #313131;\n",
"}\n",
"\n",
".xr-wrap {\n",
" display: block !important;\n",
" min-width: 300px;\n",
" max-width: 700px;\n",
"}\n",
"\n",
".xr-text-repr-fallback {\n",
" /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
" display: none;\n",
"}\n",
"\n",
".xr-header {\n",
" padding-top: 6px;\n",
" padding-bottom: 6px;\n",
" margin-bottom: 4px;\n",
" border-bottom: solid 1px var(--xr-border-color);\n",
"}\n",
"\n",
".xr-header > div,\n",
".xr-header > ul {\n",
" display: inline;\n",
" margin-top: 0;\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-obj-type,\n",
".xr-array-name {\n",
" margin-left: 2px;\n",
" margin-right: 10px;\n",
"}\n",
"\n",
".xr-obj-type {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-sections {\n",
" padding-left: 0 !important;\n",
" display: grid;\n",
" grid-template-columns: 150px auto auto 1fr 0 20px 0 20px;\n",
"}\n",
"\n",
".xr-section-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-section-item input {\n",
" display: inline-block;\n",
" opacity: 0;\n",
"}\n",
"\n",
".xr-section-item input + label {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label {\n",
" cursor: pointer;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-item input:focus + label {\n",
" border: 2px solid var(--xr-font-color0);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label:hover {\n",
" color: var(--xr-font-color0);\n",
"}\n",
"\n",
".xr-section-summary {\n",
" grid-column: 1;\n",
" color: var(--xr-font-color2);\n",
" font-weight: 500;\n",
"}\n",
"\n",
".xr-section-summary > span {\n",
" display: inline-block;\n",
" padding-left: 0.5em;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-summary-in + label:before {\n",
" display: inline-block;\n",
" content: '►';\n",
" font-size: 11px;\n",
" width: 15px;\n",
" text-align: center;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label:before {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label:before {\n",
" content: '▼';\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label > span {\n",
" display: none;\n",
"}\n",
"\n",
".xr-section-summary,\n",
".xr-section-inline-details {\n",
" padding-top: 4px;\n",
" padding-bottom: 4px;\n",
"}\n",
"\n",
".xr-section-inline-details {\n",
" grid-column: 2 / -1;\n",
"}\n",
"\n",
".xr-section-details {\n",
" display: none;\n",
" grid-column: 1 / -1;\n",
" margin-bottom: 5px;\n",
"}\n",
"\n",
".xr-section-summary-in:checked ~ .xr-section-details {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-array-wrap {\n",
" grid-column: 1 / -1;\n",
" display: grid;\n",
" grid-template-columns: 20px auto;\n",
"}\n",
"\n",
".xr-array-wrap > label {\n",
" grid-column: 1;\n",
" vertical-align: top;\n",
"}\n",
"\n",
".xr-preview {\n",
" color: var(--xr-font-color3);\n",
"}\n",
"\n",
".xr-array-preview,\n",
".xr-array-data {\n",
" padding: 0 5px !important;\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-array-data,\n",
".xr-array-in:checked ~ .xr-array-preview {\n",
" display: none;\n",
"}\n",
"\n",
".xr-array-in:checked ~ .xr-array-data,\n",
".xr-array-preview {\n",
" display: inline-block;\n",
"}\n",
"\n",
".xr-dim-list {\n",
" display: inline-block !important;\n",
" list-style: none;\n",
" padding: 0 !important;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list li {\n",
" display: inline-block;\n",
" padding: 0;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list:before {\n",
" content: '(';\n",
"}\n",
"\n",
".xr-dim-list:after {\n",
" content: ')';\n",
"}\n",
"\n",
".xr-dim-list li:not(:last-child):after {\n",
" content: ',';\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-has-index {\n",
" font-weight: bold;\n",
"}\n",
"\n",
".xr-var-list,\n",
".xr-var-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-var-item > div,\n",
".xr-var-item label,\n",
".xr-var-item > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-even);\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-var-item > .xr-var-name:hover span {\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-var-list > li:nth-child(odd) > div,\n",
".xr-var-list > li:nth-child(odd) > label,\n",
".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-odd);\n",
"}\n",
"\n",
".xr-var-name {\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-var-dims {\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-var-dtype {\n",
" grid-column: 3;\n",
" text-align: right;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-var-preview {\n",
" grid-column: 4;\n",
"}\n",
"\n",
".xr-index-preview {\n",
" grid-column: 2 / 5;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-var-name,\n",
".xr-var-dims,\n",
".xr-var-dtype,\n",
".xr-preview,\n",
".xr-attrs dt {\n",
" white-space: nowrap;\n",
" overflow: hidden;\n",
" text-overflow: ellipsis;\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-var-name:hover,\n",
".xr-var-dims:hover,\n",
".xr-var-dtype:hover,\n",
".xr-attrs dt:hover {\n",
" overflow: visible;\n",
" width: auto;\n",
" z-index: 1;\n",
"}\n",
"\n",
".xr-var-attrs,\n",
".xr-var-data,\n",
".xr-index-data {\n",
" display: none;\n",
" background-color: var(--xr-background-color) !important;\n",
" padding-bottom: 5px !important;\n",
"}\n",
"\n",
".xr-var-attrs-in:checked ~ .xr-var-attrs,\n",
".xr-var-data-in:checked ~ .xr-var-data,\n",
".xr-index-data-in:checked ~ .xr-index-data {\n",
" display: block;\n",
"}\n",
"\n",
".xr-var-data > table {\n",
" float: right;\n",
"}\n",
"\n",
".xr-var-name span,\n",
".xr-var-data,\n",
".xr-index-name div,\n",
".xr-index-data,\n",
".xr-attrs {\n",
" padding-left: 25px !important;\n",
"}\n",
"\n",
".xr-attrs,\n",
".xr-var-attrs,\n",
".xr-var-data,\n",
".xr-index-data {\n",
" grid-column: 1 / -1;\n",
"}\n",
"\n",
"dl.xr-attrs {\n",
" padding: 0;\n",
" margin: 0;\n",
" display: grid;\n",
" grid-template-columns: 125px auto;\n",
"}\n",
"\n",
".xr-attrs dt,\n",
".xr-attrs dd {\n",
" padding: 0;\n",
" margin: 0;\n",
" float: left;\n",
" padding-right: 10px;\n",
" width: auto;\n",
"}\n",
"\n",
".xr-attrs dt {\n",
" font-weight: normal;\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-attrs dt:hover span {\n",
" display: inline-block;\n",
" background: var(--xr-background-color);\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-attrs dd {\n",
" grid-column: 2;\n",
" white-space: pre-wrap;\n",
" word-break: break-all;\n",
"}\n",
"\n",
".xr-icon-database,\n",
".xr-icon-file-text2,\n",
".xr-no-icon {\n",
" display: inline-block;\n",
" vertical-align: middle;\n",
" width: 1em;\n",
" height: 1.5em !important;\n",
" stroke-width: 0;\n",
" stroke: currentColor;\n",
" fill: currentColor;\n",
"}\n",
"</style><pre class='xr-text-repr-fallback'>&lt;xarray.Dataset&gt; Size: 111MB\n",
"Dimensions: (latitude: 340, longitude: 256, year: 20)\n",
"Coordinates:\n",
" * latitude (latitude) float64 3kB 32.57 32.6 32.63 ... 41.95 41.98 42.01\n",
" * longitude (longitude) float64 2kB -124.2 -124.2 -124.2 ... -115.1 -115.1\n",
" * year (year) int64 160B 1999 2000 2001 2002 ... 2015 2016 2017 2018\n",
"Data variables:\n",
" elev (latitude, longitude, year) float64 14MB nan nan nan ... nan nan\n",
" fire (latitude, longitude, year) float64 14MB nan nan nan ... nan nan\n",
" mort (latitude, longitude, year) float64 14MB nan nan nan ... nan nan\n",
" near (latitude, longitude, year) float64 14MB nan nan nan ... nan nan\n",
" prcp (latitude, longitude, year) float64 14MB nan nan nan ... nan nan\n",
" rhost (latitude, longitude, year) float64 14MB nan nan nan ... nan nan\n",
" rwc (latitude, longitude, year) float64 14MB nan nan nan ... nan nan\n",
" tmin (latitude, longitude, year) float64 14MB nan nan nan ... nan nan</pre><div class='xr-wrap' style='display:none'><div class='xr-header'><div class='xr-obj-type'>xarray.Dataset</div></div><ul class='xr-sections'><li class='xr-section-item'><input id='section-36d6ff84-10dd-4375-ba77-456dcaed8d75' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-36d6ff84-10dd-4375-ba77-456dcaed8d75' class='xr-section-summary' title='Expand/collapse section'>Dimensions:</label><div class='xr-section-inline-details'><ul class='xr-dim-list'><li><span class='xr-has-index'>latitude</span>: 340</li><li><span class='xr-has-index'>longitude</span>: 256</li><li><span class='xr-has-index'>year</span>: 20</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-ee33f9a0-79e5-4a7a-b0cd-61c585a163bc' class='xr-section-summary-in' type='checkbox' checked><label for='section-ee33f9a0-79e5-4a7a-b0cd-61c585a163bc' class='xr-section-summary' >Coordinates: <span>(3)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>latitude</span></div><div class='xr-var-dims'>(latitude)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>32.57 32.6 32.63 ... 41.98 42.01</div><input id='attrs-53fc9f4c-705b-42a8-b2c9-6c615c1602a8' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-53fc9f4c-705b-42a8-b2c9-6c615c1602a8' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-cb16bdd1-fc0b-4e6c-bce9-ebbda977c56e' class='xr-var-data-in' type='checkbox'><label for='data-cb16bdd1-fc0b-4e6c-bce9-ebbda977c56e' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([32.567223, 32.597501, 32.627768, ..., 41.95339 , 41.980107, 42.006813])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>longitude</span></div><div class='xr-var-dims'>(longitude)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>-124.2 -124.2 ... -115.1 -115.1</div><input id='attrs-a09772d6-b0c3-4329-9476-479527aef60f' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-a09772d6-b0c3-4329-9476-479527aef60f' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-e174464d-5590-46c3-9020-b2a4b58e3985' class='xr-var-data-in' type='checkbox'><label for='data-e174464d-5590-46c3-9020-b2a4b58e3985' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([-124.237004, -124.201071, -124.165139, ..., -115.146053, -115.110121,\n",
" -115.074188])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>year</span></div><div class='xr-var-dims'>(year)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>1999 2000 2001 ... 2016 2017 2018</div><input id='attrs-9b729784-393f-4adb-80fc-4ac77488c745' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-9b729784-393f-4adb-80fc-4ac77488c745' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-a0d43271-cd76-4015-851a-7a7153105a1d' class='xr-var-data-in' type='checkbox'><label for='data-a0d43271-cd76-4015-851a-7a7153105a1d' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,\n",
" 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-2e23af24-8d84-47f4-ad3f-7f368f3189c7' class='xr-section-summary-in' type='checkbox' checked><label for='section-2e23af24-8d84-47f4-ad3f-7f368f3189c7' class='xr-section-summary' >Data variables: <span>(8)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span>elev</span></div><div class='xr-var-dims'>(latitude, longitude, year)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>nan nan nan nan ... nan nan nan nan</div><input id='attrs-cd449247-d884-4dcf-9b09-277cb95712e8' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-cd449247-d884-4dcf-9b09-277cb95712e8' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-4ce2cf18-855f-4b73-b8ba-196665938f14' class='xr-var-data-in' type='checkbox'><label for='data-4ce2cf18-855f-4b73-b8ba-196665938f14' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([[[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
"...\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]]])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>fire</span></div><div class='xr-var-dims'>(latitude, longitude, year)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>nan nan nan nan ... nan nan nan nan</div><input id='attrs-4bd1a7a3-d0fa-4ed4-a185-41bc1e4ce4fd' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-4bd1a7a3-d0fa-4ed4-a185-41bc1e4ce4fd' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-636ed287-afd8-46a8-beb5-abdf3662997b' class='xr-var-data-in' type='checkbox'><label for='data-636ed287-afd8-46a8-beb5-abdf3662997b' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([[[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
"...\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]]])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>mort</span></div><div class='xr-var-dims'>(latitude, longitude, year)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>nan nan nan nan ... nan nan nan nan</div><input id='attrs-33c49bc6-1d7e-4c00-a73b-a36f8c701b9e' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-33c49bc6-1d7e-4c00-a73b-a36f8c701b9e' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-c9721b52-da5c-40b8-9cf0-8d23f77d5b15' class='xr-var-data-in' type='checkbox'><label for='data-c9721b52-da5c-40b8-9cf0-8d23f77d5b15' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([[[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
"...\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]]])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>near</span></div><div class='xr-var-dims'>(latitude, longitude, year)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>nan nan nan nan ... nan nan nan nan</div><input id='attrs-8e4a9e66-62f5-46e5-b3da-82256d8ace84' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-8e4a9e66-62f5-46e5-b3da-82256d8ace84' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-810ad205-0bf0-40f3-89a6-23db9c8bc033' class='xr-var-data-in' type='checkbox'><label for='data-810ad205-0bf0-40f3-89a6-23db9c8bc033' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([[[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
"...\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]]])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>prcp</span></div><div class='xr-var-dims'>(latitude, longitude, year)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>nan nan nan nan ... nan nan nan nan</div><input id='attrs-120177b1-9fce-4dcb-9463-66fb5ca7e756' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-120177b1-9fce-4dcb-9463-66fb5ca7e756' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-e6926e31-5f21-4ed2-95c8-b15aaf208943' class='xr-var-data-in' type='checkbox'><label for='data-e6926e31-5f21-4ed2-95c8-b15aaf208943' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([[[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
"...\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]]])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>rhost</span></div><div class='xr-var-dims'>(latitude, longitude, year)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>nan nan nan nan ... nan nan nan nan</div><input id='attrs-f568ae28-d7d0-4597-b11b-c6323ca86569' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-f568ae28-d7d0-4597-b11b-c6323ca86569' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-ae32330a-543e-4cd8-96eb-c42a574e9cd2' class='xr-var-data-in' type='checkbox'><label for='data-ae32330a-543e-4cd8-96eb-c42a574e9cd2' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([[[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
"...\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]]])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>rwc</span></div><div class='xr-var-dims'>(latitude, longitude, year)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>nan nan nan nan ... nan nan nan nan</div><input id='attrs-c2d714eb-a053-4b50-8e2f-17994245a82b' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-c2d714eb-a053-4b50-8e2f-17994245a82b' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-76b9207f-20e1-47b5-bdcd-89377778b771' class='xr-var-data-in' type='checkbox'><label for='data-76b9207f-20e1-47b5-bdcd-89377778b771' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([[[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
"...\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]]])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>tmin</span></div><div class='xr-var-dims'>(latitude, longitude, year)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>nan nan nan nan ... nan nan nan nan</div><input id='attrs-986e6783-d9a4-417f-8f54-1e47a0b9dc33' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-986e6783-d9a4-417f-8f54-1e47a0b9dc33' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-d6583168-1f28-4db1-9b3b-d7e51369fff0' class='xr-var-data-in' type='checkbox'><label for='data-d6583168-1f28-4db1-9b3b-d7e51369fff0' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([[[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
"...\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]],\n",
"\n",
" [[nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" ...,\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan],\n",
" [nan, nan, nan, ..., nan, nan, nan]]])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-0f2a707a-19e6-4b46-8944-ba94d3049d6f' class='xr-section-summary-in' type='checkbox' ><label for='section-0f2a707a-19e6-4b46-8944-ba94d3049d6f' class='xr-section-summary' >Indexes: <span>(3)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-index-name'><div>latitude</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-01e39b2d-132c-4bde-8185-d8208f95b4fe' class='xr-index-data-in' type='checkbox'/><label for='index-01e39b2d-132c-4bde-8185-d8208f95b4fe' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index([ 32.56722344887921, 32.59750092095032, 32.627768165114155,\n",
" 32.65802517638218, 32.68827194977895, 32.71850848034216,\n",
" 32.748734763122535, 32.77895079318397, 32.80915656560335,\n",
" 32.839352075470714,\n",
" ...\n",
" 41.76605646289848, 41.79285194828348, 41.81963623677096,\n",
" 41.84640932718892, 41.87317121837568, 41.89992190917975,\n",
" 41.92666139845996, 41.95338968508534, 41.98010676793516,\n",
" 42.00681264589888],\n",
" dtype=&#x27;float64&#x27;, name=&#x27;latitude&#x27;, length=340))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>longitude</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-1073b708-2fbd-4901-8ed0-a7e3158d8a5a' class='xr-index-data-in' type='checkbox'/><label for='index-1073b708-2fbd-4901-8ed0-a7e3158d8a5a' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index([-124.23700379372984, -124.20107118236504, -124.16513857100024,\n",
" -124.12920595963548, -124.0932733482707, -124.0573407369059,\n",
" -124.02140812554114, -123.98547551417634, -123.94954290281156,\n",
" -123.9136102914468,\n",
" ...\n",
" -115.39758139799372, -115.36164878662896, -115.32571617526416,\n",
" -115.28978356389938, -115.25385095253462, -115.21791834116982,\n",
" -115.18198572980504, -115.14605311844028, -115.11012050707548,\n",
" -115.0741878957107],\n",
" dtype=&#x27;float64&#x27;, name=&#x27;longitude&#x27;, length=256))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>year</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-ca08700a-34a1-4d9d-8196-f06df6a44e41' class='xr-index-data-in' type='checkbox'/><label for='index-ca08700a-34a1-4d9d-8196-f06df6a44e41' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index([1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,\n",
" 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018],\n",
" dtype=&#x27;int64&#x27;, name=&#x27;year&#x27;))</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-a6555334-5329-4d10-b742-e0a4b1aa8b5e' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-a6555334-5329-4d10-b742-e0a4b1aa8b5e' class='xr-section-summary' title='Expand/collapse section'>Attributes: <span>(0)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'></dl></div></li></ul></div></div>"
],
"text/plain": [
"<xarray.Dataset> Size: 111MB\n",
"Dimensions: (latitude: 340, longitude: 256, year: 20)\n",
"Coordinates:\n",
" * latitude (latitude) float64 3kB 32.57 32.6 32.63 ... 41.95 41.98 42.01\n",
" * longitude (longitude) float64 2kB -124.2 -124.2 -124.2 ... -115.1 -115.1\n",
" * year (year) int64 160B 1999 2000 2001 2002 ... 2015 2016 2017 2018\n",
"Data variables:\n",
" elev (latitude, longitude, year) float64 14MB nan nan nan ... nan nan\n",
" fire (latitude, longitude, year) float64 14MB nan nan nan ... nan nan\n",
" mort (latitude, longitude, year) float64 14MB nan nan nan ... nan nan\n",
" near (latitude, longitude, year) float64 14MB nan nan nan ... nan nan\n",
" prcp (latitude, longitude, year) float64 14MB nan nan nan ... nan nan\n",
" rhost (latitude, longitude, year) float64 14MB nan nan nan ... nan nan\n",
" rwc (latitude, longitude, year) float64 14MB nan nan nan ... nan nan\n",
" tmin (latitude, longitude, year) float64 14MB nan nan nan ... nan nan"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Convert to an xarray dataset so we can play with rolling operations.\n",
"ds = xr.Dataset.from_dataframe(ds_csv.set_index([\"latitude\", \"longitude\", \"year\"]))\n",
"ds"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAdkAAAGkCAYAAAB9+18dAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAADNPklEQVR4nOydd5wU5f343zOzu9d74zjgqNKbNEEFoxDUaDRGNEHF2GJiSyQmSqxRY9dgbBhLNMbY60/zRQ0RS0RQAQGR3stxjetlb2fm98czMzt7t1d2rwLP29e+3J155plnZo/9zKcrpmmaSCQSiUQi6XDU7l6ARCKRSCSHK1LISiQSiUTSSUghK5FIJBJJJyGFrEQikUgknYQUshKJRCKRdBJSyEokEolE0klIISuRSCQSSSchhaxEIpFIJJ2EFLISiUQikXQSUshKJBKJRNJJSCErkbRATU0Njz32GD/84Q/Jzc0lKSmJ8ePH88QTT6DrepPxhmFw3333MWDAAGJjYxkzZgwvvfRSk3ErVqzgiiuuYMKECXi9XhRFaXEdzzzzDMOHDyc2NpYhQ4bwyCOPdNg1SiSSzkMKWYmkBbZt28bVV1+NaZrMnz+fBx54gAEDBnDFFVdw8cUXNxl/4403cv311zNr1iweeeQR+vXrx9y5c3n55ZdDxv373//m6aefRlEUBg4c2OIannzySS699FJGjhzJI488wtSpU7nmmmu49957O/RaJRJJJ2BKJIcgtbW1pq7rnX6eoqIic926dU22X3TRRSZgbt682dm2Z88e0+v1mldeeaWzzTAM8/jjjzf79OljBgIBZ3tBQYFZU1NjmqZpXnnllWZz/xRramrMjIwM80c/+lHI9vPOO89MSEgwS0tL23V9Eomkc5GarKRNfPzxxyiKwltvvdVk37/+9S8URWHZsmXOtg0bNnD22WeTnp5ObGwsEydO5N133w05rrS0lOuuu47Ro0eTmJhIcnIyp5xyCt9++23IuKVLl6IoCi+//DI33XQTeXl5xMfHU1FR0TkX6yIzM5ORI0c22f6Tn/wEgO+//97Z9s4779DQ0MAVV1zhbFMUhV//+tfs2bMn5P7k5OQQFxfX6vk//vhjSkpKQuYEuPLKK6murub999+P+JokEknX4enuBUgODU444QT69u3Liy++6AgYmxdffJFBgwYxdepUAL777juOPfZY8vLyuOGGG0hISODVV1/lzDPP5I033nCO37ZtG2+//TZz5sxhwIABHDhwgCeffJIZM2awfv16evfuHXKeO+64A5/Px3XXXUd9fT0+n6/Z9R48eDCsz7Qx8fHxxMfHR3o7KCgoAIQQtlm1ahUJCQkMHz48ZOzkyZOd/ccdd1xE51m1ahUAEydODNk+YcIEVFVl1apVnH/++RGvXyKRdBHdrUpLDh0WLFhgxsTEmGVlZc62wsJC0+PxmLfeequz7aSTTjJHjx5t1tXVOdsMwzCnTZtmDhkyxNlWV1fXxOS7fft2MyYmxrz99tudbR9//LEJmAMHDnRMrK2Rn59vAq2+3OtuK/X19eaIESPMAQMGmA0NDc72H/3oR+bAgQObjK+urjYB84Ybbgg7X0vm4iuvvNLUNC3svqysLPNnP/tZxOuXSCRdh9RkJW1m3rx53H333bz++utccsklALzyyisEAgFHmyotLeW///0vt99+O5WVlVRWVjrHz549m1tvvZW9e/eSl5dHTEyMs0/XdcrKykhMTGTo0KGsXLmyyfkvvPDCNplYQWjXtbW1rY5rLegoHFdddRXr16/n/fffx+MJ/hOqra0NuSab2NhYZ3+k1NbWNquxx8bGRjWnRCLpOqSQlbSZYcOGMWnSJF588UVHyL744oscc8wxDB48GIAtW7ZgmiY333wzN998c9h5CgsLycvLwzAMHn74YR5//HG2b98eYt7NyMhoctyAAQPavNZjjz02kktrM/fffz9PPfUUd9xxB6eeemrIvri4OOrr65scU1dX5+yPlLi4OPx+f9h9dXV1Uc0pkUi6DilkJRExb948fvOb37Bnzx7q6+v58ssvefTRR539hmEAcN111zF79uywc9gC+a677uLmm2/m4osv5o477iA9PR1VVfntb3/rzOMmEoFSVFTUJp9sYmIiiYmJbZrzueee4/rrr+dXv/oVN910U5P9ubm5fPzxx5imGZL3un//foAmPua2kJubi67rFBYWkp2d7Wz3+/2UlJRENadEIuk6pJCVRMTPfvYz5s+fz0svvURtbS1er5dzzz3X2W+bX71eLzNnzmxxrtdff50f/OAHPPPMMyHby8rKQgKKomHSpEns3Lmz1XG33nort912W6vj3nnnHS699FLOOussHnvssbBjxo0bx9NPP83333/PiBEjnO3Lly93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nj17ePfdd9m1a1eTZgEPPfRQm+Zw02VCVlVVrr/+embNmsW6deu66rRN19FMM/bGVZ3cPWo92Zli28GynteYvSMxjSbdkRoHGLlToGwzupadBYEAgW07APAMHoj9b7Fuxih8i78i3io7rKSnoZceBKDX/9uJqWmkfSzMNYHCIjzlwie+WDaQkEh6FB1lLu7bt2/I9ltvvZXbbrutyfji4mJ0XScnJydke05ODhs2bGgyHmDbtm3897//5bzzzuPf//43W7Zs4YorrqChoYFbb7211TUuWbKEH//4xwwcOJANGzYwatQoduzYgWmaHH300W280lC6NHrkuOOOIykpiTfeeKMrTyuRSCSSHsLu3btJTk52PofTYqPFMAyys7P529/+hqZpTJgwgb1793L//fe3ScguWLCA6667jj/96U+OrMrOzua8887j5JNPjmpNXd5P9sILL+See+5hpDmFdKWp47pNtNR5pxWaC15yolp9PuF71J0k0GDd3aQk8PsPu4bh7hza1nr8hvhsDSu9p7wipBZyYMs20u2IYEVByevtlHEMFBWL+wgYhUUog/qz+0fCUpD7vxyMZd92zEVJJJIOpaM02eTk5BAh2xyZmZlomsaBAwdCth84cIBevXqFPSY3Nxev1xtiGh4+fDgFBQX4/X58dqGdZvj+++956aWXAPB4PNTW1pKYmMjtt9/OGWecwa9//etW192YLi8C+8ADDzB27Fi+5X/R+2ZbEbCKx+sENTnbWrPHW5G0ht/fbA5mSDlCDv2UHZtZ6pwmrfBC/LOKKu5nowIedh6yUVvnjLHH7bh2jPUaDXX1BIqKCRQVo/p81MwYTs2M4ez811D+veQ1+p62g76n7YBl3+LJyQ7WOZZIJD0GW8i25xUJPp+PCRMmsGTJkuAaDIMlS5YwderUsMcce+yxbNmyJaRy06ZNm8jNzW1VwAIkJCQ4ftjc3Fy2bt3q7Csuji7YssuTDWNiYvjtb3/L3Llz2c4GBjK8w88RLkinteIFTtcdnZY15UbbD3WtttUHBXfXosb5x3ZThTgRJGb6G5zPA57cDAg/q5mYiGeoFW1cW0fs/4mUnf6fJzH673NJeEs81aYnVkBM6/8QJBLJkcH8+fO58MILmThxIpMnT2bhwoVUV1c70cbz5s0jLy+Pu+++G4Bf//rXPProo/zmN7/h6quvZvPm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",
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Grab a year and check how much data is missing\n",
"ax = plt.axes(projection=ccrs.PlateCarree())\n",
"ds.sel(year=2010).mort.plot(ax=ax, cbar_kwargs={\"label\": \"% of pixel with tree mortality\"})\n",
"ax.coastlines()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
"<defs>\n",
"<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n",
"<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"</symbol>\n",
"<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n",
"<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"</symbol>\n",
"</defs>\n",
"</svg>\n",
"<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n",
" *\n",
" */\n",
"\n",
":root {\n",
" --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n",
" --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n",
" --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n",
" --xr-border-color: var(--jp-border-color2, #e0e0e0);\n",
" --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
" --xr-background-color: var(--jp-layout-color0, white);\n",
" --xr-background-color-row-even: var(--jp-layout-color1, white);\n",
" --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n",
"}\n",
"\n",
"html[theme=dark],\n",
"html[data-theme=dark],\n",
"body[data-theme=dark],\n",
"body.vscode-dark {\n",
" --xr-font-color0: rgba(255, 255, 255, 1);\n",
" --xr-font-color2: rgba(255, 255, 255, 0.54);\n",
" --xr-font-color3: rgba(255, 255, 255, 0.38);\n",
" --xr-border-color: #1F1F1F;\n",
" --xr-disabled-color: #515151;\n",
" --xr-background-color: #111111;\n",
" --xr-background-color-row-even: #111111;\n",
" --xr-background-color-row-odd: #313131;\n",
"}\n",
"\n",
".xr-wrap {\n",
" display: block !important;\n",
" min-width: 300px;\n",
" max-width: 700px;\n",
"}\n",
"\n",
".xr-text-repr-fallback {\n",
" /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
" display: none;\n",
"}\n",
"\n",
".xr-header {\n",
" padding-top: 6px;\n",
" padding-bottom: 6px;\n",
" margin-bottom: 4px;\n",
" border-bottom: solid 1px var(--xr-border-color);\n",
"}\n",
"\n",
".xr-header > div,\n",
".xr-header > ul {\n",
" display: inline;\n",
" margin-top: 0;\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-obj-type,\n",
".xr-array-name {\n",
" margin-left: 2px;\n",
" margin-right: 10px;\n",
"}\n",
"\n",
".xr-obj-type {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-sections {\n",
" padding-left: 0 !important;\n",
" display: grid;\n",
" grid-template-columns: 150px auto auto 1fr 0 20px 0 20px;\n",
"}\n",
"\n",
".xr-section-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-section-item input {\n",
" display: inline-block;\n",
" opacity: 0;\n",
"}\n",
"\n",
".xr-section-item input + label {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label {\n",
" cursor: pointer;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-item input:focus + label {\n",
" border: 2px solid var(--xr-font-color0);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label:hover {\n",
" color: var(--xr-font-color0);\n",
"}\n",
"\n",
".xr-section-summary {\n",
" grid-column: 1;\n",
" color: var(--xr-font-color2);\n",
" font-weight: 500;\n",
"}\n",
"\n",
".xr-section-summary > span {\n",
" display: inline-block;\n",
" padding-left: 0.5em;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-summary-in + label:before {\n",
" display: inline-block;\n",
" content: '►';\n",
" font-size: 11px;\n",
" width: 15px;\n",
" text-align: center;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label:before {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label:before {\n",
" content: '▼';\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label > span {\n",
" display: none;\n",
"}\n",
"\n",
".xr-section-summary,\n",
".xr-section-inline-details {\n",
" padding-top: 4px;\n",
" padding-bottom: 4px;\n",
"}\n",
"\n",
".xr-section-inline-details {\n",
" grid-column: 2 / -1;\n",
"}\n",
"\n",
".xr-section-details {\n",
" display: none;\n",
" grid-column: 1 / -1;\n",
" margin-bottom: 5px;\n",
"}\n",
"\n",
".xr-section-summary-in:checked ~ .xr-section-details {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-array-wrap {\n",
" grid-column: 1 / -1;\n",
" display: grid;\n",
" grid-template-columns: 20px auto;\n",
"}\n",
"\n",
".xr-array-wrap > label {\n",
" grid-column: 1;\n",
" vertical-align: top;\n",
"}\n",
"\n",
".xr-preview {\n",
" color: var(--xr-font-color3);\n",
"}\n",
"\n",
".xr-array-preview,\n",
".xr-array-data {\n",
" padding: 0 5px !important;\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-array-data,\n",
".xr-array-in:checked ~ .xr-array-preview {\n",
" display: none;\n",
"}\n",
"\n",
".xr-array-in:checked ~ .xr-array-data,\n",
".xr-array-preview {\n",
" display: inline-block;\n",
"}\n",
"\n",
".xr-dim-list {\n",
" display: inline-block !important;\n",
" list-style: none;\n",
" padding: 0 !important;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list li {\n",
" display: inline-block;\n",
" padding: 0;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list:before {\n",
" content: '(';\n",
"}\n",
"\n",
".xr-dim-list:after {\n",
" content: ')';\n",
"}\n",
"\n",
".xr-dim-list li:not(:last-child):after {\n",
" content: ',';\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-has-index {\n",
" font-weight: bold;\n",
"}\n",
"\n",
".xr-var-list,\n",
".xr-var-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-var-item > div,\n",
".xr-var-item label,\n",
".xr-var-item > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-even);\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-var-item > .xr-var-name:hover span {\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-var-list > li:nth-child(odd) > div,\n",
".xr-var-list > li:nth-child(odd) > label,\n",
".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-odd);\n",
"}\n",
"\n",
".xr-var-name {\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-var-dims {\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-var-dtype {\n",
" grid-column: 3;\n",
" text-align: right;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-var-preview {\n",
" grid-column: 4;\n",
"}\n",
"\n",
".xr-index-preview {\n",
" grid-column: 2 / 5;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-var-name,\n",
".xr-var-dims,\n",
".xr-var-dtype,\n",
".xr-preview,\n",
".xr-attrs dt {\n",
" white-space: nowrap;\n",
" overflow: hidden;\n",
" text-overflow: ellipsis;\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-var-name:hover,\n",
".xr-var-dims:hover,\n",
".xr-var-dtype:hover,\n",
".xr-attrs dt:hover {\n",
" overflow: visible;\n",
" width: auto;\n",
" z-index: 1;\n",
"}\n",
"\n",
".xr-var-attrs,\n",
".xr-var-data,\n",
".xr-index-data {\n",
" display: none;\n",
" background-color: var(--xr-background-color) !important;\n",
" padding-bottom: 5px !important;\n",
"}\n",
"\n",
".xr-var-attrs-in:checked ~ .xr-var-attrs,\n",
".xr-var-data-in:checked ~ .xr-var-data,\n",
".xr-index-data-in:checked ~ .xr-index-data {\n",
" display: block;\n",
"}\n",
"\n",
".xr-var-data > table {\n",
" float: right;\n",
"}\n",
"\n",
".xr-var-name span,\n",
".xr-var-data,\n",
".xr-index-name div,\n",
".xr-index-data,\n",
".xr-attrs {\n",
" padding-left: 25px !important;\n",
"}\n",
"\n",
".xr-attrs,\n",
".xr-var-attrs,\n",
".xr-var-data,\n",
".xr-index-data {\n",
" grid-column: 1 / -1;\n",
"}\n",
"\n",
"dl.xr-attrs {\n",
" padding: 0;\n",
" margin: 0;\n",
" display: grid;\n",
" grid-template-columns: 125px auto;\n",
"}\n",
"\n",
".xr-attrs dt,\n",
".xr-attrs dd {\n",
" padding: 0;\n",
" margin: 0;\n",
" float: left;\n",
" padding-right: 10px;\n",
" width: auto;\n",
"}\n",
"\n",
".xr-attrs dt {\n",
" font-weight: normal;\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-attrs dt:hover span {\n",
" display: inline-block;\n",
" background: var(--xr-background-color);\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-attrs dd {\n",
" grid-column: 2;\n",
" white-space: pre-wrap;\n",
" word-break: break-all;\n",
"}\n",
"\n",
".xr-icon-database,\n",
".xr-icon-file-text2,\n",
".xr-no-icon {\n",
" display: inline-block;\n",
" vertical-align: middle;\n",
" width: 1em;\n",
" height: 1.5em !important;\n",
" stroke-width: 0;\n",
" stroke: currentColor;\n",
" fill: currentColor;\n",
"}\n",
"</style><pre class='xr-text-repr-fallback'>&lt;xarray.DataArray &#x27;mort&#x27; ()&gt; Size: 8B\n",
"array(0.78637408)\n",
"Coordinates:\n",
" year int64 8B 2010</pre><div class='xr-wrap' style='display:none'><div class='xr-header'><div class='xr-obj-type'>xarray.DataArray</div><div class='xr-array-name'>'mort'</div></div><ul class='xr-sections'><li class='xr-section-item'><div class='xr-array-wrap'><input id='section-14e70aaa-c1ff-42d8-92af-8a82e25fedec' class='xr-array-in' type='checkbox' checked><label for='section-14e70aaa-c1ff-42d8-92af-8a82e25fedec' title='Show/hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-array-preview xr-preview'><span>0.7864</span></div><div class='xr-array-data'><pre>array(0.78637408)</pre></div></div></li><li class='xr-section-item'><input id='section-11b04b57-c058-47e9-9184-20f16d5dc9fe' class='xr-section-summary-in' type='checkbox' checked><label for='section-11b04b57-c058-47e9-9184-20f16d5dc9fe' class='xr-section-summary' >Coordinates: <span>(1)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span>year</span></div><div class='xr-var-dims'>()</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>2010</div><input id='attrs-b92543f3-fc7e-4986-94fa-792a343c334d' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-b92543f3-fc7e-4986-94fa-792a343c334d' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-074d7e7d-1882-48c5-99ad-e4ed5be01444' class='xr-var-data-in' type='checkbox'><label for='data-074d7e7d-1882-48c5-99ad-e4ed5be01444' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array(2010)</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-12843cfa-27bc-453e-a8f9-0cf606cab38e' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-12843cfa-27bc-453e-a8f9-0cf606cab38e' class='xr-section-summary' title='Expand/collapse section'>Indexes: <span>(0)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'></ul></div></li><li class='xr-section-item'><input id='section-eb191e5e-7d02-4910-b899-b64729c2e975' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-eb191e5e-7d02-4910-b899-b64729c2e975' class='xr-section-summary' title='Expand/collapse section'>Attributes: <span>(0)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'></dl></div></li></ul></div></div>"
],
"text/plain": [
"<xarray.DataArray 'mort' ()> Size: 8B\n",
"array(0.78637408)\n",
"Coordinates:\n",
" year int64 8B 2010"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# This is about typical coverage from year to year\n",
"ds.sel(year=2010)[\"mort\"].isnull().mean()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Windowing the entire dataset\n",
"\n",
"Lets find all the 3x3 windows that have no missing mortality values."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Size of original array (MB): 13.28\n",
"Size of windowed array (MB): 119.53\n"
]
}
],
"source": [
"window_size = 3\n",
"mort = ds.mort\n",
"mort_roll = ds.mort.rolling(latitude=window_size, longitude=window_size)\\\n",
" .construct(latitude=\"window_y\", longitude=\"window_x\")\\\n",
" .stack(sample=[\"latitude\", \"longitude\", \"year\"])\\\n",
" .transpose(\"sample\", ...)\n",
"\n",
"print(\"Size of original array (MB): {:.2f}\".format(mort.nbytes / (1024 * 1024)))\n",
"print(\"Size of windowed array (MB): {:.2f}\".format(mort_roll.nbytes / (1024 * 1024)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The increase in memory with windowing increases with the size of the window. Since we have nine cells in a 3x3 window, `13.28 * 9 ~= 119.53`."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Proportion of windows without NAs: 0.13\n",
"Size of no-NA, windowed array (MB): 15.56\n"
]
}
],
"source": [
"nona_window = mort_roll.notnull().all(dim=[\"window_x\", \"window_y\"])\n",
"print(\"Proportion of windows without NAs: {:.2f}\".format(nona_window.mean()))\n",
"nona_idx = np.where(nona_window)[0]\n",
"mort_nona = mort_roll.isel(sample=nona_idx)\n",
"print(\"Size of no-NA, windowed array (MB): {:.2f}\".format(mort_nona.nbytes / (1024 * 1024)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"But once we drop all the missing data, we end up with a pretty similar memory footprint to the original dataset. If we can't do the windowing all at once, we could do it in chunks.\n",
"\n",
"### Windowing in chunks"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
"<defs>\n",
"<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n",
"<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"</symbol>\n",
"<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n",
"<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"</symbol>\n",
"</defs>\n",
"</svg>\n",
"<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n",
" *\n",
" */\n",
"\n",
":root {\n",
" --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n",
" --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n",
" --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n",
" --xr-border-color: var(--jp-border-color2, #e0e0e0);\n",
" --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
" --xr-background-color: var(--jp-layout-color0, white);\n",
" --xr-background-color-row-even: var(--jp-layout-color1, white);\n",
" --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n",
"}\n",
"\n",
"html[theme=dark],\n",
"html[data-theme=dark],\n",
"body[data-theme=dark],\n",
"body.vscode-dark {\n",
" --xr-font-color0: rgba(255, 255, 255, 1);\n",
" --xr-font-color2: rgba(255, 255, 255, 0.54);\n",
" --xr-font-color3: rgba(255, 255, 255, 0.38);\n",
" --xr-border-color: #1F1F1F;\n",
" --xr-disabled-color: #515151;\n",
" --xr-background-color: #111111;\n",
" --xr-background-color-row-even: #111111;\n",
" --xr-background-color-row-odd: #313131;\n",
"}\n",
"\n",
".xr-wrap {\n",
" display: block !important;\n",
" min-width: 300px;\n",
" max-width: 700px;\n",
"}\n",
"\n",
".xr-text-repr-fallback {\n",
" /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
" display: none;\n",
"}\n",
"\n",
".xr-header {\n",
" padding-top: 6px;\n",
" padding-bottom: 6px;\n",
" margin-bottom: 4px;\n",
" border-bottom: solid 1px var(--xr-border-color);\n",
"}\n",
"\n",
".xr-header > div,\n",
".xr-header > ul {\n",
" display: inline;\n",
" margin-top: 0;\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-obj-type,\n",
".xr-array-name {\n",
" margin-left: 2px;\n",
" margin-right: 10px;\n",
"}\n",
"\n",
".xr-obj-type {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-sections {\n",
" padding-left: 0 !important;\n",
" display: grid;\n",
" grid-template-columns: 150px auto auto 1fr 0 20px 0 20px;\n",
"}\n",
"\n",
".xr-section-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-section-item input {\n",
" display: inline-block;\n",
" opacity: 0;\n",
"}\n",
"\n",
".xr-section-item input + label {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label {\n",
" cursor: pointer;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-item input:focus + label {\n",
" border: 2px solid var(--xr-font-color0);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label:hover {\n",
" color: var(--xr-font-color0);\n",
"}\n",
"\n",
".xr-section-summary {\n",
" grid-column: 1;\n",
" color: var(--xr-font-color2);\n",
" font-weight: 500;\n",
"}\n",
"\n",
".xr-section-summary > span {\n",
" display: inline-block;\n",
" padding-left: 0.5em;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-summary-in + label:before {\n",
" display: inline-block;\n",
" content: '►';\n",
" font-size: 11px;\n",
" width: 15px;\n",
" text-align: center;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label:before {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label:before {\n",
" content: '▼';\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label > span {\n",
" display: none;\n",
"}\n",
"\n",
".xr-section-summary,\n",
".xr-section-inline-details {\n",
" padding-top: 4px;\n",
" padding-bottom: 4px;\n",
"}\n",
"\n",
".xr-section-inline-details {\n",
" grid-column: 2 / -1;\n",
"}\n",
"\n",
".xr-section-details {\n",
" display: none;\n",
" grid-column: 1 / -1;\n",
" margin-bottom: 5px;\n",
"}\n",
"\n",
".xr-section-summary-in:checked ~ .xr-section-details {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-array-wrap {\n",
" grid-column: 1 / -1;\n",
" display: grid;\n",
" grid-template-columns: 20px auto;\n",
"}\n",
"\n",
".xr-array-wrap > label {\n",
" grid-column: 1;\n",
" vertical-align: top;\n",
"}\n",
"\n",
".xr-preview {\n",
" color: var(--xr-font-color3);\n",
"}\n",
"\n",
".xr-array-preview,\n",
".xr-array-data {\n",
" padding: 0 5px !important;\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-array-data,\n",
".xr-array-in:checked ~ .xr-array-preview {\n",
" display: none;\n",
"}\n",
"\n",
".xr-array-in:checked ~ .xr-array-data,\n",
".xr-array-preview {\n",
" display: inline-block;\n",
"}\n",
"\n",
".xr-dim-list {\n",
" display: inline-block !important;\n",
" list-style: none;\n",
" padding: 0 !important;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list li {\n",
" display: inline-block;\n",
" padding: 0;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list:before {\n",
" content: '(';\n",
"}\n",
"\n",
".xr-dim-list:after {\n",
" content: ')';\n",
"}\n",
"\n",
".xr-dim-list li:not(:last-child):after {\n",
" content: ',';\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-has-index {\n",
" font-weight: bold;\n",
"}\n",
"\n",
".xr-var-list,\n",
".xr-var-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-var-item > div,\n",
".xr-var-item label,\n",
".xr-var-item > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-even);\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-var-item > .xr-var-name:hover span {\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-var-list > li:nth-child(odd) > div,\n",
".xr-var-list > li:nth-child(odd) > label,\n",
".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-odd);\n",
"}\n",
"\n",
".xr-var-name {\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-var-dims {\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-var-dtype {\n",
" grid-column: 3;\n",
" text-align: right;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-var-preview {\n",
" grid-column: 4;\n",
"}\n",
"\n",
".xr-index-preview {\n",
" grid-column: 2 / 5;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-var-name,\n",
".xr-var-dims,\n",
".xr-var-dtype,\n",
".xr-preview,\n",
".xr-attrs dt {\n",
" white-space: nowrap;\n",
" overflow: hidden;\n",
" text-overflow: ellipsis;\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-var-name:hover,\n",
".xr-var-dims:hover,\n",
".xr-var-dtype:hover,\n",
".xr-attrs dt:hover {\n",
" overflow: visible;\n",
" width: auto;\n",
" z-index: 1;\n",
"}\n",
"\n",
".xr-var-attrs,\n",
".xr-var-data,\n",
".xr-index-data {\n",
" display: none;\n",
" background-color: var(--xr-background-color) !important;\n",
" padding-bottom: 5px !important;\n",
"}\n",
"\n",
".xr-var-attrs-in:checked ~ .xr-var-attrs,\n",
".xr-var-data-in:checked ~ .xr-var-data,\n",
".xr-index-data-in:checked ~ .xr-index-data {\n",
" display: block;\n",
"}\n",
"\n",
".xr-var-data > table {\n",
" float: right;\n",
"}\n",
"\n",
".xr-var-name span,\n",
".xr-var-data,\n",
".xr-index-name div,\n",
".xr-index-data,\n",
".xr-attrs {\n",
" padding-left: 25px !important;\n",
"}\n",
"\n",
".xr-attrs,\n",
".xr-var-attrs,\n",
".xr-var-data,\n",
".xr-index-data {\n",
" grid-column: 1 / -1;\n",
"}\n",
"\n",
"dl.xr-attrs {\n",
" padding: 0;\n",
" margin: 0;\n",
" display: grid;\n",
" grid-template-columns: 125px auto;\n",
"}\n",
"\n",
".xr-attrs dt,\n",
".xr-attrs dd {\n",
" padding: 0;\n",
" margin: 0;\n",
" float: left;\n",
" padding-right: 10px;\n",
" width: auto;\n",
"}\n",
"\n",
".xr-attrs dt {\n",
" font-weight: normal;\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-attrs dt:hover span {\n",
" display: inline-block;\n",
" background: var(--xr-background-color);\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-attrs dd {\n",
" grid-column: 2;\n",
" white-space: pre-wrap;\n",
" word-break: break-all;\n",
"}\n",
"\n",
".xr-icon-database,\n",
".xr-icon-file-text2,\n",
".xr-no-icon {\n",
" display: inline-block;\n",
" vertical-align: middle;\n",
" width: 1em;\n",
" height: 1.5em !important;\n",
" stroke-width: 0;\n",
" stroke: currentColor;\n",
" fill: currentColor;\n",
"}\n",
"</style><pre class='xr-text-repr-fallback'>&lt;xarray.DataArray &#x27;mort&#x27; (latitude: 340, longitude: 256, year: 20)&gt; Size: 14MB\n",
"dask.array&lt;xarray-&lt;this-array&gt;, shape=(340, 256, 20), dtype=float64, chunksize=(64, 64, 20), chunktype=numpy.ndarray&gt;\n",
"Coordinates:\n",
" * latitude (latitude) float64 3kB 32.57 32.6 32.63 ... 41.95 41.98 42.01\n",
" * longitude (longitude) float64 2kB -124.2 -124.2 -124.2 ... -115.1 -115.1\n",
" * year (year) int64 160B 1999 2000 2001 2002 ... 2015 2016 2017 2018</pre><div class='xr-wrap' style='display:none'><div class='xr-header'><div class='xr-obj-type'>xarray.DataArray</div><div class='xr-array-name'>'mort'</div><ul class='xr-dim-list'><li><span class='xr-has-index'>latitude</span>: 340</li><li><span class='xr-has-index'>longitude</span>: 256</li><li><span class='xr-has-index'>year</span>: 20</li></ul></div><ul class='xr-sections'><li class='xr-section-item'><div class='xr-array-wrap'><input id='section-da56a077-a03f-4f72-8729-0ec419017b53' class='xr-array-in' type='checkbox' checked><label for='section-da56a077-a03f-4f72-8729-0ec419017b53' title='Show/hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-array-preview xr-preview'><span>dask.array&lt;chunksize=(64, 64, 20), meta=np.ndarray&gt;</span></div><div class='xr-array-data'><table>\n",
" <tr>\n",
" <td>\n",
" <table style=\"border-collapse: collapse;\">\n",
" <thead>\n",
" <tr>\n",
" <td> </td>\n",
" <th> Array </th>\n",
" <th> Chunk </th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" \n",
" <tr>\n",
" <th> Bytes </th>\n",
" <td> 13.28 MiB </td>\n",
" <td> 640.00 kiB </td>\n",
" </tr>\n",
" \n",
" <tr>\n",
" <th> Shape </th>\n",
" <td> (340, 256, 20) </td>\n",
" <td> (64, 64, 20) </td>\n",
" </tr>\n",
" <tr>\n",
" <th> Dask graph </th>\n",
" <td colspan=\"2\"> 24 chunks in 1 graph layer </td>\n",
" </tr>\n",
" <tr>\n",
" <th> Data type </th>\n",
" <td colspan=\"2\"> float64 numpy.ndarray </td>\n",
" </tr>\n",
" </tbody>\n",
" </table>\n",
" </td>\n",
" <td>\n",
" <svg width=\"166\" height=\"210\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n",
"\n",
" <!-- Horizontal lines -->\n",
" <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n",
" <line x1=\"10\" y1=\"22\" x2=\"80\" y2=\"93\" />\n",
" <line x1=\"10\" y1=\"45\" x2=\"80\" y2=\"115\" />\n",
" <line x1=\"10\" y1=\"67\" x2=\"80\" y2=\"138\" />\n",
" <line x1=\"10\" y1=\"90\" x2=\"80\" y2=\"160\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Vertical lines -->\n",
" <line x1=\"10\" y1=\"0\" x2=\"10\" y2=\"90\" style=\"stroke-width:2\" />\n",
" <line x1=\"23\" y1=\"13\" x2=\"23\" y2=\"103\" />\n",
" <line x1=\"36\" y1=\"26\" x2=\"36\" y2=\"116\" />\n",
" <line x1=\"49\" y1=\"39\" x2=\"49\" y2=\"130\" />\n",
" <line x1=\"63\" y1=\"53\" x2=\"63\" y2=\"143\" />\n",
" <line x1=\"76\" y1=\"66\" x2=\"76\" y2=\"156\" />\n",
" <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"160\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Colored Rectangle -->\n",
" <polygon points=\"10.0,0.0 80.58823529411765,70.58823529411765 80.58823529411765,160.94117647058823 10.0,90.3529411764706\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
"\n",
" <!-- Horizontal lines -->\n",
" <line x1=\"10\" y1=\"0\" x2=\"45\" y2=\"0\" style=\"stroke-width:2\" />\n",
" <line x1=\"23\" y1=\"13\" x2=\"58\" y2=\"13\" />\n",
" <line x1=\"36\" y1=\"26\" x2=\"72\" y2=\"26\" />\n",
" <line x1=\"49\" y1=\"39\" x2=\"85\" y2=\"39\" />\n",
" <line x1=\"63\" y1=\"53\" x2=\"98\" y2=\"53\" />\n",
" <line x1=\"76\" y1=\"66\" x2=\"111\" y2=\"66\" />\n",
" <line x1=\"80\" y1=\"70\" x2=\"116\" y2=\"70\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Vertical lines -->\n",
" <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n",
" <line x1=\"45\" y1=\"0\" x2=\"116\" y2=\"70\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Colored Rectangle -->\n",
" <polygon points=\"10.0,0.0 45.49251375950792,0.0 116.08074905362557,70.58823529411765 80.58823529411765,70.58823529411765\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
"\n",
" <!-- Horizontal lines -->\n",
" <line x1=\"80\" y1=\"70\" x2=\"116\" y2=\"70\" style=\"stroke-width:2\" />\n",
" <line x1=\"80\" y1=\"93\" x2=\"116\" y2=\"93\" />\n",
" <line x1=\"80\" y1=\"115\" x2=\"116\" y2=\"115\" />\n",
" <line x1=\"80\" y1=\"138\" x2=\"116\" y2=\"138\" />\n",
" <line x1=\"80\" y1=\"160\" x2=\"116\" y2=\"160\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Vertical lines -->\n",
" <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"160\" style=\"stroke-width:2\" />\n",
" <line x1=\"116\" y1=\"70\" x2=\"116\" y2=\"160\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Colored Rectangle -->\n",
" <polygon points=\"80.58823529411765,70.58823529411765 116.08074905362557,70.58823529411765 116.08074905362557,160.94117647058823 80.58823529411765,160.94117647058823\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
"\n",
" <!-- Text -->\n",
" <text x=\"98.334492\" y=\"180.941176\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >20</text>\n",
" <text x=\"136.080749\" y=\"115.764706\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,136.080749,115.764706)\">256</text>\n",
" <text x=\"35.294118\" y=\"145.647059\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(45,35.294118,145.647059)\">340</text>\n",
"</svg>\n",
" </td>\n",
" </tr>\n",
"</table></div></div></li><li class='xr-section-item'><input id='section-f4ec358f-9f4f-4127-80fc-fd360032d0cf' class='xr-section-summary-in' type='checkbox' checked><label for='section-f4ec358f-9f4f-4127-80fc-fd360032d0cf' class='xr-section-summary' >Coordinates: <span>(3)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>latitude</span></div><div class='xr-var-dims'>(latitude)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>32.57 32.6 32.63 ... 41.98 42.01</div><input id='attrs-70b4015e-560d-44a1-8258-2c52e09cf95c' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-70b4015e-560d-44a1-8258-2c52e09cf95c' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-fc4ec9ef-c368-4251-ad63-6e1956901656' class='xr-var-data-in' type='checkbox'><label for='data-fc4ec9ef-c368-4251-ad63-6e1956901656' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([32.567223, 32.597501, 32.627768, ..., 41.95339 , 41.980107, 42.006813])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>longitude</span></div><div class='xr-var-dims'>(longitude)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>-124.2 -124.2 ... -115.1 -115.1</div><input id='attrs-df6b385d-fd48-48ae-9941-b17312ee2c50' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-df6b385d-fd48-48ae-9941-b17312ee2c50' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-b8538451-ab0b-47ae-aaf2-51f141313c14' class='xr-var-data-in' type='checkbox'><label for='data-b8538451-ab0b-47ae-aaf2-51f141313c14' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([-124.237004, -124.201071, -124.165139, ..., -115.146053, -115.110121,\n",
" -115.074188])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>year</span></div><div class='xr-var-dims'>(year)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>1999 2000 2001 ... 2016 2017 2018</div><input id='attrs-249fd733-b5de-4ca4-9e2a-e97fab076c61' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-249fd733-b5de-4ca4-9e2a-e97fab076c61' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-36f76ccd-dc6d-4c7e-a0e5-46c93fecfa78' class='xr-var-data-in' type='checkbox'><label for='data-36f76ccd-dc6d-4c7e-a0e5-46c93fecfa78' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,\n",
" 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-55ef98c3-3007-4f20-b7cb-8e8aaf5bef4e' class='xr-section-summary-in' type='checkbox' ><label for='section-55ef98c3-3007-4f20-b7cb-8e8aaf5bef4e' class='xr-section-summary' >Indexes: <span>(3)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-index-name'><div>latitude</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-4c47ab14-f7fb-4349-b21c-8e236ac403d8' class='xr-index-data-in' type='checkbox'/><label for='index-4c47ab14-f7fb-4349-b21c-8e236ac403d8' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index([ 32.56722344887921, 32.59750092095032, 32.627768165114155,\n",
" 32.65802517638218, 32.68827194977895, 32.71850848034216,\n",
" 32.748734763122535, 32.77895079318397, 32.80915656560335,\n",
" 32.839352075470714,\n",
" ...\n",
" 41.76605646289848, 41.79285194828348, 41.81963623677096,\n",
" 41.84640932718892, 41.87317121837568, 41.89992190917975,\n",
" 41.92666139845996, 41.95338968508534, 41.98010676793516,\n",
" 42.00681264589888],\n",
" dtype=&#x27;float64&#x27;, name=&#x27;latitude&#x27;, length=340))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>longitude</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-00cf04fc-13e0-426d-a356-4d6c13a65b2c' class='xr-index-data-in' type='checkbox'/><label for='index-00cf04fc-13e0-426d-a356-4d6c13a65b2c' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index([-124.23700379372984, -124.20107118236504, -124.16513857100024,\n",
" -124.12920595963548, -124.0932733482707, -124.0573407369059,\n",
" -124.02140812554114, -123.98547551417634, -123.94954290281156,\n",
" -123.9136102914468,\n",
" ...\n",
" -115.39758139799372, -115.36164878662896, -115.32571617526416,\n",
" -115.28978356389938, -115.25385095253462, -115.21791834116982,\n",
" -115.18198572980504, -115.14605311844028, -115.11012050707548,\n",
" -115.0741878957107],\n",
" dtype=&#x27;float64&#x27;, name=&#x27;longitude&#x27;, length=256))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>year</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-8603fbd9-cdb1-405e-bb00-ad99795009b2' class='xr-index-data-in' type='checkbox'/><label for='index-8603fbd9-cdb1-405e-bb00-ad99795009b2' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index([1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,\n",
" 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018],\n",
" dtype=&#x27;int64&#x27;, name=&#x27;year&#x27;))</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-2555dae1-4579-4089-9b7e-88c719193cc1' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-2555dae1-4579-4089-9b7e-88c719193cc1' class='xr-section-summary' title='Expand/collapse section'>Attributes: <span>(0)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'></dl></div></li></ul></div></div>"
],
"text/plain": [
"<xarray.DataArray 'mort' (latitude: 340, longitude: 256, year: 20)> Size: 14MB\n",
"dask.array<xarray-<this-array>, shape=(340, 256, 20), dtype=float64, chunksize=(64, 64, 20), chunktype=numpy.ndarray>\n",
"Coordinates:\n",
" * latitude (latitude) float64 3kB 32.57 32.6 32.63 ... 41.95 41.98 42.01\n",
" * longitude (longitude) float64 2kB -124.2 -124.2 -124.2 ... -115.1 -115.1\n",
" * year (year) int64 160B 1999 2000 2001 2002 ... 2015 2016 2017 2018"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Convert the array to dask-backed chunks. This roughly approximates what I'm doing\n",
"# on the larger dataset. Since we know that windowing increases memory by 9x, we can expect\n",
"# this to use 0.625 MB * 9 = 5.63 MB at the windowing step.\n",
"chunk_size = 64\n",
"mort_chunk = mort.chunk(latitude=chunk_size, longitude=chunk_size)\n",
"mort_chunk"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"# Generator to yield chunks of the data. At first I tried to use map_blocks\n",
"# but couldn't figure out what return type it was expecting so I just\n",
"# did this instead.\n",
"def enumerate_xy_chunks(array):\n",
" steps_x = array.chunks[1]\n",
" steps_y = array.chunks[0]\n",
"\n",
" upto_x = 0\n",
" for sx in steps_x:\n",
" upto_y = 0\n",
" for sy in steps_y:\n",
" chunk = array.isel(\n",
" longitude=slice(upto_x, upto_x + sx),\n",
" latitude=slice(upto_y, upto_y + sy)\n",
" )\n",
" upto_y += sy\n",
" yield chunk\n",
" \n",
" upto_x += sx"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"# Concat on an in-memory numpy array for this demo. This could just as well\n",
"# be a zarr array on cloud storage or otherwise.\n",
"output_arr = np.empty((0, window_size, window_size))\n",
"\n",
"for chunk in enumerate_xy_chunks(mort_chunk):\n",
" chunk_roll = chunk.rolling(latitude=window_size, longitude=window_size)\\\n",
" .construct(latitude=\"window_y\", longitude=\"window_x\")\\\n",
" .stack(sample=[\"latitude\", \"longitude\", \"year\"])\\\n",
" .transpose(\"sample\", ...)\n",
"\n",
" nona_idx = np.where(chunk_roll.notnull().all(dim=[\"window_x\", \"window_y\"]))[0]\n",
" chunk_nona = chunk_roll.isel(sample=nona_idx)\n",
"\n",
" output_arr = np.concat((output_arr, chunk_nona.values))"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(214933, 3, 3)\n"
]
}
],
"source": [
"print(output_arr.shape)\n",
"assert(np.all(~np.isnan(output_arr)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we can do shuffling on `output_arr` and pass it to a model."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "forest_mort",
"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.12.7"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment