Last active
December 10, 2023 16:37
-
-
Save bennyistanto/fc966e6f35322f927847160ebdf88cf7 to your computer and use it in GitHub Desktop.
Steps to Generate Standardized Streamflow Index (SSI) Using GloFAS-ERA5 Data
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "markdown", | |
| "id": "f1618637-3744-4526-8b3a-3754809a43de", | |
| "metadata": {}, | |
| "source": [ | |
| "# Steps to Generate Standardized Streamflow Index Using GloFAS-ERA5 Data\n", | |
| "\n", | |
| "To generate the **Standardized Streamflow Index** ([SSI](https://doi.org/10.1029/2019WR026315)) - as proxy for hydrological drought, we will use daily gridded **River discharge in the last 24 hours** from GloFAS-ERA5 operational global river discharge reanalysis 1979–present (paper: [https://doi.org/10.5194/essd-12-2043-2020](https://doi.org/10.5194/essd-12-2043-2020)) as a proxy for the streamflow time series infomation. \n", | |
| "\n", | |
| "The data it self are available for download from the [https://cds.climate.copernicus.eu/cdsapp#!/dataset/cems-glofas-historical?tab=overview](https://cds.climate.copernicus.eu/cdsapp#!/dataset/cems-glofas-historical?tab=overview)\n", | |
| "\n", | |
| "Let's assume we are working in the `python` or `conda` environment, with packages installed: `nco`, `cdo`, `gdal`, `numpy`, `xarray`, `climate-indices` and probably other necessary packages." | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "94eb36af-821c-45f0-a454-e60d2c50a1df", | |
| "metadata": {}, | |
| "source": [ | |
| "## 0. Working Directory\n", | |
| "\n", | |
| "For this exercise, I am working on these folder `/Temp/drought/hyd/` (applied to Mac/Linux machine) or `Z:/Temp/drought/hyd/` (applied to Windows machine) directory. I have some folder inside this directory:\n", | |
| "\n", | |
| "1. `00_downloads` # Place to put downloaded gridded river discharge data.\n", | |
| "2. `01_nc4` # As the downloaded files in `*.grib` format, we'll need to convert it into `*.nc4` format and put in this folder.\n", | |
| "3. `02_shifted` # Place to put nc files from shifting the time into 1 day.\n", | |
| "4. `03_regrid` # Place to put nc files from fill the null value near the coastline by interpolating from nearest grid process, matched the grid with the subset, and remove the value over the sea.\n", | |
| "5. `04_monthly` # Place to put nc file on unit conversion from `m3 s-1` to `mm` process, and calculate monthly accumulation.\n", | |
| "6. `05_single_nc` # Contain single nc file from merge process.\n", | |
| "7. `06_metadata_revision` # Revises nc file from metadata editing before the SSI calculation.\n", | |
| "8. `07_ssi_intermediate` # Output from SSI calculation goes here.\n", | |
| "9. `08_ssi` # Final SSI output that is CF-Compliant.\n", | |
| "10. `images` # In this folder I put some screenshot file as illustration, used in this notebook.\n", | |
| "\n", | |
| "Feel free to use your own preferences for this setting/folder arrangements.\n", | |
| "\n", | |
| "This step-by-step guide was tested using Windows 11 with WSL2 - Ubuntu 22 enabled running on Thinkpad T480 2019, i7-8650U 1.9GHz, 64 GB 2400 MHz DDR4." | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "199fad7d-c891-4f43-8a8d-ff39279c2ed6", | |
| "metadata": {}, | |
| "source": [ | |
| "## 1. Download the data" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "80c6e589-3ade-4ab5-a338-6441f9b143ea", | |
| "metadata": {}, | |
| "source": [ | |
| "Navigate to `00_downloads` folder" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 1, | |
| "id": "f27fb996-d654-45b4-adce-c1d4d8e42d40", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "/Volumes/Datenspeicherung/Temp/drought/hyd/00_downloads\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "%cd ./hyd/00_downloads" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "771e3798-fd58-490f-80b6-008eef7de6d8", | |
| "metadata": {}, | |
| "source": [ | |
| "Then execute below code to download the data. Make sure you are registered to the [CDS](https://cds.climate.copernicus.eu/cdsapp#!/home), and have an UID:ApiKey (you can find this in your profile)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 10, | |
| "id": "755d5c66-4e46-43f3-a612-6c527ff384bf", | |
| "metadata": { | |
| "scrolled": true | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 12:50:34,298 INFO Welcome to the CDS\n", | |
| "2023-11-30 12:50:34,299 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n", | |
| "2023-11-30 12:50:34,566 INFO Request is queued\n", | |
| "2023-11-30 12:50:35,764 INFO Request is running\n", | |
| "2023-11-30 12:51:25,412 INFO Request is completed\n", | |
| "2023-11-30 12:51:25,413 INFO Downloading https://download-0017.copernicus-climate.eu/cache-compute-0017/cache/data3/adaptor.mars.external-1701323434.7039516-17706-2-4c1fee05-6a6d-47e4-9f41-cdee76272e4f.grib to idn_cli_era5_riverdischarge_1981.grib (31.2M)\n", | |
| "2023-11-30 12:51:30,877 INFO Download rate 5.7M/s \n", | |
| "2023-11-30 12:51:31,268 INFO Welcome to the CDS\n", | |
| "2023-11-30 12:51:31,269 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_1981.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 12:51:31,543 INFO Request is queued\n", | |
| "2023-11-30 12:51:32,746 INFO Request is running\n", | |
| "2023-11-30 12:52:48,211 INFO Request is completed\n", | |
| "2023-11-30 12:52:48,212 INFO Downloading https://download-0005-clone.copernicus-climate.eu/cache-compute-0005/cache/data3/adaptor.mars.external-1701323491.7087302-7252-12-9a852f0d-7521-4f51-9296-9f865cbdd685.grib to idn_cli_era5_riverdischarge_1982.grib (31.2M)\n", | |
| "2023-11-30 12:53:43,013 INFO Download rate 583.1K/s \n", | |
| "2023-11-30 12:53:43,407 INFO Welcome to the CDS\n", | |
| "2023-11-30 12:53:43,408 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_1982.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 12:53:43,684 INFO Request is queued\n", | |
| "2023-11-30 12:53:44,880 INFO Request is running\n", | |
| "2023-11-30 12:55:00,380 INFO Request is completed\n", | |
| "2023-11-30 12:55:00,381 INFO Downloading https://download-0011-clone.copernicus-climate.eu/cache-compute-0011/cache/data3/adaptor.mars.external-1701323623.976512-27701-6-517712a3-72fa-4f6d-a589-a2e14bd0bd77.grib to idn_cli_era5_riverdischarge_1983.grib (31.2M)\n", | |
| "2023-11-30 12:56:09,822 INFO Download rate 460.1K/s \n", | |
| "2023-11-30 12:56:10,792 INFO Welcome to the CDS\n", | |
| "2023-11-30 12:56:10,793 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_1983.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 12:56:11,015 INFO Request is queued\n", | |
| "2023-11-30 12:56:12,210 INFO Request is running\n", | |
| "2023-11-30 12:57:27,629 INFO Request is completed\n", | |
| "2023-11-30 12:57:27,630 INFO Downloading https://download-0018.copernicus-climate.eu/cache-compute-0018/cache/data1/adaptor.mars.external-1701323771.2619767-22137-14-4c256afb-e299-4a64-9352-c9afe791b651.grib to idn_cli_era5_riverdischarge_1984.grib (31.3M)\n", | |
| "2023-11-30 12:59:10,912 INFO Download rate 310.2K/s \n", | |
| "2023-11-30 12:59:11,946 INFO Welcome to the CDS\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_1984.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 12:59:11,947 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n", | |
| "2023-11-30 12:59:12,186 INFO Request is queued\n", | |
| "2023-11-30 12:59:13,373 INFO Request is running\n", | |
| "2023-11-30 13:00:28,756 INFO Request is completed\n", | |
| "2023-11-30 13:00:28,757 INFO Downloading https://download-0005-clone.copernicus-climate.eu/cache-compute-0005/cache/data3/adaptor.mars.external-1701323952.398372-15620-12-fb29c100-8930-4cda-b589-cdce4e26400c.grib to idn_cli_era5_riverdischarge_1985.grib (31.2M)\n", | |
| "2023-11-30 13:00:50,997 INFO Download rate 1.4M/s \n", | |
| "2023-11-30 13:00:51,367 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:00:51,368 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_1985.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:00:51,599 INFO Request is queued\n", | |
| "2023-11-30 13:00:52,786 INFO Request is running\n", | |
| "2023-11-30 13:02:08,162 INFO Request is completed\n", | |
| "2023-11-30 13:02:08,163 INFO Downloading https://download-0003-clone.copernicus-climate.eu/cache-compute-0003/cache/data2/adaptor.mars.external-1701324052.6162405-30488-5-76b85a95-b8c5-4725-bc03-44d8680e43c3.grib to idn_cli_era5_riverdischarge_1986.grib (31.2M)\n", | |
| "2023-11-30 13:02:15,972 INFO Download rate 4M/s \n", | |
| "2023-11-30 13:02:16,344 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:02:16,344 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_1986.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:02:16,560 INFO Request is queued\n", | |
| "2023-11-30 13:02:17,747 INFO Request is running\n", | |
| "2023-11-30 13:03:33,131 INFO Request is completed\n", | |
| "2023-11-30 13:03:33,132 INFO Downloading https://download-0004-clone.copernicus-climate.eu/cache-compute-0004/cache/data3/adaptor.mars.external-1701324136.8192842-24961-8-4e15fe36-f573-4ee8-87ea-0c2cfd845960.grib to idn_cli_era5_riverdischarge_1987.grib (31.2M)\n", | |
| "2023-11-30 13:03:38,854 INFO Download rate 5.5M/s \n", | |
| "2023-11-30 13:03:39,225 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:03:39,226 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_1987.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:03:39,437 INFO Request is queued\n", | |
| "2023-11-30 13:03:40,628 INFO Request is running\n", | |
| "2023-11-30 13:04:30,214 INFO Request is completed\n", | |
| "2023-11-30 13:04:30,215 INFO Downloading https://download-0010-clone.copernicus-climate.eu/cache-compute-0010/cache/data5/adaptor.mars.external-1701324219.6358535-4007-4-6e01044e-b6d0-4f4c-95c6-be40581b2099.grib to idn_cli_era5_riverdischarge_1988.grib (31.3M)\n", | |
| "2023-11-30 13:04:37,325 INFO Download rate 4.4M/s \n", | |
| "2023-11-30 13:04:37,697 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:04:37,698 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_1988.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:04:37,911 INFO Request is queued\n", | |
| "2023-11-30 13:04:39,102 INFO Request is running\n", | |
| "2023-11-30 13:05:28,683 INFO Request is completed\n", | |
| "2023-11-30 13:05:28,684 INFO Downloading https://download-0012-clone.copernicus-climate.eu/cache-compute-0012/cache/data4/adaptor.mars.external-1701324278.097328-2567-9-ef2c23ad-3003-4775-bf5a-d3b6deac7dc6.grib to idn_cli_era5_riverdischarge_1989.grib (31.2M)\n", | |
| "2023-11-30 13:05:34,238 INFO Download rate 5.6M/s \n", | |
| "2023-11-30 13:05:34,610 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:05:34,611 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_1989.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:05:34,834 INFO Request is queued\n", | |
| "2023-11-30 13:05:36,025 INFO Request is running\n", | |
| "2023-11-30 13:06:51,418 INFO Request is completed\n", | |
| "2023-11-30 13:06:51,419 INFO Downloading https://download-0010-clone.copernicus-climate.eu/cache-compute-0010/cache/data5/adaptor.mars.external-1701324335.01892-5027-5-b917cbfd-ba42-4474-a580-4e399219bf9d.grib to idn_cli_era5_riverdischarge_1990.grib (31.2M)\n", | |
| "2023-11-30 13:07:23,879 INFO Download rate 984.4K/s \n", | |
| "2023-11-30 13:07:24,251 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:07:24,252 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_1990.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:07:24,467 INFO Request is queued\n", | |
| "2023-11-30 13:07:25,655 INFO Request is running\n", | |
| "2023-11-30 13:08:41,047 INFO Request is completed\n", | |
| "2023-11-30 13:08:41,048 INFO Downloading https://download-0013-clone.copernicus-climate.eu/cache-compute-0013/cache/data1/adaptor.mars.external-1701324444.8612409-4989-9-0c573de2-be6b-4432-bec2-b6a452bdb27e.grib to idn_cli_era5_riverdischarge_1991.grib (31.2M)\n", | |
| "2023-11-30 13:09:28,866 INFO Download rate 668.2K/s \n", | |
| "2023-11-30 13:09:29,238 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:09:29,238 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_1991.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:09:29,441 INFO Request is queued\n", | |
| "2023-11-30 13:09:30,631 INFO Request is running\n", | |
| "2023-11-30 13:10:46,051 INFO Request is completed\n", | |
| "2023-11-30 13:10:46,052 INFO Downloading https://download-0019.copernicus-climate.eu/cache-compute-0019/cache/data7/adaptor.mars.external-1701324569.708631-32679-6-a117ef14-d9c9-4974-b90a-b22f7f57e550.grib to idn_cli_era5_riverdischarge_1992.grib (31.3M)\n", | |
| "2023-11-30 13:11:16,151 INFO Download rate 1M/s \n", | |
| "2023-11-30 13:11:16,527 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:11:16,527 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_1992.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:11:16,739 INFO Request is queued\n", | |
| "2023-11-30 13:11:17,929 INFO Request is running\n", | |
| "2023-11-30 13:12:33,916 INFO Request is completed\n", | |
| "2023-11-30 13:12:33,917 INFO Downloading https://download-0016.copernicus-climate.eu/cache-compute-0016/cache/data4/adaptor.mars.external-1701324677.0068746-31656-11-ae191859-1f70-4f21-bd64-4052b5754074.grib to idn_cli_era5_riverdischarge_1993.grib (31.2M)\n", | |
| "2023-11-30 13:13:15,493 INFO Download rate 768.5K/s \n", | |
| "2023-11-30 13:13:15,891 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:13:15,892 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_1993.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:13:16,127 INFO Request is queued\n", | |
| "2023-11-30 13:13:17,317 INFO Request is running\n", | |
| "2023-11-30 13:14:06,908 INFO Request is completed\n", | |
| "2023-11-30 13:14:06,909 INFO Downloading https://download-0013-clone.copernicus-climate.eu/cache-compute-0013/cache/data2/adaptor.mars.external-1701324796.5511801-6762-13-82cd9245-420d-40b2-8a3d-6edfeca572d1.grib to idn_cli_era5_riverdischarge_1994.grib (31.2M)\n", | |
| "2023-11-30 13:14:12,555 INFO Download rate 5.5M/s \n", | |
| "2023-11-30 13:14:12,932 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:14:12,933 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_1994.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:14:13,160 INFO Request is queued\n", | |
| "2023-11-30 13:14:14,351 INFO Request is running\n", | |
| "2023-11-30 13:15:29,761 INFO Request is completed\n", | |
| "2023-11-30 13:15:29,762 INFO Downloading https://download-0000-clone.copernicus-climate.eu/cache-compute-0000/cache/data8/adaptor.mars.external-1701324853.3992224-32103-12-24dce134-48d7-4589-a3a0-5e6b1687e4ad.grib to idn_cli_era5_riverdischarge_1995.grib (31.2M)\n", | |
| "2023-11-30 13:16:18,896 INFO Download rate 650.3K/s \n", | |
| "2023-11-30 13:16:19,272 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:16:19,273 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_1995.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:16:19,499 INFO Request is queued\n", | |
| "2023-11-30 13:16:20,690 INFO Request is running\n", | |
| "2023-11-30 13:17:10,274 INFO Request is completed\n", | |
| "2023-11-30 13:17:10,275 INFO Downloading https://download-0014-clone.copernicus-climate.eu/cache-compute-0014/cache/data4/adaptor.mars.external-1701324979.8943677-21353-1-aab444c8-fc5a-4595-9996-1e65657e89fd.grib to idn_cli_era5_riverdischarge_1996.grib (31.3M)\n", | |
| "2023-11-30 13:17:16,330 INFO Download rate 5.2M/s \n", | |
| "2023-11-30 13:17:16,708 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:17:16,709 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_1996.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:17:16,921 INFO Request is queued\n", | |
| "2023-11-30 13:17:18,111 INFO Request is running\n", | |
| "2023-11-30 13:18:33,530 INFO Request is completed\n", | |
| "2023-11-30 13:18:33,531 INFO Downloading https://download-0018.copernicus-climate.eu/cache-compute-0018/cache/data4/adaptor.mars.external-1701325037.152625-6434-2-b5bbca3d-4463-4dbe-8bed-7abe0719c392.grib to idn_cli_era5_riverdischarge_1997.grib (31.2M)\n", | |
| "2023-11-30 13:19:53,714 INFO Download rate 398.5K/s \n", | |
| "2023-11-30 13:19:54,629 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:19:54,630 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_1997.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:19:54,863 INFO Request is queued\n", | |
| "2023-11-30 13:19:56,049 INFO Request is running\n", | |
| "2023-11-30 13:20:45,604 INFO Request is completed\n", | |
| "2023-11-30 13:20:45,605 INFO Downloading https://download-0007-clone.copernicus-climate.eu/cache-compute-0007/cache/data7/adaptor.mars.external-1701325195.140783-6686-6-38b96935-e231-4d94-a16b-e66e81144f05.grib to idn_cli_era5_riverdischarge_1998.grib (31.2M)\n", | |
| "2023-11-30 13:21:20,661 INFO Download rate 911.5K/s \n", | |
| "2023-11-30 13:21:21,023 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:21:21,024 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_1998.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:21:21,234 INFO Request is queued\n", | |
| "2023-11-30 13:21:22,416 INFO Request is running\n", | |
| "2023-11-30 13:22:37,766 INFO Request is completed\n", | |
| "2023-11-30 13:22:37,767 INFO Downloading https://download-0016.copernicus-climate.eu/cache-compute-0016/cache/data4/adaptor.mars.external-1701325281.6294858-32114-11-2a18c31d-ba24-4bf1-95a2-12655a094481.grib to idn_cli_era5_riverdischarge_1999.grib (31.2M)\n", | |
| "2023-11-30 13:23:04,507 INFO Download rate 1.2M/s \n", | |
| "2023-11-30 13:23:04,867 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:23:04,868 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_1999.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:23:05,098 INFO Request is queued\n", | |
| "2023-11-30 13:23:06,282 INFO Request is running\n", | |
| "2023-11-30 13:24:21,620 INFO Request is completed\n", | |
| "2023-11-30 13:24:21,621 INFO Downloading https://download-0007-clone.copernicus-climate.eu/cache-compute-0007/cache/data2/adaptor.mars.external-1701325385.5981681-4102-19-14f1e62c-c9a5-4bd6-8277-d4efe762b833.grib to idn_cli_era5_riverdischarge_2000.grib (31.3M)\n", | |
| "2023-11-30 13:24:27,825 INFO Download rate 5M/s \n", | |
| "2023-11-30 13:24:28,217 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:24:28,218 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_2000.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:24:28,431 INFO Request is queued\n", | |
| "2023-11-30 13:24:29,616 INFO Request is running\n", | |
| "2023-11-30 13:25:44,968 INFO Request is completed\n", | |
| "2023-11-30 13:25:44,968 INFO Downloading https://download-0015-clone.copernicus-climate.eu/cache-compute-0015/cache/data0/adaptor.mars.external-1701325468.7090218-19545-17-ae1f2b85-c08e-4021-af48-9d3d7370fd8b.grib to idn_cli_era5_riverdischarge_2001.grib (31.2M)\n", | |
| "2023-11-30 13:26:16,344 INFO Download rate 1018.4K/s \n", | |
| "2023-11-30 13:26:16,703 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:26:16,704 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_2001.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:26:16,930 INFO Request is queued\n", | |
| "2023-11-30 13:26:18,113 INFO Request is running\n", | |
| "2023-11-30 13:27:07,639 INFO Request is completed\n", | |
| "2023-11-30 13:27:07,640 INFO Downloading https://download-0005-clone.copernicus-climate.eu/cache-compute-0005/cache/data9/adaptor.mars.external-1701325577.2478259-24635-10-0205f56b-00f4-445f-b32d-b8f44ad33a0a.grib to idn_cli_era5_riverdischarge_2002.grib (31.2M)\n", | |
| "2023-11-30 13:27:13,426 INFO Download rate 5.4M/s \n", | |
| "2023-11-30 13:27:13,785 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:27:13,786 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_2002.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:27:14,044 INFO Request is queued\n", | |
| "2023-11-30 13:27:15,227 INFO Request is running\n", | |
| "2023-11-30 13:28:30,565 INFO Request is completed\n", | |
| "2023-11-30 13:28:30,566 INFO Downloading https://download-0002-clone.copernicus-climate.eu/cache-compute-0002/cache/data8/adaptor.mars.external-1701325634.4885843-5828-1-3277977f-92dd-42f4-9f78-1c2c88dfafd3.grib to idn_cli_era5_riverdischarge_2003.grib (31.2M)\n", | |
| "2023-11-30 13:29:05,190 INFO Download rate 922.8K/s \n", | |
| "2023-11-30 13:29:05,552 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:29:05,553 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_2003.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:29:05,795 INFO Request is queued\n", | |
| "2023-11-30 13:29:06,976 INFO Request is running\n", | |
| "2023-11-30 13:30:22,337 INFO Request is completed\n", | |
| "2023-11-30 13:30:22,338 INFO Downloading https://download-0008-clone.copernicus-climate.eu/cache-compute-0008/cache/data4/adaptor.mars.external-1701325746.3043451-26486-10-36589057-5156-460d-ac37-1ca613b23b58.grib to idn_cli_era5_riverdischarge_2004.grib (31.3M)\n", | |
| "2023-11-30 13:30:45,829 INFO Download rate 1.3M/s \n", | |
| "2023-11-30 13:30:46,188 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:30:46,189 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_2004.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:30:46,423 INFO Request is queued\n", | |
| "2023-11-30 13:30:47,608 INFO Request is running\n", | |
| "2023-11-30 13:31:37,150 INFO Request is completed\n", | |
| "2023-11-30 13:31:37,151 INFO Downloading https://download-0011-clone.copernicus-climate.eu/cache-compute-0011/cache/data5/adaptor.mars.external-1701325846.8179824-19374-15-f2175b5f-8133-4aaa-a4a9-74d77a7651ce.grib to idn_cli_era5_riverdischarge_2005.grib (31.2M)\n", | |
| "2023-11-30 13:31:42,662 INFO Download rate 5.7M/s \n", | |
| "2023-11-30 13:31:43,022 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:31:43,022 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_2005.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:31:43,316 INFO Request is queued\n", | |
| "2023-11-30 13:31:44,497 INFO Request is running\n", | |
| "2023-11-30 13:33:00,471 INFO Request is completed\n", | |
| "2023-11-30 13:33:00,472 INFO Downloading https://download-0006-clone.copernicus-climate.eu/cache-compute-0006/cache/data6/adaptor.mars.external-1701325903.657964-6265-2-1c6c8151-0fb1-4f8d-acb1-b641faa05ee4.grib to idn_cli_era5_riverdischarge_2006.grib (31.2M)\n", | |
| "2023-11-30 13:33:11,090 INFO Download rate 2.9M/s \n", | |
| "2023-11-30 13:33:11,474 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:33:11,475 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_2006.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:33:11,694 INFO Request is queued\n", | |
| "2023-11-30 13:33:12,886 INFO Request is running\n", | |
| "2023-11-30 13:34:28,413 INFO Request is completed\n", | |
| "2023-11-30 13:34:28,414 INFO Downloading https://download-0020.copernicus-climate.eu/cache-compute-0020/cache/data7/adaptor.mars.external-1701325992.0206978-17142-8-3b5f1895-df05-468b-be34-19250e5dcd2f.grib to idn_cli_era5_riverdischarge_2007.grib (31.2M)\n", | |
| "2023-11-30 13:34:34,984 INFO Download rate 4.7M/s \n", | |
| "2023-11-30 13:34:35,365 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:34:35,366 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_2007.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:34:35,613 INFO Request is queued\n", | |
| "2023-11-30 13:34:36,804 INFO Request is running\n", | |
| "2023-11-30 13:35:52,236 INFO Request is completed\n", | |
| "2023-11-30 13:35:52,237 INFO Downloading https://download-0009-clone.copernicus-climate.eu/cache-compute-0009/cache/data0/adaptor.mars.external-1701326075.9346337-16817-7-9b753163-06d0-4307-976f-b291da518834.grib to idn_cli_era5_riverdischarge_2008.grib (31.3M)\n", | |
| "2023-11-30 13:36:16,291 INFO Download rate 1.3M/s \n", | |
| "2023-11-30 13:36:16,673 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:36:16,674 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_2008.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:36:16,910 INFO Request is queued\n", | |
| "2023-11-30 13:36:18,102 INFO Request is running\n", | |
| "2023-11-30 13:37:07,709 INFO Request is completed\n", | |
| "2023-11-30 13:37:07,710 INFO Downloading https://download-0003-clone.copernicus-climate.eu/cache-compute-0003/cache/data7/adaptor.mars.external-1701326177.1687746-6756-20-63ee3fe4-2582-492f-8a75-e427054a75b9.grib to idn_cli_era5_riverdischarge_2009.grib (31.2M)\n", | |
| "2023-11-30 13:37:13,340 INFO Download rate 5.5M/s \n", | |
| "2023-11-30 13:37:13,722 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:37:13,723 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_2009.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:37:13,950 INFO Request is queued\n", | |
| "2023-11-30 13:37:15,145 INFO Request is running\n", | |
| "2023-11-30 13:38:04,780 INFO Request is completed\n", | |
| "2023-11-30 13:38:04,781 INFO Downloading https://download-0008-clone.copernicus-climate.eu/cache-compute-0008/cache/data0/adaptor.mars.external-1701326234.5116346-7024-1-10cf8e28-8908-4560-a30a-516ac9f0b3f1.grib to idn_cli_era5_riverdischarge_2010.grib (31.2M)\n", | |
| "2023-11-30 13:38:10,011 INFO Download rate 6M/s \n", | |
| "2023-11-30 13:38:10,391 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:38:10,392 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_2010.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:38:10,628 INFO Request is queued\n", | |
| "2023-11-30 13:38:11,819 INFO Request is running\n", | |
| "2023-11-30 13:39:01,429 INFO Request is completed\n", | |
| "2023-11-30 13:39:01,430 INFO Downloading https://download-0019.copernicus-climate.eu/cache-compute-0019/cache/data4/adaptor.mars.external-1701326291.0030077-18361-9-e7be3e52-a1a9-4aaf-a105-d87680c66e5c.grib to idn_cli_era5_riverdischarge_2011.grib (31.2M)\n", | |
| "2023-11-30 13:39:08,582 INFO Download rate 4.4M/s \n", | |
| "2023-11-30 13:39:08,967 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:39:08,968 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_2011.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:39:09,212 INFO Request is queued\n", | |
| "2023-11-30 13:39:10,406 INFO Request is running\n", | |
| "2023-11-30 13:40:00,005 INFO Request is completed\n", | |
| "2023-11-30 13:40:00,006 INFO Downloading https://download-0012-clone.copernicus-climate.eu/cache-compute-0012/cache/data3/adaptor.mars.external-1701326349.583342-27036-14-e2be9f86-25e9-4c34-a6d6-04773fae7232.grib to idn_cli_era5_riverdischarge_2012.grib (31.3M)\n", | |
| "2023-11-30 13:40:15,547 INFO Download rate 2M/s \n", | |
| "2023-11-30 13:40:15,933 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:40:15,934 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_2012.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:40:16,183 INFO Request is queued\n", | |
| "2023-11-30 13:40:17,376 INFO Request is running\n", | |
| "2023-11-30 13:41:32,797 INFO Request is completed\n", | |
| "2023-11-30 13:41:32,798 INFO Downloading https://download-0018.copernicus-climate.eu/cache-compute-0018/cache/data5/adaptor.mars.external-1701326416.6793103-16558-13-6ff5536a-1831-4720-80f4-f59505c8100a.grib to idn_cli_era5_riverdischarge_2013.grib (31.2M)\n", | |
| "2023-11-30 13:41:41,726 INFO Download rate 3.5M/s \n", | |
| "2023-11-30 13:41:42,106 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:41:42,106 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_2013.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:41:42,370 INFO Request is queued\n", | |
| "2023-11-30 13:41:43,561 INFO Request is running\n", | |
| "2023-11-30 13:42:58,981 INFO Request is completed\n", | |
| "2023-11-30 13:42:58,982 INFO Downloading https://download-0016.copernicus-climate.eu/cache-compute-0016/cache/data1/adaptor.mars.external-1701326502.8387418-15417-6-05faa875-9692-422e-ba5e-2352e7f20b85.grib to idn_cli_era5_riverdischarge_2014.grib (31.2M)\n", | |
| "2023-11-30 13:43:23,263 INFO Download rate 1.3M/s \n", | |
| "2023-11-30 13:43:23,645 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:43:23,645 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_2014.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:43:23,877 INFO Request is queued\n", | |
| "2023-11-30 13:43:25,605 INFO Request is running\n", | |
| "2023-11-30 13:44:40,927 INFO Request is completed\n", | |
| "2023-11-30 13:44:40,928 INFO Downloading https://download-0006-clone.copernicus-climate.eu/cache-compute-0006/cache/data4/adaptor.mars.external-1701326604.264344-7747-11-af4dd216-a905-40c5-a195-b594d53773b5.grib to idn_cli_era5_riverdischarge_2015.grib (31.2M)\n", | |
| "2023-11-30 13:44:46,368 INFO Download rate 5.7M/s \n", | |
| "2023-11-30 13:44:46,726 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:44:46,727 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_2015.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:44:46,967 INFO Request is queued\n", | |
| "2023-11-30 13:44:48,151 INFO Request is running\n", | |
| "2023-11-30 13:46:03,486 INFO Request is completed\n", | |
| "2023-11-30 13:46:03,487 INFO Downloading https://download-0020.copernicus-climate.eu/cache-compute-0020/cache/data2/adaptor.mars.external-1701326687.5053134-21411-5-17132168-394b-4d9a-99ba-4de7a2ddb8d6.grib to idn_cli_era5_riverdischarge_2016.grib (31.3M)\n", | |
| "2023-11-30 13:46:09,967 INFO Download rate 4.8M/s \n", | |
| "2023-11-30 13:46:10,329 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:46:10,330 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_2016.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:46:10,562 INFO Request is queued\n", | |
| "2023-11-30 13:46:11,746 INFO Request is running\n", | |
| "2023-11-30 13:47:27,079 INFO Request is completed\n", | |
| "2023-11-30 13:47:27,079 INFO Downloading https://download-0013-clone.copernicus-climate.eu/cache-compute-0013/cache/data6/adaptor.mars.external-1701326770.9698944-23804-15-3d56c23d-893e-4963-bfde-060246f92b8f.grib to idn_cli_era5_riverdischarge_2017.grib (31.2M)\n", | |
| "2023-11-30 13:48:11,595 INFO Download rate 717.8K/s \n", | |
| "2023-11-30 13:48:11,958 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:48:11,959 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_2017.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:48:12,198 INFO Request is queued\n", | |
| "2023-11-30 13:48:13,377 INFO Request is running\n", | |
| "2023-11-30 13:49:28,693 INFO Request is completed\n", | |
| "2023-11-30 13:49:28,694 INFO Downloading https://download-0000-clone.copernicus-climate.eu/cache-compute-0000/cache/data9/adaptor.mars.external-1701326892.6099937-8144-9-ad3a1324-dbfb-4f7f-ad4f-54818e1be58f.grib to idn_cli_era5_riverdischarge_2018.grib (31.2M)\n", | |
| "2023-11-30 13:50:53,278 INFO Download rate 377.8K/s \n", | |
| "2023-11-30 13:50:54,231 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:50:54,232 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_2018.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:50:54,459 INFO Request is queued\n", | |
| "2023-11-30 13:50:55,646 INFO Request is running\n", | |
| "2023-11-30 13:52:11,031 INFO Request is completed\n", | |
| "2023-11-30 13:52:11,032 INFO Downloading https://download-0018.copernicus-climate.eu/cache-compute-0018/cache/data1/adaptor.mars.external-1701327054.8118534-19454-14-2f4294d7-d2a3-43cd-a380-742813c9d242.grib to idn_cli_era5_riverdischarge_2019.grib (31.2M)\n", | |
| "2023-11-30 13:52:16,514 INFO Download rate 5.7M/s \n", | |
| "2023-11-30 13:52:16,892 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:52:16,893 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_2019.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:52:17,102 INFO Request is queued\n", | |
| "2023-11-30 13:52:18,294 INFO Request is running\n", | |
| "2023-11-30 13:53:33,690 INFO Request is completed\n", | |
| "2023-11-30 13:53:33,691 INFO Downloading https://download-0019.copernicus-climate.eu/cache-compute-0019/cache/data4/adaptor.mars.external-1701327137.531536-25693-7-223f010d-667f-49d6-af4a-ad45a50b4dcc.grib to idn_cli_era5_riverdischarge_2020.grib (31.3M)\n", | |
| "2023-11-30 13:53:39,417 INFO Download rate 5.5M/s \n", | |
| "2023-11-30 13:53:39,790 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:53:39,791 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_2020.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:53:40,023 INFO Request is queued\n", | |
| "2023-11-30 13:53:41,212 INFO Request is running\n", | |
| "2023-11-30 13:54:56,610 INFO Request is completed\n", | |
| "2023-11-30 13:54:56,611 INFO Downloading https://download-0010-clone.copernicus-climate.eu/cache-compute-0010/cache/data3/adaptor.mars.external-1701327220.6063886-32120-1-5869ccb5-b2c7-49c8-8e41-b87b4976cf43.grib to idn_cli_era5_riverdischarge_2021.grib (31.2M)\n", | |
| "2023-11-30 13:55:44,285 INFO Download rate 670.2K/s \n", | |
| "2023-11-30 13:55:44,659 INFO Welcome to the CDS\n", | |
| "2023-11-30 13:55:44,660 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/cems-glofas-historical\n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_2021.grib downloaded.\n" | |
| ] | |
| }, | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 13:55:45,031 INFO Request is queued\n", | |
| "2023-11-30 13:55:46,220 INFO Request is running\n", | |
| "2023-11-30 13:57:01,611 INFO Request is completed\n", | |
| "2023-11-30 13:57:01,612 INFO Downloading https://download-0020.copernicus-climate.eu/cache-compute-0020/cache/data6/adaptor.mars.external-1701327345.3676622-30110-4-5b3ed999-b150-4463-a464-d860472256f9.grib to idn_cli_era5_riverdischarge_2022.grib (31.2M)\n", | |
| "2023-11-30 13:58:18,073 INFO Download rate 417.9K/s \n" | |
| ] | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "idn_cli_era5_riverdischarge_2022.grib downloaded.\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "import os\n", | |
| "import cdsapi\n", | |
| "\n", | |
| "# Replace UID:ApiKey with your UID and API key\n", | |
| "# c = cdsapi.Client(key=\"UID:ApiKey\")\n", | |
| "c = cdsapi.Client()\n", | |
| "\n", | |
| "years = list(range(1981, 2023))\n", | |
| "\n", | |
| "for year in years:\n", | |
| " c.retrieve(\n", | |
| " 'cems-glofas-historical',\n", | |
| " {\n", | |
| " 'system_version': 'version_3_1',\n", | |
| " 'variable': 'river_discharge_in_the_last_24_hours',\n", | |
| " 'hydrological_model': 'lisflood',\n", | |
| " 'product_type': 'consolidated',\n", | |
| " 'hyear': str(year),\n", | |
| " 'hmonth': [\n", | |
| " 'april', 'august', 'december',\n", | |
| " 'february', 'january', 'july',\n", | |
| " 'june', 'march', 'may',\n", | |
| " 'november', 'october', 'september',\n", | |
| " ],\n", | |
| " 'hday': [\n", | |
| " '01', '02', '03',\n", | |
| " '04', '05', '06',\n", | |
| " '07', '08', '09',\n", | |
| " '10', '11', '12',\n", | |
| " '13', '14', '15',\n", | |
| " '16', '17', '18',\n", | |
| " '19', '20', '21',\n", | |
| " '22', '23', '24',\n", | |
| " '25', '26', '27',\n", | |
| " '28', '29', '30',\n", | |
| " '31',\n", | |
| " ],\n", | |
| " 'area': [\n", | |
| " 11, 90, -13, 145, # Bounding box for Indonesia\n", | |
| " ],\n", | |
| " 'format': 'grib',\n", | |
| " },\n", | |
| " 'idn_cli_era5_riverdischarge_' + str(year) + '.grib')\n", | |
| "\n", | |
| " print('idn_cli_era5_riverdischarge_' + str(year) + '.grib' + ' downloaded.')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "f1050f8a-636e-45fa-a0aa-7c4c7a934f75", | |
| "metadata": {}, | |
| "source": [ | |
| "Convert all the grib file into netcdf4 for easier processing in further analysis.\n", | |
| "\n", | |
| "This command will:\n", | |
| "\n", | |
| "1. Iterate over all `.grib` files in the current directory.\n", | |
| "2. Use `cdo` to convert each `.grib` file to NetCDF format (`.nc4`), with compression.\n", | |
| "3. Save the converted files in the `../01_nc4/` directory with the same base filename but with the `.nc4` extension.\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 12, | |
| "id": "d94101c3-8f0a-4919-a8d7-ed15555b3a22", | |
| "metadata": { | |
| "scrolled": true | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.52s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.54s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.60s 66MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps [4.46s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.51s 66MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.45s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.49s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps [4.43s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.51s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.49s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.53s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps [4.51s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.49s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.41s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.40s 66MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps [4.49s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.47s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.50s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.49s 64MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps [4.51s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.47s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.46s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.51s 66MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps [4.57s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.45s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.45s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.45s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps [4.49s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.44s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.48s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.47s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps [4.47s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.47s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.45s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.70s 66MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps [4.58s 66MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.62s 66MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.51s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.59s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps [4.62s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.50s 65MB]\n", | |
| "cdo copy: 1\u001b[32mcdo copy: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [4.56s 70MB]\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "!bash -c 'for fl in *.grib; do cdo -z zip_5 -f nc4 copy \"$fl\" \"../01_nc4/${fl%.grib}.nc4\"; done'\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "97ce32eb-ff10-462b-b74c-c91d07770ce8", | |
| "metadata": {}, | |
| "source": [ | |
| "If you open one of the data using [Panoply netCDF Data Viewer](https://www.giss.nasa.gov/tools/panoply/), you can see the coverage of the data following the bounding box that you have set in the script above.\n", | |
| "\n", | |
| "" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "17a3b5f9-1d4f-403c-a00b-91795936f811", | |
| "metadata": {}, | |
| "source": [ | |
| "## 2. Pre process" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "38f3a5ec-b5c8-48b4-9253-c7bd338654ac", | |
| "metadata": {}, | |
| "source": [ | |
| "Navigate to folder `01_nc4`" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 2, | |
| "id": "b5e0d547-19ae-4e48-bb0b-c89c966dfe72", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "/Volumes/Datenspeicherung/Temp/drought/hyd/01_nc4\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "%cd ../01_nc4" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "f24ab686-b06c-4006-aabe-b230224462b2", | |
| "metadata": {}, | |
| "source": [ | |
| "From above picture, we show the first date of the data, and seems it shifted 1 day (first date is 2 Jan 1981). We need to turned it back.\n", | |
| "\n", | |
| "This script will:\n", | |
| "\n", | |
| "* Loop over each `.nc4` file in the current directory.\n", | |
| "* Use `cdo` to shift the time in each file backward by one day.\n", | |
| "* Save the modified file in the `../02_shifted/` directory with the same filename." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 20, | |
| "id": "7e9a3d0a-3f25-4d93-975e-8ac03790d67c", | |
| "metadata": { | |
| "scrolled": true | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.75s 69MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.64s 66MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.64s 74MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps [3.63s 66MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.60s 66MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.67s 66MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.68s 64MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps [3.65s 65MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.61s 65MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.67s 67MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.70s 65MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps [3.75s 65MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.68s 81MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.62s 66MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.64s 66MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps [3.78s 65MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.69s 76MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.71s 65MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.66s 66MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps [3.73s 66MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.63s 65MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.55s 65MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.58s 66MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps [3.61s 65MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.62s 66MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.54s 65MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.59s 65MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps [3.63s 80MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.57s 65MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.57s 70MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.58s 69MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps [3.57s 65MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.56s 66MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.58s 66MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.59s 69MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps [3.57s 66MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.56s 65MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.58s 69MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.55s 65MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps [3.59s 66MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.71s 65MB]\n", | |
| "\u001b[32mcdo shifttime: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps [3.90s 66MB]\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "!bash -c 'for fl in *.nc4; do cdo -z zip_5 shifttime,-1day $fl ../02_shifted/$fl; done'\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "29cb2c52-2f92-4a0b-969e-34adc75c6de8", | |
| "metadata": {}, | |
| "source": [ | |
| "Navigate to folder 02_shifted" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 3, | |
| "id": "7ba9596d-ff69-40f3-9031-cad8fde002c8", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "/Volumes/Datenspeicherung/Temp/drought/hyd/02_shifted\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "%cd ../02_shifted" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "ab0628a7-1acd-4b3a-864c-66e171cabe94", | |
| "metadata": {}, | |
| "source": [ | |
| "The first process will be fill the null value near the coastline by interpolating from nearest grid process, matched the grid with the subset, and remove the value over the sea.\n", | |
| "\n", | |
| "Below script combine the operations into a one-liner script for each file, and use in-memory processing for intermediate outputs. \n", | |
| "\n", | |
| "This script performs the following operations for each `.nc4` file:\n", | |
| "\n", | |
| "* `-remapbil,../subset/idn_subset_chirps.nc $fl` - Remaps the input file `$fl` to match the grid of your subset file.\n", | |
| "* `-fillmiss -` - Fills missing values in the remapped data. The `-` symbol is used to take the output of `remapbil` as input for `fillmiss`.\n", | |
| "* `ifthen ../subset/idn_subset_chirps.nc -` - Applies the ifthen operation using the subset file as the condition to keep data only on land. The `-` symbol takes the output of `fillmiss` as its input.\n", | |
| "* The final output for each file is saved in the `../03_regrid/` directory.\n", | |
| "\n", | |
| "This approach avoids writing intermediate files to disk by using in-memory streams.\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 4, | |
| "id": "dc63c898-6ba6-41d8-b2af-52ce444ad434", | |
| "metadata": { | |
| "scrolled": true | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [52.82s 142MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [53.88s 142MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [54.09s 142MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 115195938 values from 1 variable over 366 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115510681 values from 2 variables over 367 timesteps [54.81s 142MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [54.07s 142MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [52.35s 141MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [53.70s 141MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 115195938 values from 1 variable over 366 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115510681 values from 2 variables over 367 timesteps [53.61s 142MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [55.11s 144MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [53.82s 142MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [53.53s 141MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 115195938 values from 1 variable over 366 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115510681 values from 2 variables over 367 timesteps [53.36s 142MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [54.28s 141MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [52.90s 141MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [52.57s 142MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 115195938 values from 1 variable over 366 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115510681 values from 2 variables over 367 timesteps [52.55s 142MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [52.54s 142MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [53.22s 146MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [53.80s 142MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 115195938 values from 1 variable over 366 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115510681 values from 2 variables over 367 timesteps [53.74s 142MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [53.91s 142MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [53.25s 141MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [52.86s 142MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 115195938 values from 1 variable over 366 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115510681 values from 2 variables over 367 timesteps [53.59s 142MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [54.15s 140MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [53.34s 141MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [53.19s 141MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 115195938 values from 1 variable over 366 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115510681 values from 2 variables over 367 timesteps [52.97s 140MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [54.57s 142MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [53.10s 142MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [52.94s 141MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 115195938 values from 1 variable over 366 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115510681 values from 2 variables over 367 timesteps [54.03s 142MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [56.15s 141MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [58.85s 140MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [54.91s 131MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 115195938 values from 1 variable over 366 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115510681 values from 2 variables over 367 timesteps [57.73s 141MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [54.34s 120MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [52.73s 141MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [54.54s 142MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48891744 values from 1 variable over 366 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 115195938 values from 1 variable over 366 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115510681 values from 2 variables over 367 timesteps [54.03s 136MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [54.86s 141MB]\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mProcess started\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mFilling up stream1 >../../subset/idn_subset_chirps.nc< by copying the first timestep.\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24223)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[33mcdo ifthen (Warning): \u001b[0mVariable land has a missing value of 0, this can lead to incorrect results with this operator!\n", | |
| "\u001b[32mcdo(2) remapbil: \u001b[0mBilinear weights from lonlat (552x242) to lonlat (923x341) grid, with source mask (24222)\n", | |
| "cdo(2) remapbil: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo(2) remapbil: \u001b[0mProcessed 48758160 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo(1) fillmiss: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps\n", | |
| "\u001b[32mcdo ifthen: \u001b[0mProcessed 115195938 values from 2 variables over 366 timesteps [54.96s 159MB]\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "!bash -c 'for fl in *.nc4; do cdo -z zip_5 ifthen ../../subset/idn_subset_chirps.nc -fillmiss -remapbil,../../subset/idn_subset_chirps.nc $fl ../03_regrid/$fl; done'\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "3c80b642-27c9-4b04-ac19-ce01b03c3a43", | |
| "metadata": {}, | |
| "source": [ | |
| "If you open one of the data using **Panoply**, you can see the coverage of the data following the bounding box that you have set in the script above.\n", | |
| "\n", | |
| "" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "56bc4a87-eb90-4436-80bc-366b177d931e", | |
| "metadata": {}, | |
| "source": [ | |
| "> But if you deal with larger area of interest, please consider to write the intermediate output in a file. Use below script as example.\n", | |
| "> \n", | |
| "> In this script:\n", | |
| "> \n", | |
| "> * Each input file is remapped (`remapbil`) to match the grid of your subset file.\n", | |
| "> * The remapped data then has missing values filled (`fillmiss`).\n", | |
| "> * The `ifthen` operation is applied using the subset mask to remove sea areas.\n", | |
| "> \n", | |
| "> This approach ensures that the remapped data and the subset mask are on the same grid before attempting to mask out the sea. The filling > of missing values is done after remapping to maintain consistency with the new grid.\n", | |
| "> \n", | |
| "> Don't forget to remove the triple quotes `\"\"\"` at the beginning and end of the script.\n", | |
| "> " | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "id": "ad1261d4-6a79-469e-afad-cf86f6510f93", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "\"\"\"\n", | |
| "!bash -c 'for fl in *.nc4; do \\\n", | |
| " remapped_fl=\"../02_regrid/remapped_$fl\"; \\\n", | |
| " final_fl=\"../02_regrid/$fl\"; \\\n", | |
| " cdo -z zip_5 remapbil,../subset/idn_subset_chirps.nc $fl $remapped_fl; \\\n", | |
| " filled_fl=\"../02_regrid/filled_$fl\"; \\\n", | |
| " cdo -z zip_5 fillmiss $remapped_fl $filled_fl; \\\n", | |
| " cdo -z zip_5 ifthen ../subset/idn_subset_chirps.nc $filled_fl $fl; \\\n", | |
| "done; \\\n", | |
| "rm ../02_regrid/remapped_*.nc4'\n", | |
| "\"\"\"" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "1c3b1b0b-e1fa-491a-bc55-a2db615d833b", | |
| "metadata": {}, | |
| "source": [ | |
| "## 3. Calculate daily to monthly accumulation and get the total monthly volume " | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "0371bfad-dce3-4eb4-95ce-086f603a57de", | |
| "metadata": {}, | |
| "source": [ | |
| "Navigate to folder `03_regrid`" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 5, | |
| "id": "1fe5d381-6183-4e5c-8724-4353c151b4ab", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "/Volumes/Datenspeicherung/Temp/drought/hyd/03_regrid\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "%cd ../03_regrid" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "ae55f5bd-e19d-426c-bccd-38aa2e2285fb", | |
| "metadata": {}, | |
| "source": [ | |
| "To convert an average daily discharge rate (`m³/s`) to a total monthly volume (`m³`), you would indeed sum the daily rates over the month and then multiply by the number of seconds in a day (`86,400 seconds`). This gives you the total cubic meters of water discharged in the month.\n", | |
| "\n", | |
| "This script does the following:\n", | |
| "\n", | |
| "* `basename_fl` extracts the base name of each file (without the `.nc4` extension).\n", | |
| "* `monthly_fl` is the path for the monthly sum file with the `monthly_` prefix.\n", | |
| "* `total_volume_fl` is the path for the final file without the `total_volume_` prefix in the `../03_monthly/` directory.\n", | |
| "* After processing all files, the script removes intermediate files with the `monthly_` prefix." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 29, | |
| "id": "d21ae02a-eca4-4252-8e14-1b23e94daaff", | |
| "metadata": { | |
| "scrolled": true | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [1.94s 74MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.28s 58MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [1.91s 75MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.32s 60MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [1.98s 74MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 60MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 115195938 values from 1 variable over 366 timesteps [1.93s 74MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 58MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [1.95s 73MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 59MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [1.98s 73MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 59MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [1.86s 75MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 60MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 115195938 values from 1 variable over 366 timesteps [1.96s 74MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 58MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [1.95s 73MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.28s 60MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [1.98s 68MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 60MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [1.98s 76MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 59MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 115195938 values from 1 variable over 366 timesteps [2.03s 75MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.29s 60MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [2.06s 74MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.28s 58MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [1.99s 75MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 59MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [1.96s 70MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 60MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 115195938 values from 1 variable over 366 timesteps [1.93s 74MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 59MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [1.92s 74MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 60MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [1.89s 66MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.28s 59MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [1.95s 75MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 59MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 115195938 values from 1 variable over 366 timesteps [1.97s 74MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 59MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [2.01s 74MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 59MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [1.93s 74MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 60MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [1.99s 73MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 60MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 115195938 values from 1 variable over 366 timesteps [1.95s 75MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 59MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [1.95s 71MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 60MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [1.98s 75MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 59MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [2.00s 69MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.28s 60MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 115195938 values from 1 variable over 366 timesteps [1.90s 74MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.28s 59MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [1.90s 74MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 59MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [1.89s 66MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 59MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [1.94s 74MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 59MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 115195938 values from 1 variable over 366 timesteps [2.00s 75MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.28s 59MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [2.05s 75MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 58MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [1.93s 74MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 60MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [1.94s 75MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 60MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 115195938 values from 1 variable over 366 timesteps [1.86s 66MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 59MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [1.90s 72MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 59MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [1.93s 75MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 61MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [1.98s 73MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 60MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 115195938 values from 1 variable over 366 timesteps [1.92s 70MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 60MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [1.94s 72MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 59MB]\n", | |
| "cdo monsum: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 91\u001b[32mcdo monsum: \u001b[0mProcessed 114881195 values from 1 variable over 365 timesteps [1.90s 75MB]\n", | |
| "\u001b[32mcdo mulc: \u001b[0mProcessed 3776916 values from 1 variable over 12 timesteps [0.27s 60MB]\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "!bash -c 'for fl in *.nc4; do \\\n", | |
| " basename_fl=$(basename $fl .nc4); \\\n", | |
| " monthly_fl=\"../04_monthly/monthly_$basename_fl.nc4\"; \\\n", | |
| " total_volume_fl=\"../04_monthly/$basename_fl.nc4\"; \\\n", | |
| " cdo -z zip_5 monsum $fl $monthly_fl; \\\n", | |
| " seconds_in_day=86400; \\\n", | |
| " cdo -z zip_5 mulc,$seconds_in_day $monthly_fl $total_volume_fl; \\\n", | |
| "done; \\\n", | |
| "rm ../04_monthly/monthly_*.nc4'\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "15d2aa88-57db-468d-b9cc-d584bef208f0", | |
| "metadata": {}, | |
| "source": [ | |
| "## 4. Combine into single netCDF and revise the metadata" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "273d0236-3e46-4077-a4a0-5cb4eaabe98d", | |
| "metadata": {}, | |
| "source": [ | |
| "Navigate to folder `04_monthly`" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 6, | |
| "id": "73fa7c15-b3b2-4e0f-b958-b5cbc3819ee0", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "/Volumes/Datenspeicherung/Temp/drought/hyd/04_monthly\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "%cd ../04_monthly" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "9dd897b7-dc28-4362-9f4f-c88b5d8d23f4", | |
| "metadata": {}, | |
| "source": [ | |
| "Merge all `*.nc4` in a folder into single netCDF file using `mergetime`" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 31, | |
| "id": "ef575ed9-e8d0-4932-be3f-6c9ca36f5385", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "\u001b[32mcdo mergetime: \u001b[0mProcessed 158630472 values from 42 variables over 504 timesteps [9.72s 99MB]\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "!bash -c 'cdo -z zip_5 mergetime idn_*.nc4 ../05_single_nc/idn_cli_era5_riverdischarge_monthly_m3_1981_2022.nc4'" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "d4b1644c-d7d1-4151-835f-9f6a7a1971a9", | |
| "metadata": {}, | |
| "source": [ | |
| "## 5. Modify the metadata" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "46c4ba71-6dc1-442e-a3ad-c5dd16b383d8", | |
| "metadata": {}, | |
| "source": [ | |
| "Navigate to folder `05_single_nc`" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 7, | |
| "id": "ff9c9b3a-cb01-4ffd-bd3e-905b7143c336", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "/Volumes/Datenspeicherung/Temp/drought/hyd/05_single_nc\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "%cd ../05_single_nc" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "c1ea3b8f-fbb3-4571-bfed-7d8c9ccc95b2", | |
| "metadata": {}, | |
| "source": [ | |
| "We need to modify/add some variables in order to prepared the data for the SSI calculation.\n", | |
| "\n", | |
| "To rename the variable, change the `long_name`, and add a `units` attribute to the discharge variable in our NetCDF file, we can use the **NetCDF Operators** ([NCO](https://nco.sourceforge.net/)). \n", | |
| "\n", | |
| "The unit `mm` that we would like to add below is just for the sake of simplicity that will allow the script are working when the calculation of SSI are perform." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 33, | |
| "id": "771f4f33-4dde-43fb-80e2-577bf04b2ce2", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "input_file = \"idn_cli_era5_riverdischarge_monthly_m3_1981_2022.nc4\"\n", | |
| "output_file = f\"../06_metadata_revision/{input_file}\"\n", | |
| "\n", | |
| "# Copy the original file to the new directory before making changes\n", | |
| "!cp $input_file $output_file\n", | |
| "\n", | |
| "# Rename the variable 'dis24' to 'discharge'\n", | |
| "!ncrename -v dis24,discharge $output_file\n", | |
| "\n", | |
| "# Update the 'long_name' attribute of the 'discharge' variable\n", | |
| "!ncatted -a long_name,discharge,m,c,\"Total volume discharge m3 per month\" $output_file\n", | |
| "\n", | |
| "# Add or modify the 'units' attribute of the 'discharge' variable to 'mm'\n", | |
| "!ncatted -a units,discharge,o,c,\"mm\" $output_file\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "3c97f3bc-36ee-4984-ae7f-baae8650a65c", | |
| "metadata": {}, | |
| "source": [ | |
| "Let's check how it goes. Don't forget to navigate to folder `06_metadata_revision`" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 8, | |
| "id": "2b9c3a93-021d-4a0f-9bc0-4295cd66df3d", | |
| "metadata": { | |
| "scrolled": true | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "/Volumes/Datenspeicherung/Temp/drought/hyd/06_metadata_revision\n", | |
| "netcdf idn_cli_era5_riverdischarge_monthly_m3_1981_2022 {\n", | |
| "dimensions:\n", | |
| "\ttime = UNLIMITED ; // (504 currently)\n", | |
| "\tbnds = 2 ;\n", | |
| "\tlon = 923 ;\n", | |
| "\tlat = 341 ;\n", | |
| "variables:\n", | |
| "\tdouble time(time) ;\n", | |
| "\t\ttime:standard_name = \"time\" ;\n", | |
| "\t\ttime:bounds = \"time_bnds\" ;\n", | |
| "\t\ttime:units = \"hours since 1981-1-1 00:00:00\" ;\n", | |
| "\t\ttime:calendar = \"proleptic_gregorian\" ;\n", | |
| "\t\ttime:axis = \"T\" ;\n", | |
| "\tdouble time_bnds(time, bnds) ;\n", | |
| "\tdouble lon(lon) ;\n", | |
| "\t\tlon:standard_name = \"longitude\" ;\n", | |
| "\t\tlon:long_name = \"longitude coordinate\" ;\n", | |
| "\t\tlon:units = \"degrees_east\" ;\n", | |
| "\t\tlon:axis = \"X\" ;\n", | |
| "\tdouble lat(lat) ;\n", | |
| "\t\tlat:standard_name = \"latitude\" ;\n", | |
| "\t\tlat:long_name = \"latitude coordinate\" ;\n", | |
| "\t\tlat:units = \"degrees_north\" ;\n", | |
| "\t\tlat:axis = \"Y\" ;\n", | |
| "\tfloat discharge(time, lat, lon) ;\n", | |
| "\t\tdischarge:long_name = \"Total volume discharge m3 per month\" ;\n", | |
| "\t\tdischarge:param = \"7.0.1\" ;\n", | |
| "\t\tdischarge:_FillValue = -9.e+33f ;\n", | |
| "\t\tdischarge:missing_value = -9.e+33f ;\n", | |
| "\t\tdischarge:cell_methods = \"time: sum\" ;\n", | |
| "\t\tdischarge:units = \"mm\" ;\n", | |
| "\n", | |
| "// global attributes:\n", | |
| "\t\t:CDI = \"Climate Data Interface version 2.2.1 (https://mpimet.mpg.de/cdi)\" ;\n", | |
| "\t\t:Conventions = \"CF-1.6\" ;\n", | |
| "\t\t:institution = \"European Centre for Medium-Range Weather Forecasts\" ;\n", | |
| "\t\t:frequency = \"mon\" ;\n", | |
| "\t\t:CDO = \"Climate Data Operators version 2.2.0 (https://mpimet.mpg.de/cdo)\" ;\n", | |
| "\t\t:NCO = \"netCDF Operators version 5.1.6 (Homepage = http://nco.sf.net, Code = http://github.com/nco/nco)\" ;\n", | |
| "\t\t:history = \"Thu Nov 30 21:08:49 2023: ncatted -a units,discharge,o,c,mm ../06_metadata_revision/idn_cli_era5_riverdischarge_monthly_m3_1981_2022.nc4\\nThu Nov 30 21:08:49 2023: ncatted -a long_name,discharge,m,c,Total volume discharge m3 per month ../06_metadata_revision/idn_cli_era5_riverdischarge_monthly_m3_1981_2022.nc4\\nThu Nov 30 21:08:48 2023: ncrename -v dis24,discharge ../06_metadata_revision/idn_cli_era5_riverdischarge_monthly_m3_1981_2022.nc4\\nThu Nov 30 20:14:31 2023: cdo -z zip_5 mergetime idn_cli_era5_riverdischarge_1981.nc4 idn_cli_era5_riverdischarge_1982.nc4 idn_cli_era5_riverdischarge_1983.nc4 idn_cli_era5_riverdischarge_1984.nc4 idn_cli_era5_riverdischarge_1985.nc4 idn_cli_era5_riverdischarge_1986.nc4 idn_cli_era5_riverdischarge_1987.nc4 idn_cli_era5_riverdischarge_1988.nc4 idn_cli_era5_riverdischarge_1989.nc4 idn_cli_era5_riverdischarge_1990.nc4 idn_cli_era5_riverdischarge_1991.nc4 idn_cli_era5_riverdischarge_1992.nc4 idn_cli_era5_riverdischarge_1993.nc4 idn_cli_era5_riverdischarge_1994.nc4 idn_cli_era5_riverdischarge_1995.nc4 idn_cli_era5_riverdischarge_1996.nc4 idn_cli_era5_riverdischarge_1997.nc4 idn_cli_era5_riverdischarge_1998.nc4 idn_cli_era5_riverdischarge_1999.nc4 idn_cli_era5_riverdischarge_2000.nc4 idn_cli_era5_riverdischarge_2001.nc4 idn_cli_era5_riverdischarge_2002.nc4 idn_cli_era5_riverdischarge_2003.nc4 idn_cli_era5_riverdischarge_2004.nc4 idn_cli_era5_riverdischarge_2005.nc4 idn_cli_era5_riverdischarge_2006.nc4 idn_cli_era5_riverdischarge_2007.nc4 idn_cli_era5_riverdischarge_2008.nc4 idn_cli_era5_riverdischarge_2009.nc4 idn_cli_era5_riverdischarge_2010.nc4 idn_cli_era5_riverdischarge_2011.nc4 idn_cli_era5_riverdischarge_2012.nc4 idn_cli_era5_riverdischarge_2013.nc4 idn_cli_era5_riverdischarge_2014.nc4 idn_cli_era5_riverdischarge_2015.nc4 idn_cli_era5_riverdischarge_2016.nc4 idn_cli_era5_riverdischarge_2017.nc4 idn_cli_era5_riverdischarge_2018.nc4 idn_cli_era5_riverdischarge_2019.nc4 idn_cli_era5_riverdischarge_2020.nc4 idn_cli_era5_riverdischarge_2021.nc4 idn_cli_era5_riverdischarge_2022.nc4 ../05_single_nc/idn_cli_era5_riverdischarge_monthly_m3_1981_2022.nc4\\nThu Nov 30 20:03:54 2023: cdo -z zip_5 mulc,86400 ../04_monthly/monthly_idn_cli_era5_riverdischarge_1981.nc4 ../04_monthly/idn_cli_era5_riverdischarge_1981.nc4\\nThu Nov 30 20:03:52 2023: cdo -z zip_5 monsum idn_cli_era5_riverdischarge_1981.nc4 ../04_monthly/monthly_idn_cli_era5_riverdischarge_1981.nc4\\nThu Nov 30 19:21:39 2023: cdo -z zip_5 ifthen ../subset/idn_subset_chirps.nc -fillmiss -remapbil,../subset/idn_subset_chirps.nc idn_cli_era5_riverdischarge_1981.nc4 ../03_regrid/idn_cli_era5_riverdischarge_1981.nc4\\nThu Nov 30 15:52:40 2023: cdo -z zip_5 shifttime,-1day idn_cli_era5_riverdischarge_1981.nc4 ../02_shifted/idn_cli_era5_riverdischarge_1981.nc4\\nThu Nov 30 14:02:54 2023: cdo -z zip_5 -f nc4 copy idn_cli_era5_riverdischarge_1981.grib ../01_nc4/idn_cli_era5_riverdischarge_1981.nc4\" ;\n", | |
| "}\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "%cd ../06_metadata_revision\n", | |
| "\n", | |
| "!ncdump -h idn_cli_era5_riverdischarge_monthly_m3_1981_2022.nc4" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "f98fed38-d7c5-4636-8db1-f291bbd3db4b", | |
| "metadata": {}, | |
| "source": [ | |
| "## 6. Standardized Streamflow Index calculation" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "685e26aa-ddd4-4581-add1-a6a2657ccc4b", | |
| "metadata": {}, | |
| "source": [ | |
| "The SSI calculation using the methodology of normalization associated with SPI as the basis. Let's read some paragraph below related to the python package that we will use to calculate the SSI.\n", | |
| "\n", | |
| "The [climate-indices](https://pypi.org/project/climate-indices/) python package enables the user to calculate SPI using any gridded netCDF dataset. However, there are certain requirements for input files that vary based on input type.\n", | |
| "\n", | |
| "* Precipitation unit must be written as `millimeters`, `milimeter`, `mm`, `inches`, `inch` or `in`.\n", | |
| "\n", | |
| "* Data dimension and order must be written as `lat`, `lon`, `time` (Windows machine required this order) or `time`, `lat`, `lon` (Works tested on Mac/Linux and Linux running on WSL). \n", | |
| "\n", | |
| "* If our study area are big, it's better to prepare all the data following this dimension order: `lat`, `lon`, `time` as all the data will force following this order during SPI calculation by NCO module. Let say you only prepare the data as is (leaving the order to `time`,`lat`, `lon`), it also acceptable but it will required lot of memory to use re-ordering the dimension, and usually NCO couldn't handle all the process and failed.\n", | |
| "\n", | |
| "Please make sure below points:\n", | |
| "\n", | |
| "- [x] You have installed `climate-indices` package to start working on SPI calculation. \n", | |
| "- [x] Variable name on precipitation `--var_name_precip`, usually terraclimate data use `ppt` as name while other precipitation data like CHIRPS using `precip` and IMERG using `precipitation` as a variable name. To make sure, check using command `ncdump -h file.nc` then adjust it in SPI script if needed. This case we will use `discharge` as the variable name.\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "8c5e04d1-8987-42d8-9432-342cf7ffb107", | |
| "metadata": {}, | |
| "source": [ | |
| "Let's re-order the variables into `lat`,`lon`,`time` using `ncpdq` command" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 8, | |
| "id": "7d4a8577-4b79-4f01-902e-3c7fadacb510", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "!ncpdq -a lat,lon,time idn_cli_era5_riverdischarge_monthly_m3_1981_2022.nc4 input0.nc4" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "ddc20535-19b6-4e4f-ac0f-abf1ca452dd0", | |
| "metadata": {}, | |
| "source": [ | |
| "Check the header for the result `input0.nc4`" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 9, | |
| "id": "10fed628-286b-4990-b619-4de3fa54858d", | |
| "metadata": { | |
| "scrolled": true | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "netcdf input0 {\n", | |
| "dimensions:\n", | |
| "\ttime = 504 ;\n", | |
| "\tbnds = 2 ;\n", | |
| "\tlon = 923 ;\n", | |
| "\tlat = UNLIMITED ; // (341 currently)\n", | |
| "variables:\n", | |
| "\tdouble time(time) ;\n", | |
| "\t\ttime:standard_name = \"time\" ;\n", | |
| "\t\ttime:bounds = \"time_bnds\" ;\n", | |
| "\t\ttime:units = \"hours since 1981-1-1 00:00:00\" ;\n", | |
| "\t\ttime:calendar = \"proleptic_gregorian\" ;\n", | |
| "\t\ttime:axis = \"T\" ;\n", | |
| "\tdouble time_bnds(time, bnds) ;\n", | |
| "\tdouble lon(lon) ;\n", | |
| "\t\tlon:standard_name = \"longitude\" ;\n", | |
| "\t\tlon:long_name = \"longitude coordinate\" ;\n", | |
| "\t\tlon:units = \"degrees_east\" ;\n", | |
| "\t\tlon:axis = \"X\" ;\n", | |
| "\tdouble lat(lat) ;\n", | |
| "\t\tlat:standard_name = \"latitude\" ;\n", | |
| "\t\tlat:long_name = \"latitude coordinate\" ;\n", | |
| "\t\tlat:units = \"degrees_north\" ;\n", | |
| "\t\tlat:axis = \"Y\" ;\n", | |
| "\tfloat discharge(lat, lon, time) ;\n", | |
| "\t\tdischarge:long_name = \"Total volume discharge m3 per month\" ;\n", | |
| "\t\tdischarge:param = \"7.0.1\" ;\n", | |
| "\t\tdischarge:_FillValue = -9.e+33f ;\n", | |
| "\t\tdischarge:missing_value = -9.e+33f ;\n", | |
| "\t\tdischarge:cell_methods = \"time: sum\" ;\n", | |
| "\t\tdischarge:units = \"mm\" ;\n", | |
| "\n", | |
| "// global attributes:\n", | |
| "\t\t:CDI = \"Climate Data Interface version 2.2.1 (https://mpimet.mpg.de/cdi)\" ;\n", | |
| "\t\t:Conventions = \"CF-1.6\" ;\n", | |
| "\t\t:institution = \"European Centre for Medium-Range Weather Forecasts\" ;\n", | |
| "\t\t:frequency = \"mon\" ;\n", | |
| "\t\t:CDO = \"Climate Data Operators version 2.2.0 (https://mpimet.mpg.de/cdo)\" ;\n", | |
| "\t\t:NCO = \"netCDF Operators version 5.1.6 (Homepage = http://nco.sf.net, Code = http://github.com/nco/nco)\" ;\n", | |
| "\t\t:history = \"Thu Nov 30 22:48:07 2023: ncpdq -a lat,lon,time idn_cli_era5_riverdischarge_monthly_m3_1981_2022.nc4 input0.nc4\\nThu Nov 30 21:08:49 2023: ncatted -a units,discharge,o,c,mm ../06_metadata_revision/idn_cli_era5_riverdischarge_monthly_m3_1981_2022.nc4\\nThu Nov 30 21:08:49 2023: ncatted -a long_name,discharge,m,c,Total volume discharge m3 per month ../06_metadata_revision/idn_cli_era5_riverdischarge_monthly_m3_1981_2022.nc4\\nThu Nov 30 21:08:48 2023: ncrename -v dis24,discharge ../06_metadata_revision/idn_cli_era5_riverdischarge_monthly_m3_1981_2022.nc4\\nThu Nov 30 20:14:31 2023: cdo -z zip_5 mergetime idn_cli_era5_riverdischarge_1981.nc4 idn_cli_era5_riverdischarge_1982.nc4 idn_cli_era5_riverdischarge_1983.nc4 idn_cli_era5_riverdischarge_1984.nc4 idn_cli_era5_riverdischarge_1985.nc4 idn_cli_era5_riverdischarge_1986.nc4 idn_cli_era5_riverdischarge_1987.nc4 idn_cli_era5_riverdischarge_1988.nc4 idn_cli_era5_riverdischarge_1989.nc4 idn_cli_era5_riverdischarge_1990.nc4 idn_cli_era5_riverdischarge_1991.nc4 idn_cli_era5_riverdischarge_1992.nc4 idn_cli_era5_riverdischarge_1993.nc4 idn_cli_era5_riverdischarge_1994.nc4 idn_cli_era5_riverdischarge_1995.nc4 idn_cli_era5_riverdischarge_1996.nc4 idn_cli_era5_riverdischarge_1997.nc4 idn_cli_era5_riverdischarge_1998.nc4 idn_cli_era5_riverdischarge_1999.nc4 idn_cli_era5_riverdischarge_2000.nc4 idn_cli_era5_riverdischarge_2001.nc4 idn_cli_era5_riverdischarge_2002.nc4 idn_cli_era5_riverdischarge_2003.nc4 idn_cli_era5_riverdischarge_2004.nc4 idn_cli_era5_riverdischarge_2005.nc4 idn_cli_era5_riverdischarge_2006.nc4 idn_cli_era5_riverdischarge_2007.nc4 idn_cli_era5_riverdischarge_2008.nc4 idn_cli_era5_riverdischarge_2009.nc4 idn_cli_era5_riverdischarge_2010.nc4 idn_cli_era5_riverdischarge_2011.nc4 idn_cli_era5_riverdischarge_2012.nc4 idn_cli_era5_riverdischarge_2013.nc4 idn_cli_era5_riverdischarge_2014.nc4 idn_cli_era5_riverdischarge_2015.nc4 idn_cli_era5_riverdischarge_2016.nc4 idn_cli_era5_riverdischarge_2017.nc4 idn_cli_era5_riverdischarge_2018.nc4 idn_cli_era5_riverdischarge_2019.nc4 idn_cli_era5_riverdischarge_2020.nc4 idn_cli_era5_riverdischarge_2021.nc4 idn_cli_era5_riverdischarge_2022.nc4 ../05_single_nc/idn_cli_era5_riverdischarge_monthly_m3_1981_2022.nc4\\nThu Nov 30 20:03:54 2023: cdo -z zip_5 mulc,86400 ../04_monthly/monthly_idn_cli_era5_riverdischarge_1981.nc4 ../04_monthly/idn_cli_era5_riverdischarge_1981.nc4\\nThu Nov 30 20:03:52 2023: cdo -z zip_5 monsum idn_cli_era5_riverdischarge_1981.nc4 ../04_monthly/monthly_idn_cli_era5_riverdischarge_1981.nc4\\nThu Nov 30 19:21:39 2023: cdo -z zip_5 ifthen ../subset/idn_subset_chirps.nc -fillmiss -remapbil,../subset/idn_subset_chirps.nc idn_cli_era5_riverdischarge_1981.nc4 ../03_regrid/idn_cli_era5_riverdischarge_1981.nc4\\nThu Nov 30 15:52:40 2023: cdo -z zip_5 shifttime,-1day idn_cli_era5_riverdischarge_1981.nc4 ../02_shifted/idn_cli_era5_riverdischarge_1981.nc4\\nThu Nov 30 14:02:54 2023: cdo -z zip_5 -f nc4 copy idn_cli_era5_riverdischarge_1981.grib ../01_nc4/idn_cli_era5_riverdischarge_1981.nc4\" ;\n", | |
| "}\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "!ncdump -h input0.nc4" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "4f889d10-2473-4487-a3a6-fc7a420046f6", | |
| "metadata": {}, | |
| "source": [ | |
| "After re-ordering the variables, sometimes user experience `lat` or `lon` dimension becomes `UNLIMITED` which is wrong. The `time` dimension should be the `UNLIMITED` dimension.\n", | |
| "\n", | |
| "Fortunately you can do this to fix the `lat` or `lon` dimension who becomes `UNLIMITED` using `ncks` command below:" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 10, | |
| "id": "e4ea5c8d-ea7f-4dcb-9ffe-05354103c87b", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "!ncks --fix_rec_dmn lat input0.nc4 -o outfixed.nc4 ; mv outfixed.nc4 input1.nc4" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "b45cc698-9885-4d13-bdcf-93dbaa41d5fe", | |
| "metadata": {}, | |
| "source": [ | |
| "And to make `UNLIMITED` the `time` dimension again using `ncks` command below:" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 11, | |
| "id": "0da901d5-4e23-42bc-a1a2-dda4c8f75071", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "!ncks --mk_rec_dmn time input1.nc4 -o outunlim.nc4 ; mv outunlim.nc4 input_ssi.nc4" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "2e9fee6c-f7f9-4a33-9741-6f8ab2a3ac33", | |
| "metadata": {}, | |
| "source": [ | |
| "Check the header for the result `input_ssi.nc4`" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 12, | |
| "id": "099c9f7f-86cb-4ca6-9b50-2957fb16c6d0", | |
| "metadata": { | |
| "scrolled": true | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "netcdf input_ssi {\n", | |
| "dimensions:\n", | |
| "\tlat = 341 ;\n", | |
| "\tlon = 923 ;\n", | |
| "\ttime = UNLIMITED ; // (504 currently)\n", | |
| "\tbnds = 2 ;\n", | |
| "variables:\n", | |
| "\tfloat discharge(lat, lon, time) ;\n", | |
| "\t\tdischarge:long_name = \"Total volume discharge m3 per month\" ;\n", | |
| "\t\tdischarge:param = \"7.0.1\" ;\n", | |
| "\t\tdischarge:_FillValue = -9.e+33f ;\n", | |
| "\t\tdischarge:missing_value = -9.e+33f ;\n", | |
| "\t\tdischarge:cell_methods = \"time: sum\" ;\n", | |
| "\t\tdischarge:units = \"mm\" ;\n", | |
| "\tdouble lat(lat) ;\n", | |
| "\t\tlat:standard_name = \"latitude\" ;\n", | |
| "\t\tlat:long_name = \"latitude coordinate\" ;\n", | |
| "\t\tlat:units = \"degrees_north\" ;\n", | |
| "\t\tlat:axis = \"Y\" ;\n", | |
| "\tdouble lon(lon) ;\n", | |
| "\t\tlon:standard_name = \"longitude\" ;\n", | |
| "\t\tlon:long_name = \"longitude coordinate\" ;\n", | |
| "\t\tlon:units = \"degrees_east\" ;\n", | |
| "\t\tlon:axis = \"X\" ;\n", | |
| "\tdouble time(time) ;\n", | |
| "\t\ttime:standard_name = \"time\" ;\n", | |
| "\t\ttime:bounds = \"time_bnds\" ;\n", | |
| "\t\ttime:units = \"hours since 1981-1-1 00:00:00\" ;\n", | |
| "\t\ttime:calendar = \"proleptic_gregorian\" ;\n", | |
| "\t\ttime:axis = \"T\" ;\n", | |
| "\tdouble time_bnds(time, bnds) ;\n", | |
| "\n", | |
| "// global attributes:\n", | |
| "\t\t:CDI = \"Climate Data Interface version 2.2.1 (https://mpimet.mpg.de/cdi)\" ;\n", | |
| "\t\t:Conventions = \"CF-1.6\" ;\n", | |
| "\t\t:institution = \"European Centre for Medium-Range Weather Forecasts\" ;\n", | |
| "\t\t:frequency = \"mon\" ;\n", | |
| "\t\t:CDO = \"Climate Data Operators version 2.2.0 (https://mpimet.mpg.de/cdo)\" ;\n", | |
| "\t\t:NCO = \"netCDF Operators version 5.1.6 (Homepage = http://nco.sf.net, Code = http://github.com/nco/nco)\" ;\n", | |
| "\t\t:history = \"Thu Nov 30 22:54:56 2023: ncks --mk_rec_dmn time input1.nc4 -o outunlim.nc4\\nThu Nov 30 22:54:40 2023: ncks --fix_rec_dmn lat input0.nc4 -o outfixed.nc4\\nThu Nov 30 22:48:07 2023: ncpdq -a lat,lon,time idn_cli_era5_riverdischarge_monthly_m3_1981_2022.nc4 input0.nc4\\nThu Nov 30 21:08:49 2023: ncatted -a units,discharge,o,c,mm ../06_metadata_revision/idn_cli_era5_riverdischarge_monthly_m3_1981_2022.nc4\\nThu Nov 30 21:08:49 2023: ncatted -a long_name,discharge,m,c,Total volume discharge m3 per month ../06_metadata_revision/idn_cli_era5_riverdischarge_monthly_m3_1981_2022.nc4\\nThu Nov 30 21:08:48 2023: ncrename -v dis24,discharge ../06_metadata_revision/idn_cli_era5_riverdischarge_monthly_m3_1981_2022.nc4\\nThu Nov 30 20:14:31 2023: cdo -z zip_5 mergetime idn_cli_era5_riverdischarge_1981.nc4 idn_cli_era5_riverdischarge_1982.nc4 idn_cli_era5_riverdischarge_1983.nc4 idn_cli_era5_riverdischarge_1984.nc4 idn_cli_era5_riverdischarge_1985.nc4 idn_cli_era5_riverdischarge_1986.nc4 idn_cli_era5_riverdischarge_1987.nc4 idn_cli_era5_riverdischarge_1988.nc4 idn_cli_era5_riverdischarge_1989.nc4 idn_cli_era5_riverdischarge_1990.nc4 idn_cli_era5_riverdischarge_1991.nc4 idn_cli_era5_riverdischarge_1992.nc4 idn_cli_era5_riverdischarge_1993.nc4 idn_cli_era5_riverdischarge_1994.nc4 idn_cli_era5_riverdischarge_1995.nc4 idn_cli_era5_riverdischarge_1996.nc4 idn_cli_era5_riverdischarge_1997.nc4 idn_cli_era5_riverdischarge_1998.nc4 idn_cli_era5_riverdischarge_1999.nc4 idn_cli_era5_riverdischarge_2000.nc4 idn_cli_era5_riverdischarge_2001.nc4 idn_cli_era5_riverdischarge_2002.nc4 idn_cli_era5_riverdischarge_2003.nc4 idn_cli_era5_riverdischarge_2004.nc4 idn_cli_era5_riverdischarge_2005.nc4 idn_cli_era5_riverdischarge_2006.nc4 idn_cli_era5_riverdischarge_2007.nc4 idn_cli_era5_riverdischarge_2008.nc4 idn_cli_era5_riverdischarge_2009.nc4 idn_cli_era5_riverdischarge_2010.nc4 idn_cli_era5_riverdischarge_2011.nc4 idn_cli_era5_riverdischarge_2012.nc4 idn_cli_era5_riverdischarge_2013.nc4 idn_cli_era5_riverdischarge_2014.nc4 idn_cli_era5_riverdischarge_2015.nc4 idn_cli_era5_riverdischarge_2016.nc4 idn_cli_era5_riverdischarge_2017.nc4 idn_cli_era5_riverdischarge_2018.nc4 idn_cli_era5_riverdischarge_2019.nc4 idn_cli_era5_riverdischarge_2020.nc4 idn_cli_era5_riverdischarge_2021.nc4 idn_cli_era5_riverdischarge_2022.nc4 ../05_single_nc/idn_cli_era5_riverdischarge_monthly_m3_1981_2022.nc4\\nThu Nov 30 20:03:54 2023: cdo -z zip_5 mulc,86400 ../04_monthly/monthly_idn_cli_era5_riverdischarge_1981.nc4 ../04_monthly/idn_cli_era5_riverdischarge_1981.nc4\\nThu Nov 30 20:03:52 2023: cdo -z zip_5 monsum idn_cli_era5_riverdischarge_1981.nc4 ../04_monthly/monthly_idn_cli_era5_riverdischarge_1981.nc4\\nThu Nov 30 19:21:39 2023: cdo -z zip_5 ifthen ../subset/idn_subset_chirps.nc -fillmiss -remapbil,../subset/idn_subset_chirps.nc idn_cli_era5_riverdischarge_1981.nc4 ../03_regrid/idn_cli_era5_riverdischarge_1981.nc4\\nThu Nov 30 15:52:40 2023: cdo -z zip_5 shifttime,-1day idn_cli_era5_riverdischarge_1981.nc4 ../02_shifted/idn_cli_era5_riverdischarge_1981.nc4\\nThu Nov 30 14:02:54 2023: cdo -z zip_5 -f nc4 copy idn_cli_era5_riverdischarge_1981.grib ../01_nc4/idn_cli_era5_riverdischarge_1981.nc4\" ;\n", | |
| "}\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "!ncdump -h input_ssi.nc4" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "b6210360-743e-4ed8-aab9-c8e85d2d5856", | |
| "metadata": {}, | |
| "source": [ | |
| "**Let's start the calculation!**" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 18, | |
| "id": "1a7df68d-5ec7-4f2f-b18a-107aa715b4c8", | |
| "metadata": { | |
| "scrolled": true | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "2023-11-30 23:30:40 INFO Start time: 2023-11-30 23:30:40.269063\n", | |
| "2023-11-30 23:30:40 INFO Computing monthly SPI\n", | |
| "2023-11-30 23:31:05 INFO Computing 1-month SPI (Gamma)\n", | |
| "2023-11-30 23:31:54 INFO Computing 1-month SPI (Pearson)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "2023-11-30 23:33:15 INFO Computing 2-month SPI (Gamma)\n", | |
| "2023-11-30 23:33:54 INFO Computing 2-month SPI (Pearson)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "2023-11-30 23:35:08 INFO Computing 3-month SPI (Gamma)\n", | |
| "2023-11-30 23:35:47 INFO Computing 3-month SPI (Pearson)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "2023-11-30 23:37:04 INFO Computing 6-month SPI (Gamma)\n", | |
| "2023-11-30 23:37:44 INFO Computing 6-month SPI (Pearson)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "2023-11-30 23:39:01 INFO Computing 9-month SPI (Gamma)\n", | |
| "2023-11-30 23:39:41 INFO Computing 9-month SPI (Pearson)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "2023-11-30 23:40:56 INFO Computing 12-month SPI (Gamma)\n", | |
| "2023-11-30 23:41:37 INFO Computing 12-month SPI (Pearson)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "2023-11-30 23:43:02 INFO Computing 18-month SPI (Gamma)\n", | |
| "2023-11-30 23:43:43 INFO Computing 18-month SPI (Pearson)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "2023-11-30 23:45:01 INFO Computing 24-month SPI (Gamma)\n", | |
| "2023-11-30 23:45:45 INFO Computing 24-month SPI (Pearson)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "2023-11-30 23:47:03 INFO Computing 36-month SPI (Gamma)\n", | |
| "2023-11-30 23:47:44 INFO Computing 36-month SPI (Pearson)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "2023-11-30 23:49:01 INFO Computing 48-month SPI (Gamma)\n", | |
| "2023-11-30 23:49:43 INFO Computing 48-month SPI (Pearson)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "2023-11-30 23:51:04 INFO Computing 60-month SPI (Gamma)\n", | |
| "2023-11-30 23:51:43 INFO Computing 60-month SPI (Pearson)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "2023-11-30 23:53:00 INFO Computing 72-month SPI (Gamma)\n", | |
| "2023-11-30 23:53:38 INFO Computing 72-month SPI (Pearson)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:455: RuntimeWarning: divide by zero encountered in divide\n", | |
| " alpha = 4.0 / (skew * skew)\n", | |
| "/opt/anaconda3/envs/wbg/lib/python3.10/site-packages/climate_indices/compute.py:459: RuntimeWarning: invalid value encountered in multiply\n", | |
| " return loc - ((alpha * scale * skew) / 2.0)\n", | |
| "2023-11-30 23:54:51 INFO End time: 2023-11-30 23:54:51.912093\n", | |
| "2023-11-30 23:54:51 INFO Elapsed time: 0:24:11.643030\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "!spi --periodicity monthly --scales 1 2 3 6 9 12 18 24 36 48 60 72 --calibration_start_year 1991 --calibration_end_year 2020 --netcdf_precip input_ssi.nc4 --var_name_precip discharge --output_file_base ../07_ssi_intermediate/idn_cli --multiprocessing all" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "6ad70c23-aa4e-41ea-bb08-d73fe49c5a83", | |
| "metadata": {}, | |
| "source": [ | |
| "We will use the gamma version, lets remove the pearson file. Don't forget to navigate to `07_ssi_intermediate`" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 9, | |
| "id": "e6c850bb-f844-43c3-8e06-c2ecfb7e5e43", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "/Volumes/Datenspeicherung/Temp/drought/hyd/07_ssi_intermediate\n", | |
| "rm: idn_cli_spi_pearson_*.nc: No such file or directory\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "%cd ../07_ssi_intermediate\n", | |
| "\n", | |
| "!bash -c 'rm idn_cli_spi_pearson_*.nc'" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "384bdbde-fb3e-4087-87f5-4b543a60c5c8", | |
| "metadata": {}, | |
| "source": [ | |
| "Now lets try to do small editing on the metadata, so the file will reflected to SSI, instead of SPI.\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "4ab7d17a-61a8-4bf9-8598-2fcd6d46da36", | |
| "metadata": {}, | |
| "source": [ | |
| "This script below does the following:\n", | |
| "\n", | |
| "* Loops through each `.nc` file in the specified pattern.\n", | |
| "* Extracts the `xx` part of the filename using `awk`.\n", | |
| "* Checks if the variable `spi_gamma_${xx}_month` exists before attempting to rename it.\n", | |
| "* Renames the variable if it exists.\n", | |
| "* Modifies the `long_name` attribute of the renamed variable to \"Standardized Streamflow Index (Gamma), xx-month\".\n", | |
| "* Updates the global description attribute, replacing the SPI-related text with the corresponding SSI text.\n", | |
| "* Construct the new filename by replacing \"spi_gamma\" with \"ssi_gamma\" in the current filename.\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 44, | |
| "id": "996c4b83-e529-47b3-ab66-bb4f395231e8", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "!bash -c 'for file in idn_cli_spi_gamma_*_month.nc; do \\\n", | |
| " xx=$(echo \"$file\" | awk -F\"_\" \"{print \\$(NF-1)}\"); \\\n", | |
| " if ncdump -h \"$file\" | grep -q \"spi_gamma_${xx}_month\"; then \\\n", | |
| " ncrename -v spi_gamma_${xx}_month,ssi_gamma_${xx}_month \"$file\"; \\\n", | |
| " ncatted -a long_name,ssi_gamma_${xx}_month,m,c,\"Standardized Streamflow Index (Gamma), ${xx}-month\" \"$file\"; \\\n", | |
| " fi; \\\n", | |
| " if grep -q \"SPI for ${xx}-month scale computed from monthly precipitation input\" \"$file\"; then \\\n", | |
| " ncatted -a description,global,o,c,\"The Standardized Streamflow Index (SSI) for ${xx}-month scale computed from monthly river discharge input by the climate_indices package available from https://github.com/monocongo/climate_indices.\" \"$file\"; \\\n", | |
| " fi; \\\n", | |
| " new_file=$(echo \"$file\" | sed \"s/spi_gamma/ssi_gamma/\"); \\\n", | |
| " mv \"$file\" \"$new_file\"; \\\n", | |
| "done'\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "31397339-c2af-4218-be4a-bd14048a7c6a", | |
| "metadata": {}, | |
| "source": [ | |
| "Next, we need to re-rder the dimension back to `time`,`lat`,`lon` in order to follow the [CF Convention](https://cfconventions.org/conventions.html) and also for further processing using CDO, and CDO required the variable should be in `time`,`lat`,`lon`, while the output from SPI in `lat`,`lon`,`time`." | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "513bbe8c-b4a1-47ea-a4f6-358ebde6043a", | |
| "metadata": {}, | |
| "source": [ | |
| "Let's re-order the variables into `time`,`lat`,`lon` using `ncpdq` command from NCO and save the result to folder `08_ssi`" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 45, | |
| "id": "5843a8b3-6c4e-41c6-bb85-07a2245329d2", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "!bash -c 'for fl in *.nc; do ncpdq -a time,lat,lon $fl ../08_ssi/$fl; done'" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "ee7c6bbe-11c5-43fd-8029-742f44dba40b", | |
| "metadata": {}, | |
| "source": [ | |
| "Navigate to folder `08_ssi`" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 10, | |
| "id": "c510de7b-56be-4f03-a290-359f3678bbea", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "/Volumes/Datenspeicherung/Temp/drought/hyd/08_ssi\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "%cd ../08_ssi" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "601d888a-d2d9-48b8-995f-b6cfeaaac5ab", | |
| "metadata": {}, | |
| "source": [ | |
| "Check the header for the result one of the output file `idn_cli_ssi_gamma_12_month`" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 47, | |
| "id": "78df2a06-b48e-4ff4-a045-97dc8b113c64", | |
| "metadata": { | |
| "scrolled": true | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "netcdf idn_cli_ssi_gamma_12_month {\n", | |
| "dimensions:\n", | |
| "\tlat = 341 ;\n", | |
| "\tlon = 923 ;\n", | |
| "\ttime = 504 ;\n", | |
| "variables:\n", | |
| "\tdouble lat(lat) ;\n", | |
| "\t\tlat:_FillValue = NaN ;\n", | |
| "\t\tlat:standard_name = \"latitude\" ;\n", | |
| "\t\tlat:long_name = \"latitude coordinate\" ;\n", | |
| "\t\tlat:units = \"degrees_north\" ;\n", | |
| "\t\tlat:axis = \"Y\" ;\n", | |
| "\tdouble lon(lon) ;\n", | |
| "\t\tlon:_FillValue = NaN ;\n", | |
| "\t\tlon:standard_name = \"longitude\" ;\n", | |
| "\t\tlon:long_name = \"longitude coordinate\" ;\n", | |
| "\t\tlon:units = \"degrees_east\" ;\n", | |
| "\t\tlon:axis = \"X\" ;\n", | |
| "\tdouble time(time) ;\n", | |
| "\t\ttime:_FillValue = NaN ;\n", | |
| "\t\ttime:standard_name = \"time\" ;\n", | |
| "\t\ttime:bounds = \"time_bnds\" ;\n", | |
| "\t\ttime:axis = \"T\" ;\n", | |
| "\t\ttime:units = \"hours since 1981-01-01\" ;\n", | |
| "\t\ttime:calendar = \"proleptic_gregorian\" ;\n", | |
| "\tdouble ssi_gamma_12_month(time, lat, lon) ;\n", | |
| "\t\tssi_gamma_12_month:_FillValue = NaN ;\n", | |
| "\t\tssi_gamma_12_month:valid_min = -3.09 ;\n", | |
| "\t\tssi_gamma_12_month:valid_max = 3.09 ;\n", | |
| "\t\tssi_gamma_12_month:long_name = \"Standardized Streamflow Index (Gamma), 12-month\" ;\n", | |
| "\n", | |
| "// global attributes:\n", | |
| "\t\t:geospatial_lat_min = -11.0750009100884 ;\n", | |
| "\t\t:geospatial_lat_max = 5.92499934323132 ;\n", | |
| "\t\t:geospatial_lat_units = \"degrees_north\" ;\n", | |
| "\t\t:geospatial_lon_min = 94.9250040967017 ;\n", | |
| "\t\t:geospatial_lon_max = 141.025004783645 ;\n", | |
| "\t\t:geospatial_lon_units = \"degrees_east\" ;\n", | |
| "\t\t:NCO = \"netCDF Operators version 5.1.6 (Homepage = http://nco.sf.net, Code = http://github.com/nco/nco)\" ;\n", | |
| "\t\t:description = \"The Standardized Streamflow Index (SSI) for 12-month scale computed from monthly river discharge input by the climate_indices package available from https://github.com/monocongo/climate_indices.\" ;\n", | |
| "\t\t:history = \"Fri Dec 1 07:19:32 2023: ncpdq -a time,lat,lon idn_cli_ssi_gamma_12_month.nc ../08_ssi/idn_cli_ssi_gamma_12_month.nc\\nFri Dec 1 07:13:46 2023: ncatted -a description,global,o,c,The Standardized Streamflow Index (SSI) for 12-month scale computed from monthly river discharge input by the climate_indices package available from https://github.com/monocongo/climate_indices. idn_cli_spi_gamma_12_month.nc\\nFri Dec 1 07:13:25 2023: ncatted -a long_name,ssi_gamma_12_month,m,c,Standardized Streamflow Index (Gamma), 12-month idn_cli_spi_gamma_12_month.nc\\nFri Dec 1 07:13:24 2023: ncrename -v spi_gamma_12_month,ssi_gamma_12_month idn_cli_spi_gamma_12_month.nc\" ;\n", | |
| "}\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "!ncdump -h idn_cli_ssi_gamma_12_month.nc" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "8580597f-f4e2-4b43-a540-f6917d576579", | |
| "metadata": {}, | |
| "source": [ | |
| "Seems everything is correct from above result, congrats now we have the SSI data." | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "0d646fbc-22c5-4c24-91cc-f7a7c271b698", | |
| "metadata": {}, | |
| "source": [ | |
| "## 7. Visualising the SSI" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "741ad90d-7dca-4a54-ada4-2ae1adbb2729", | |
| "metadata": {}, | |
| "source": [ | |
| "To see the result, let's visualise it for the year 2022." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 48, | |
| "id": "f3b872bf-e389-4540-9f5f-52914364a464", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "iVBORw0KGgoAAAANSUhEUgAABa0AAAOlCAYAAABuQ8vxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd5gT1cIG8DdbQ9ulLL13aSJNRLqKoigiomChiF67cuXaFUEQ5bPjRcSCIDZAFLxXFEWlWFCKgGBZlQsCK6AusgtCWNg93x8ww2QyPTPJJHl/z7MPbMrkZDaZ95wzZ84JCCEEiIiIiIiIiIiIiIh8IC3eBSAiIiIiIiIiIiIikrDTmoiIiIiIiIiIiIh8g53WREREREREREREROQb7LQmIiIiIiIiIiIiIt9gpzURERERERERERER+QY7rYmIiIiIiIiIiIjIN9hpTURERERERERERES+wU5rIiIiIiIiIiIiIvINdloTERERERERERERkW+w05qIiIh8Z/bs2QgEAhg1alS8iyLr06cPAoEAli9fHnb7qFGjEAgEMHv27LiUy0wgEEAgEIh3MVLS888/j/bt2yMYDCIQCKBRo0YA/Pn59iO975zfTJ8+HYFAAHPnzo13UVJGaWkpWrRogSZNmqCkpCTexSGXJMp3noiIYoOd1kRERAlm+/btGDt2LNq2bYsKFSqgXLlyaNCgAU4//XTccccd+PDDDyOeM3v2bEyYMAHbtm2LfYEpIRUWFuKBBx5Ax44dUalSJWRnZ6Nu3bro0qULbrnlFrz99tsoKysLe86iRYswYcIEbNiwIT6F9pEXX3wR119/PTZv3owWLVqge/fu6NKlS7yL5djy5ct5AkTDgQMHMHHiRJx00km49NJLdR9XWFiIKVOmoG/fvqhduzaysrKQk5ODk046CVdeeSXmz5+PUCgUw5IntvT0dNxzzz3YunUrnnvuOde3//3332PatGkYMWIETjrpJKSlpSEQCOC1117TfY4QAp9//jnuuOMOnHbaaahcuTKysrJQp04dXHzxxVi2bJnr5UwkGzZswIQJE7Bo0aJ4F0W2c+dOPP3007jgggtQr149ZGVlITc3F926dcNTTz2Fw4cPGz5/3759uP3229G0aVMEg0HUrl0bV1xxBX744QfNx+/fvx+vvfYarrzySrRo0QLlypVD+fLl0aZNG9xxxx3YtWuX5vNCoRDeeecdXHPNNXLdLxgMolmzZrjhhhvwyy+/RL0viIh8SRAREVHC+OSTT0SlSpUEAJGeni4aNWokTj31VNGsWTMRCAQEAFGtWrWI5/Xu3VsAEMuWLYt9oR2YNWuWACBGjhwZ76LI9Pbh3XffLVq2bCneeeed+BTMBABht8r37bffipo1a8rPrVevnujSpYs46aSTREZGhnz7/v37w543cuRIAUDMmjXLxXeQmDp06CAAiAULFkTc58fPt5lly5Y5+ixFIxGOWxMnThQAxOzZs3Uf88orr8jHben71LlzZ9G2bVuRk5MTdvu6detiWPrEduTIEVG/fn2Rl5cnDhw44Oq2L7zwQvnvovx59dVXdZ/z8ccfy49LS0sTLVq0EB06dBAVK1aUb7///vtdLWcisXLci/V3vl69evLfpmbNmqJz586ibt268m2nnHKK+PPPPzWfu2vXLtGoUSMBQJQvX1507NhRVK9eXQAQ5cqVEytWrIh4zpVXXilvu1KlSuKUU04RzZs3F+np6XL9bfXq1RHPu//+++XnBYNB0a5dO9G6dWuRmZkpv/5///tf1/cPEVG8caQ1ERFRgiguLsbQoUOxf/9+DBgwAFu2bMHWrVvx9ddf4+eff8bevXsxe/ZsdO3aNd5FTSmPPPIIfvzxR1x00UXxLoorysrKMHToUOzZswddu3bF5s2bsWPHDqxevRo//PAD9u3bh7feegtnnXUWR90a+PHHHwEA5513XpxLQl4pLS3FjBkzUL58eQwZMkTzMc899xxGjhyJAwcO4KabbsL//vc/7NixA2vWrMGmTZuwd+9efP7557j00kvx22+/4aefforxu0hcGRkZuPzyy/Hnn3+6PjVL3bp1cfHFF2PKlCn49NNPcdppp5k+RwiBZs2aYfr06fjzzz+Rn5+Pb775BoWFhbjnnnsAAA899BDee+89V8tKzgWDQdx666349ttvsXv3bqxZswY7d+7Exx9/jBo1amDDhg247rrrNJ87atQobNu2DT169MD27duxbt06FBQU4JZbbsGhQ4dw6aWX4u+//4543qBBg/Dxxx9j7969WL9+PX766Sfk5+fj1FNPRWFhIS6++GIcOnQo7DlCCPTt2xeLFi3Cvn378O233+K7777Djh07cN555+HgwYO47LLLsHv3bk/2ExFRvLDTmoiIKEG8//77+PPPP5GTk4P58+ejYcOGYfdXrlwZI0eOxOLFi+NUQkoGUuc0ACxYsABt2rQJu79ChQoYMmQIli5digoVKsSjiAlB6nQoV65cnEtCXnnvvffw22+/YeDAgZrfhe+++w7//Oc/ARybLmbatGlo3Lhx2GPS09PRvXt3zJs3D59++ilq164di6InjWHDhgEAXnrpJVe3++yzz2LBggW466670LdvX2RnZ5s+59RTT8UPP/yAG264AVWqVJFvz8rKwsMPP4xzzz0XwLHPAvnD119/jalTp6Jdu3Zht5955pl45plnAAALFy5EYWFh2P1r167Fhx9+iIyMDLz++uuoVq0aACAzMxNPPfUUWrVqhT179uCFF14Ie97UqVOxcOFCnHnmmcjIyJBvb9q0KRYsWICsrCzs2LEDS5YsCXvebbfdhk8//RQXXnhh2GexZs2amDt3LmrUqIEDBw7gzTffjH6nEBH5CDutiYiIEsT//vc/AECLFi1Qvnx5S8+R5qFdsWIFAKBv377yvLTqxQO/+uor3HnnnejcuTNq1KiB7Oxs1K9fH8OHD8d3332nuf0JEyYgEAhgwoQJKCoqwj//+U80aNAA2dnZaNasGSZNmoSjR49qPlcIgZdeegmnnHIKypUrhxo1amDYsGGGczOWlpbi3XffxejRo9GmTRvk5uaifPnyaNWqFe688078+eefms9TLu60YcMGDBkyBDVr1kRaWlrYPvjzzz9x4403om7duggGg2jZsiUmTZqEI0eO6JZJayFG5fy/Rj9ai019+OGHGDhwIGrWrIns7GzUq1cPV111FbZs2aJbhm+//RYXXnghqlSpgooVK6Jr166ORx5Kn7O8vDzUq1fP0nO2bduGQCCAV155BQBw1VVXhb3PCRMmyI9Vzov89ttvo1evXqhcuTICgUDYnOt79+7FfffdJ8/fWalSJZx22ml48cUXI+bSBo7NLTpz5kxceOGFaNasGcqVK4fc3Fx07doVzzzzjO7nUFmehQsX4vTTT0fFihVRs2ZNjBw5Mmzk2qxZs9CpUydUqFABNWrUwPXXX4+ioqKw7TVq1ChsBLre983Id999h+HDh8tzrNasWRMXX3wxvvrqq4jHjhkzBoFAQO5gUTrppJMQCATQs2fPiPuU391oSe9527Zt+Oqrr3DuueeiSpUqqFChAnr27IlPP/1U97lOvnMSq9+Vn376CRUqVEB6erp8LFT6/fffUaNGDQQCAbzxxhuW3/e8efMAAAMGDNC8/5FHHkFJSQnOP/98XH311abb6927N3r37h12mxvHPOn4kJeXh5ycHJx11llYu3at/NjPPvsM/fv3R9WqVVGpUiUMGDBAvlJASfqeSwuKvvTSS+jQoQPKly+PunXr4tZbb8X+/fvlcj/xxBNo06YNypUrh3r16uHuu+/WXDTx0KFDePPNNzFs2DC0bNkSFStWRMWKFXHKKafgoYce0hytKjnllFNQt25dfPXVV9i+fbvpPvZSTk5OWEekWr9+/QDA0Wh6L/6eku3bt+OGG25A48aNkZ2djby8PJx77rn44IMPNB/vJPcbNWqEq666CgDwyiuvhB0X+/Tpo/k6P/74Iy655BLk5eWhXLly6NSpE+bPn29zzxmrWrWq7n1nn302gGNXH6nrJW+//TaAY3/TBg0ahN2Xnp6OkSNHAgDeeusty69Xv359nHTSSQAiPyNSp7gWKRu1nkdElPDiPD0JERERWfTvf/9bABC5ubnir7/+svScb775RnTv3l2eN7Vt27aie/fu8s/7778vP7Zp06bynIpt27YV7du3F7m5ufL8jFpzTI4fP14AEP/85z9Fq1atREZGhjjllFPkeR4BiGuuuUazbDfccIP8mEaNGomOHTuK7OxsUblyZXHvvfdqzn25Y8cOeb7Q2rVri44dO4qTTjpJBINBeTu7d++OeC1pnswHH3xQZGdni4oVK4pOnTqJJk2ayPMv79q1SzRp0kQAkN9H8+bNBQBx/vnni169emnOtak1j7O037V+Tj31VPl9q7c1ZswY+b4aNWqIDh06yH+7nJwc8cUXX0S8txUrVohy5crJj+ncubOoVauWACAeffRR2/MQ//e//xUARCAQEFu2bLH0nF27donu3buLGjVqCACiefPmYe955syZ8mOl8kyZMkWeR7RLly6ievXqYuvWrUIIITZv3izPK5qVlSVat24tmjZtKs/bPmTIEFFWVhZWhldffVV+fMOGDUWXLl1EkyZNRFpamgAgBgwYIEpLSyPKLpXnmWeekecVbt++vcjOzhYAROvWrcWhQ4fErbfeKgCIJk2aiDZt2shze/fu3TusLEOGDBHdu3eXt6v1fTOa2/Xdd9+VX7ty5cqic+fO8jypaWlp4oUXXgh7/IIF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7GoFOy6//HIBQLRo0SLiOEBElOg4pzUREVECuffee/Hpp5/ivPPOQ1ZWFoQQyM/Px+zZszFs2DC0aNFCc55kq3788UeMHz8egwcPRp8+fdCjRw/06NFDngd248aNms/r37+/5vzHXbp0AXBinmQAOHDgAL788ksAwA033BDxnFq1amHw4MGG5fz0009x2223YcCAAejVq5dczqKiIhw8eBA///yz5vOuvPJKpKVFVn8++ugjCCHQq1eviIUHAeCaa65BVlaWYZnMfPbZZxgzZgwyMzPx9ttvo379+vJ9q1atwu7du9GxY0d06NBB8/kDBw4EgLA5eT/88EMAwNVXX43MzMyI59x4442OyjpixAisWbMGQ4cOledP37p1K+bOnYurr74ajRs3jpir08lraHnnnXcAHNvnWk4++WQ0atQI//vf/7Bz586w+w4fPow33ngD//jHP3DOOeegZ8+e6NGjhzy/qN7nF4DmnMOnnHKK/P/Ro0dH3C/9rZSf72h89NFHAICbb75Z8/4xY8aEPU4izYO8cuVK+baVK1eiSpUquOaaa5CdnR32uZEe16tXL1fKLdH6m+Xl5clzICv3k9PvnNPvCgDUrl0bzz//PADg+uuvx9ChQ3HgwAHccsst8nzDVklzSevNUSvN7Wy0WGkwGIyY515vfl+nxzxpfnkl5boIWp97K59rre+D9H2pWrUqBg0aZGu7ZWVlePfdd3HTTTfh3HPPlb+7/fr1QyAQwM8//4yDBw9qlkX6G/zxxx+65Y2nb775Rv7uPvTQQ2jatKnjbbn595SOI//4xz8QDAYjnieV+csvv9ScV9xO7ts1evToiKzOzMxE+/bto962mZKSElx66aUoLCzEKaecgrvuuiviMaFQCAB06wXKxRKlRXmN3Hvvvfjss89QqVKliMUbjTz33HN44403kJ6ejtmzZxvOqU5ElIh4VCMiIkowffv2Rd++fXHo0CGsXbsWX3/9Nd5//30sX74c27dvx3nnnYdvvvlGXtDHqkceeQT333+/5iJ3kr1792rertcIr1GjBoBjHdWSX375BWVlZQgGg2jcuLHm81q1aqV5e0lJCYYOHYpFixbpltGonHrblRYv0ru/UqVKqFu3LrZu3Wr4unq2b9+Oiy++GEeOHMHzzz+PHj16hN2/adMmAMcWOlPfJ9m3bx8AoKCgwHK59W63okOHDpg7dy6OHDmC9evXY/Xq1ViyZAk++ugjFBYWYtiwYcjLy0Pfvn0dbV+vbNK+eOCBB/Dwww9rPkbqMCwoKJA7TbZv346zzz4b+fn5uq+p97kAtD/D1atXl//NycnRvV/5+Y6G9Pds3bq15v1S5+6ePXtQXFwsl6lXr16YMWMGVqxYgRtuuAF79+7F5s2bMXDgQJQvXx6nnnoqvvrqKxw+fDisA1u96F+0jI4D+fn5YfvJ6XfO6XdFcvHFF2P48OF49dVXsW7dOrRq1Qr/93//Z/zGNEidVsrOKXX5ARguIti9e3ccPnwYwLEOV61F1KI95un9TfLy8rB9+3bDz73e59rs+6D3mnrb3bdvH8477zysWrVK83mSv/76S3MR4nLlygGw1jkYa1u3bsX555+PUCiEyy+/HLfffntU23Pz72l2vGnevDmysrJQUlKCLVu24OSTT7ZUFq3ct8vLbRsRQmDUqFH4/PPPUbt2bSxcuFCzYzoYDOLgwYOaC4sCkL/XwInPp54ZM2bg0UcfRUZGBt58803LJzXee+893HrrrQCAZ599Ft26dbP0PCKiRMJOayIiogRVrlw59OzZEz179sTtt9+Ozz//HP3798fff/+NJ554Ai+++KLlba1cuRL33nsv0tPT8cgjj2DgwIFo2LAhypcvj0AggPvvvx+TJ0/GkSNHNJ+vN5pQGiklhJBvkxqbeXl5uuWpWbOm5u1TpkzBokWLUKtWLTz66KPo1asXatWqJXcc9ejRA1988YXtckplkhr3emVy0ml98OBBDBo0CH/88QduuOEGXHvttRGPKSoqAnCs48pstKCyY8as3Hr70Y7MzEyceuqpOPXUU3HzzTfju+++w9lnn43ffvsNDz/8sONOa72/hbQv1q1bZ7oN5b4YNWoU8vPz0bVrVzz44IM45ZRTULVqVWRmZuLo0aPyv3q0OsOkEY1a9ynvV36+oyH9PaWOGTXl33P//v1yx6HU+Sx1Rq9cuRJCCPn2Xr164bPPPsPq1avRrVs3fPnll8jIyMDpp5/uSrklTo4Ddr9zTr8rSmeccQZeffVVAMBll12mOcrUjDS6V+ogV6tbt658f1FREXJzcyMe88knn8j/f+211zB8+PCIx0R7zDP77Bp97vU42abyfvX3ZezYsVi1ahVatmyJhx9+GKeddhry8vLkzsJ69eqhoKBA9z1KHfZGmRIPu3fvRr9+/bBr1y4MGDAAs2fP1ty3t9xyC9avXx9x+4IFC1CrVq2w29z8e5odbwKBAKpXr46CggL5ygElO993u7zctpFbbrkFb775JqpWrYqPPvpIvkpErUqVKjh48CD++usvzfuVt1epUkX39ebNm4ebbroJgUAAs2fPxoABAyyVc+XKlbj00ktx9OhRPPzww7juuussPY+IKNFwehAiIqIk0aNHD3k6iNWrV9t67uuvvw4AuOOOO3D33XejdevWqFChgtzY3bFjh2vlrFixIoATo2W1/P7774blnD17NoYPH46GDRuGjXR0Wk6pTEadYHplMnP11Vdj/fr16N27N6ZOnWr4+ldccQXEsTVHdH+U07+YldtpmY20adMG9913HwD7nzMrpPf0888/m+4LaSqF3377DcuWLUP58uXx/vvv45xzzkHNmjXlKVPc/Px6SXrven+3PXv2yP+XRvICQJ06ddC0aVPs3r0bP/30U8RIamWn9rp163DgwAF06tRJfr14cPqdc/pdkRQUFGDs2LEAjnXKTZkyRXOEsxmpo09vhHP79u1Rvnx5CCHw+eef296+xKtjnl8cPXoU8+fPBwC8++67GDx4MOrUqSN3WB89ehS7d+823Ib0NzA6ARJre/fuRb9+/bBlyxb07t0bb731luYUTsCxqwe++OKLiB9pNL9XzI43Qgj5+6k83iSr++67D88++ywqVqyIDz74AG3bttV9bPPmzQHoT1Mi3Z6VlYWGDRtqPub999/H8OHDUVZWhmnTpuGKK66wVM5169bhggsuwKFDh3DnnXfinnvusfQ8IqJExE5rIiKiJNKkSRMAiLhk1Wzk3LZt2wBAd+Sl0VzAdjVr1gxpaWkIhULy66r98MMPmrcblbOwsFBzOgArWrRoAeDYnN5aDhw4EDF/shWPPPII5s6di4YNGxp2WkiXZ2/evNnW9s3Krbcfo+X0c2aFk33x66+/AgBOOukkzTmG3fz8ekn6e37//fea93/33XcAjo1AVk/PoJzXeuXKlcjNzZXnGD799NORmZmJ5cuXezaftV1Ov3NOvyvAiUv///rrL1xzzTUYO3YsDh48iOHDhxuOwtfSqlUrZGVloaCgAMXFxRH3Z2ZmyvM6P/fcc7bLKvHqmOcXf/zxB/7++29UrVoVLVu2jLh/8+bNKC0tNdyG9H3p2LGjJ2W068CBAzjvvPOwefNmdOnSBf/9738Np4hYvny55kkXvVG+bjE73vz8888oKSlBenp6VPNwS9zIB6889thjePjhhxEMBvHf//4Xp556quHju3btCgD44osvNO+Xbu/UqRPS09Mj7l+5ciWGDBmCI0eO4JFHHrG8/sQPP/yA/v37o7i4GNddd52jqY2IiBIJO62JiIgSxJ9//ml6Say0wKE0CkhiNuendL9yJKfko48+crXTr2LFivLcizNmzIi4f8+ePfJifHbK+cQTT5h2bug5++yzARxrSGo14F966SXduSv1vP/++7j//vtRvnx5vPvuu4ajAHv27Im8vDxs3LjR1kKaUrlnzpypeen89OnTbZUZOHZZs1kHntPPmRXSIpzPPPOM5UvApdf9/fffNZ/z6KOPOi5PLJ1zzjkAgGnTpmne/8wzz4Q9TknqhP7Pf/6DDRs2oEePHvKl9BUqVEDHjh2xatUqLF26FID781nb5fQ75/S7AgD//ve/8fHHH6Nx48Z46qmnMHnyZLRt2xarV6/WnT9dTzAYROfOnSGEwDfffKP5mLvvvhuZmZlYvHgxZs6caWv7Eq+OeX4hvb/i4mLN44aV7650xUfPnj3dLZwDhw8fxoUXXoivv/4abdq0wZIlS3w7Slk6jrz44ouao7ql40337t0NFxS1yq9zj7/wwgu48847kZmZibfeekt3MVQlKaeWLl2K7du3h91XWlqKV155BQAwZMiQiOcqR0rfc889uPvuuy2Vc9u2bejXrx/+/PNPXH755Y7ynYgo0bDTmoiIKEG89tprOOWUU/Diiy+isLAw7L59+/bhgQcewGuvvQYAuOqqq8Lul0bGStMGqEkLmk2ZMiVsDtk1a9Zg9OjRjuZ8NSItRjV16tSwBcb+/PNPXHHFFbqLQUrl/Ne//iXPxymEwJw5c/D44487LmezZs1w4YUXQgiBkSNHho3wXL58OSZMmKA7SlpLfn4+Lr/8cpSVlWHWrFlo37694eODwSAmTpwIALjkkkuwcOHCiM7XzZs346677gob2XXZZZehbt262LlzJ6677jq5M0AIgalTp+L999+3XGbJihUr0LJlSzz11FMRozgPHTqEZ555Rh7dpfc5k+ZUduK6665DkyZNsGzZMlxxxRXYtWtX2P0HDhzA/Pnz5SkegGNTllSpUgU7d+7E5MmT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evVCSUmJXN6qVavi8ssvx9y5c/G///0PF198cdhzvTzm+cUFF1yADz74AKeffjoOHTqE/Px8NGvWDK+99prm30vpzTffBADd77iUcdL87laFQiEUFhbKP9KUSQcOHAi7Xenw4cPy/3/++Wfd4/6aNWtslcVLXbt2xcaNG3HdddchLy8P3377LQ4cOICzzz4bixcvxqRJk1x7rbS0NCxevBhDhgxBeno6Vq9ejRUrVmDDhg1Rb1v6O9eoUQO1a9e2/DxpZH9xcbGtrAaOHb/Wr1+P2267DTVr1sSmTZsQCAQwbNgwrFu3TnOaEekzIoTAl19+qft66ilHlJ+ttWvX6j7PyaKyRER+FhDC4bWbREREREREKeyLL75Ajx49cPXVV+Oll16Kd3FSyi+//IKTTjoJ55xzDhYvXhxxf1lZGapWrQohBHbu3OnbuaUpek8++ST+9a9/4cEHH8QDDzwQ7+IQEZFLONKaiIiIiIjIge7du2PQoEGYM2cOfv3113gXJ6VI89dPmTJF8/7vvvsORUVFuPbaa9lhneS++OILlCtXDjfeeGO8i0JERC7KMH8IERERERERaXn88cfRvn177NixAw0bNox3cVJCaWkpmjVrhpdeegnt2rXTfMyXX36JjIwM3HrrrTEuHcXaqlWrMHz4cOTl5cW7KERE5CJOD0JEREREREREREREvsHpQYiIiIiIiIiIiIjIN9hpTURERERERERERES+wU5rIiIiIiIiIiIiIvINdloTERERERERERERkW+w05qIiIiIiIiIiIiIfIOd1kRERERERERERETkG+y0JiIiIiIiIiIiIiLfYKc1EREREREREREREfkGO62JiIiIiIiIiIiIyDfYaU1EREREREREREREvsFOayIiIiIiIiIiIiLyDXZaExEREREREREREZFvsNOaiIiIiIiIiIiIiHyDndZERERERERERERE5BvstCYiIiIiIiIiIiIi32CnNRERERERERERERH5BjutiYiIiIiIiIiIiMg32GlNRERERERERERERL7BTmsiIiIiIiIiIiIi8g12WhMRERERERERERGRb7DTmoiIiIiIiIiIiIh8g53WREREREREREREROQb7LQmIiIiIiIiIiIiIt9gpzURERERERERERER+QY7rYmIiIiIiIiIiIjIN9hpTURERERERERERES+wU5rIiIiIiIiIiIiIvINdloTERERERERERERkW+w05qIiIiIiIiIiIiIfIOd1kRERERERERERETkG+y0JiIiIiIiIiIiIiLfYKc1EREREREREREREfkGO62JiIiIiIiIiIiIyDfYaU1EREREREREREREvsFOayIiIiIiIiIiIiLyDXZaExEREREREREREZFvsNOaiIiIiIiIiIiIiHyDndZERERERERERERE5BvstCYiIiIiIiIiIiIi32CnNRERERERERERERH5BjutiYiIiIiIiIiIiMg32GlNRERERERERERERL7BTmsiIiIiIiIiIiIi8g12WhMRERERERERERGRb7DTmoiIiIiIiIiIiIh8g53WREREREREREREROQb7LQmIiIiIiIiIiIiIt9gpzURERERERERERER+QY7rYmIiIiIiIiIiIjIN9hpTURERERERERERES+wU5rIiIiIiIiIiIiIvINdloTERERERERERERkW+w05qIiIiIiIiIiIiIfIOd1kRERERERERERETkG+y0JiIiIiIiIiIiIiLfYKc1EREREREREREREfkGO62JiIiIiIiIiIiIyDfYaU1EREREREREREREvsFOa6IYmz17NgKBANauXRvvohAREVkm5ZfWz+233255O6NGjULFihU9LCkREZH7lDm4fPnyiPuFEGjWrBkCgQD69OkT07ItX74cgUAACxYsiOnrEhF5KSPeBSAiIiKixDFr1iycdNJJYbfVqVMnTqUhIiKKrUqVKmHmzJkRHdMrVqzAli1bUKlSpfgUjIgoybDTmogcKS0txdGjR5GdnR3vohARUQy1bdsWnTt3jstrCyEQCoVQrly5mLzeoUOHEAwGEQgEYvJ6RETkf0OHDsXrr7+OZ599Fjk5OfLtM2fORLdu3VBcXOzaax06dChmmUdE5DecHoQoztauXYthw4ahUaNGKFeuHBo1aoTLLrsMv/76a9jjpMvRli1bhhtuuAF5eXmoVq0aBg8ejN9++y3ssYFAABMmTIh4rUaNGmHUqFHy73/88QduvPFGtG7dGhUrVkSNGjVwxhln4LPPPgt73rZt2xAIBPDoo4/ioYceQuPGjZGdnY2lS5eicuXKuO666yJea9u2bUhPT8djjz3mfOcQEVFCmTdvHrp164YKFSqgYsWKOOecc7B+/XrNx3733Xc488wzUaFC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LpbuhISZ0zpWpD784uLiOJeEKHWUlJTEuwiUgKTjNM+96mOmEcUHc42cYK6ZY64RxR4zjZxirtn3n//8Bzh6GGl5rTx9nbQK1VGWUw/125+Fff/7Ouy+7OxsZGdnGz6/tLQUb731Fv7++29069bNs3Ky01pl//79AID69evHuSRERGTF/v37kZubG+9i+BIzjYgo8TDX9DHXiIgSD3PNuj179iBQrgoCad531wbK56FVlUMRf5vx48djwoQJms/ZtGkTunXrhlAohIoVK2LhwoVo3bq1Z2Vkp7VKnTp1sGPHDlSqVAmBQCDexYlQXFyM+vXrY8eOHby8wibuO+e475zjvnPObN8JIbB//37UqVMnDqVLDH7PNIDfkWhw3znHfecc951zzLXo+T3X+P1wjvvOOe4757jvnLOy75hr/teqVSt8+eWXYbcZjbJu2bIlNmzYgH379uHtt9/GyJEjsWLFCs86rtlprZKWloZ69erFuximcnJyeFB1iPvOOe4757jvnDPadzxjbyxRMg3gdyQa3HfOcd85x33nHHPNuUTJNX4/nOO+c477zjnuO+fM9h1zzd/S0tJsffazsrLQrFkzAEDnzp2xZs0aTJ06Fc8//7w35fNkq0RERERERERERESUlIQQOHz4sGfb50hrIiIiIiIiIiIiItJ077334txzz0X9+vWxf/9+zJ07F8uXL8eSJUs8e012WieY7OxsjB8/3nQlT4rEfecc951z3HfOcd+lBv6dneO+c477zjnuO+e475If/8bOcd85x33nHPedc9x3qWfPnj0YPnw4du3ahdzcXJx88slYsmQJ+vXr59lrBoQQwrOtExEREREREREREZGh559/Hjfc+RAymnjXESwp/X0ThvRognnz5nn+Wk5xTmsiIiIiIiIiIiIi8g12WhMRERERERERERGRb7DTmoiIiIiIiIiIiIh8g53WREREREREREREROQb7LT2gZUrV+KCCy5AnTp1EAgEsGjRorD7hRCYMGEC6tSpg3LlyqFPnz747rvvwh5z+PBh3HLLLcjLy0OFChUwcOBA7Ny5M4bvIj7M9t0777yDc845B3l5eQgEAtiwYUPENrjvIvfdkSNHcNddd6Fdu3aoUKEC6tSpgxEjRuC3334L2wb3nfbnbsKECTjppJNQoUIFVKlSBWeddRa+/vrrsMdw32nvO6XrrrsOgUAATz/9dNjtqbrvEglzzTnmmnPMNeeYa84x11IDc8055ppzzDXnmGvOMdfIT9hp7QN///032rdvj2nTpmne/+ijj+LJJ5/EtGnTsGbNGtSqVQv9+vXD/v375cf885//xMKFCzF37lx8/vnnOHDgAM4//3yUlpbG6m3Ehdm++/vvv9G9e3dMmTJFdxvcd5H77uDBg/jmm28wbtw4fPPNN3jnnXfw008/YeDAgWGP477T/ty1aNEC06ZNw6ZNm/D555+jUaNGOPvss/HHH3/Ij+G+0953kkWLFuHrr79GnTp1Iu5L1X2XSJhrzjHXnGOuOcdcc465lhqYa84x15xjrjnHXHOOuUa+IshXAIiFCxfKv5eVlYlatWqJKVOmyLeFQiGRm5srZsyYIYQQYt++fSIzM1PMnTtXfkxBQYFIS0sTS5YsiVnZ402975S2bt0qAIj169eH3c59d4zRvpOsXr1aABC//vqrEIL7TmJl3xUVFQkA4uOPPxZCcN9J9Pbdzp07Rd26dcXmzZtFw4YNxVNPPSXfx32XeJhrzjHXnGOuOcdcc465lhqYa84x15xjrjnHXHOOuRZ7M2bMEIGceiLzlKs8/0mr01lceuml8X7LhjjS2ue2bt2K3bt34+yzz5Zvy87ORu/evfHll18CANatW4cjR46EPaZOnTpo27at/BjSxn1nXVFREQKBACpXrgyA+86qkpISvPDCC8jNzUX79u0BcN8ZKSsrw/Dhw3HHHXegTZs2Efdz3yU+5pq3uO+sY645w1yzh7mW/Jhr3uK+s4655gxzzR7mGsVSRrwLQMZ2794NAKhZs2bY7TVr1sSvv/4qPyYrKwtVqlSJeIz0fNLGfWdNKBTC3Xffjcsvvxw5OTkAuO/MvPfeexg2bBgOHjyI2rVrY+nSpcjLywPAfWfk//7v/5CRkYFbb71V837uu8THXPMW9501zDX7mGvOMNeSH3PNW9x31jDX7GOuOcNco1jiSOsEEQgEwn4XQkTcpmblMaSN++6EI0eOYNiwYSgrK8P06dNNH899d0zfvn2xYcMGfPnll+jfvz8uvfRS/P7774bPSfV9t27dOkydOhWzZ8+2vR9Sfd8lIuZabHHfncBcc4a5Zh9zLbUw12KL++4E5pozzDX7mGsUa+y09rlatWoBQMQZqd9//10+m1+rVi2UlJTgr7/+0n0MaeO+M3bkyBFceuml2Lp1K5YuXSqftQe478xUqFABzZo1w2mnnYaZM2ciIyMDM2fOBMB9p+ezzz7D77//jgYNGiAjIwMZGRn49ddf8a9//QuNGjUCwH2XDJhr3uK+M8Zcc465Zh9zLTUw17zFfWeMueYcc80+5hrFGjutfa5x48aoVasWli5dKt9WUlKCFStW4PTTTwcAdOrUCZmZmWGP2bVrFzZv3iw/hrRx3+mTKkA///wzPv74Y1SrVi3sfu47e4QQOHz4MADuOz3Dhw/Ht99+iw0bNsg/derUwR133IEPP/wQAPddMmCueYv7Th9zzV3MNXPMtdTAXPMW950+5pq7mGvmmGsUa5zT2gcOHDiAX375Rf5969at2LBhA6pWrYoGDRrgn//8Jx5++GE0b94czZs3x8MPP4zy5cvj8ssvBwDk5ubi6quvxr/+9S9Uq1YNVatWxe2334527drhrLPOitfbigmzfbd3715s374dv/32GwAgPz8fwLGzf7Vq1eK+09l3derUwZAhQ/DNN9/gvffeQ2lpqTx6pGrVqsjKyuK+09l31apVw+TJkzFw4EDUrl0bhYWFmD59Onbu3IlLLrkEAL+zRt9ZdWU7MzMTtWrVQsuWLQGk9r5LJMw155hrzjHXnGOuOcdcSw3MNeeYa84x15xjrjnHXCNfERR3y5YtEwAifkaOHCmEEKKsrEyMHz9e1KpVS2RnZ4tevXqJTZs2hW3j0KFD4uabbxZVq1YV5cqVE+eff77Yvn17HN5NbJntu1mzZmneP378eHkb3HeR+27r1q2a9wEQy5Ytk7fBfRe57w4dOiQuuugiUadOHZGVlSVq164tBg4cKFavXh22De477e+sWsOGDcVTTz0Vdluq7rtEwlxzjrnmHHPNOeaac8y11MBcc4655hxzzTnmmnPMtfiaMWOGCOTUE5mnXOX5T1qdzuLSSy+N91s2FBBCCO3ubCIiIiIiIiIiIiLy2vPPP48b7nwIGU36ef5apb9vwpAeTTBv3jzPX8spzmlNRERERERERERERL7BTmsiIiIiIiIiIiIi8g12WhMRERERERERERGRb7DTmoiIiIiIiIiIiIh8g53WREREREREREREROQb7LQmIiIiIiIiIiIiIt9gpzURERERERERERER+QY7rYlSwLZt2xAIBLBhwwZPth8IBLBo0SJPtk1ERKTETCMiomTCXCMi0sZOa6IYGDVqFAYNGhS3169fvz527dqFtm3bAgCWL1+OQCCAffv2xa1MRESUmJhpRESUTJhrRET+lBHvAhCR99LT01GrVq14F4OIiChqzDQiIkomzDUiIm0caU0UZytWrMCpp56K7Oxs1K5dG3fffTeOHj0q39+nTx/ceuutuPPOO1G1alXUqlULEyZMCNvGjz/+iB49eiAYDKJ169b4+OOPwy4DU15ytm3bNvTt2xcAUKVKFQQCAYwaNQoA0KhRIzz99NNh2z7llFPCXu/nn39Gr1695NdaunRpxHsqKCjA0KFDUaVKFVSrVg0XXnghtm3bFu2uIiIin2OmERFRMmGuERHFDzutieKooKAA5513Hrp06YKNGzfiueeew8yZM/HQQw+FPe6VV15BhQoV8PXXX+PRRx/FxIkT5QpIWVkZBg0ahPLly+Prr7/GCy+8gPvuu0/3NevXr4+3334bAJCfn49du3Zh6tSplspbVlaGwYMHIz09HV999RVmzJiBu+66K+wxBw8eRN++fVGxYkWsXLkSn3/+OSpWrIj+/fujpKTEzu4hIqIEwkwjIqJkwlwjIoovTg9CFEfTp09H/fr1MW3aNAQCAZx00kn47bffcNddd+GBBx5AWtqx80onn3wyxo8fDwBo3rw5pk2bhk8++QT9+vXDRx99hC1btmD58uXyZWWTJ09Gv379NF8zPT0dVatWBQDUqFEDlStXtlzejz/+GD/88AO2bduGevXqAQAefvhhnHvuufJj5s6di7S0NLz00ksIBAIAgFmzZqFy5cpYvnw5zj77bHs7iYiIEgIzjYiIkglzjYgovthpTRRHP/zwA7p16yZXGACge/fuOHDgAHbu3IkGDRoAOFYRUqpduzZ+//13AMfOwNevXz9sHrRTTz3Vs/I2aNBArgQBQLdu3cIes27dOvzyyy+oVKlS2O2hUAhbtmzxpFxERBR/zDQiIkomzDUiovhipzVRHAkhwipB0m0Awm7PzMwMe0wgEEBZWZnuNpxKS0uTX19y5MiRiLKpy6JUVlaGTp064fXXX494bPXq1V0pJxER+Q8zjYiIkglzjYgovthpTRRHrVu3xttvvx1Wmfnyyy9RqVIl1K1b19I2TjrpJGzfvh179uxBzZo1AQBr1qwxfE5WVhYAoLS0NOz26tWrY9euXfLvxcXF2Lp1a1h5t2/fjt9++w116tQBAKxatSpsGx07dsS8efNQo0YN5OTkWHoPRESU+JhpRESUTJhrRETxxYUYiWKkqKgIGzZsCPu59tprsWPHDtxyyy348ccf8e6772L8+PEYO3asPEeamX79+qFp06YYOXIkvv32W3zxxRfy4h56Z/UbNmyIQCCA9957D3/88QcOHDgAADjjjDPw6quv4rPPPsPmzZsxcuRIpKeny88766yz0LJlS4wYMQIbN27EZ599FrGQyBVXXIG8vDxceOGF+Oyzz7B161asWLECY8aMwc6dO53sOiIi8hlmGjONiCiZMNeYa0TkP+y0JoqR5cuXo0OHDmE/48ePx/vvv4/Vq1ejffv2uP7663H11Vfj/vvvt7zd9PR0LFq0CAcOHECXLl1wzTXXyM8PBoOaz6lbty4efPBB3H333ahZsyZuvvlmAMA999yDXr164fzzz8d5552HQYMGoWnTpvLz0tLSsHDhQhw+fBinnnoqrrnmGkyePDls2+XLl8fKlSvRoEEDDB48GK1atcLo0aNx6NAhns0nIkoSzDRmGhFRMmGuMdeIyH8CQmviIyJKaF988QV69OiBX375JawiQ0RElGiYaURElEyYa0Sk5/nnn8cNdz6EjCb9PH+t0t83YUiPJpg3b57nr+UU57QmSgILFy5ExYoV0bx5c/zyyy8YM2YMunfvzkoQERElHGYaERElE+YaEZEz7LQmSgL79+/HnXfeiR07diAvLw9nnXUWnnjiiXgXi4iIyDZmGhERJRPmGhGRM5wehIiIiIiIiIiIiCiOOD1IOC7ESERERERERERERES+wU5rIiIiIiIiIiIiIvINdloTERERERERERERkW+w05qIiIiIiIiIiIiIfIOd1kRERERERERERETkG+y0JiIiIiIiIiIiIiLfYKc1UQJ55plnEAgE0LZtW89eY8KECQgEAmG39enTB3369PHsNYmIKPXMnj0bgUAAgUAAy5cvj7hfCIFmzZohEAgwg4iIyLekPFu7dm28i0JElFTYaU2UQF5++WUAwHfffYevv/7ak9e45pprsGrVKk+2TUREpFapUiXMnDkz4vYVK1Zgy5YtqFSpUhxKRURERERE8cROa6IEsXbtWmzcuBEDBgwAAM0GfjQOHjwIAKhXrx5OO+00V7dNRESkZ+jQoXj77bdRXFwcdvvMmTPRrVs3NGjQIE4lIyIiIiKieGGnNVGCkDqpp0yZgtNPPx1z586VO5oBYNu2bQgEAnj00UcxefJkNGjQAMFgEJ07d8Ynn3wSti1pCpBvvvkGQ4YMQZUqVdC0adOw+4iIiGLhsssuAwC8+eab8m1FRUV4++23MXr06IjHP/jgg+jatSuqVq2KnJwcdOzYETNnzoQQQn7M1VdfjapVq4blpOSMM85AmzZtPHgnRERE+lMrjho1Co0aNZJ/l9pvjz/+OJ588kk0btwYFStWRLdu3fDVV19FPH/t2rUYOHAgqlatimAwiA4dOmD+/PkevhMiovhipzVRAjh06BDefPNNdOnSBW3btsXo0aOxf/9+vPXWWxGPnTZtGpYsWYKnn34ar732GtLS0nDuuedqTvkxePBgNGvWDG+99RZmzJgRi7dCREQUJicnB0OGDJGnwAKOdWCnpaVh6NChEY/ftm0brrvuOsyfPx/vvPMOBg8ejFtuuQWTJk2SHzNmzBj89ddfeOONN8Ke+/3332PZsmW46aabvHtDRERENjz77LNYunQpnn76abz++uv4+++/cd5556GoqEh+zLJly9C9e3fs27cPM2bMwLvvvotTTjkFQ4cOxezZs+NXeCIiD2XEuwBEZG7BggUoKirC1VdfDeDYpdT//Oc/MXPmTIwcOTLssaWlpVi6dCmCwSAA4JxzzkGjRo3wwAMPYOnSpWGPHTlyJB588MHYvAkiIiIdo0ePRt++ffHdd9+hTZs2ePnll3HJJZdozmc9a9Ys+f9lZWXo06cPhBCYOnUqxo0bh0AggJNPPhn/z965x0tVlf//c7iOIqCCcgsETU9ekNTIW9YxTSHUDmbB1+qIWtTXTMzsq1YEKt6/ipgRkCCcbpyyoFKhC4VampIBkl/FSxqKID8xOd4GEOb3B2dt1qxZa++19177MjOf9+t1XuecmX1Zs2ZmfdbzrGc9z8c+9jF8//vfxxe/+EXv+DvvvBO9evVCS0tLKq+LEEIICaJnz56499570blzZwDAwIED8eEPfxhLlizB+PHjAQAXXXQRDj/8cPzpT39Cly673Dinn346XnvtNXzrW99CS0sLOnViTCIhpLbgqEZIFTB37lzsscce3qRlr732wmc+8xk89NBDePbZZ8uOPfvssz2HNbBrEnTmmWfiwQcfxI4dO8qO/fSnP5184wkhhJAAPvaxj+Gggw7CvHnzsGbNGqxYsUKbGgQA/vSnP+HUU09F79690blzZ3Tt2hXf/e53sXnzZmzatMk7btKkSVi1ahX++te/AgDa29vxox/9COeddx722muvVF4XIYQQEsSYMWM8hzUAHHnkkQCAf//73wCA5557Dk8//TQ+97nPAQDee+897+eTn/wkNmzYgLVr16bfcEIISRg6rQnJOc899xwefPBBjBkzBqVSCW+88QbeeOMNnHPOOQBQtp0aAPr3719xjf79+2Pbtm146623yh4fMGBAcg0nhBBCLGloaMD555+PH//4x5g1axYOOeQQnHTSSRXHPfbYYzjttNMAAD/84Q/x17/+FStWrMC3v/1tALvSaQk+9alPYejQofj+978PAJg/fz7efvttpgYhhBCSK/r06VP2f/fu3QHs1rRXX30VAHD55Zeja9euZT8XXXQRAOC1115LscWEEJIOTA9CSM6ZN28eSqUS7rnnHtxzzz0Vzy9YsADTpk3z/t+4cWPFMRs3bkS3bt0qIstYcJEQQkhemDBhAr773e9i1qxZuO6667THLFy4EF27dsW9995btqto8eLFFcd26tQJX/3qV/Gtb30Lt956K2bOnIlTTjkFjY2NSb0EQgghBIVCoSwftSCqY7lv374AgKuuugpnn3229hhqGyGkFqHTmpAcs2PHDixYsAAHHXQQ7rrrrorn7733Xtx6661YsmQJjjjiCADAr371K9xyyy2eMf/mm2/it7/9LU466aSybWeEEEJInhg0aBC++c1v4umnn66o1yBoaGhAly5dyvTs3XffxY9+9CPt8V/84hcxdepUfO5zn8PatWtx0003JdJ2QgghRDB06FD84he/wNatW72o6c2bN+Phhx9Gr169Ql+vsbERBx98MFavXo3rr7/edXMJISS30GlNSI5ZsmQJXnnlFdx0001oamqqeP6II47AnXfeiblz52L69OkAgM6dO+MTn/gELrvsMuzcuRM33XQT2tvbWXCREEJI7rnxxht9nx8zZgxuu+02nHvuuZg4cSI2b96M//3f//WcAip77703Wlpa8IMf/AAHHHAAzjzzzCSaTQghhHi7WL/whS9g9uzZ+PznP48vfelL2Lx5M26++eZIDmvB7NmzMXr0aJx++umYMGECBg0ahNdffx1PPfUU/vGPf+AXv/iFq5dBCCG5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mWdw1llnlR3HvtN/7g455BDceeedWLNmDf7yl79g6NChOO200/D//t//845h3+n7TrB48WI8+uijGDhwYMVz9dp31QR1LTrUtehQ16JDXYsOda0+oK5Fh7oWHepadKhr0aGukVxRIrkCQGnRokXe/zt37iz179+/dOONN3qPFYvFUu/evUuzZs0qlUql0htvvFHq2rVraeHChd4x69evL3Xq1Km0dOnS1NqeNWrfybzwwgslAKWVK1eWPc6+24Vf3wkee+yxEoDSv//971KpxL4T2PTdli1bSgBKf/zjH0ulEvtOYOq7l19+uTRo0KDSP//5z9IBBxxQmj59uvcc+676oK5Fh7oWHepadKhr0aGu1QfUtehQ16JDXYsOdS061LX0mTVrVmnUqFGld999N/Gf66+/vvTZz34265fsCyOtc84LL7yAjRs34rTTTvMe6969Oz72sY/h4YcfBgA8/vjj2L59e9kxAwcOxBFHHOEdQ/Sw7+zZsmULGhoasPfeewNg39mybds2zJkzB71798aIESMAsO/82LlzJ77whS/gm9/8Jg4//PCK59l31Q91LVnYd/ZQ16JBXQsHda32oa4lC/vOHupaNKhr4aCukTTpknUDiD8bN24EAPTr16/s8X79+uHf//63d0y3bt2wzz77VBwjzid62Hd2FItFXHnllTj33HPRq1cvAOy7IO69916MHz8e77zzDgYMGIA//OEP6Nu3LwD2nR833XQTunTpgksuuUT7PPuu+qGuJQv7zg7qWnioa9GgrtU+1LVkYd/ZQV0LD3UtGtQ1kiaMtK4SGhoayv4vlUoVj6nYHEP0sO92s337dowfPx47d+7EzJkzA49n3+3i5JNPxqpVq/Dwww9j1KhR+OxnP4tNmzb5nlPvfff4449jxowZmD9/fuh+qPe+q0aoa+nCvtsNdS0a1LXwUNfqC+paurDvdkNdiwZ1LTzUNZI2dFrnnP79+wNAxYrUpk2bvNX8/v37Y9u2bfjPf/5jPIboYd/5s337dnz2s5/FCy+8gD/84Q/eqj3AvguiR48eeP/734/jjjsOc+fORZcuXTB37lwA7DsTDz30EDZt2oQhQ4agS5cu6NKlC/7973/jG9/4BoYOHQqAfVcLUNeShX3nD3UtOtS18FDX6gPqWrKw7/yhrkWHuhYe6hpJGzqtc86wYcPQv39//OEPf/Ae27ZtGx544AGccMIJAIBjjjkGXbt2LTtmw4YN+Oc//+kdQ/Sw78yICdCzzz6LP/7xj+jTp0/Z8+y7cJRKJWzduhUA+87EF77wBTzxxBNYtWqV9zNw4EB885vfxO9+9zsA7LtagLqWLOw7M9Q1t1DXgqGu1QfUtWRh35mhrrmFuhYMdY2kDXNa54C33noLzz33nPf/Cy+8gFWrVmHffffFkCFDcOmll+L666/HwQcfjIMPPhjXX3899txzT5x77rkAgN69e+PCCy/EN77xDfTp0wf77rsvLr/8cgwfPhynnnpqVi8rFYL67vXXX8e6devwyiuvAADWrl0LYNfqX//+/dl3hr4bOHAgzjnnHPzjH//Avffeix07dnjRI/vuuy+6devGvjP0XZ8+fXDdddfhrLPOwoABA7B582bMnDkTL7/8Mj7zmc8A4HfW7zurTra7du2K/v37o7GxEUB99101QV2LDnUtOtS16FDXokNdqw+oa9GhrkWHuhYd6lp0qGskV5RI5vz5z38uAaj4Oe+880qlUqm0c+fO0pQpU0r9+/cvde/evfTRj360tGbNmrJrvPvuu6WLL764tO+++5b22GOP0hlnnFFat25dBq8mXYL67u6779Y+P2XKFO8a7LvKvnvhhRe0zwEo/fnPf/auwb6r7Lt33323NHbs2NLAgQNL3bp1Kw0YMKB01llnlR577LGya7Dv9N9ZlQMOOKA0ffr0ssfqte+qCepadKhr0aGuRYe6Fh3qWn1AXYsOdS061LXoUNeiQ13LllmzZpVGjRpVevfddxP/uf7660uf/exns37JvjSUSqWS3p1NCCGEEEIIIYQQQgghJGlmz56NxYsXY9GiRYnfa/r06Vi1ahXa2toSv1dUmNOaEEIIIYQQQgghhBBCSG6g05oQQgghhBBCCCGEEEJIbqDTmhBCCCGEEEIIIYQQQkhuoNOaEEIIIYQQQgghhBBCSG6g05oQQgghhBBCCCGEEEJIbqDTmhBCCCGEEEIIIYQQQkhuoNOaEEIIIYQQQgghhBBCSG6g05qQOuDFF19EQ0MDVq1alcj1GxoasHjx4kSuTQghhMhQ0wghhNQS1DVCCNFDpzUhKTBhwgQ0Nzdndv/Bgwdjw4YNOOKIIwAAy5cvR0NDA954443M2kQIIaQ6oaYRQgipJahrhBCST+i0JqQO6Ny5M/r3748uXbpk3RRCCCEkFtQ0QgghtQR1jRBSTcycORPDhg1DoVDAMcccg4ceeiixe9FpTUjGPPDAA/jwhz+M7t27Y8CAAbjyyivx3nvvec83NTXhkksuwf/8z/9g3333Rf/+/TF16tSyazz99NP4yEc+gkKhgMMOOwx//OMfy7aByVvOXnzxRZx88skAgH322QcNDQ2YMGECAGDo0KG4/fbby679wQ9+sOx+zz77LD760Y969/rDH/5Q8ZrWr1+PcePGYZ999kGfPn3wqU99Ci+++GLcriKEEJJzqGmEEEJqCeoaIYTspq2tDZdeeim+/e1vY+XKlTjppJMwevRorFu3LpH70WlNSIasX78en/zkJzFy5EisXr0aP/jBDzB37lxMmzat7LgFCxagR48eePTRR3HzzTfjmmuu8SYgO3fuRHNzM/bcc088+uijmDNnDr797W8b7zl48GD88pe/BACsXbsWGzZswIwZM6zau3PnTpx99tno3Lkz/va3v2HWrFm44ooryo555513cPLJJ2OvvfbCgw8+iL/85S/Ya6+9MGrUKGzbti1M9xBCCKkiqGmEEEJqCeoaIYSUc9ttt+HCCy/EF7/4RRx66KG4/fbbMXjwYPzgBz9I5H7cf0JIhsycORODBw/GnXfeiYaGBnzgAx/AK6+8giuuuALf/e530anTrnWlI488ElOmTAEAHHzwwbjzzjuxbNkyfOITn8Dvf/97PP/881i+fDn69+8PALjuuuvwiU98QnvPzp07Y9999wUA7L///th7772t2/vHP/4RTz31FF588UW8733vAwBcf/31GD16tHfMwoUL0alTJ9x1111oaGgAANx9993Ye++9sXz5cpx22mnhOokQQkhVQE0jhBBSS1DXCCG1zs6dO9He3l72WPfu3dG9e/eKY7dt24bHH38cV155Zdnjp512Gh5++OFE2kenNSEZ8tRTT+H444/3JgwAcOKJJ+Ktt97Cyy+/jCFDhgDYNRGSGTBgADZt2gRg1wr84MGDvUkQAHz4wx9OrL1DhgzxJkEAcPzxx5cd8/jjj+O5555Dz549yx4vFot4/vnnE2kXIYSQ7KGmEUIIqSWoa4SQTNj8MrC8Nfn7PP84nnrqafTu3bvs4SlTplSkOQKA1157DTt27EC/fv3KHu/Xrx82btyYSBPptCYkQ0qlUtkkSDwGoOzxrl27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9ebMmYMvf/nL+PSnP43p06djy5YtuPrqq7F169bIbfzkJz+JHTt24Oabb8aQIUPw2muv4eGHH8Ybb7wBYJeRf84556B3796YOXMmAKB79+6R70cIISRdjj/+eNx111245JJL8LnPfQ5HH300unbtWnHc9ddfj+985zs4//zz8Z3vfAfbtm3DLbfcgpNOOgmPPfYYDjvsMO/Y7du345Of/CS+/OUv48orr8TDDz+MadOm4d///jd++9vfAgAeeeQRfPzjH8fJJ5+MyZMnAwB69eoFYJfD+sMf/jA6deqE7373uzjooIPwyCOPYNq0aXjxxRdx9913l7Xt+9//Po488kh8//vfxxtvvIFvfOMbOPPMM3Hssceia9eumDdvHv7973/j8ssvxxe/+EX85je/KTt/1apVuPTSSzF16lT0798fP/nJTzBp0iRs27YNl19+OQDgnXfewcc+9jG8/PLL+Na3voUjjzwSTz75JL773e9izZo1+OMf/4iGhgbvmosXL8ZDDz2E7373u+jfvz/2339/B+8WIYSYodOakDrmkksuwcknn4zf/va3aG5uBgC88sorWLRoESZPnqyNTiCEEEJM3HPPPdiyZQsuvPBCAMC4ceNw6aWXYu7cuaGd1jt37sSUKVNw7LHH4p577vEe/8hHPoL3v//9GDhwYOj2bd68GWvXrsXtt9+Oz3/+897jZ599tvf3UUcdhT322AO9evXCcccdF/oehBBCsuXGG2/E008/je9973v43ve+h65du2LkyJE488wzcfHFF2OvvfbCSy+9hClTpuDiiy8ui0D+xCc+gYMPPhhXX311Wf7rbdu24Rvf+AYuueQS77iuXbvi29/+Nv7617/ixBNPxHHHHYdOnTphv/32q9CPqVOn4j//+Q+efPJJDBkyBABwyimnYI899sDll1+Ob37zm2VO8r333huLFy/2IsNfe+01XHrppfjABz6AX//6195xTz/9NG6//Xa0t7d7DnJgl023cuVKjBgxAgAwevRobNq0Cddeey0uuugi7LnnnrjjjjvwxBNP4NFHH8WHPvQhr02DBg3COeecg6VLl2L06NHeNd966y2sWbMG++yzT7w3iBBCLGF6EELqmKamJowYMQLf//73vcdmzZqFhoYGTJw4McOWEUIIqUbmzp2LPfbYA+PHjwcA7LXXXvjMZz6Dhx56CM8++2yoa61duxYbN27EZz/72bLHhwwZghNPPDFS+/bdd18cdNBBuOWWW3Dbbbdh5cqV2LlzZ6RrEUIIySd9+vTBQw89hBUrVuDGG2/Epz71KTzzzDO46qqrMHz4cLz22mv43e9+h/feew8tLS147733vJ9CoYCPfexjFemmAOBzn/tc2f/nnnsuAODPf/5zYJvuvfdenHzyyRg4cGDZ/YRT+IEHHig7/pOf/GRZKpNDDz0UADBmzJiy48Tj69atK3v88MMP9xzWcnvb29vxj3/8w2vTEUccgQ9+8INlbTr99NO1Kbc+/vGP02FNCEkVOq0JqXMuueQSLFu2DGvXrsX27dvxwx/+EOeccw769++fddMIIYRUEc899xwefPBBjBkzBqVSCW+88QbeeOMNnHPOOQCAefPmhbre5s2bAQD9+vWreE73mA0NDQ1YtmwZTj/9dNx88804+uijsd9+++GSSy7Bm2++GemahBBC8smHPvQhXHHFFfjFL36BV155BV//+tfx4osv4uabb8arr74KABg5ciS6du1a9tPW1obXXnut7FpdunRBnz59yh4T9pLQKz9effVV/Pa3v6241+GHHw4AFffbd999y/7v1q2b7+PFYlHbNr/2vvrqq3jiiScq2tSzZ0+USqWKNg0YMCDwdRJCiEu495+QKqdQKGDLli0Vj6uTDBPnnnsurrjiCnz/+9/Hcccdh40bN+KrX/2q62YSQgipcebNm4dSqYR77rmnLJ2HYMGCBZg2bRoKhQIAVOSlVnVLOAeEY0Fm48aNZf/bXhMADjjgAK9Y5DPPPIOf//znmDp1KrZt24ZZs2b5vkZCCCHVSdeuXTFlyhRMnz4d//znP/GpT30KwK60VgcccEDg+e+99x42b95c5rgWWqQ6s3X07dsXRx55JK677jrt81FSXvmh6qT8mGhv3759scceexgXlfv27Vv2v5zfmhBC0oBOa0KqnKFDh+IXv/gFtm7d6hWK2rx5Mx5++OGyvGYmCoUCJk6ciDvvvBMPP/wwPvjBD0bedk0IIaQ+2bFjBxYsWICDDjoId911V8Xz9957L2699VYsWbLEy5v5xBNP4PTTT/eOUYtINTY2on///vj5z3+Oyy67zHt83bp1ePjhh8sM/KFDh1pdU+WQQw7Bd77zHfzyl7/0tksDuwovvvvuuxavnBBCSN7YsGGDNir4qaeeArDLQXz66aejS5cueP755/HpT3/a6ro/+clPvJzWAPDTn/4UwK6UiwKTfpxxxhm4//77cdBBB6WSYuPJJ5/E6tWry1KE/PSnP0XPnj1x9NFHe226/vrr0adPHwwbNizxNhFCSFjotCakShEr3V/4whcwe/ZsfP7zn8eXvvQlbN68GTfffLOVw1pw0UUX4eabb8bjjz+udTYQQgghfixZsgSvvPIKbrrppjLjXXDEEUfgzjvvxNy5c3HGGWfg1FNPxQ033IB99tkHBxxwAJYtW4Zf/epXZed06tQJV199Nb785S/jnHPOwQUXXIA33ngDV199NQYMGFCW67N///5W13ziiSdw8cUX4zOf+QwOPvhgdOvWDX/605/wxBNP4Morr/SOGz58OBYuXIi2tjYceOCBKBQKGD58uNtOI4QQkginn3463ve+9+HMM8/EBz7wAezcuROrVq3Crbfeir322guTJk3C0KFDcc011+Db3/42/vWvf2HUqFHYZ5998Oqrr+Kxxx5Djx49cPXVV3vX7NatG2699Va89dZbGDlyJB5++GFMmzYNo0ePxkc+8hHvuOHDh2P58uX47W9/iwEDBqBnz55obGzENddcgz/84Q844YQTcMkll6CxsRHFYhEvvvgi7r//fsyaNQvve9/7nPXBwIEDcdZZZ2Hq1KkYMGAAfvzjH+MPf/gDbrrpJuy5554AgEsvvRS//OUv8dGPfhRf//rXceSRR2Lnzp1Yt24dfv/73+Mb3/gGjj32WGdtIoSQsNBpTUiV8c477wCAF1V94oknYsGCBV6RkQMPPBBTpkzB/fffry0gomPQoEH4yEc+gieeeMIrKEIIIYTYMnfuXHTr1g3nn3++9vm+ffti7NixuOeee/Dqq6/iRz/6Eb72ta/hiiuuwI4dO3DmmWfiZz/7mReFLZg4cSIaGhpw8803Y+zYsRg6dCiuvPJK/PrXv64oOmVzzf79++Oggw7CzJkz8dJLL6GhoQEHHnggbr31Vnzta1/zjrv66quxYcMGfOlLX8Kbb76JAw44AC+++KK7DiOEEJIY3/nOd/DrX/8a06dPx4YNG7B161YMGDAAp556Kq666iqveOFVV12Fww47DDNmzMDPfvYzbN26Ff3798fIkSPxla98peyaXbt2xb333otLLrkE06ZNwx577IEvfelLuOWWW8qOmzFj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CR4773jsvOOx8465lrmo5xq/H97x2HnHY+cdj513To4dc40yxUZrRZs2bXDwwQeHvRu2unXrxpOqRzx23vHYecdj553VseMVe2u5kmkAvyOZ4LHzjsfOOx4775hr3uVKrvH74R2PnXc8dt7x2Hlnd+yYa5QJLsRIRERERERERERERJHBRmsiIiIiIiIiIiIiigw2WueYDh06YPr06ejQoUPYu5JzeOy847HzjsfOOx67wsC/s3c8dt7x2HnHY+cdj13+49/YOx4773jsvOOx847HjrIhZhiGEfZOEBERERERERERERWquXPn4t4bbsFYHBT4a9ViFwZcfg4WL14c+Gt5xZ7WRERERERERERERBQZbLQmIiIiIiIiIiIioshgozURERERERERERERRQYbrYmIiIiIiIiIiIgoMthoHQGvvvoqLrzwQpSVlSEWi6GmpiblfsMwMGPGDJSVlaFjx44oLy/Hv//975THNDY24gc/+AF69eqFzp07Y9y4cdi8eXMW30U47I7d008/jXPPPRe9evVCLBbDqlWr0rbBY5d+7Pbt24c77rgDQ4cORefOnVFWVoaqqips2bIlZRs8dvrP3YwZM3DkkUeic+fO6NGjB8466yysWLEi5TE8dvpjJ/ve976HWCyGhx56KOX2Qj12uYS55h1zzTvmmnfMNe+Ya4WBueYdc8075pp3zDXvmGsUJWy0joAvv/wSw4YNw8MPP6y9/xe/+AV+/etf4+GHH8bbb7+N0tJSnH322di9e3fyMTfffDOeeeYZLFq0CK+//jr27NmDCy64AM3Nzdl6G6GwO3ZffvklRo0ahfvvv990Gzx26cfuq6++wnvvvYdp06bhvffew9NPP43//d//xbhx41Iex2On/9x94xvfwMMPP4zVq1fj9ddfx6BBg3DOOefg888/Tz6Gx05/7ISamhqsWLECZWVlafcV6rHLJcw175hr3jHXvGOuecdcKwzMNe+Ya94x17xjrnnHXKNIMShSABjPPPNM8veWlhajtLTUuP/++5O3JRIJo7i42Hj00UcNwzCMnTt3Gu3btzcWLVqUfExdXZ3Rpk0bY+nSpVnb97Cpx062fv16A4CxcuXKlNt57FpZHTvhrbfeMgAYn376qWEYPHaCk2O3a9cuA4Dx4osvGobBYyeYHbvNmzcb/fr1Mz744ANj4MCBxoMPPpi8j8cu9zDXvGOuecdc84655h1zrTAw17xjrnnHXPOOueYdcy37Hn30UWMAOhrfw8DAf05Gd+Pyyy8P+y1bYk/riFu/fj22bduGc845J3lbhw4dcPrpp+ONN94AALz77rvYt29fymPKyspwzDHHJB9Dejx2zu3atQuxWAzdu3cHwGPnVFNTE+bNm4fi4mIMGzYMAI+dlZaWFlx11VX40Y9+hKOPPjrtfh673MdcCxaPnXPMNW+Ya+4w1/Ifcy1YPHbOMde8Ya65w1yjbGoX9g6QtW3btgEA+vTpk3J7nz598OmnnyYfU1RUhB49eqQ9Rjyf9HjsnEkkErjzzjsxfvx4dOvWDQCPnZ3nnnsOlZWV+Oqrr9C3b1+88MIL6NWrFwAeOys///nP0a5dO9x0003a+3nsch9zLVg8ds4w19xjrnnDXMt/zLVg8dg5w1xzj7nmDXONsok9rXNELBZL+d0wjLTbVE4eQ3o8dgfs27cPlZWVaGlpwZw5c2wfz2PXavTo0Vi1ahXeeOMNjBkzBpdffjm2b99u+ZxCP3bvvvsuZs+ejYULF7o+DoV+7HIRcy27eOwOYK55w1xzj7lWWJhr2cVjdwBzzRvmmnvMNco2NlpHXGlpKQCkXZHavn178mp+aWkpmpqa8MUXX5g+hvR47Kzt27cPl19+OdavX48XXnghedUe4LGz07lzZxx++OE4+eST8dhjj6Fdu3Z47LHHAPDYmXnttdewfft2DBgwAO3atUO7du3w6aef4oc//CEGDRoEgMcuHzDXgsVjZ4255h1zzT3mWmFgrgWLx84ac8075pp7zDXKNjZaR9whhxyC0tJSvPDCC8nbmpqa8Morr+CUU04BAJxwwglo3759ymO2bt2KDz74IPkY0uOxMycKQJ988glefPFFlJSUpNzPY+eOYRhobGwEwGNn5qqrrsL777+PVatWJX/Kysrwox/9CH//+98B8NjlA+ZasHjszDHX/MVcs8dcKwzMtWDx2JljrvmLuWaPuUbZxjmtI2DPnj1Yu3Zt8vf169dj1apV6NmzJwYMGICbb74Z9957L4444ggcccQRuPfee9GpUyeMHz8eAFBcXIxrr70WP/zhD1FSUoKePXvitttuw9ChQ3HWWWeF9baywu7Y7dixAxs3bsSWLVsAAGvWrAHQevWvtLSUx87k2JWVleHSSy/Fe++9h+eeew7Nzc3J3iM9e/ZEUVERj53JsSspKcGsWbMwbtw49O3bF/X19ZgzZw42b96Myy67DAC/s1bfWbWw3b59e5SWlmLw4MEACvvY5RLmmnfMNe+Ya94x17xjrhUG5pp3zDXvmGveMde8Y65RpBgUupdfftkAkPZz9dVXG4ZhGC0tLcb06dON0tJSo0OHDsZpp51mrF69OmUbe/fuNSZPnmz07NnT6Nixo3HBBRcYGzduDOHdZJfdsVuwYIH2/unTpye3wWOXfuzWr1+vvQ+A8fLLLye3wWOXfuz27t1rXHzxxUZZWZlRVFRk9O3b1xg3bpzx1ltvpWyDx07/nVUNHDjQePDBB1NuK9Rjl0uYa94x17xjrnnHXPOOuVYYmGveMde8Y655x1zzjrkWrkcffdQYgI7G9zAw8J+T0d24/PLLw37LlmKGYRj65mwiIiIiIiIiIiIiCtrcuXNx7w23YCwOCvy1arELAy4/B4sXLw78tbzinNZEREREREREREREFBlstCYiIiIiIiIiIiKiyGCjNRERERERERERERFFBhutiYiIiIiIiIiIiCgy2GhNRERERERERERERJHBRmsiIiIiIiIiIiIiigw2WhMRERERERERERFRZLDRmqgAbNiwAbFYDKtWrQpk+7FYDDU1NYFsm4iISMZMIyKifMJcIyLSY6M1URZMmDABFRUVob1+//79sXXrVhxzzDEAgGXLliEWi2Hnzp2h7RMREeUmZhoREeUT5hoRUTS1C3sHiCh4bdu2RWlpadi7QURElDFmGhER5RPmGhGRHntaE4XslVdewUknnYQOHTqgb9++uPPOO/H1118n7y8vL8dNN92E22+/HT179kRpaSlmzJiRso2PP/4Yp556KuLxOIYMGYIXX3wxZRiYPORsw4YNGD16NACgR48eiMVimDBhAgBg0KBBeOihh1K2fdxxx6W83ieffILTTjst+VovvPBC2nuqq6vDFVdcgR49eqCkpAQXXXQRNmzYkOmhIiKiiGOmERFRPmGuERGFh43WRCGqq6vDeeedhxEjRqC2tha/+93v8Nhjj+Gee+5Jedzjjz+Ozp07Y8WKFfjFL36BmTNnJgsgLS0tqKioQKdOnbBixQrMmzcPP/nJT0xfs3///njqqacAAGvWrMHWrVsxe/ZsR/vb0tKCSy65BG3btsWbb76JRx99FHfccUfKY7766iuMHj0aXbp0wauvvorXX38dXbp0wZgxY9DU1OTm8BARUQ5hphERUT5hrhERhYvTgxCFaM6cOejfvz8efvhhxGIxHHnkkdiyZQvuuOMO/OxnP0ObNq3XlY499lhMnz4dAHDEEUfg4YcfxksvvYSzzz4b//jHP7Bu3TosW7YsOaxs1qxZOPvss7Wv2bZtW/Ts2RMAcNBBB6F79+6O9/fFF1/ERx99hA0bNuDggw8GANx7770YO3Zs8jGLFi1CmzZt8Pvf/x6xWAwAsGDBAnTv3h3Lli3DOeec4+4gERFRTmCmERFRPmGuERGFi43WRCH66KOPMHLkyGSBAQBGjRqFPXv2YPPmzRgwYACA1oKQrG/fvti+fTuA1ivw/fv3T5kH7aSTTgpsfwcMGJAsBAHAyJEjUx7z7rvvYu3atejatWvK7YlEAuvWrQtkv4iIKHzMNCIiyifMNSKicLHRmihEhmGkFILEbQBSbm/fvn3KY2KxGFpaWky34VWbNm2Sry/s27cvbd/UfZG1tLTghBNOwBNPPJH22N69e/uyn0REFD3MNCIiyifMNSKicLHRmihEQ4YMwVNPPZVSmHnjjTfQtWtX9OvXz9E2jjzySGzcuBGfffYZ+vTpAwB4++23LZ9TVFQEAGhubk65vXfv3ti6dWvy94aGBqxfvz5lfzdu3IgtW7agrKwMALB8+fKUbRx//PFYvHgxDjroIHTr1s3ReyAiotzHTCMionzCXCMiChcXYiTKkl27dmHVqlUpP5MmTcKmTZvwgx/8AB9//DGeffZZTJ8+HbfeemtyjjQ7Z599Ng477DBcffXVeP/99/Gvf/0rubiH2VX9gQMHIhaL4bnnnsPnn3+OPXv2AADOOOMM/OEPf8Brr72GDz74AFdffTXatm2bfN5ZZ52FwYMHo6qqCrW1tXjttdfSFhL5zne+g169euGiiy7Ca6+9hvXr1+OVV17BlClTsHnzZi+HjoiIIoaZxkwjIsonzDXmGhFFDxutibJk2bJlGD58eMrP9OnT8be//Q1vvfUWhg0bhhtuuAHXXnstfvrTnzrebtu2bVFTU4M9e/ZgxIgRuO6665LPj8fj2uf069cPd911F+6880706dMHkydPBgBMnToVp512Gi644AKcd955qKiowGGHHZZ8Xps2bfDMM8+gsbERJ510Eq677jrMmjUrZdudOnXCq6++igEDBuCSSy7BUUcdhYkTJ2Lv3r28mk9ElCeYacw0IqJ8wlxjrhFR9MQM3cRHRJTT/vWvf+HUU0/F2rVrUwoyREREuYaZRkRE+YS5RkRm5s6di3tvuAVjcVDgr1WLXRhw+TlYvHhx4K/lFee0JsoDzzzzDLp06YIjjjgCa9euxZQpUzBq1CgWgoiIKOcw04iIKJ8w14iIvGGjNVEe2L17N26//XZs2rQJvXr1wllnnYUHHngg7N0iIiJyjZlGRET5hLlGROQNpwchIiIiIiIiIiIiChGnB0nFhRiJiIiIiIiIiIiIKDLYaE1EREREREREREREkcFGayIiIiIiIiIiIiKKDDZaExEREREREREREVFksNGaiIiIiIiIiIiIiCKDjdZEREREREREREREFBlstCYKwZtvvonLLrsMffv2RVFREUpLS3HppZdi+fLlrrf14YcfYsaMGdiwYYPn/ZkwYQK6dOni+flERJQ/Fi5ciFgshng8jk8//TTt/vLychxzzDEh7Jm/ZsyYgVgshv/85z9h7woREQVI5Jr4icfjKC0txejRo3Hfffdh+/btYe+iL/Iln4mIBDZaE2XZb3/7W4waNQqbN2/GL37xC7z44ov41a9+hbq6Opx66ql4+OGHXW3vww8/xF133ZVRozUREZGqsbERP/3pT8PeDSIiIl8sWLAAy5cvxwsvvIBHHnkExx13HH7+85/jqKOOwosvvhj27hERkaJd2DtAVEj+9a9/4eabb8Z5552HZ555Bu3aHfgKVlZW4uKLL8aUKVMwfPhwjBo1KsQ9DcZXX32FTp06hb0bRETkwJgxY/DHP/4Rt912G4YNGxb27uQsZh8RUTQcc8wxOPHEE5O/f/vb38Ytt9yCU089FZdccgk++eQT9OnTJ8Q9zA179+5Fx44dw94NIioA7GlNlEX33XcfYrEYfve736U0WANAu3btMGfOHMRiMdx///3J2z/++GNceeWV6NOnDzp06IABAwagqqoKjY2NWLhwIS677DIAwOjRo5ND3hYuXJh8/vz58zFs2DDE43H07NkTF198MT766CPt/v373//GmWeeic6dO6N3796YPHkyvvrqq5THGIaBOXPm4LjjjkPHjh3Ro0cPXHrppfi///u/lMeJ4WmvvvoqTjnlFHTq1AkTJ07M5PAREVEW3X777SgpKcEdd9xh+bhEIoGpU6fikEMOQVFREfr164f/+q//ws6dO5OPqaiowMCBA9HS0pL2/G9+85s4/vjjk7+7zZnly5fjlFNOQceOHTFo0CAsWLAAALBkyRIcf/zx6NSpE4YOHYqlS5dq93/Tpk245JJL0K1bNxQXF+O73/0uPv/887THLV68GCNHjkTnzp3RpUsXnHvuuVi5cmXKY8R0W6tXr8Y555yDrl274swzz7Q8fkREFJ4BAwbggQcewO7duzF37tzk7e+88w7GjRuHnj17Ih6PY/jw4XjyySfTnl9XV4dJkyahf//+KCoqQllZGS699FJ89tlnycc0NDTgtttuS8nJm2++GV9++WXKtmKxGCZPnowFCxZg8ODB6NixI0488US8+eabMAwDv/zlL3HIIYegS5cuOOOMM7B27Vrte3rttddw8skno2PHjujXrx+mTZuG5ubmlMc0NTXhnnvuwZFHHokOHTqgd+/euOaaa9Lyb9CgQbjgggvw9NNPY/jw4YjH47jrrrtcH2ciIi/YaE2UJc3NzXj55Zdx4okn4uCDD9Y+pn///jjhhBPwz3/+E83NzaitrcWIESPw5ptvYubMmXj++edx3333obGxEU1NTTj//PNx7733AgAeeeQRLF++HMuXL8f5558PoLWR/Nprr8XRRx+Np59+GrNnz8b777+PkSNH4pNPPkl57X379uG8887DmWeeiZqaGkyePBlz587FFVdckfK4733ve7j55ptx1llnoaamBnPmzMG///1vnHLKKSmFMwDYunUrvvvd72L8+PH429/+hhtvvNGvw0lERAHr2rUrfvrTn+Lvf/87/vnPf2ofYxgGKioq8Ktf/QpXXXUVlixZgltvvRWPP/44zjjjDDQ2NgIAJk6ciI0bN6Zt5+OPP8Zbb72Fa665Jnmbm5zZtm0brrnmGlx33XV49tlnMXToUEycOBEzZ87E1KlTcfvtt+Opp55Cly5dUFFRgS1btqS9h4svvhiHH344/vznP2PGjBmoqanBueeei3379iUfc++99+LKK6/EkCFD8OSTT+IPf/gDdu/ejW9961v48MMPU7bX1NSEcePG4YwzzsCzzz7Lyj0RUcSdd955aNu2LV599VUAwMsvv4xRo0Zh586dePTRR/Hss8/iuOOOwxVXXJHSOaiurg4jRozAM888g1tvvRXPP/88HnroIRQXF+OL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RwBAeXk5AOCCCy6AYRioq6vDiSeemPYzdOhQZweCiIhyyllnnYWzzz4bM2fOxJ49e5K3iyxRs+app57Cl19+mZY111xzDVasWIHXX38df/3rX3H11Vejbdu2yfvDyBk1+5588kl8/fXXyew799xz0a5dO6xbt067TyeeeKLv+0RERNmxceNG3HbbbSguLsb3vvc9DB48GEcccQRqa2tNz/miUXfs2LF4+eWXk9OF6FxwwQVYt24dSkpKtNsaNGiQr+9n9+7d+Mtf/pJy2x//+Ee0adMGp512WnKf6uvr0dzcrN0n0ShPRBQ29rQmyqJRo0bhoYcews0334xTTz0VkydPxoABA7Bx40Y88sgjWLFiBR566CGccsopAIBf//rXOPXUU/HNb34Td955Jw4//HB89tln+Mtf/oK5c+eia9euOOaYYwAA8+bNQ9euXRGPx3HIIYegpKQE06ZNw49//GNUVVXhyiuvRH19Pe666y7E43FMnz49Zd+KiorwwAMPYM+ePRgxYgTeeOMN3HPPPRg7dixOPfXU5P5PmjQJ11xzDd555x2cdtpp6Ny5M7Zu3YrXX38dQ4cOxfe///3sHlQiIsqKn//85zjhhBOwfft2HH300QCAs88+G+eeey7uuOMONDQ0YNSoUXj//fcxffp0DB8+HFdddVXKNq688krceuutuPLKK9HY2Jg2F3YYOfP000+jXbt2OPvss/Hvf/8b06ZNw7Bhw3D55ZcDAAYNGoSZM2fiJz/5Cf7v//4PY8aMQY8ePfDZZ5/hrbfeQufOnXHXXXf5uk9EROS/Dz74IDl/8/bt2/Haa69hwYIFaNu2LZ555pnkiKG5c+di7NixOPfcczFhwgT069cPO3bswEcffYT33nsP//M//wMAmDlzJp5//nmcdtpp+PGPf4yhQ4di586dWLp0KW699VYceeSRuPnmm/HUU0/htNNOwy233IJjjz0WLS0t2LhxI/7xj3/ghz/8Ib75zW/69h5LSkrw/e9/Hxs3bsQ3vvEN/O1vf8P/+3//D9///vcxYMAAAK3Tfj3xxBM477zzMGXKFJx00klo3749Nm/ejJdffhkXXXQRLr74Yt/2iYjIKzZaE2XZD37wA4wYMQIPPPAAfvjDH6K+vh49e/bEqaeeitdffx0jR45MPnbYsGF46623MH36dEydOhW7d+9GaWkpzjjjjOQ8ZocccggeeughzJ49G+Xl5WhubsaCBQswYcIETJ06FQcddBB+85vfYPHixejYsSPKy8tx77334ogjjkjZr/bt2+O5557DTTfdhHvuuQcdO3bE9ddfj1/+8pcpj5s7dy5OPvlkzJ07F3PmzEFLSwvKysowatQonHTSScEfQCIiCsXw4cNx5ZVXJkfhAK1DhmtqajBjxgwsWLAAs2bNQq9evXDVVVfh3nvvTZvOo7i4GBdffDH++Mc/YtSoUdqFnbKdM08//TRmzJiB3/3ud4jFYrjwwgvx0EMPJXMWaB0pNWTIEMyePRt/+tOf0NjYiNLSUowYMQI33HCD7/tERET+E2soFBUVoXv37jjqqKNwxx134LrrrkuZ4mr06NF46623MGvWLNx888344osvUFJSgiFDhiQvaAJAv379knW1+++/H/X19ejduzdOPfXU5BzUnTt3xmuvvYb7778f8+bNw/r169GxY0cMGDAAZ511lu89rUtLS/HII4/gtttuw+rVq9GzZ0/8+Mc/Trm42rZtW/zlL3/B7Nmz8Yc//AH33Xcf2rVrh4MPPhinn346R88SUWTEDLFMLhERERERERERERFl3dy5c3HvDbdgLA4K/LVqsQsDLj8HixcvDvy1vOKc1kREREREREREREQUGWy0JiIiIiIiIiIiIqLIYKM1EREREREREREREUUGG62JiIiIiIiIiIiIKGPjxo3DgAEDEI/H0bdvX1x11VXYsmWL6+2w0ZqIiIiIiIiIiIiIMjZ69Gg8+eSTWLNmDZ566imsW7cOl156qevttAtg34iIiIiIiIiIiIiowNxyyy3J/w8cOBB33nknKioqsG/fPrRv397xdthorWhpacGWLVvQtWtXxGKxsHeHiIhMGIaB3bt3o6ysDG3acOCQDjONiCh3MNfsMdeIiHIHc829WCyGJrRk5bWaYOCdJ59Dw/9rSLm9Q4cO6NChg2+vs2PHDjzxxBM45ZRTXDVYA2y0TrNlyxb0798/7N0gIiKHNm3ahIMPPjjs3YgkZhoRUe5hrpljrhER5R7mmnMXXngh/ut7N+AzNKIP/Gs4VjWhBR9iNy664jIUFxen3Dd9+nTMmDEj49e444478PDDD+Orr77CySefjOeee871NmKGYRgZ70ke2bVrF7p37461a9eid+/eYe8OERGZaGhoQP/+/bFz5860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uVnHgYiIKJvc5FPlsH6BLVRMROQEG60VYraUhoaGkPeEqDCcd0hXft/IE/G54SxX5phpROFoamoKexcoBzHX7DHXiLKPmUZeMdcoU2y0VuzevRsA0L9//5D3hIiInNi9ezeKi4vD3o1IYqYREeUe5po55hoRUe5hrpFXXIhR0dLSgi1btqBr166IxWJh706ahoYG9O/fH5s2beJE9i7x2HnHY+cdj513dsfOMAzs3r0bZWVlaNOGSzToRD3TAH5HMsFj5x2PnXc8dt4x1zIX9Vzj98M7HjvveOy847HzzsmxY65RptjTWtGmTRscfPDBYe+GrW7duvGk6hGPnXc8dt7x2Hlndex4xd5armQawO9IJnjsvOOx847Hzjvmmne5kmv8fnjHY+cdj513PHbe2R075hplgpc6iIiIiIiIiIiIiCgy2GhNRERERERERERERJHBRusc06FDB0yfPh0dOnQIe1dyDo+ddzx23vHYecdjVxj4d/aOx847HjvveOy847HLf/wbe8dj5x2PnXc8dt7x2FE2cCFGIiIiIiIiIiIiIooM9rQmIiIiIiIiIiIioshgozURERERERERERERRQYbrYmIiIiIiIiIiIgoMthoTURERERERERERESRwUbrCHj11Vdx4YUXoqysDLFYDDU1NSn3G4aBGTNmoKysDB07dkR5eTn+/e9/pzymsbERP/jBD9CrVy907twZ48aNw+bNm7P4LsJhd+yefvppnHvuuejVqxdisRhWrVqVtg0eu/Rjt2/fPtxxxx0YOnQoOnfujLKyMlRVVWHLli0p2+Cx03/uZsyYgSOPPBKdO3dGjx49cNZZZ2HFihUpj+Gx0x872fe+9z3EYjE89NBDKbcX6rHLJcw175hr3jHXvGOuecdcKwzMNe+Ya94x17xjrnnHXKMoYaN1BHz55ZcYNmwYHn74Ye39v/jFL/DrX/8aDz/8MN5++22Ulpbi7LPPxu7du5OPufnmm/HMM89g0aJFeP3117Fnzx5ccMEFaG5uztbbCIXdsfvyyy8xatQo3H///abb4LFLP3ZfffUV3nvvPUybNg3vvfcenn76afzv//4vxo0bl/I4Hjv95+4b3/gGHn74YaxevRqvv/46Bg0ahHPOOQeff/558jE8dvpjJ9TU1GDFihUoKytLu69Qj10uYa55x1zzjrnmHXPNO+ZaYWCuecdc84655h1zzTvmGkWKQZECwHjmmWeSv7e0tBilpaXG/fffn7wtkUgYxcXFxqOPPmoYhmHs3LnTaN++vbFo0aLkY+rq6ow2bdoYS5cuzdq+h009drL169cbAIyVK1em3M5j18rq2AlvvfWWAcD49NNPDcPgsROcHLtdu3YZAIwXX3zRMAweO8Hs2G3evNno16+f8cEHHxgDBw40HnzwweR9PHa5h7nmHXPNO+aad8w175hrhYG55h1zzTvmmnfMNe+YaxQ29rSOuPXr12Pbtm0455xzkrd16NABp59+Ot544w0AwLvvvot9+/alPKasrAzHHHNM8jGkx2Pn3K5duxCLxdC9e3cAPHZONTU1Yd68eSguLsawYcMA8NhZaWlpwVVXXYUf/ehHOProo9Pu57HLfcy1YPHYOcdc84a55g5zLf8x14LFY+ccc80b5po7zDXKpnZh7wBZ27ZtGwCgT58+Kbf36dMHn376afIxRUVF6NGjR9pjxPNJj8fOmUQigTvvvBPjx49Ht27dAPDY2XnuuedQWVmJr776Cn379sULL7yAXr16AeCxs/Lzn/8c7dq1w0033aS9n8cu9zHXgsVj5wxzzT3mmjfMtfzHXAsWj50zzDX3mGveMNcom9jTOkfEYrGU3w3DSLtN5eQxpMdjd8C+fftQWVmJlpYWzJkzx/bxPHatRo8ejVWrVuGNN97AmDFjcPnll2P79u2Wzyn0Y/fuu+9i9uzZWLhwoevjUOjHLhcx17KLx+4A5po3zDX3mGuFhbmWXTx2BzDXvGGuucdco2xjo3XElZaWAkDaFant27cnr+aXlpaiqakJX3zxheljSI/Hztq+fftw+eWXY/369XjhhReSV+0BHjs7nTt3xuGHH46TTz4Zjz32GNq1a4fHHnsMAI+dmddeew3bt2/HgAED0K5dO7Rr1w6ffvopfvjDH2LQoEEAeOzyAXMtWDx21phr3jHX3GOuFQbmWrB47Kwx17xjrrnHXKNsY6N1xB1yyCEoLS3FCy+8kLytqakJr7zyCk455RQAwAknnID27dunPGbr1q344IMPko8hPR47c6IA9Mknn+DFF19ESUlJyv08du4YhoHGxkYAPHZmrrrqKrz//vtYtWpV8qesrAw/+tGP8Pe//x0Aj10+YK4Fi8fOHHPNX8w1e8y1wsBcCxaPnTnmmr+Ya/aYa5RtnNM6Avbs2YO1a9cmf1+/fj1WrVqFnj17YsCAAbj55ptx77334ogjjsARRxyBe++9F506dcL48eMBAMXFxbj22mvxwx/+ECUlJejZsyduu+02DB06FGeddVZYbysr7I7djh07sHHjRmzZsgUAsGbNGgCtV/9KS0t57EyOXVlZGS699FK89957eO6559Dc3JzsPdKzZ08UFRXx2Jkcu5KSEsyaNQvjxo1D3759UV9fjzlz5mDz5s247LLLAPA7a/WdVQvb7du3R2lpKQYPHgygsI9dLmGuecdc84655h1zzTvmWmFgrnnHXPOOueYdc8075hpFikGhe/nllw0AaT9XX321YRiG0dLSYkyfPt0oLS01OnToYJx22mnG6tWrU7axd+9eY/LkyUbPnj2Njh07GhdccIGxcePGEN5NdtkduwULFmjvnz59enIbPHbpx279+vXa+wAYL7/8cnIbPHbpx27v3r3GxRdfbJSVlRlFRUVG3759jXHjxhlvvfVWyjZ47PTfWdXAgQONBx98MOW2Qj12uYS55h1zzTvmmnfMNe+Ya4WBueYdc8075pp3zDXvmGsUJTHDMAx9czYRERERERERERERUXZxTmsiIiIiIiIiIiIiigw2WhMRERERERERERFRZLDRmoiIiIiIiIiIiIgig43WRERERERERERERBQZbLQmIiIiIiIiIiIioshgozURERERERERERERRQYbrYmIiIiIiIiIiIgoMthoTVQANmzYgFgshlWrVgWy/VgshpqamkC2TUREJGOmERFRPmGuERHpsdGaKAsmTJiAioqK0F6/f//+2Lp1K4455hgAwLJlyxCLxbBz587Q9omIiHITM42IiPIJc42IKJrahb0DRBS8tm3borS0NOzdICIiyhgzjYiI8glzjYhIjz2tiUL2yiuv4KSTTkKHDh3Qt29f3Hnnnfj666+T95eXl+Omm27C7bffjp49e6K0tBQzZsxI2cbHH3+MU089FfF4HEOGDMGLL76YMgxMHnK2YcMGjB49GgDQo0cPxGIxTJgwAQAwaNAgPPTQQynbPu6441Je75NPPsFpp52WfK0XXngh7T3V1dXhiiuuQI8ePVBSUoKLLroIGzZsyPRQERFRxDHTiIgonzDXiIjCw0ZrohDV1dXhvPPOw4gRI1BbW4vf/e53eOyxx3DPPfekPO7xxx9H586dsWLFCvziF7/AzJkzkwWQlpYWVFRUoFOnTlixYgXmzZuHn/zkJ6av2b9/fzz11FMAgDVr1mDr1q2YPXu2o/1taWnBJZdcgrZt2+LNN9/Eo48+ijvuuCPlMV999RVGjx6NLl264NVXX8Xrr7+OLl26YMyYMWhqanJzeIiIKIcw04iIKJ8w14iIwsXpQYhCNGfOHPTv3x8PP/wwYrEYjjzySGzZsgV33HEHfvazn6FNm9brSsceeyymT58OADjiiCPw8MMP46WXXsLZZ5+Nf/zjH1i3bh2WLVuWHFY2a9YsnH322drXbNu2LXr27AkAOOigg9C9e3fH+/viiy/io48+woYNG3DwwQcDAO69916MHTs2+ZhFixahTZs2+P3vf49YLAYAWLBgAbp3745ly5bhnHPOcXeQiIgoJzDTiIgonzDXiIjCxUZrohB99NFHGDlyZLLAAACjRo3Cnj17sHnzZgwYMABAa0FI1rdvX2zfvh1A6xX4/v37p8yDdtJJJwW2vwMGDEgWggBg5MiRKY959913sXbtWnTt2jXl9kQigXXr1gWyX0REFD5mGhER5RPmGhFRuNhoTRQiwzBSCkHiNgApt7dv3z7lMbFYDC0tLabb8KpNmzbJ1xf27duXtm/qvshaWlpwwgkn4Iknnkh7bO/evX3ZTyIiih5mGhER5RPmGhFRuNhoTRSiIUOG4KmnnkopzLzxxhvo2rUr+vXr52gbRx55JDZu3IjPPvsMffr0AQC8/fbbls8pKioCADQ3N6fc3rt3b2zdujX5e0NDA9avX5+yvxs3bsSWLVtQVlYGAFi+fHnKNo4//ngsXrwYBx10ELp16+boPRARUe5jphERUT5hrhERhYsLMRJlya5du7Bq1aqUn0mTJmHTpk34wQ9+gI8//hjPPvsspk+fjltvvTU5R5qds88+G4cddhiuvvpqvP/++/jXv/6VXNzD7Kr+wIEDEYvF8Nxzz+Hzzz/Hnj17AABnnHEG/vCHP+C1117DBx98gKuvvhpt27ZNPu+ss87C4MGDUVVVhdraWrz22mtpC4l85zvfQa9evXDRRRfhtddew/r16/HKK69gypQp2Lx5s5dDR0REEcNMY6YREeUT5hpzjYiih43WRFmybNkyDB8+POVn+vTp+Nvf/oa33noLw4YNww033IBrr70WP/3pTx1vt23btqipqcGePXswYsQIXHfddcnnx+Nx7XP69euHu+66C3feeSf69OmDyZMnAwCmTp2K0047DRdccAHOO+88VFRU4LDDDks+r02bNnjmmWfQ2NiIk046Cddddx1mzZqVsu1OnTrh1VdfxYABA3DJJZfgqKOOwsSJE7F3715ezSciyhPMNGYaEVE+Ya4x14goemKGbuIjIspp//rXv3Dqqadi7dq1KQUZIiKiXMNMIyKifMJcIyJyho3WRHngmWeeQZcuXXDEEUdg7dq1mDJlCnr06IHXX3897F0jIiJyhZlGRET5hLlGROQNF2IkygO7d+/G7bffjk2bNqFXr14466yz8MADD4S9W0RERK4x04iIKJ8w14iIvGFPayIiIiIiIiIiIiKKDC7ESERERERERERERESRwUZrIiIiIiIiIiIiIooMNloTERERERERERERUWSw0ZqIiIiIiIiIiIiIIoON1kREREREREREREQUGWy0JiIiIiIiIiIiIqLIYKM1EREREREREREREUUGG62JiIiIiIiIiIiIKDLYaE1EREREREREREREkfH/AT+5f+HtrGnhAAAAAElFTkSuQmCC", | |
| "text/plain": [ | |
| "<Figure size 2000x1000 with 13 Axes>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "import xarray as xr\n", | |
| "import matplotlib.pyplot as plt\n", | |
| "import matplotlib.colors as colors\n", | |
| "import numpy as np\n", | |
| "import pandas as pd\n", | |
| "\n", | |
| "# Load the dataset\n", | |
| "ds = xr.open_dataset(\"idn_cli_ssi_gamma_12_month.nc\")\n", | |
| "\n", | |
| "# Select data from Jan - Dec 2022\n", | |
| "start_date = \"2022-01-01\"\n", | |
| "end_date = \"2022-12-31\"\n", | |
| "data_2022 = ds[\"ssi_gamma_12_month\"].sel(time=slice(start_date, end_date))\n", | |
| "\n", | |
| "# Plotting\n", | |
| "fig, axes = plt.subplots(nrows=4, ncols=3, figsize=(20, 10))\n", | |
| "fig.suptitle('Standardized Streamflow Index (Gamma), 12-month, 2022', fontsize=16, y=0.98)\n", | |
| "\n", | |
| "# Custom discrete color map\n", | |
| "cmap = plt.get_cmap('RdBu', 7) # 7 discrete colors\n", | |
| "bounds = [-3, -2, -1, 0, 1, 2, 3]\n", | |
| "norm = colors.BoundaryNorm(bounds, cmap.N)\n", | |
| "\n", | |
| "for i, ax in enumerate(axes.flat):\n", | |
| " # Plot if the data for the month exists\n", | |
| " if i < len(data_2022.time):\n", | |
| " data = data_2022.isel(time=i)\n", | |
| " pcm = ax.pcolormesh(data.lon, data.lat, data, cmap=cmap, norm=norm)\n", | |
| " \n", | |
| " # Set title with the corresponding month\n", | |
| " time_val = pd.to_datetime(str(data.time.values))\n", | |
| " ax.set_title(time_val.strftime('%B'))\n", | |
| "\n", | |
| " # Set labels\n", | |
| " ax.set_xlabel('Longitude')\n", | |
| " ax.set_ylabel('Latitude')\n", | |
| "\n", | |
| "# Adjust vertical spacing\n", | |
| "plt.subplots_adjust(hspace=0.5) # Adjust this value as needed for vertical spacing\n", | |
| "fig.colorbar(pcm, ax=axes.ravel().tolist(), shrink=0.7, ticks=np.arange(-3, 4), extend='both')\n", | |
| "\n", | |
| "# Save the map as a PNG\n", | |
| "plt.savefig('../images/idn_cli_era5_ssi12_2022.png', dpi=300)\n", | |
| "plt.show()\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "id": "2b14d899-7f02-4c11-a7bc-03e272c584fb", | |
| "metadata": {}, | |
| "source": [ | |
| "End of notebook." | |
| ] | |
| } | |
| ], | |
| "metadata": { | |
| "kernelspec": { | |
| "display_name": "Python 3 (ipykernel)", | |
| "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.10.12" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 5 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment