|
5 | 5 | "id": "ae8bf7b2", |
6 | 6 | "metadata": {}, |
7 | 7 | "source": [ |
8 | | - "## APPLICATION TEMPLATE ERA5 - DAILY MEAN TEMPERATURE" |
| 8 | + "## APPLICATION TEMPLATE ERA5 - GLOBAL DAILY MEAN TEMPERATURE\n", |
| 9 | + "\n", |
| 10 | + "package c3s-eqc-toolbox-template (https://github.com/bopen/c3s-eqc-toolbox-template)" |
9 | 11 | ] |
10 | 12 | }, |
11 | 13 | { |
|
15 | 17 | "metadata": {}, |
16 | 18 | "outputs": [], |
17 | 19 | "source": [ |
18 | | - "import numpy as np\n", |
19 | 20 | "import plotly.express as px\n", |
20 | 21 | "import pandas as pd\n", |
21 | 22 | "import xarray as xr\n", |
22 | 23 | "\n", |
23 | | - "import cacholote\n", |
24 | 24 | "import cads_toolbox \n", |
25 | 25 | "import c3s_eqc_toolbox_template\n", |
26 | 26 | "\n", |
27 | 27 | "import warnings\n", |
28 | 28 | "warnings.filterwarnings('ignore')" |
29 | 29 | ] |
30 | 30 | }, |
31 | | - { |
32 | | - "cell_type": "code", |
33 | | - "execution_count": null, |
34 | | - "id": "367e0267", |
35 | | - "metadata": {}, |
36 | | - "outputs": [], |
37 | | - "source": [ |
38 | | - "cacholote.config.SETTINGS" |
39 | | - ] |
40 | | - }, |
41 | 31 | { |
42 | 32 | "cell_type": "markdown", |
43 | | - "id": "fa7aecc6", |
| 33 | + "id": "e5413ab8", |
44 | 34 | "metadata": {}, |
45 | 35 | "source": [ |
46 | 36 | "### PROCESSING with Xarray: GLOBAL DAILY MEAN TEMPERATURE 2021-2022 " |
47 | 37 | ] |
48 | 38 | }, |
49 | 39 | { |
50 | 40 | "cell_type": "markdown", |
51 | | - "id": "13fbe2c7", |
| 41 | + "id": "e4c6c63a", |
52 | 42 | "metadata": {}, |
53 | 43 | "source": [ |
54 | 44 | "APPLICATION SUMMARY:\n", |
55 | 45 | "\n", |
56 | | - " - DATA REQUESTS DEFINITION\n", |
57 | | - " - CHUNKED DOWNLOAD and PROCESSING\n", |
58 | | - " - RESULT PLOT" |
| 46 | + " - Data requests definition\n", |
| 47 | + " \n", |
| 48 | + " \n", |
| 49 | + " - Processing: \n", |
| 50 | + " - chunked download\n", |
| 51 | + " - apply tranformation to each chunk\n", |
| 52 | + " - chache the result on each chunk\n", |
| 53 | + " - merge all the chunks\n", |
| 54 | + "\n", |
| 55 | + "\n", |
| 56 | + " - Plot the result" |
59 | 57 | ] |
60 | 58 | }, |
61 | 59 | { |
|
68 | 66 | }, |
69 | 67 | { |
70 | 68 | "cell_type": "markdown", |
71 | | - "id": "45f70dac", |
| 69 | + "id": "29a64fdc", |
72 | 70 | "metadata": {}, |
73 | 71 | "source": [ |
74 | 72 | "For request definition we use **`c3s_eqc_toolbox_template.update_request_date`**.\n", |
|
83 | 81 | { |
84 | 82 | "cell_type": "code", |
85 | 83 | "execution_count": null, |
86 | | - "id": "28634d95", |
| 84 | + "id": "b85e649b", |
87 | 85 | "metadata": {}, |
88 | 86 | "outputs": [], |
89 | 87 | "source": [ |
|
98 | 96 | " 'variable': '2m_temperature',\n", |
99 | 97 | "}\n", |
100 | 98 | "start = \"2021-06\"\n", |
101 | | - "stop = \"2022-06\"" |
| 99 | + "stop = None # \"2022-06\"" |
102 | 100 | ] |
103 | 101 | }, |
104 | 102 | { |
105 | 103 | "cell_type": "code", |
106 | 104 | "execution_count": null, |
107 | | - "id": "eddef45a", |
| 105 | + "id": "9bac51ad", |
108 | 106 | "metadata": { |
109 | 107 | "scrolled": false |
110 | 108 | }, |
|
116 | 114 | }, |
117 | 115 | { |
118 | 116 | "cell_type": "markdown", |
119 | | - "id": "d0c15202", |
| 117 | + "id": "a168702f", |
120 | 118 | "metadata": {}, |
121 | 119 | "source": [ |
122 | 120 | "#### DOWNLOAD and PROCESSING" |
123 | 121 | ] |
124 | 122 | }, |
125 | 123 | { |
126 | 124 | "cell_type": "markdown", |
127 | | - "id": "cf0ef08d", |
| 125 | + "id": "df75d54b", |
128 | 126 | "metadata": {}, |
129 | 127 | "source": [ |
130 | 128 | "The processing will be perform as follows:\n", |
131 | 129 | "\n", |
| 130 | + "**Definition of the transformation `f`** to be applied to each single chunk\n", |
| 131 | + "\n", |
132 | 132 | "**Chunk definition**: define how to chunk the request along time dimension (year, month, day): \n", |
133 | 133 | "e.g. `chunks={\"year\": 1,\"month\": 1}`\n", |
134 | 134 | "\n", |
|
148 | 148 | "id": "72a0d2f2", |
149 | 149 | "metadata": {}, |
150 | 150 | "source": [ |
151 | | - "#### Define operation to be applied to each single chunk" |
| 151 | + "#### Define `f`" |
152 | 152 | ] |
153 | 153 | }, |
154 | 154 | { |
|
163 | 163 | " return ds.resample(time=\"1D\").mean(\"time\")" |
164 | 164 | ] |
165 | 165 | }, |
| 166 | + { |
| 167 | + "cell_type": "markdown", |
| 168 | + "id": "72330a8c", |
| 169 | + "metadata": {}, |
| 170 | + "source": [ |
| 171 | + "#### Define `chunks`" |
| 172 | + ] |
| 173 | + }, |
| 174 | + { |
| 175 | + "cell_type": "code", |
| 176 | + "execution_count": null, |
| 177 | + "id": "df6b9ee6", |
| 178 | + "metadata": {}, |
| 179 | + "outputs": [], |
| 180 | + "source": [ |
| 181 | + "chunks={\"year\": 1,\"month\": 1}" |
| 182 | + ] |
| 183 | + }, |
166 | 184 | { |
167 | 185 | "cell_type": "markdown", |
168 | 186 | "id": "dcf105d9", |
|
174 | 192 | { |
175 | 193 | "cell_type": "code", |
176 | 194 | "execution_count": null, |
177 | | - "id": "32dc0d53", |
| 195 | + "id": "d5a60b98", |
178 | 196 | "metadata": {}, |
179 | 197 | "outputs": [], |
180 | 198 | "source": [ |
|
191 | 209 | "outputs": [], |
192 | 210 | "source": [ |
193 | 211 | "daily_global_t2m = c3s_eqc_toolbox_template.download_and_transform(\n", |
194 | | - " collection_id, requests, chunks={\"year\": 1,\"month\": 1}, f=spatial_daily_mean, open_with=\"xarray\",\n", |
| 212 | + " collection_id, requests, chunks=chunks, f=spatial_daily_mean, open_with=\"xarray\",\n", |
195 | 213 | ")\n", |
196 | 214 | "\n", |
197 | 215 | "daily_global_t2m" |
|
239 | 257 | }, |
240 | 258 | { |
241 | 259 | "cell_type": "markdown", |
242 | | - "id": "652e11de", |
| 260 | + "id": "1c22a70e", |
243 | 261 | "metadata": {}, |
244 | 262 | "source": [ |
245 | | - "### PROCESSING with pandas: DAILY MEAN TEMPERATURE ON ROME 2021-2022 " |
| 263 | + "<hr style=\"border:2px solid gray\">\n", |
| 264 | + "\n", |
| 265 | + "## Example using pandas: DAILY MEAN TEMPERATURE ON ROME 2021-2022" |
246 | 266 | ] |
247 | 267 | }, |
248 | 268 | { |
249 | 269 | "cell_type": "markdown", |
250 | | - "id": "840a7ed0", |
| 270 | + "id": "8e6a83c9", |
251 | 271 | "metadata": {}, |
252 | 272 | "source": [ |
253 | 273 | "#### Define operation to be applied to each single chunk" |
|
256 | 276 | { |
257 | 277 | "cell_type": "code", |
258 | 278 | "execution_count": null, |
259 | | - "id": "d08a3332", |
| 279 | + "id": "f0563c75", |
260 | 280 | "metadata": {}, |
261 | 281 | "outputs": [], |
262 | 282 | "source": [ |
|
269 | 289 | }, |
270 | 290 | { |
271 | 291 | "cell_type": "markdown", |
272 | | - "id": "c0919822", |
| 292 | + "id": "2843642d", |
273 | 293 | "metadata": {}, |
274 | 294 | "source": [ |
275 | | - "#### Perform the processing" |
| 295 | + "#### Downaload and perform the processing" |
276 | 296 | ] |
277 | 297 | }, |
278 | 298 | { |
279 | 299 | "cell_type": "code", |
280 | 300 | "execution_count": null, |
281 | | - "id": "5b8fe772", |
| 301 | + "id": "5b29b730", |
282 | 302 | "metadata": { |
283 | 303 | "scrolled": false |
284 | 304 | }, |
|
292 | 312 | }, |
293 | 313 | { |
294 | 314 | "cell_type": "markdown", |
295 | | - "id": "1999cb3b", |
| 315 | + "id": "f0e983fb", |
296 | 316 | "metadata": {}, |
297 | 317 | "source": [ |
298 | 318 | "#### Plot result " |
|
301 | 321 | { |
302 | 322 | "cell_type": "code", |
303 | 323 | "execution_count": null, |
304 | | - "id": "9e0b6572", |
| 324 | + "id": "ee442826", |
305 | 325 | "metadata": {}, |
306 | 326 | "outputs": [], |
307 | 327 | "source": [ |
308 | | - "daily_global_t2m = daily_global_t2m.squeeze()\n", |
| 328 | + "daily_global_t2m = daily_rome_t2m.squeeze()\n", |
309 | 329 | "fig = px.line(daily_rome_t2m - 273.15, y=\"t2m\")\n", |
310 | 330 | "\n", |
311 | 331 | "fig.update_layout(\n", |
|
320 | 340 | { |
321 | 341 | "cell_type": "code", |
322 | 342 | "execution_count": null, |
323 | | - "id": "cf3f4f32", |
| 343 | + "id": "ffb0075a", |
324 | 344 | "metadata": {}, |
325 | 345 | "outputs": [], |
326 | 346 | "source": [ |
|
0 commit comments