From e514778fe886d9f947b525300a112baa78b56f04 Mon Sep 17 00:00:00 2001 From: Nick Savage Date: Fri, 22 Apr 2022 08:31:00 +0100 Subject: [PATCH 01/23] add copies of existing notebooks in new directory --- .gitignore | 1 + notebooks/AFR-22/img | 1 + notebooks/AFR-22/makedata.ipynb | 236 +++++ notebooks/AFR-22/worksheet1.ipynb | 864 ++++++++++++++++ notebooks/AFR-22/worksheet2.ipynb | 772 ++++++++++++++ notebooks/AFR-22/worksheet3.ipynb | 1054 ++++++++++++++++++++ notebooks/AFR-22/worksheet4.ipynb | 629 ++++++++++++ notebooks/AFR-22/worksheet5.ipynb | 853 ++++++++++++++++ notebooks/AFR-22/worksheet6.ipynb | 258 +++++ notebooks/AFR-22/worksheet6example.ipynb | 392 ++++++++ notebooks/AFR-22/worksheet_solutions.ipynb | 461 +++++++++ 11 files changed, 5521 insertions(+) create mode 120000 notebooks/AFR-22/img create mode 100755 notebooks/AFR-22/makedata.ipynb create mode 100755 notebooks/AFR-22/worksheet1.ipynb create mode 100755 notebooks/AFR-22/worksheet2.ipynb create mode 100755 notebooks/AFR-22/worksheet3.ipynb create mode 100755 notebooks/AFR-22/worksheet4.ipynb create mode 100755 notebooks/AFR-22/worksheet5.ipynb create mode 100755 notebooks/AFR-22/worksheet6.ipynb create mode 100755 notebooks/AFR-22/worksheet6example.ipynb create mode 100755 notebooks/AFR-22/worksheet_solutions.ipynb diff --git a/.gitignore b/.gitignore index 1df22d0..bb6957c 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ notebooks/.ipynb_checkpoints/ /data/stash_select notebooks/data_v2/ +notebooks/AFR-22/data_afr22/ *.pyc diff --git a/notebooks/AFR-22/img b/notebooks/AFR-22/img new file mode 120000 index 0000000..6ffc6ca --- /dev/null +++ b/notebooks/AFR-22/img @@ -0,0 +1 @@ +../img \ No newline at end of file diff --git a/notebooks/AFR-22/makedata.ipynb b/notebooks/AFR-22/makedata.ipynb new file mode 100755 index 0000000..51abdd8 --- /dev/null +++ b/notebooks/AFR-22/makedata.ipynb @@ -0,0 +1,236 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import glob\n", + "import os\n", + "import iris\n", + "from iris.time import PartialDateTime\n", + "from iris.experimental.equalise_cubes import equalise_attributes\n", + "\n", + "DATADIR = '/project/ciid/projects/PRECIS/worksheets/data_v2/EAS-22/'\n", + "# write outputs to own directory so that can be checked before upload under ciid\n", + "OUTDIR = f'{os.getenv(\"SCRATCH\")}/cordex_inputs/'\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Make data for worksheet 4" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Prep future data (2041-2060) from ESGF CORDEX files\n", + "# Note this assumes that only want to process the REMO2015 data.\n", + "\n", + "shortnames = {'MOHC-HadGEM2-ES':'hadgem2-es', 'MPI-M-MPI-ESM-LR':'mpi-esm-lr'}\n", + "\n", + "# Make future 2021-2050 data\n", + "future_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=2041) \n", + " <= cell.point <= PartialDateTime(year=2060))\n", + "for gcmid in ['MOHC-HadGEM2-ES', 'MPI-M-MPI-ESM-LR']:\n", + "\n", + " # set a short name consistent with what used in the exercises [would it be better to use full names?]\n", + " shortgcm = shortnames[gcmid]\n", + " for var in ['pr', 'tas']:\n", + "\n", + " # find all the files to consolidate \n", + " flist = glob.glob(DATADIR + f'{var}_*_{gcmid}_rcp85_*_GERICS-REMO2015_*_mon_*.nc')\n", + " print (f'input files: {flist}')\n", + "\n", + " # merge the cubes\n", + " datacubes = iris.load(flist, future_time_constraint)\n", + " equalise_attributes(datacubes)\n", + " cube = datacubes.concatenate_cube()\n", + " \n", + " if cube.name() == 'air_temperature':\n", + " cube.convert_units('celsius')\n", + " outpath = os.path.join(OUTDIR, 'future', shortgcm + '.mon.2041_2060.GERICS-REMO2015.tm.C.nc')\n", + " iris.save(cube, outpath)\n", + " if cube.name() == 'precipitation_flux':\n", + " cube.convert_units('kg m-2 day-1')\n", + " cube.units = 'mm day-1'\n", + " outpath = os.path.join(OUTDIR, 'future', shortgcm + '.mon.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(cube, outpath)\n", + " print(f'saved file: {outpath}')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Prep baseline data (1986-2005) from \n", + "historical_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", + " <= cell.point <= PartialDateTime(year=2005))\n", + "for gcmid in ['MOHC-HadGEM2-ES', 'MPI-M-MPI-ESM-LR']:\n", + "\n", + " # set a short name consistent with what used in the exercises [would it be better to use full names?]\n", + " shortgcm = shortnames[gcmid]\n", + " for var in ['pr', 'tas']:\n", + "\n", + " # find all the files to consolidate \n", + " flist = glob.glob(DATADIR + f'{var}_*_{gcmid}_historical_*_GERICS-REMO2015_*_mon_*.nc')\n", + " flist = glob.glob(DATADIR + f'{var}_*_{gcmid}_historical_*_GERICS-REMO2015_*_mon_*.nc')\n", + " print (f'input files: {flist}')\n", + "\n", + " # merge the cubes\n", + " datacubes = iris.load(flist, historical_time_constraint)\n", + " equalise_attributes(datacubes)\n", + " cube = datacubes.concatenate_cube()\n", + " \n", + " if cube.name() == 'air_temperature':\n", + " cube.convert_units('celsius')\n", + " outpath = os.path.join(OUTDIR, 'historical', shortgcm + '.mon.1986_2005.GERICS-REMO2015.tm.C.nc')\n", + " iris.save(cube, outpath)\n", + " if cube.name() == 'precipitation_flux':\n", + " cube.convert_units('kg m-2 day-1')\n", + " cube.units = 'mm day-1'\n", + " outpath = os.path.join(OUTDIR, 'historical', shortgcm + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(cube, outpath)\n", + " print(f'saved file: {outpath}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Make data for Worksheet 5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The files needed are daily precipitation, with the two periods (historical and future) consolidated into a single file\n", + "\n", + "Note that these datasets should be saved with compression to reduce their file size. If for some reason this needs to be done during a PRECIS course, it is quicker to save them without compression using `iris.save(cube, outfile)` but the filesize is significantly larger.\n", + "\n", + "Unlike the previous PRECIS data, the memory requirements of this code are modest (probably due to the lack of rim removal meaning the data remains lazy). It does take several minutes (~5) to run each example." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Prep future data (2041-2060) from CORDEX files\n", + "\n", + "shortnames = {'MOHC-HadGEM2-ES':'hadgem2-es', 'MPI-M-MPI-ESM-LR':'mpi-esm-lr'}\n", + "\n", + "# Make future 2041-2060 data\n", + "future_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=2041) \n", + " <= cell.point <= PartialDateTime(year=2060))\n", + "for gcmid in ['MOHC-HadGEM2-ES', 'MPI-M-MPI-ESM-LR']:\n", + "\n", + " # set a short name consistent with what used in the exercises [would it be better to use full names?]\n", + " shortgcm = shortnames[gcmid]\n", + "\n", + " # find all the files \n", + " flist = glob.glob(DATADIR + f'pr_EAS-22_{gcmid}_rcp85_*_GERICS-REMO2015_*_day_*.nc')\n", + " print (f'input files: {flist}')\n", + " \n", + " # load using time constraint above\n", + " datacubes = iris.load(flist, future_time_constraint)\n", + "\n", + " # merge the cubes\n", + " equalise_attributes(datacubes)\n", + " cube = datacubes.concatenate_cube()\n", + " \n", + " if cube.name() == 'air_temperature':\n", + " cube.convert_units('celsius')\n", + " outpath = os.path.join(OUTDIR, 'future', shortgcm + '.day.2041_2060.GERICS-REMO2015.tm.C.nc')\n", + " iris.save(cube, outpath, least_significant_digit=3, \n", + " complevel=4, zlib=True)\n", + " if cube.name() == 'precipitation_flux':\n", + " cube.convert_units('kg m-2 day-1')\n", + " cube.units = 'mm day-1'\n", + " outpath = os.path.join(OUTDIR, 'future', shortgcm + '.day.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(cube, outpath, least_significant_digit=3, \n", + " complevel=4, zlib=True)\n", + " print(f'saved file: {outpath}')\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Prep baseline data (1986-2006) from CORDEX files\n", + "historical_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", + " <= cell.point <= PartialDateTime(year=2005))\n", + "# Make baseline data\n", + "for gcmid in ['MOHC-HadGEM2-ES', 'MPI-M-MPI-ESM-LR']:\n", + "\n", + " # set a short name consistent with what used in the exercises [would it be better to use full names?]\n", + " shortgcm = shortnames[gcmid]\n", + "\n", + " # find all the files \n", + " flist = glob.glob(DATADIR + f'pr_EAS-22_{gcmid}_historical_*_GERICS-REMO2015_*_day_*.nc')\n", + " print (f'input files: {flist}')\n", + " \n", + " # load using time constraint above\n", + " datacubes = iris.load(flist, historical_time_constraint)\n", + "\n", + " # merge the cubes\n", + " equalise_attributes(datacubes)\n", + " cube = datacubes.concatenate_cube()\n", + " \n", + " if cube.name() == 'air_temperature':\n", + " cube.convert_units('celsius')\n", + " outpath = os.path.join(OUTDIR, 'historical', shortgcm + '.day.1986_2005.GERICS-REMO2015.tm.C.nc')\n", + " iris.save(cube, outpath, least_significant_digit=3, \n", + " complevel=4, zlib=True)\n", + " if cube.name() == 'precipitation_flux':\n", + " cube.convert_units('kg m-2 day-1')\n", + " cube.units = 'mm day-1'\n", + " outpath = os.path.join(OUTDIR, 'historical', shortgcm + '.day.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(cube, outpath, least_significant_digit=3, \n", + " complevel=4, zlib=True)\n", + " print(f'saved file: {outpath}')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "pyprecis-environment", + "language": "python", + "name": "pyprecis-environment" + }, + "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.6.10" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebooks/AFR-22/worksheet1.ipynb b/notebooks/AFR-22/worksheet1.ipynb new file mode 100755 index 0000000..8f08b0b --- /dev/null +++ b/notebooks/AFR-22/worksheet1.ipynb @@ -0,0 +1,864 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Worksheet 1: File locations and pre-processing\n", + "The exercises in this worksheet demonstrate some of the tools available for data analysis, and how to prepare CORDEX output for analysis (pre-processing). This can be time consuming for large amounts of data, so in this worksheet a small subset of data is used to easily demonstrate the steps involved. \n", + "\n", + "[CORDEX data](https://cordex.org/data-access/how-to-access-the-data/) is in [NetCDF](https://www.unidata.ucar.edu/software/netcdf/) format (a standard format in climate science) so that it can be used in post processing packages such as Python and the Python library [Iris](http://scitools.org.uk/iris/docs/latest/index.html)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "By the end of this worksheet you should be able to:
\n", + "- Identify and list the names of CORDEX output data in netCDF format using standard Linux commands.
\n", + "- Use basic Iris commands to load data files, and view Iris cubes.
\n", + "- Use Iris commands to merge netCDF files\n", + "- Take a subset of the data based on a date range\n", + "- Save the output as NetCDF files.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Note: In the boxes where there is code or where you are asked to type code, click in the box, then press Ctrl + Enter to run the code.
\n", + "Note: An percentage sign % is needed to run some commands on the shell. It is noted where this is needed.
\n", + "Note: A hash # denotes a comment; anything written after this character does not affect the command being run.
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contents\n", + "### [1.1: Data locations and file names](#1.1) \n", + "### [1.2: Getting started with Python and Iris](#1.2)\n", + "### [1.3: Merge Problems](#1.3)\n", + "### [1.4 Extracting data within a specific time range](#1.4)\n", + "### [1.5: Saving data to a new file](#1.5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 1.1 Data locations and file names\n", + "The datasets used within these worksheets are already linked to the notebook in order to provide quick and easy access for the purpose of this training. However the commands learned in this worksheet provide useful context for future work in a linux and unix scripting environment." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**a)** Firstly, find out what location you are currently in by using the **`pwd`** command; **`pwd`** stands for **print working directory**.\n", + "\n", + "In the cell below type **`%pwd`** on a new line and then press Ctrl + Enter.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Type %pwd below and press 'ctrl' + 'enter'\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**b)** List the contents of this directory; **`ls`** stands for **list** and using the **`-l`** option gives a longer listing with more information, such as file size and modification date. \n", + "\n", + "In the cell below type **`%ls`** on a separate line then press Ctrl + Enter." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Type %ls and press 'ctrl' + 'enter'.\n", + "\n", + "\n", + "# Type %ls -l and press 'ctrl' + 'enter'.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
\n", + "Question: What is the difference between ls and ls -l? What extra information do you see? Which file was edited most recently?\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
\n", + "*...Double click here to type your answer...*\n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**c)** To avoid conflicts of data when running locally, we will take a copy of the source files used in the training (this is not needed if running on the cloud, we instead download from an S3 bucket). Run the command in the following cell. It might take a few minutes to complete." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import subprocess\n", + "subprocess.run(['rsync', '-r', '/project/ciid/projects/PRECIS/worksheets/data_v2', '.'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If the command works correctly you should see the message:\n", + "\n", + "`CompletedProcess(args=['rsync', '-r', '/project/ciid/projects/PRECIS/worksheets/data_v2', '.'], returncode=0)`\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**d)** Move to the directory (i.e. folder) called `data_v2/EAS-22`. This directory contains CORDEX data for the East Asia Domain.\n", + "\n", + "**Hint:** The `cd` command stands for _change directory_\n", + "\n", + "Type your command(s) below and press Ctrl + Enter.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Type your %cd [directory-path] command below and press 'ctrl' + 'enter'.\n", + "\n", + "\n", + "# List the contents of this directory, using a previous command.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**d)** There are a lot of files in this directory! The file names contain information on the simulated date of the data they contain - you'll learn more about the naming convention for CORDEX data in another presention.\n", + "\n", + "For now, list only the files containing monthly temperature data using the following command:\n", + "\n", + "Type **`%ls tas*mon*`** in the code block below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Type %ls tas*mon* and press 'ctrl' + 'enter'.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Note: The asterisk character * (also known as glob) matches any string within the filename\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**e)** This still returns too many files to comfortably count manually. **`wc`** stands for **word count**; combining this command with **`ls`** allows us to count the number of items in that directory. \n", + "\n", + "In the cell below type **`%ls tas*mon* | wc -l`** then press Ctrl + Enter." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Type %ls *mon* | wc -l command below and press 'ctrl' + 'enter'\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
\n", + "Question: How many nc files are in this directory, in total?\n", + "
How many of these nc files contain the string 'historical'; relating to the historical climate simulation? What command do you need to use to find this out?\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer: \n", + "
*Total number of nc files: \n", + "
Number of historical nc files:\n", + "
Command used to find number of historical nc files:*\n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**f)** To list all the files containing monthly data from a period starting 202101, we use the code **`*mon_202101-??????.nc`**\n", + "\n", + "Type below **`%ls *mon_202101-??????.nc`**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Type %ls *mon_202101-??????.nc and press 'ctrl' + 'enter'.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Note: The question mark character ? matches any single character\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**g)** Now move up one level in the directory tree and list the directories.\n", + "\n", + "Type `cd ..` to move up one level in the directory tree and press Ctrl + Enter to execute the command" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Type %cd .. and press 'ctrl' + 'enter'.\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
\n", + "Question: Which directory are you in now? What else can you see in this directory?\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
\n", + "*...Double click here to type your answer...*\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "***\n", + "\n", + "## 1.2 Getting started with Python and Iris\n", + "

\"python

\n", + "\n", + "\n", + "Python is a general purpose programming language. Python supports modules and packages, which encourages program modularity and code reuse. \n", + "\n", + "\n", + "We also use the Python library [Iris](http://scitools.org.uk/iris/docs/v2.4.0/index.html), which is written in Python and is maintained by the Met Office. Iris seeks to provide a powerful, easy to use, and community-driven Python library for analysing and visualising meteorological and oceanographic data sets.\n", + "\n", + "The top level object in Iris is called a cube. A cube contains data and metadata about a phenomenon (i.e. air_temperature). Iris handles several different types of file formats, loading them into Iris cubes.\n", + "\n", + "\n", + "For a brief introduction to Iris and the cube formatting please read this Introduction page here: \n", + "\n", + "http://scitools.org.uk/iris/docs/v2.4.0/userguide/iris_cubes.html\n", + "\n", + "For future reference please refer to the Iris website:\n", + "\n", + "http://scitools.org.uk/iris/docs/v2.4.0/index.html\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**a)** First, run the code-block below to **load** a file into Iris and **print** its metadata structure.
\n", + "\n", + "To run the code, click in the box below and press Ctrl + Enter." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%cd /home/h03/fris/code/PyPRECIS/notebooks/data_v2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "# import the necessary modules\n", + "import iris\n", + "import glob\n", + "import os\n", + "\n", + "# this is needed so that the plots are generated inline with the code instead of a separate window\n", + "%matplotlib inline \n", + "\n", + "# provide the path of your sample data\n", + "sample_data = 'EAS-22/sample_data.nc'\n", + "\n", + "# Constraint the reading to a single variable and load it into an Iris cube\n", + "cube = iris.load_cube(sample_data)\n", + "\n", + "# Print the Iris cube\n", + "print(cube)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
\n", + "Question: Can you explain how our sample data we printed above relates to this picture?\n", + "\"diagram
\n", + "\n", + "- Is our data above a 3D or a 2D cube?
\n", + "- What are the cube dimensions?
\n", + "- How many grid boxes is the latitudinal range divided into?
\n", + "- What meteorological variable does this cube represent?
\n", + "- What unit is used for this variable?
\n", + "
\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Double click here to type your answer::\n", + "
*Is this cube 3D or 2D? \n", + "
What are the cube dimensions? \n", + "
How many grid boxes is the latitudinal range divided into? \n", + "
What meteorological variable does this cube represent? \n", + "
What unit is used for this variable?* \n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**b)** Now **plot** the data for the selected variable:
\n", + "\n", + "To run the code, click in the box below and press Ctrl + Enter." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import iris.quickplot as qplt\n", + "\n", + "plt.figure(figsize=(12,12)) # Set the figure size\n", + "\n", + "# find the edges of grid cells (Aka the boounds)\n", + "cube.coord('grid_latitude').guess_bounds()\n", + "cube.coord('grid_longitude').guess_bounds()\n", + "\n", + "qplt.pcolormesh(cube) # Plot the cube\n", + "plt.title(cube.name()) # Add plot title\n", + "plt.clim(0, 5e-4) # Set colour bar range\n", + "plt.show() # Show the plot" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Sense check the data plotted: \n", + "\n", + "* Can you make out sections of the East Asian coastline? \n", + "* How about the scale? \n", + "\n", + "As we progress through these workbooks, we'll learn how to process the data into more intuitive units and mask / add country boundaries, so it's easier to understand the information.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 1.3 Merge problems\n", + "\n", + "**a)** When using data, we want a single cube for all fields with the same standard name and sequential timesteps. `iris.load` will return as few cubes as possible, by collecting cubes from multiple files together. However, on some occasions this merge process does not give a single cube when we would expect it to. \n", + "\n", + "This section demonstrates how to deal with cases like this and make a single cube for these data." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "You can read more about iris loading behaviour here.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As an example we will load some temperature data from the [East Asia Domain](https://cordex.org/domains/region-7-east-asia/) at 25 km resolution" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# these variables form part of the standard CORDEX filename convention\n", + "domain = \"EAS-22\"\n", + "rcm = \"GERICS-REMO2015\"\n", + "experiment = \"historical\"\n", + "gcm = \"NCC-NorESM1-M\"\n", + "variable = \"tas\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's find out which of the files match the pattern above." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "root_dir = \"./\"\n", + "\n", + "path_dir = root_dir+domain+\"/\"\n", + "file_name = variable+\"*\"+gcm+\"*\"+experiment+\"*\"+rcm+\"*\"\n", + "file_list = glob.glob(path_dir+file_name)\n", + "\n", + "# Complete the print statement to see which East Asian files match the specified criteria\n", + "print()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "How many files were returned? \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Double click here to type your answer:**\n", + "\n", + "How many files were returned? " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**b)** If we try and force Iris to load a single cube we get an error:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cube = iris.load_cube(file_list)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The important part of this error is the following message: \n", + " \n", + " ConstraintMismatchError: failed to merge into a single cube.\n", + " cube.attributes values differ for keys: 'history', 'creation_date', 'tracking_id'\n", + " \n", + "Instead we will load this data with `iris.load()` and then look more closely at the data, before we fix the issues." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cubes = iris.load(file_list)\n", + "print(cubes)\n", + "print()\n", + "for cube in cubes:\n", + " print(cube.attributes['creation_date'], cube.attributes['tracking_id'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Question:\n", + "\n", + "- How many cubes are in the cube list you loaded?
\n", + "- Are they all the same size in space?
\n", + "- Do they have the same number of timesteps? Why do you think this is? (Hint: look again at the filenames we are loading)\n", + "- What are the differences in the attributes and do you think this is important when analysing your data?\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:\n", + "
*How many cubes are in the cube list you loaded?\n", + "
Are they all the same size in space?\n", + "
Do they have the same number of timesteps? Why do you think this is? (Hint: look again at the filenames we are loading)\n", + "
What are the differences in the attributes?\n", + "
Do you think these differences are important when analysing your data?* \n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**c)** Now let's solve this problem so we can get a single cube. We will do this using the [equalise_attributes](https://scitools.org.uk/iris/docs/v2.4.0/iris/iris/experimental/equalise_cubes.html) function from Iris." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from iris.experimental.equalise_cubes import equalise_attributes\n", + "\n", + "equalise_attributes(cubes)\n", + "\n", + "# now print the attributes of each cube\n", + "for cube in cubes:\n", + " print(list(cube.attributes.keys()))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "The equalise_attributes function has removed the metadata which is inconsistent between the cubes. \n", + "\n", + "Question:\n", + " - Why might it be a bad idea to apply this function without looking at the data first?\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Type your answer::\n", + "
*Why might it be a bad idea to apply this function without looking at the data first?*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following loop is an alternative method to eliminate the mismatching attributes\n", + "\n", + " for i, icube in enumerate(cube):\n", + " del cube[i].attributes['creation_date']\n", + " del cube[i].attributes['tracking_id']\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**d)** We can now merge the data into a single cube." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cube = cubes.concatenate_cube()\n", + "print(cube)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "
  • Now that we have combined multiple files into a single cube, what is the cube's shape? \n", + "
  • How does this compare with the cube_list created in 1.2e? \n", + "
  • Based on all the information you've gained about the data so far, what time period do you expect the data in this cube to span?\n", + "
  • " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Type your answers here**\n", + "* Now that we have combined multiple files into a single cube, what is the cube's shape? \n", + "* How does this compare with the cube_list created in 1.2e? \n", + "* Based on all the information you've gained about the data so far, what time period do you expect the data in this cube to span?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 1.4 Extracting data within a specific time range\n", + "\n", + "**a)** This is a lot of data, and so for now, we will cut this down to include December 1989 to November 1991 inclusive using a time constraint. Edit the code below to specify the missing end date.\n", + "(**Hint:** specify the adjacent months BEFORE and AFTER the time period you wish to keep.)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from iris.time import PartialDateTime\n", + "\n", + "print('original cube first and last dates')\n", + "print(cube.coord(\"time\")[0])\n", + "print(cube.coord(\"time\")[-1])\n", + "\n", + "time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1989,month=11) \n", + " < cell.point < PartialDateTime(year=YYYY,month=MM))\n", + "sub_cube = cube.extract(time_constraint)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**b)** Check the first and last timesteps in your constrained cube are correct:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print()\n", + "print('new cube first and last dates')\n", + "print(sub_cube.coord(\"time\")[0])\n", + "print(sub_cube.coord(\"time\")[-1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 1.5 Save data to a new file\n", + "\n", + "**a)** We will now save this data to a new file.\n", + "\n", + "Take note of the file names. Well chosen filenames can help you keep track of the contents of your files. We suggest developing a consistent syntax based on the filename patterns of the CORDEX data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "out_file_name = f'{variable}_{domain}_{gcm}_{experiment}_r1ip1_{rcm}_v2_mon_198912-199111.nc'\n", + "\n", + "save_location = root_dir + 'cordex_training/'\n", + "\n", + "%mkdir {save_location}\n", + "\n", + "print('saving file to: ' + save_location + out_file_name)\n", + "iris.save(sub_cube, save_location + out_file_name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note:\n", + "As we progress through these worksheets, keep a note of how we update the file names when making further changes to the data.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "b) Question: Use the cd and ls commands to check the NetCDF directory that you have been creating new files in.
    \n", + "\n", + "- Confirm the names of the new files you have been creating.
    \n", + "- What is the size of the concatenated file (containing December 1979 to November 1989 data)?\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# use %cd and %ls to list the contents of your new directory containing NetCDF files:\n", + "\n", + "\n", + "# use %ls -lh to compare the size of the original files and final netcdf file you saved\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + "*Size of the file written out at the end:*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "This completes worksheet 1.
    You have created pre-processed files (metdata fixed, concenated over time, extracted data in a specific time range and saved in NetCDF format).
    \n", + "In worksheet 2, you will begin to analyse these files.\n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    \"python

    \n", + "
    © Crown Copyright 2022, Met Office
    " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "pyprecis-environment", + "language": "python", + "name": "pyprecis-environment" + }, + "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.6.10" + }, + "widgets": { + "state": {}, + "version": "1.1.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebooks/AFR-22/worksheet2.ipynb b/notebooks/AFR-22/worksheet2.ipynb new file mode 100755 index 0000000..21a8572 --- /dev/null +++ b/notebooks/AFR-22/worksheet2.ipynb @@ -0,0 +1,772 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Worksheet 2: Using the Python Iris library for analysis and visualisation\n", + "\n", + "In this worksheet, sample CORDEX output over Southeast Asia is compared with observations for validation purposes. Validating model results by comparing with observed data is an essential step - this is the measure by which we can assess the quality of the model and it informs appropriate uses of the data.\n", + "\n", + "\n", + "Here, we validate CORDEX output driven by two different GCMs (HadGEM2-ES and MPI-ESM-LR) created with the REMO2015 Regional Climate Model. Using data from both experiments will give us two representations of present day climate and two possible climate scenarios. For more details on multimodel approaches, refer to the workshop lecture on climate model ensembles.\n", + "\n", + "The following exercises provide examples of how analysis can be undertaken as part of a model validation. The methods shown are not necessarily the only way to proceed and are intended to demonstrate the use of Iris in model validation, and provide a starting point for your own analyses." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "By the end of this worksheet you should be able to:
    \n", + "- Apply basic statistical operations to Iris cubes.
    \n", + "- Plot information from Iris cubes.
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contents\n", + "### [2.1: Inspecting the data](#2.1) \n", + "### [2.2: Converting units](#2.2)\n", + "### [2.3: Climatological mean calculation](#2.3)\n", + "### [2.4: IRIS quick plotting and visualising data](#2.4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Preamble\n", + "Run the code preamble below to import the necessary libraries for this worksheet.\n", + "\n", + "To run the code, click in the box below and press Ctrl + Enter." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Code preamble - these libraries will be used in this worksheet.\n", + "# This code block needs to be re-run every time you restart this worksheet!\n", + "%matplotlib inline\n", + "import os\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.cm as cm\n", + "import matplotlib.dates as mdates\n", + "import calendar\n", + "import iris\n", + "import iris.coord_categorisation\n", + "import iris.quickplot as qplt\n", + "from iris.experimental.equalise_cubes import equalise_attributes\n", + "from iris.time import PartialDateTime\n", + "import cartopy.crs as ccrs\n", + "from mpl_toolkits.axes_grid1 import AxesGrid\n", + "from cartopy.mpl.geoaxes import GeoAxes\n", + "from utils import copy_s3_files, flush_data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "# 2.1 Inspecting the data\n", + "\n", + "The datasets used here contain daily and monthly data from two REMO2015 runs carried out over Southeast Asia, one driven by HadGEM2-ES and the other driven by MPI-ESM-LR. The observations used for comparison are from the CHIRPS gridded observational data set (https://chc.ucsb.edu/data/chirps).\n", + "\n", + "Remember, in Iris, data are read into an object called a **cube**. A single cube describes only one variable; it is not possible for a cube to contain both temperature and rainfall, for example. A cube always has a name, a unit and an n-dimensional data array to represent the cube’s data. Additionally, the cube contains collections of coordinates. Coordinate types can include spatial information (latitude, longitude, altitude), a time dimension, or other information, e.g., an ensemble number.\n", + "\n", + "

    \"Example

    \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__a) Load the NetCDF file for the HadGEM2-ES and MPI-ESM-LR model data and the CHIRPS rainfall observation data and print the cube output__\n", + "\n", + "A cube has coordinates (e.g. time, longitude, latitude, model levels) which can be accessed with Python commands. In the following exercise we find the latitude and longitude covered by the CHIRPS data. This can be done either by printing the latitude and longitude coordinates (`.points`), noting the first and last values in the array, or in the case of the CHIRPS data, printing the cube and looking through the attributes. A similar example can be found in the [Iris documentation](https://scitools.org.uk/iris/docs/v2.4.0/userguide/navigating_a_cube.html#accessing-coordinates-on-the-cube). \n", + "\n", + "Before running the code, take a look at it line-by-line to understand what steps are being taken. Then click in the box and press ctrl + enter to run the code." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we first need to download APHRODITE data\n", + "copy_s3_files('s3://ias-pyprecis/data/APHRODITE/*.nc', 'data/APHRODITE/')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Provide the names of the directories where the netCDF model files are stored\n", + "DATADIR = 'data_v2/'\n", + "\n", + "# Load and concatenate the HadGEM2-ES model cube data\n", + "infile = os.path.join(DATADIR, 'EAS-22/pr_EAS-22_MOHC-HadGEM2-ES_historical_r1i1p1_GERICS-REMO2015_v1_mon_*.nc')\n", + "cubes = iris.load(infile)\n", + "equalise_attributes(cubes)\n", + "hadgem2 = cubes.concatenate_cube()\n", + "\n", + "# Load and concatenate the MPI-ESM-LR model cube data\n", + "infile = os.path.join(DATADIR, 'EAS-22/pr_EAS-22_MPI-M-MPI-ESM-LR_historical_r1i1p1_GERICS-REMO2015_v1_mon_*.nc')\n", + "cubes = iris.load(infile)\n", + "equalise_attributes(cubes)\n", + "mpiesm = cubes.concatenate_cube()\n", + "\n", + "# finally load the CHIRPS data and print the cube \n", + "infile = os.path.join(DATADIR, 'CHIRPS', 'chirps-v2.0.monthly.global.1981_2018.nc')\n", + "chirpsData = iris.load_cube(infile)\n", + "print(chirpsData)\n", + "\n", + "# print the first and last latitude points\n", + "print(chirpsData.coord('latitude').points[0], chirpsData.coord('latitude').points[-1])\n", + "# print the first and last longitude points\n", + "print(chirpsData.coord('longitude').points[0], chirpsData.coord('longitude').points[-1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + " Question: How many years of data does the CHIRPS dataset contain? What longitudes and latitudes are covered by the CHIRPS data?\n", + "
    \n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:*(Double click here to fill in the answers)*
    \n", + "\n", + "Number of years:\n", + "\n", + "Latitude and longitude covered: \n", + "

    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__b) Extract a subset of the data within a cube__\n", + "\n", + "Data extraction is an important function in Iris. The extraction of a subset of data is called **slicing**. For example, it could be necessary to extract data over all latitude and longitude grid points on the first time step. For more information around subsetting cubes please read the [Iris documentation on slicing](https://scitools.org.uk/iris/docs/v2.4.0/userguide/subsetting_a_cube.html#cube-indexing).\n", + "\n", + "__Using the HadGEM2-ES data, the example below shows how to subset a cube for the first and last timesteps. This method will be used later for plotting data from a cube.__ \n", + "\n", + "Work through the example below line by line then click in the box and press Ctrl + Enter to run the code.\n", + "\n", + "First, print the HadGEM2-ES cube, containing all the time steps:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Use the print() command to display a summary of the HadGEM2-ES cube\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: What dimensions does this cube have?
    \n", + " t = number of timesteps
    \n", + " y = number of latitude steps
    \n", + " x = number of longitude steps
    \n", + " Write your answer in the form `[ t, y, x ]`\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer: *(Double click here to fill in the answers)*
    \n", + "HadGEM2-ES dimensions: [ t, y, x]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: When indexing a cube dimension, you either can specify a single coordinate, e.g. 0 is the first (zeroth) item, -1 is the last item, or you can use : to include all items.
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Display the cube's **first** timestep and check the associated `time` value:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Use the print() funiction with slicing notation\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Display the cube's **last** timestep and check the associated `time` value:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Use the print() function with slicing notation\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For the analysis here, we will use data from 1986 to 2005 inclusive as used in the AR5 WG1 atlas. To do this we will use the same approach as in Worksheet 1 by using time constraints" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", + " <= cell.point <= PartialDateTime(year=2005))\n", + "hadgem2 = hadgem2.extract(time_constraint)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now apply the same time constraint to the mpiesm data to restrict to the same period" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "mpiesm = mpiesm.extract(time_constraint)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 2.2 Converting units\n", + "\n", + "__c) Convert the precipitation units from kg/m2/s (equivalent to mm/s) to mm/day__\n", + "\n", + "To convert to mm/day, we could just multiply the raw data (in mm/s) by 86400 seconds, but a clearer way is to use the __`.convert_units()`__ method with the name of the units we want to convert the data into.\n", + "\n", + "Let's do this for the __HadGEM2-ES__ historical data first and break down the steps as follows:\n", + "\n", + "* Print the units and summary statistic about the data\n", + "* Convert the unit and print the information again\n", + "* Rename the `.units` value in the cube and save it as a new netCDF file" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(hadgem2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# print the unit\n", + "print('The current unit for data is: {}'.format(hadgem2.units))\n", + "# print the summary statistic (maximum monthly precipitation)\n", + "maxpr = np.max(hadgem2.data)\n", + "print('This is an example rainfall rate (kg m-2 s-1) prior to conversion: {:f}'.format(maxpr))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Convert units to kg m-2 day-1 (same as multiplying by 86400 seconds)\n", + "hadgem2.convert_units('kg m-2 day-1')\n", + "# Print cube.units to view new units for precipitation\n", + "print(f'The new rainfall units are: {hadgem2.units}')\n", + "maxpr = np.max(hadgem2.data)\n", + "# print the summary statistic (maximum monthly precipitation) after the unit conversion\n", + "print(f'This is the same rainfall rate but now in (kg m-2 day-1): {maxpr:f}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Rename the new cube units for consistency, then save the converted cube:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Rename cube units\n", + "hadgem2.units = 'mm day-1'\n", + "\n", + "# Save the new cube as a new netCDF file\n", + "OUTDIR = 'data_v2/EAS-22'\n", + "\n", + "# Check to see if this directory exists, if not create it\n", + "if not os.path.isdir(OUTDIR):\n", + " # Make directory\n", + " os.mkdir(OUTDIR)\n", + " # Set directory permissions \n", + " os.chmod(OUTDIR, 0o776)\n", + "\n", + "outfile = os.path.join(OUTDIR, 'hadgem2-es.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + "iris.save(hadgem2, outfile)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Complete the following code block to repeat the same procedure for MPI-ESM-LR:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Print the current MPI-ESM-LR cube units\n", + "\n", + "\n", + "# convert units to kg m-2 day-1\n", + "\n", + "\n", + "# Rename the units to mm day-1. Recall that 1 kg m-2 is equivalent to 1 mm of rain\n", + "\n", + "\n", + "# Save the new cube as a new netCDF file using the `outfile` filename we've provided below!\n", + "outfile = os.path.join(OUTDIR, 'mpi-esm-lr.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 2.3 Climatological seasonal mean calculation\n", + "\n", + "__d) Calculate the 1986-2005 seasonal mean precipitation__ field for October-December (OND) from both the HadGEM2-ES and MPI-ESM-LR driven runs.\n", + "\n", + "Work through the example below line by line then click in the box and press ctrl + enter to run the code." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Set up directory for the climatology\n", + "CLIMDIR = 'data_v2/EAS-22/climatology'\n", + "\n", + "# Check to see if this directory exists, if not create it\n", + "if not os.path.isdir(CLIMDIR):\n", + " # Make directory\n", + " os.mkdir(CLIMDIR)\n", + " # Set directory permissions \n", + " os.chmod(CLIMDIR, 0o776)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# Loop through two model runs\n", + "for gcmid in ['hadgem2-es', 'mpi-esm-lr']:\n", + " infile = os.path.join(OUTDIR, gcmid + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + "\n", + " # Load the data\n", + " data = iris.load_cube(infile)\n", + "\n", + " # In order to calculate OND mean, we use the command below to add a season membership coordinate.\n", + " # The seasons can be any sequence of months, identified by the first letters of the names of the months.\n", + " # Here, we define two seasons, jfmamjjas (the months we are not interested in) and ond (October, November and\n", + " # December); the months we do want.\n", + " iris.coord_categorisation.add_season(data, 'time', name='seasons', seasons=('jfmamjjas','ond'))\n", + "\n", + " # This command extracts data for the OND season using a constraint\n", + " data_ond = data.extract(iris.Constraint(seasons='ond'))\n", + "\n", + " # The cube 'data_ond' contains data from October-December for all years. \n", + " # The command below calculates the mean over all years.\n", + " seasonal_mean = data_ond.aggregated_by(['seasons'], iris.analysis.MEAN)\n", + " \n", + " # Save the OND seasonal mean as a netCDF\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.1986_2005.pr.mmday-1.nc')\n", + " iris.save(seasonal_mean, outfile)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: What dimensions does this cube have now?
    \n", + " t = number of timesteps
    \n", + " y = number of latitude steps
    \n", + " x = number of longitude steps
    \n", + " Write your answer in the form `[ t, y, x ]`
    \n", + " Compare your answer to the answer you found in (b). Which dimensions have changed?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer: *(Double click here to fill in the answers)*
    \n", + "Seasonal mean dimensions: [ t, y, x]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__e) Calculate the 1986-2005 seasonal mean for OND from the CHIRPS observation data__\n", + "\n", + "CHIRPS is a daily high resolution (0.05 degree) data set for 1981 to almost the present day. See https://chc.ucsb.edu/data/chirps for more information.\n", + "\n", + "Follow step d) and complete the code yourself. The file name to load is: `chirps-v2.0.monthly.global.1981_2018.nc`. We've given you the infile and outfile names to make sure you load and save it in the right place for later!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we first need to download APHRODITE data\n", + "copy_s3_files('s3://ias-pyprecis/data/climatology/*.nc', 'data/climatology/')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Directory names where data is read from and stored to\n", + "infile = os.path.join(DATADIR, 'CHIRPS', 'chirps-v2.0.monthly.global.1981_2018.nc')\n", + "\n", + "# Load the CHIRPS data, only for the period 1986-2005 \n", + "chirps = iris.load_cube(infile, constraint=time_constraint)\n", + "\n", + "# convert the units to mm day^-1 \n", + "chirps.convert_units('mm day-1')\n", + "\n", + "# In order to calculate OND mean, we need to a add season membership coordinate\n", + "iris.coord_categorisation.add_season(chirps, 'time', name='seasons', seasons=('jfmamjjas','ond'))\n", + "\n", + "# Then constrain the cube just for the OND season\n", + "chirps_ond = chirps.extract(iris.Constraint(seasons='ond'))\n", + "\n", + "# Now calculate the climatological mean for this season\n", + "seasonal_mean = chirps_ond.aggregated_by(['seasons'], iris.analysis.MEAN)\n", + "\n", + "# save the seasonal mean cube as a NetCDF file\n", + "outfile = os.path.join(CLIMDIR, 'chirps.OND.mean.1986_2005.pr.mmday-1.nc')\n", + "iris.save(seasonal_mean, outfile)\n", + "\n", + "# print the CHIRPS seasonal mean cube\n", + "print(seasonal_mean)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: How would you calculate the standard deviation of mean rainfall? How about annual maximum rainfall?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer: Write the line of code required to calculate CHIRPS's (a) standard deviation and (b) annual maximum rainfall in the code block below.
    \n", + "Hint: How could you adapt chirps_ond.aggregated_by(['seasons'], iris.analysis.MEAN) from above? You can refer to the [Iris documentation](https://scitools.org.uk/iris/docs/v2.4.0/iris/iris/analysis.html) if needed." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# From chirps, calculate: \n", + "# (a) chirps_std \n", + "\n", + "\n", + "# (b) chirps_max\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 2.4 IRIS quick plotting and visualising data\n", + "\n", + "Now we will plot the output to take a first look at what climatological winter precipitation (1986-2005 OND seasonal mean) looks like for each dataset. This section provides an initial introduction to visualising data quickly using iris, for further reading and instructions please visit: https://scitools.org.uk/iris/docs/v2.4.0/userguide/plotting_a_cube.html\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**f) Plot and compare** the climatological winter preciptation over South East Asia for three datasets." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Question: Work through the code block below line by line. Think about what you expect the plot setup to look like:
    \n", + "\n", + "* Which lines of code specify the layout of sub-plots?
    \n", + "* Will the plots have a common colour scale or separate ones?
    \n", + "* What are the maximum and minimum precipitation values that will be displayed?
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Think about your answers, then click in the box and press ctrl + enter to run the code and create the plots." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# load hadgem2-es model data\n", + "infile = os.path.join(CLIMDIR, 'hadgem2-es.OND.mean.1986_2005.pr.mmday-1.nc')\n", + "hadgem_cube = iris.load_cube(infile)\n", + "\n", + "# load mpi-esm model data\n", + "infile = os.path.join(CLIMDIR, 'mpi-esm-lr.OND.mean.1986_2005.pr.mmday-1.nc')\n", + "mpi_cube = iris.load_cube(infile)\n", + "\n", + "# load CHIRPS data\n", + "infile = os.path.join(CLIMDIR, 'chirps.OND.mean.1986_2005.pr.mmday-1.nc')\n", + "obs_cube = iris.load_cube(infile)\n", + "\n", + "# Do some plotting!\n", + "# Create a figure of the size 12x10 inches\n", + "plt.figure(figsize=(12, 10))\n", + "\n", + "plt.subplot(1, 3, 1) # Create a new subplot for the model data; 1 row x 3 columns, 1st plot\n", + "levels = range(0, 22, 2) # Define the contour levels for all plots\n", + "\n", + "# Note this is where cube slicing is needed as you can only plot 2-coordinate\n", + "# dimensions with qplt.contourf, so here we have selected time[0] as there is only\n", + "# one timestep (the baseline 1986-2005 mean)\n", + "qplt.contourf(hadgem_cube[0], levels=levels, cmap=cm.RdBu, extend='max')\n", + " \n", + "\n", + "plt.title('HadGEM2-ES model') # plots a title for the plot\n", + "ax = plt.gca() # gca function that returns the current axes\n", + "ax.coastlines() # adds coastlines defined by the axes of the plot\n", + "\n", + "plt.subplot(1, 3, 2) # Create a new subplot for the model data; 1 row x 3 columns, 2nd plot\n", + "qplt.contourf(mpi_cube[0], levels=levels, cmap=cm.RdBu, extend='max')\n", + "\n", + "plt.title('MPI-ESM-LR model') # plots a title for the plot\n", + "ax = plt.gca() # gca function that returns the current axes\n", + "ax.coastlines() # adds coastlines defined by the axes of the plot\n", + "\n", + "plt.subplot(1, 3, 3) # Create a new subplot for the observed data 1 row x 3 columns, 3rd plot\n", + " # This plot will be centred and below the two model plots\n", + "qplt.contourf(obs_cube[0], levels=levels, cmap=cm.RdBu, extend='max')\n", + "\n", + "plt.title('CHIRPS obs') # plots a title for the plot\n", + "ax = plt.gca() # gca function that returns the current axes\n", + "ax.coastlines() # adds coastlines defined by the axes of the plot\n", + "ax.set_extent((65.0, 155.0, 0.0, 40.0))\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: \n", + "
    What are the differences between the following plots for HadGEM2-ES, MPI-ESM and CHIRPS? Note the colour bars. \n", + "
    Where are the largest daily rainfall rates distributed?\n", + "
    Why do you think this is happening?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer: *(Double click here to fill in the answers)*
    \n", + "\n", + "What differences do you see between the three plots?\n", + "\n", + "\n", + "Location of greatest rainfall\n", + "
    *HadGEM2-ES*: \n", + "
    *MPI-ESM*: \n", + "
    *CHIRPS*:\n", + "\n", + "\n", + "What is happening and why?\n", + "\n", + "\n", + "How could comparison be made easier?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "This completes worksheet 2.
    You have covered converting units, created seasonal means and visualised your results.
    \n", + "In worksheet 3, you will start to consider more advanced analysis, extract regional means, look at annule cycles, work with ensemble data and produce difference plots.\n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    \"python

    \n", + "
    © Crown Copyright 2022, Met Office
    " + ] + } + ], + "metadata": { + "instance_type": "ml.t3.medium", + "kernelspec": { + "display_name": "pyprecis-environment", + "language": "python", + "name": "pyprecis-environment" + }, + "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.6.10" + }, + "widgets": { + "state": {}, + "version": "1.1.2" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/AFR-22/worksheet3.ipynb b/notebooks/AFR-22/worksheet3.ipynb new file mode 100755 index 0000000..3919b84 --- /dev/null +++ b/notebooks/AFR-22/worksheet3.ipynb @@ -0,0 +1,1054 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Worksheet 3: Comparing models and observations for the historical period\n", + "\n", + "In the last worksheet we started to undertake basic data analysis and visulisation in python using Iris. This worksheet picks-up where we left off and introduces us to more advanced data analysis. This worksheet ends with an extended exercise to start you thinking about coding more independently." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "By the end of this worksheet you should be able to:
    \n", + "- Extract specific regions of interest from large datasets
    \n", + "- Apply more advanced statistical operations to multi-annual data.
    \n", + "- Produce your own data processing workflow.
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contents\n", + "### [3.1: Region extraction](#3.1)\n", + "### [3.2: Mean annual cycle calculation](#3.2)\n", + "### [3.3: Comparing models and observations](#3.3)\n", + "### [3.4: Climatological mean and annual cycle for an ensemble](#3.4)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Preamble\n", + "Run the code preamble below to import the necessary libraries for this worksheet.\n", + "\n", + "To run the code, click in the box below and press Ctrl + Enter." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Code preamble - these libraries will be used in this worksheet.\n", + "# This code block needs to be re-run every time you restart this worksheet!\n", + "%matplotlib inline\n", + "import os\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.cm as cm\n", + "import matplotlib.dates as mdates\n", + "import calendar\n", + "import iris\n", + "import iris.coord_categorisation\n", + "import iris.quickplot as qplt\n", + "import cartopy.crs as ccrs\n", + "from mpl_toolkits.axes_grid1 import AxesGrid\n", + "from cartopy.mpl.geoaxes import GeoAxes\n", + "from utils import copy_s3_files, flush_data\n", + "\n", + "\n", + "# Provide the names of the directories where the netCDF model files are stored\n", + "DATADIR = 'data_v2/'\n", + "\n", + "# CHIRPS dir\n", + "CHIRPSDIR = os.path.join(DATADIR, 'CHIRPS/')\n", + "\n", + "# Directory name where processed data is stored \n", + "HISTDIR = 'data_v2/EAS-22/historical'\n", + "\n", + "# Directory name where climtology data is stored \n", + "CLIMDIR = 'data_v2/EAS-22/climatology'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 3.1 Region extraction \n", + "\n", + "If you have an area or region you want to focus on, you can extract data for the region of interest. This example works through how to constrain your cube by latitude and longitude.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**a) Extract the area** around Bangkok for each of the three datasets, by specifiying latitude and longitude coordinates" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: Sort these jumbled values into the correct latitude and longitude extent for Bangkok, then enter them into the code block below so that they can be used to extract CHIRPS precipitation data over the city. \n", + "
    14.5\n", + "
    99.5\n", + "
    100.5\n", + "
    13.5\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Solution:**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Enter the ordered latitude and longitude coordinates for Bangkok here:\n", + "# lon=( , ) # longitude (East - West extent)\n", + "# lat=( , ) # latuitude (South - North extent)\n", + "lon =\n", + "lat =" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Run the code block below to extract the specified lat, lon coordinates from the **CHIRPS** dataset:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# load CHIRPS data\n", + "obs_cube = iris.load_cube(CHIRPSDIR + 'chirps-v2.0.monthly.global.1981_2018.nc')\n", + "\n", + "# Note that the CHIRPS data are on a regular grid (unlike the model data) so real latitudes and longitudes are\n", + "# used to define the region around KL (more on this in section 2.6)\n", + "obs_cube_BK = obs_cube.intersection(latitude=lat, longitude=lon)\n", + "\n", + "# save the constrained cube to directory\n", + "outfile = os.path.join(CHIRPSDIR, 'chirps.mon.1981_2018.BK.nc')\n", + "iris.save(obs_cube_BK, outfile)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: Recall that CORDEX uses a rotated pole grid for these simulations, so coordinates in the rotated pole frame of reference are required to correctly extract Bangkok from the model data.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__b) Extract the area around Bangkok for HadGEM2-ES and MPI-ESM__ driven simulations. To do this we must specify the **rotated latitude and longitude coordinates**. \n", + "\n", + "To convert the true Bangkok coordinates onto the rotated pole frame of reference, we need know the latitude and longitude of the pole in our rotated pole coordinate system. We can find this from the model cube:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load the HadGEM2-ES model cube data as need grid information from it\n", + "infile = os.path.join(HISTDIR, 'hadgem2-es.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + "hadgem2_cube = iris.load_cube(infile)\n", + "\n", + "pole_lat = hadgem2_cube.coord_system().grid_north_pole_latitude\n", + "pole_lon = hadgem2_cube.coord_system().grid_north_pole_longitude\n", + "print(f'Pole Latitude: {pole_lat}')\n", + "print(f'Pole Longitude: {pole_lon}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Iris includes a function to help us convert between coordinates in a rotated and non-rotated coordinate frame. We can use this to convert our non-rotated Bangkok coordinates:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "lon=np.array([99.5, 100.5])\n", + "lat=np.array([13.5, 14.5])\n", + "rotated_lons, rotated_lats = iris.analysis.cartography.rotate_pole(lon, lat, pole_lon, pole_lat)\n", + "print(f'Rotated Longitudes: {rotated_lons[0]:.2f}, {rotated_lons[1]:.2f}')\n", + "print(f'Rotated Latitudes: {rotated_lats[0]:.2f}, {rotated_lats[1]:.2f}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can run the code below to constrain the HadGEM2-ES and MPI-ESM data to Bangkok in rotated pole coordinates: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Constrain the cube area over Bangkok (BK).\n", + "# CORDEX EAS-22 uses a rotated grid, so the co-ordinates required are different to real world coordinates.\n", + "\n", + "for gcm in ['hadgem2-es', 'mpi-esm-lr']:\n", + " # Directory name where data are read from and stored to\n", + " infile = os.path.join(HISTDIR, gcm + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + " \n", + " # Load the baseline precipitation data using the BK_constraint - the command below\n", + " # loads the data into a cube constrained by the area chosen\n", + " data = iris.load_cube(infile)\n", + "\n", + " # All grid cells whose longitudes and latitudes lie within the limits shown will be selected.\n", + " data_BK = data.intersection(grid_longitude=rotated_lons,\n", + " grid_latitude=rotated_lats)\n", + "\n", + " # save the constrained cube\n", + " outfile = os.path.join(CLIMDIR, gcm + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.BK.nc')\n", + " iris.save(data_BK, outfile)\n", + " print(f'Saved: {outfile}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: How many grid cells are in the newly constrained Bangkok file?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Answer:**\n", + "*Write your answer here...*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 3.2 Mean annual cycle calculation\n", + "\n", + "Average over a given area (e.g Bangkok) to calculate multi-annual monthly mean values. \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**c) We now calculate monthly mean fields** for 1986-2005 for each of the twelve months for the Bangkok area." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: To accurately find averages over latitudinal areas, we must account for changes in the \n", + " distance between lines of latitude. These changes make the areas of grid boxes smaller as we move towards the\n", + " model pole. Iris provides a tool to help us do this: iris.analysis.cartography.area_weights(). Find out more in the Iris documentation here\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for gcm in ['hadgem2-es', 'mpi-esm-lr']:\n", + " # Set up the path to the data\n", + " infile = os.path.join(CLIMDIR, gcm + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.BK.nc')\n", + "\n", + " # Load the data extracted around Bangkok created in previous step\n", + " data = iris.load_cube(infile)\n", + "\n", + " # Add monthly coord categorisation to the time dimension coordinate\n", + " iris.coord_categorisation.add_month_number(data, 'time', name='month_number')\n", + "\n", + " # Calculate monthly mean values\n", + " monthly_mean = data.aggregated_by(['month_number'], iris.analysis.MEAN)\n", + " \n", + " # due to a limitation in Iris remove the 2D 'True' lat and lon coords\n", + " monthly_mean.remove_coord('longitude')\n", + " monthly_mean.remove_coord('latitude')\n", + "\n", + " # Find latitude weights\n", + " monthly_mean.coord('grid_longitude').guess_bounds()\n", + " monthly_mean.coord('grid_latitude').guess_bounds()\n", + " grid_areas = iris.analysis.cartography.area_weights(monthly_mean)\n", + " # Calculate area averaged monthly mean rainfall\n", + " monthly_mean = monthly_mean.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN, \n", + " weights=grid_areas)\n", + "\n", + " # Save the area averaged monthly mean data\n", + " outfile = os.path.join(CLIMDIR, gcm + '.mon.mean.1986_2005.pr.mmday-1.BK.nc')\n", + " iris.save(monthly_mean, outfile)\n", + " print('Saved: {}'.format(outfile))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**d) Plot the BK area averaged monthly mean precipitation** amount in mm/day for the HadGEM2-ES and MPI-ESM driven runs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for gcm in ['hadgem2-es', 'mpi-esm-lr']:\n", + " # Load the model cube\n", + " inpath = os.path.join(CLIMDIR, gcm + '.mon.mean.1986_2005.pr.mmday-1.BK.nc')\n", + " print(inpath)\n", + " cube = iris.load_cube(inpath) \n", + " # Quick line plot for each cube \n", + " qplt.plot(cube.coord('month_number'), cube)\n", + " plt.title('BK area averaged ' + gcm + '\\n monthly average of daily rainfall')\n", + " ax = plt.gca()\n", + " ax.xaxis.set_label_text('Month Number')\n", + " ax.set_xlim(0.5, 12.5)\n", + " ax.set_ylim(0, 16)\n", + " plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: Considering the plots of HadGEM2-ES and MPI-ESM-LR data, note down their approximate values in mm day-1 for the following features: \n", + "\n", + "- Which month experiences the most rainfall? (also note the amount)\n", + "- If a second rainfall peak exists in another season, note the month and amount\n", + "- Which month experiences the least rainfall? (also note the amount)\n", + "\n", + "What comparisons can be made about these two datasets?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + " \n", + "HadGEM2-ES\n", + "- Most rainfall: *month, amount*\n", + "- Secondary peak of rainfall: *month, amount*\n", + "- Least rainfall: *month, amount*\n", + "\n", + "MPI-ESM-LR\n", + "- Most rainfall: *month, amount*\n", + "- Secondary peak of rainfall: *month, amount*\n", + "- Least rainfall: *month, amount*\n", + "\n", + "How comparable are these datasets? How are they different?
    \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**e) Find the multi-annual monthly means (1986-2005) over the BK area for CHIRPS observations** by following the same methodology as above in step d). As before we've given you the input and output files names." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load the BK extracted data created in previous step\n", + "infile = os.path.join(CHIRPSDIR, 'chirps.mon.1986_2005.BK.nc')\n", + "\n", + "\n", + "# Add monthly coord categorisation to the time dim coordinate\n", + "\n", + "\n", + "# Now calculate monthly means\n", + "\n", + "\n", + "# and change units to mm/day from mm/month\n", + "\n", + "\n", + "# create the area averaged monthly mean of daily rainfall\n", + "\n", + "# Save output\n", + "outfile = os.path.join(CLIMDIR, 'chirps.mon.mean.1986_2005.mmday-1.nc')\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: Plot the CHIRPS observations, compare with the HadGEM2-ES and MPI-ESM-LR driven REMO2015 runs. What are the differences between the observations and models; in which months are the differences greatest?\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Complete your plotting script here\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + "*Write your findings here...*\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 3.3 Comparing models and observations\n", + "\n", + "In Section 2.4 we saw how to plot model output on individual maps, but in order to do a rigorous comparison, **spatial model and observation fields must be on the same grid.**\n", + "\n", + "**You should regrid to the coarsest resolution grid.** For the data used here, the observations have the coarsest resolution so we will regrid the model data onto the observation grid.\n", + "\n", + "Recall that the REMO2015 model data are on a grid known as a **Rotated Pole** coordinate system. The idea is that the \"real\" north pole in the Arctic is shifted such that the equator relative to our rotated pole then runs through the centre of the regional model domain." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**f) Regrid the multiannual OND mean model** fields onto the observations grid.\n", + "\n", + "Here we use the `regrid` method to regrid the target cube. Here we will use linear interpolation. First, load in the data.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# load HadGEM2-ES\n", + "infile = os.path.join(CLIMDIR, 'hadgem2-es.OND.mean.1986_2005.pr.mmday-1.nc')\n", + "hadgem2_model_cube = iris.load_cube(infile)\n", + "# load MPI-ESM-LR\n", + "infile = os.path.join(CLIMDIR, 'mpi-esm-lr.OND.mean.1986_2005.pr.mmday-1.nc')\n", + "mpi_model_cube = iris.load_cube(infile)\n", + "# load \n", + "infile = os.path.join(CLIMDIR, 'chirps.OND.mean.1986_2005.pr.mmday-1.nc')\n", + "obs_cube = iris.load_cube(infile)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Before we can regrid any data, both the model and observation datasets must have a **specified coordinate system**. \n", + "\n", + "In this case, CHIRPS's coordinate system is missing from the original netCDF file, but the observations are on a regular longitude-latitude grid so the correct coordinate system is [WGS84](https://epsg.io/32600/). \n", + "\n", + "In the code below, we define the WGS84 coordinate system and then apply it to the x- and y-axes (i.e. longitudes and latitudes) of the observations. \n", + "\n", + "The coordinate system used by the model (the rotated grid) is already defined.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# Define WGS84 projection for obs data\n", + "wgs84 = iris.coord_systems.GeogCS(semi_major_axis=6378137.0, inverse_flattening=298.257223563)\n", + "\n", + "# Apply WGS84 to obs cube\n", + "obs_cube.coord(axis='x').coord_system = wgs84\n", + "obs_cube.coord(axis='y').coord_system = wgs84\n", + "\n", + "# Print out and compare the two coordinate systems\n", + "print(obs_cube.coord_system())\n", + "print(hadgem2_model_cube.coord_system())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The next few lines of code **regrid the model data from rotated pole to the regular grid used by the observations**. \n", + "\n", + "From the plots created in section 2.4, we know that the area covered by CHIRPS data is larger than the EAS-22 model domain. Hence, the **extrapolation mode** is set to `mask` so that any grid cells on the CHIRPS grid which do not overlap with model grid cells are masked `off`; otherwise, the model data would be interpolated and would produce misleading results.\n", + "\n", + "Note also that as CHIRPS is a near global data set, we take a subset of the data over our region of interest.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Note: When working with data arrays masks can be extremely useful. Masks are an array of boolean values matching the shape of the data arrya, where a particular condition is met. These boolean arrays can then be used to hide or show parts of the dataset, given the value of the mask. You can see more examples of masks here \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "lon = (60., 150.)\n", + "lat = (10., 50.)\n", + "\n", + "obs_cube_sub = obs_cube.intersection(latitude=lat, longitude=lon)\n", + "\n", + "# Regrid the climate model data onto CHIRPS grid\n", + "hadgem2_regrid = hadgem2_model_cube.regrid(obs_cube_sub, iris.analysis.Nearest(extrapolation_mode='mask'))\n", + "mpi_regrid = mpi_model_cube.regrid(obs_cube_sub, iris.analysis.Nearest(extrapolation_mode='mask'))\n", + "\n", + "# Save HadGEM2 output\n", + "outpath = os.path.join(CLIMDIR, 'hadgem2-es.OND.mean.1986_2005.pr.mmday-1.rg.nc')\n", + "iris.save(hadgem2_regrid, outpath)\n", + "print('Saved: {}'.format(outfile))\n", + "\n", + "# Save MPI-ESM output\n", + "outpath = os.path.join(CLIMDIR, 'mpi-esm-lr.OND.mean.1986_2005.pr.mmday-1.rg.nc')\n", + "iris.save(mpi_regrid, outpath)\n", + "print('Saved: {}'.format(outfile))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: Now that the cubes are all on the same grid, what differences do you see?
    Complete the code template below to help answer this question.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Hint:** You need to (i) load the NetCDF files, (ii) plot the CHIRPS and model data again (as in section 2.4) to compare them visually once again." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Directory name where data is read from\n", + "indir = os.path.join(DATADIR, 'EAS-22', 'climatology')\n", + "\n", + "# load HadGEM2-ES downscaled model data\n", + "\n", + "# load MPI-ESM-LR downscaled model data\n", + "\n", + "# load CHIRPS data and extract region\n", + "\n", + "# Do some plotting!\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Answer:**\n", + "\n", + "_Write your findings here..._" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**g) Find the difference between the model and the observation OND multiannual mean** fields and plot maps to view the differences\n", + "\n", + "To find differences, now that the model and observations are on the same grid we can simply subtract the model data from the observations. \n", + "\n", + "There is a subtract function within Iris but it cannot be used here. The model cubes contain extra coordinates which are not present in the obs cube; Iris requires all coordinates within the cubes to match exactly." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Make sure units are the same\n", + "obs_cube.units = hadgem2_regrid.units\n", + "\n", + "# Make recieving cube\n", + "hadgem2_obs_diff = obs_cube.copy()\n", + "mpi_obs_diff = obs_cube.copy()\n", + "\n", + "# Replace data with the differences\n", + "hadgem2_obs_diff.data = hadgem2_regrid.data - obs_cube.data\n", + "mpi_obs_diff.data = mpi_regrid.data - obs_cube.data\n", + "\n", + "# Plotting\n", + "plt.figure(figsize=(12, 10))\n", + "plt.subplot(1, 2, 1) # Create a new subplot for the first differences, 2 rows, 1 column, 1st plot\n", + "\n", + "# Only plot the region containing data. We use the intersection method to do this.\n", + "qplt.pcolormesh(hadgem2_obs_diff[0].intersection(longitude=(90, 135), latitude=(-20, 32)), \n", + " vmax=10, vmin=-10, \n", + " cmap=plt.get_cmap('RdBu')) # Note this is where cube slicing is needed as you can only plot 2-coordinate\n", + " # dimensions with qplt.contourf, so here we have selected time[0] as there is only\n", + " # one timestep (the baseline 1986-2005 mean)\n", + "\n", + "plt.title('HadGEM2-ES - obs') # plots a title for the plot\n", + "ax = plt.gca() # gca function that returns the current axes\n", + "ax.coastlines() # adds coastlines defined by the axes of the plot\n", + "\n", + "plt.subplot(1, 2, 2) # Create a new subplot for the model data 2 row, 2 columns, 2nd plot\n", + "qplt.pcolormesh(mpi_obs_diff[0].intersection(longitude=(90, 135), latitude=(-20, 32)),\n", + " vmax=10, vmin=-10,\n", + " cmap=plt.get_cmap('RdBu'))\n", + "\n", + "plt.title('MPI-ESM-LR - obs') # plots a title for the plot\n", + "ax = plt.gca() # gca function that returns the current axes\n", + "ax.coastlines() # adds coastlines defined by the axes of the plot\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Questions: We have now created difference plots; to more easily validate the model(s) directly against observations. \n", + " \n", + "- Why has the data over the oceans disappeared?\n", + "- Which of the two model datasets (HadGEM2-ES and MPI-ESM-LR) has the greatest wet bias? In which region? \n", + "- Are there any areas in HadGEM2-ES or MPI-ESM-LR with a strong dry bias? Roughly what is the extent of this bias (in mm/day)? \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answers\n", + "- The data over the oceans has disappeared because [...] \n", + "\n", + "- The greatest wet bias occus in model [...], in region [...] \n", + "\n", + "- A strong dry bias exists in model [...] in region [...] (roughly [...] mm/day drier than CHIRPS observations). \n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 3.4 Climatological mean and annual cycle for an ensemble\n", + "\n", + "So far data from two GCMs downscaled with the REMO2015 RCM have been analysed. In this section we will add data from an extra RCM (REGCM4) and an extra GCM giving 6 runs in total. We will also make use of the CRU observational data set. \n", + "\n", + "The CRU data are a monthly global land-only dataset (1901-present) at 0.5 degree resolution. Nine variables are available, including mean, min, max temperature and precipitation. For further details please see: https://crudata.uea.ac.uk/cru/data/hrg/ \n", + "\n", + "This gives us an ensemble of 6 GCM-RCM pairs:\n", + "\n", + "* RCM REMO2015 downscaling:\n", + " * HadGEM2-ES\n", + " * MPI-ESM-LR\n", + " * NorESM1-M\n", + "* RCM REGCM4-7 downscaling:\n", + " * HadGEM2-ES\n", + " * MPI-ESM-MR (note medium resolution not low resolution)\n", + " * NorESM1-M\n", + "\n", + "And observational datasets:\n", + "\n", + "* CHIRPS\n", + "* CRU\n", + "\n", + "Taking an ensemble approach allows us to account for a range of uncertainty in the model projections.\n", + "\n", + "Write a series of scripts to do the following:\n", + "\n", + "**h) Calculate the OND seasonal mean and annual cycle** (for the BK area) for 1.5m temperature and precipitation for CRU and CHIRPS observations\n", + "\n", + "**i) Calculate OND seasonal-mean and monthly-mean anomalies** for the BK area for the 4 additional models\n", + "\n", + "**j) Plot a series of figures** that shows 1) the monthly cycles of temperature and rainfall comparing the 6 models and the observations; and 2) the monthly differences between the models and observations" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we first need to download CRU and netcdf data\n", + "copy_s3_files('s3://ias-pyprecis/data/CRU/*.nc', 'data/CRU/')\n", + "copy_s3_files('s3://ias-pyprecis/data/netcdf/*.nc', 'data/netcdf/')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "Here are some useful variables you might like to use in your scripts\n", + "'''\n", + "# Some helpful data locations\n", + "DATADIR = 'data_v2'\n", + "CHIRPSDIR = os.path.join(DATADIR, 'CHIRPS')\n", + "CRUDIR = os.path.join(DATADIR, 'CRU')\n", + "CLIMDIR = 'data_v2/EAS-22/climatology'\n", + "MODELDIR = os.path.join(DATADIR, 'cordex/EAS-22')\n", + "\n", + "# Some helpful model variables\n", + "GCMS = ['hadgem2-es', 'mpi-esm-lr']\n", + "RCMS = ['GERICS-REMO2015','ICTP-RegCM4-7']\n", + "\n", + "# Bangkok domains...\n", + "# ... in true lat-lon coordiates\n", + "lon=(99.5, 100.5)\n", + "lat=(13.5, 14.5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "h) Calculate the OND seasonal-mean and monthly-mean 1.5m temperature and precipitation \n", + "for the BK area, for CRU and CHIRPS observations\n", + "'''\n", + "# Load CHIRPS data\n", + "\n", + "# Load CRU data\n", + "\n", + "# Extract BK area\n", + "\n", + "# Add OND season catagorisation\n", + "\n", + "# Add monthly catagorisation\n", + "\n", + "# Extract season\n", + "\n", + "# Aggregate cubes\n", + "\n", + "# Find BK area average\n", + "\n", + "# Check and add cube metadata\n", + "\n", + "# Save cubes to CLIMDIR\n", + "# Remember to use the same naming convention we used earlier\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "i) Calculate OND seasonal-mean and monthly-mean anomalies for the BK area \n", + "for the 4 additional models runs \n", + "'''\n", + "# Load ensemble members\n", + "# Remember you need to do this for both precipitation AND temperature\n", + "\n", + "# Regrid ensemble members onto observational grid\n", + "# Remember you need to check your model and obs cubes have the appropriate coordinate systems defined\n", + "\n", + "# Extract the BK area. Remember you are now working in true lat-lon coordinates!\n", + "\n", + "# Find OND and monthly means\n", + "\n", + "# Calculate model anomalies\n", + "# Remember temp anomaly = model - CRU data\n", + "# precip anomaly = model - CHIRPS data\n", + "\n", + "# Check cube metadata consistency and save\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + " Question: What difference would it make if we first extracted the BK area and then regrid the models?
    \n", + "Which order is best for preserving data integrity?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create four figures:\n", + " \n", + " i) the monthly cycle of temperature (model and observations) \n", + " ii) the monthly cycle of rainfall (model and observations)\n", + " iii) the monthly temperature anomaly for each model\n", + " iv) the monthly precipitation anomaly for each model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "Plot 1: The monthly cycle of temperature (model and observations)\n", + "'''\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "Plot 2: The monthly cycle of precipitation (model and observations)\n", + "'''\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "Plot 3: The monthly temperature anomaly for each model\n", + "'''\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "Plot 4: The monthly precipitation anomaly for each model\n", + "'''\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + " Question: How could you summarise the ensemble variability amongst model members in a plot?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Question: How does the monthly temperature and precipitation anomaly compare to the OND average?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Question: What are the advantages and disadvantages of plotting spatial maps of temperature and rainfall variability over Bangkok?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
    \n", + "
    This completes worksheet 3.

    \n", + " You have used Python and Iris to validate the model's climatology (30 years of baseline data: 1986-2005) against observations, in order to analyse the model's capability of representing real-world trends.
    \n", + "To do so, you have:\n", + " \n", + "- calculated and plotted multiannual seasonal and monthly mean data,\n", + "- regridded rotated pole model data to a regular latitude-longitude grid,\n", + "- created difference plots to compare model data with observations, and \n", + "- written your own code to do all of these post-processing and analysis tasks with an multi-model ensemble!
    \n", + "\n", + "In worksheet 4, you will consider future model projections and their changes with respect to the baseline period (calculated in this worksheet).\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    \"python

    \n", + "
    © Crown Copyright 2022, Met Office
    " + ] + } + ], + "metadata": { + "instance_type": "ml.t3.medium", + "kernelspec": { + "display_name": "pyprecis-environment", + "language": "python", + "name": "pyprecis-environment" + }, + "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.6.10" + }, + "widgets": { + "state": {}, + "version": "1.1.2" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/AFR-22/worksheet4.ipynb b/notebooks/AFR-22/worksheet4.ipynb new file mode 100755 index 0000000..64f072e --- /dev/null +++ b/notebooks/AFR-22/worksheet4.ipynb @@ -0,0 +1,629 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Worksheet 4: Creating future climate scenarios and analysing climate change\n", + "\n", + "The following exercises demonstrate basic methods for analysing changes in climate, using two CORDEX-Core experiments (REMO2015 driven by HadGEM2-ES and MPI-ESM-LR) As with worksheets 2 & 3, these are examples of some of the many types of analyses that can be performed using Python and Iris." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "By the end of this worksheet you should be able to:
    \n", + "\n", + "- Calculate difference and percentage differences across cubes
    \n", + "- Plot cubes using different plotting methods and with an appropriate colour scale
    \n", + "- Create time series anomalies of precipitation and tempeature
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: As in Worksheet 2, the data used here has been processed in the same way as in Worksheet 1. The whole period has been concatenated into a single file to avoid issues with loading multiple files.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contents\n", + "### [4.1: Calculate future OND mean precipitation](#4.1) \n", + "### [4.2: Find OND anomalies](#4.2)\n", + "### [4.3: Plot precipitation and temperature](#4.3)\n", + "### [4.4: Future time series](#4.4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Preamble" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Code preamble - these libraries will be used in this worksheet.\n", + "# This code block needs to be re-run every time you restart this worksheet!\n", + "%matplotlib inline \n", + "import os\n", + "import iris\n", + "import iris.coord_categorisation\n", + "from iris.experimental.equalise_cubes import equalise_attributes\n", + "import iris.quickplot as qplt\n", + "import iris.plot as iplt\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import numpy.ma as ma\n", + "\n", + "# Some helpful data locations\n", + "DATADIR = 'data_v2/EAS-22/'\n", + "CLIMDIR = os.path.join(DATADIR, 'climatology')\n", + "HISTDIR = os.path.join(DATADIR, 'historical')\n", + "FUTRDIR = os.path.join(DATADIR, 'future')\n", + "GCMIDS = ['hadgem2-es', 'mpi-esm-lr']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 4.1 Calculate future OND mean precipitation\n", + "**a)** First, we **calculate future OND (October, November, December) mean precipitation** for the period 2041-2060 for the HadGEM2-ES driven REMO2015 simulation and the MPI-ESM-driven simulation :" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for gcmid in GCMIDS:\n", + " infile = os.path.join(FUTRDIR, gcmid + '.mon.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", + " data = iris.load_cube(infile)\n", + "\n", + " # in order to calculate OND mean, we divide the months into two seasons: \n", + " # one for OND and a second for the remaining months\n", + " iris.coord_categorisation.add_season(data, 'time', name='seasons', seasons=('jfmamjjas','ond'))\n", + "\n", + " # Extract the data for the OND season only\n", + " data_ond = data.extract(iris.Constraint(seasons='ond'))\n", + "\n", + " # Now calculate the mean over the OND season\n", + " ond_mean = data_ond.aggregated_by(['seasons'], iris.analysis.MEAN)\n", + "\n", + " # save the OND mean as a netCDF\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(ond_mean, outfile)\n", + " print('Saved: {}'.format(outfile))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: Within the loop, we have created two cubes: a seasonal OND constrained cube data_ond, and a seasonal mean cube ond_mean. Inspect the cube metadata. What are the differences? \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Use this code block to inspect the two cubes\n", + "# e.g. print(cube)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer
    \n", + " *Type your answer here...*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Note: Remember, the loop has created and saved two cubes, one for each downscaled GCM.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 4.2 Find OND anomalies\n", + "**b)** Next, we **subtract the baseline (1986-2005) mean from the future (2041-2060) mean** for OND to get the change in precipitation (or **anomaly**) from both simulations. The changes are also converted to percentages:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for gcmid in GCMIDS:\n", + " # Load the baseline cube\n", + " infile = os.path.join(CLIMDIR, gcmid + '.OND.mean.1986_2005.pr.mmday-1.nc')\n", + " OND_baseline = iris.load_cube(infile)\n", + " # Set the correct units\n", + " OND_baseline.units = \"mm day-1\"\n", + " # Load the future cube\n", + " infile = os.path.join(CLIMDIR, gcmid + '.OND.mean.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", + " OND_future = iris.load_cube(infile)\n", + " # Subtract the baseline cube from the future cube\n", + " diff = iris.analysis.maths.subtract(OND_future, OND_baseline)\n", + " # rename the cube to reflect the data processing\n", + " diff.rename('precipitation flux difference')\n", + " # Save the resulting cube\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.diff.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(diff, outfile)\n", + " print('Saved {}'.format(outfile))\n", + " # Find the percentage change\n", + " pcent_change = iris.analysis.maths.multiply(iris.analysis.maths.divide(diff, OND_baseline), 100)\n", + " # remember to change the title and units to reflect the data processing\n", + " pcent_change.rename('precipitation flux percent difference')\n", + " pcent_change.units = '%'\n", + " # And save this too\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.diffperc.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(pcent_change, outfile)\n", + " print('Saved {}'.format(outfile))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**c)** Now, repeat the calculations yourself for **temperature**. \n", + "\n", + "First, we calculate the **OND mean** temperatures. \n", + "\n", + "**Fill in the missing commands in the code block below**:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# HINT: Your filenames should have the format: \n", + "# gcmid + '.OND.mean.' + time_periods[period] + '.GERICS-REMO2015.tm.C.nc'\n", + "time_periods = {'historical':'1986_2005', 'future':'2041_2060'}\n", + "\n", + "for gcmid in GCMIDS:\n", + " for period in time_periods.keys():\n", + " # Load the data:\n", + "\n", + " # In order to calculate OND mean, add a season coordinate, separating OND from the other months:\n", + "\n", + " # Extract the data for the OND season only:\n", + " \n", + " # Now calculate the mean over the OND season:\n", + "\n", + " # save the OND mean as a netCDF ('outfile' specifies the output file name for your OND mean cube):\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.' + time_periods[period] + '.GERICS-REMO2015.tm.C.nc')\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**d)** Next, we **calculate the difference** between the baseline and future periods." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for gcmid in GCMIDS:\n", + " # Load files:\n", + " baselinefile = os.path.join(CLIMDIR, gcmid + '.OND.mean.1986_2005.GERICS-REMO2015.tm.C.nc')\n", + " futurefile = os.path.join(CLIMDIR, gcmid + '.OND.mean.2041_2060.GERICS-REMO2015.tm.C.nc')\n", + " OND_baseline = iris.load_cube(baselinefile)\n", + " OND_future = iris.load_cube(futurefile)\n", + " \n", + " # Calculate 'future mean' minus 'baseline mean':\n", + " diff = iris.analysis.maths.subtract(OND_future, OND_baseline)\n", + " diff.rename('surface temperature difference')\n", + " \n", + " # Save\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.diff.GERICS-REMO2015.tm.C.nc')\n", + " iris.save(diff, outfile)\n", + " print('Saved: {}'.format(outfile))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 4.3 Plot precipitation and temperature\n", + "\n", + "**e)** **Plot changes** to precipitation (in %) and temperature (in deg.C)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Create a figure of the size 12x12 inches\n", + "plt.figure(figsize=(12, 12))\n", + "\n", + "# Read in the percentage changes in precipitation\n", + "for n, gcmid in enumerate(GCMIDS):\n", + " prpath = os.path.join(CLIMDIR, gcmid + '.OND.mean.diffperc.GERICS-REMO2015.pr.mmday-1.nc')\n", + " tmpath = os.path.join(CLIMDIR, gcmid + '.OND.mean.diff.GERICS-REMO2015.tm.C.nc')\n", + " pcent_change = iris.load_cube(prpath)\n", + " degc_change = iris.load_cube(tmpath)\n", + "\n", + " # Remove extra time dimension using an iris utility \n", + " pcent_change = iris.util.squeeze(pcent_change)\n", + " degc_change = iris.util.squeeze(degc_change)\n", + " \n", + " plot_num = n*2 + 1\n", + " plt.subplot(2, 2, plot_num) # Create a new subplot with 2 rows, 2 columns, 1st plot\n", + " qplt.pcolormesh(pcent_change, vmax=30, vmin=-30, cmap='BrBG')\n", + " plt.title(gcmid + ' precipitation change (%)')\n", + " ax = plt.gca() # gca function that returns the current axes\n", + " ax.coastlines() # adds coastlines defined by the axes of the plot\n", + "\n", + " plt.subplot(2, 2, plot_num+1)\n", + " qplt.pcolormesh(degc_change, vmax=2.5, vmin=0, cmap='Reds')\n", + " plt.title(gcmid + ' temperature change ($\\degree$C)')\n", + " ax = plt.gca()\n", + " ax.coastlines()\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: How would you use a discrete contoured colour map to show changes in precipitation and temperature?
    \n", + " Modify the code above to use qplt.pcontourf(). Remember to choose appropriate contours.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Question: The plots show projected changes in precipitation and temperature using two models; what are the common features between the two model projections? \n", + " \n", + "What differences exist between the two model projections? Which is hotter, wetter, how does the spatial distribution differ? \n", + " \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + "*Type your answers here...*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 4.4 Future time series\n", + "\n", + "**f)** Calculate and then plot a 2041-2060 monthly **time series of precipitation anomalies** for land\n", + "points only, relative to the 1986-2005 baseline monthly mean. Do this for both the downscaled HadGEM2-ES and MPI-ESM-LR \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Read in the land-sea mask. \n", + "# The cube data array has a land fraction associated with it which we'll use to mask out ocean points.\n", + "land_fraction_file = 'sftlf_EAS-22_MOHC-HadGEM2-ES_historical_r0i0p0_GERICS-REMO2015_v1_fx_r0i0p0.nc'\n", + "land_fraction = iris.load_cube(DATADIR + land_fraction_file)\n", + "\n", + "# convert this to a binary (i.e. 1 or 0 mask)\n", + "land_sea_mask = land_fraction.copy()\n", + "land_sea_mask.data = np.where(land_sea_mask.data < 50, 0, 1)\n", + "land_sea_mask.name = 'land_binary_mask'\n", + "# apply a mask to the cube \n", + "land_sea_mask = iris.util.mask_cube(land_sea_mask, land_sea_mask.data < 0.5)\n", + "\n", + "\n", + "for gcmid in GCMIDS:\n", + " # Read in original data for baseline and future\n", + " baselinepath = os.path.join(HISTDIR, gcmid + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + " futurepath = os.path.join(FUTRDIR, gcmid + '.mon.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", + " baseline = iris.load_cube(baselinepath)\n", + " future = iris.load_cube(futurepath)\n", + " \n", + " # Apply land mask\n", + " baseline.data = ma.array(baseline.data, mask=baseline.data*land_sea_mask.data.mask[np.newaxis, :,:])\n", + " future.data = ma.array(future.data, mask=future.data*land_sea_mask.data.mask[np.newaxis, :,:])\n", + "\n", + " # the code to calculate area weights requires a single longitude and latitude coordindate - \n", + " # remove the 2D \"true\" lat and lon\n", + " baseline.remove_coord('longitude')\n", + " baseline.remove_coord('latitude')\n", + " future.remove_coord('longitude')\n", + " future.remove_coord('latitude')\n", + " \n", + " # Guess bounds\n", + " for cube in [baseline, future]:\n", + " for coord in ['grid_longitude', 'grid_latitude']:\n", + " cube.coord(coord).guess_bounds()\n", + " \n", + " # Calculate mean values over land points\n", + " baseline_land = baseline.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN,\n", + " weights = iris.analysis.cartography.area_weights(baseline))\n", + " future_land = future.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN,\n", + " weights = iris.analysis.cartography.area_weights(future))\n", + "\n", + " # Save future & baseline area averaged monthly data (time series)\n", + " baselineout = os.path.join(CLIMDIR, gcmid + '.mon.1986_2005.series.GERICS-REMO2015.pr.mmday-1.nc')\n", + " futureout = os.path.join(CLIMDIR, gcmid + '.mon.2041_2060.series.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(baseline_land, baselineout)\n", + " iris.save(future_land, futureout)\n", + "\n", + " # Subtract baseline from future\n", + " diff = future_land.copy()\n", + " diff.data = future_land.data - baseline_land.data.mean()\n", + " diff.rename('future anomaly relative to mean historical precipitation')\n", + "\n", + " # Save the area averaged monthly future anomalies (time series)\n", + " outpath = os.path.join(CLIMDIR, gcmid + '.mon.2041_2060.anom.series.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(diff, outpath)\n", + " print('Saved: {}'.format(outpath))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + " Question: Why do we only want to produce a time series for changes over land?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Answer:**\n", + "\n", + "_Type your answer here..._" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**g)** **Plot the precipitation anomalies** of HadGEM2-ES and MPI-ESM-LR downscaled" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# Read in the monthly series\n", + "hadgem2es = iris.load_cube(CLIMDIR + '/hadgem2-es.mon.2041_2060.anom.series.GERICS-REMO2015.pr.mmday-1.nc')\n", + "mpiesm = iris.load_cube(CLIMDIR + '/mpi-esm-lr.mon.2041_2060.anom.series.GERICS-REMO2015.pr.mmday-1.nc')\n", + "time = hadgem2es.coord('time')\n", + "\n", + "# Plot the two model time series' on the same figure\n", + "plt.figure(figsize=(16,5))\n", + "iplt.plot(time, hadgem2es, label = 'HadGEM2-ES')\n", + "iplt.plot(time, mpiesm, label = 'MPI-ESM-LR')\n", + "plt.legend()\n", + "plt.suptitle('2041-2060 Precipitation anomaly (relative to 1986-2005)')\n", + "plt.ylabel(f'Precipitation change ({hadgem2es.units}')\n", + "plt.xlabel('Years')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**h) Produce and plot a montly time series of temperature data** relative to the 1986-2005 baseline. As for (f) and (g) produce time series for HadGEM2-ES and MPI-ESM-LR driven runs.\n", + "\n", + "**Fill in the missing commands in the code blocks below**:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# HINT: The temperature data has filenames with the pattern:\n", + "# gcmid + '.mon.1986_2005.GERICS-REMO2015.tm.C.nc' or gcmid + '.mon.2041_2060.GERICS-REMO2015.tm.C.nc'\n", + "\n", + "# Loop over GCMIDS\n", + "\n", + "\n", + "# Read in original data for baseline and future\n", + "\n", + "# Apply land mask\n", + "\n", + "# remove the 2D \"true\" lat and lon\n", + "\n", + "# Guess bounds\n", + "\n", + "# Calculate mean values over land points\n", + "\n", + "# Save future & baseline area averaged monthly data (time series)\n", + "\n", + "# Subtract baseline from future\n", + "\n", + "# Save the data, make sure you follow the file naming convention!\n", + "\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Do some plotting...\n", + "# Read in the monthly series\n", + "\n", + "\n", + "# Plot the two model time series' on the same figure\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: Write a short summary of these two graphs. Include:\n", + " \n", + "- A description of what each plot shows\n", + "- The differences between the two models\n", + "- A consideration of the ways the climate in East Asia might be different in the future\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Answer:**\n", + "\n", + "_Type your answer here..._" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Question: Conside the plots we produced in Section 4.3. What additional time series analysis could you do to support your consideration of future changes to climate in the question above?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    This completes worksheet 4.

    \n", + " You have used Iris to investigate differences between historical and future changes in model output by comparing 20 years of baseline data (1986-2005) against a future period (20241-2060).
    \n", + "To do so, you have:\n", + " \n", + "- calculated and plotted seasonal mean changes in temperature and precipitation\n", + "- masked out ocean data to focus on changes over land\n", + "- calculated anomalies by comparing future data to the historical mean period\n", + "- plotted time series of both temperature and precipitation anomalies over land for two different models
    \n", + "\n", + "In worksheet 5, you will investigate climate extremes by investigating threshold and extreme climate indicies.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    \"python

    \n", + "
    © Crown Copyright 2022, Met Office
    " + ] + } + ], + "metadata": { + "instance_type": "ml.t3.medium", + "kernelspec": { + "display_name": "pyprecis-environment", + "language": "python", + "name": "pyprecis-environment" + }, + "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.6.10" + }, + "widgets": { + "state": {}, + "version": "1.1.2" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/AFR-22/worksheet5.ipynb b/notebooks/AFR-22/worksheet5.ipynb new file mode 100755 index 0000000..4a6d417 --- /dev/null +++ b/notebooks/AFR-22/worksheet5.ipynb @@ -0,0 +1,853 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Worksheet 5: Thresholds and climate extremes\n", + "The following exercises demonstrate analysis of moderate extremes in climate simulated in CORDEX. As with the other worksheets, these are just examples of some of the analysis that you might perform using packages such as Python and and the python Library IRIS.\n", + "\n", + "The basis of climate extremes analysis is a common set of standard extreme climate indices, defined by the World Climate Research Programme [Expert Team on Climate Change Detection and Indices (ETCCDI)](https://www.wcrp-climate.org/etccdi).\n", + "\n", + "There are 27 climate extremes indices, nicely summarised by the [Climdex](https://www.climdex.org/learn/indices/) website. You can read more about them in the frame below..." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from IPython.display import IFrame\n", + "IFrame('https://www.climdex.org/learn/indices/', width=950, height=350)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this worksheet we'll be looking at wet days, a threshold measure giving the count of days when $\\mathrm{pr} \\geq 1 mm \\;day^{-1}$, and **R95p**, the 95th percentile of precipitation on wet days ($\\mathrm{pr} \\geq 1 mm \\;day^{-1}$) in the 1986-2005 period." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "By the end of this worksheet you should be able to:
    \n", + "- Have an appreciation for working with daily model data
    \n", + "- Understand how to calculate some useful climate extremes statistics
    \n", + "- Be aware of some coding stratagies for dealing with large data sets
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contents\n", + "### [5.1: Frequency of Wet days](#5.1) \n", + "### [5.2: Calculating percentiles](#5.2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Preamble" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Code preamble - these libraries will be used in this worksheet.\n", + "# This code block needs to be re-run every time you restart this worksheet!\n", + "%matplotlib inline \n", + "import os\n", + "import iris\n", + "import iris.coord_categorisation\n", + "import iris.quickplot as qplt\n", + "import iris.plot as iplt\n", + "from iris.time import PartialDateTime\n", + "import cartopy.crs as ccrs\n", + "import cartopy.feature as cfeature\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import dask\n", + "dask.config.set(scheduler=dask.get)\n", + "import dask.array as da\n", + "from iris.analysis import Aggregator\n", + "\n", + "# Some helpful data locations\n", + "DATADIR = 'data_v2/EAS-22'\n", + "CLIMDIR = os.path.join(DATADIR, 'climatology')\n", + "HISTDIR = os.path.join(DATADIR, 'historical')\n", + "FUTRDIR = os.path.join(DATADIR, 'future')\n", + "CHIRPSDIR = os.path.join('data_v2', 'CHIRPS')\n", + "GCMIDS = ['hadgem2-es', 'mpi-esm-lr']\n", + "TIME_PERIODS = {'historical':'1986_2005', 'future':'2041_2060'}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + " Question: Thinking about climate extremes, what model averaging period should we be using for our data analysis? Why?
    \n", + " How do we identify this model avergaing period in the model output filenames?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + "*Type your answer here...*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 5.1 Frequency of wet days\n", + "\n", + "**a)** Start by finding the frequency of wet days using daily data for both _HadGEM2-ES_ and _MPI-ESM-LR_ driven runs. Calculate the number of days in both the baseline and future periods which are wet days - **a wet day is defined as having precipitation >=1 mm/day**. Then calculate the percentage of wet days.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# For each day: is rainfall >= 1? True/False\n", + "# Sum over all days to get number of wet days at each grid point\n", + "# Do for both model simulations and time periods\n", + "# Then calcuate the percentage of wet days.\n", + "\n", + "# Define a new aggregator to help count non-zero days\n", + "# (This uses a dask array to reduce memory load)\n", + "# To learn more about custom aggregators see\n", + "# https://scitools.org.uk/iris/docs/v2.4.0/examples/General/custom_aggregation.html#general-custom-aggregation \n", + "\n", + "count_nonzero = Aggregator('count', None,\n", + " units_func=lambda units: 1,\n", + " lazy_func=da.count_nonzero)\n", + "\n", + "for gcmid in GCMIDS:\n", + " for period in TIME_PERIODS.keys():\n", + " # Get path to daily data\n", + " infile = os.path.join(DATADIR, period, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.pr.*.nc')\n", + " data = iris.load_cube(infile)\n", + " # Select only wet days using our custom aggregator\n", + " model_wetdays = data.collapsed('time', count_nonzero)\n", + " model_wetdays.rename(f'{gcmid} number of wet days (>=1mm/day) {TIME_PERIODS[period]}')\n", + " # Save the file\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.wetday.nc')\n", + " iris.save(model_wetdays, outfile)\n", + " print(f'Saved: {outfile}')\n", + " \n", + " # Find wet days as a percentage of total days\n", + " total_days = len(data.coord('time').points) \n", + " model_pcent_wetdays = (model_wetdays / total_days) * 100\n", + " # Add metadata\n", + " model_pcent_wetdays.rename(f'{gcmid} percentage of wet days (>=1mm/day) {TIME_PERIODS[period]}')\n", + " model_pcent_wetdays.units = '%'\n", + "\n", + " # Save the file\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.wetday.pcent.nc')\n", + " iris.save(model_pcent_wetdays, outfile)\n", + " print('Saved: {}'.format(outfile))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "**b) Calculate numbers of wet days and percentage of wet days from the _CHIRPS_ observations**. \n", + "\n", + "Climate Hazards Group InfraRed Precipitation with Station data ([CHIRPS](https://chc.ucsb.edu/data/chirps)) is a 35+ year quasi-global rainfall data set. Spanning 50°S-50°N (and all longitudes) and ranging from 1981 to near-present, CHIRPS incorporates climatology, 0.05° resolution satellite imagery, and in-situ station data to create gridded rainfall time series for trend analysis and seasonal drought monitoring. \n", + "\n", + "We'll use CHIRPS as our observational data from which to compare our CORDEX model data.\n", + "\n", + "**Fill in the missing code** to calculate the observed wet days: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load CHIRPS daily precipitation data, but only period of interest\n", + "historical_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", + " <= cell.point <= PartialDateTime(year=2005))\n", + "\n", + "infile = os.path.join(CHIRPSDIR, 'chirps-v2.0_pr_day_1981-2018_p25.nc')\n", + "\n", + "# Find number of wet days\n", + "\n", + "# Save wet days cube\n", + "outfile = os.path.join(CLIMDIR, 'chirps.wetday.nc')\n", + "\n", + "# Find number of days in dataset (number_chirps_days)\n", + "\n", + "# Find wet days as percent of all chirps days \n", + "\n", + "# Save \n", + "outfile = os.path.join(CLIMDIR, 'chirps.wetday.pcent.nc')\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + " Question: Are there any additional considerations that have to be made with daily data?
    \n", + " From a coding perspective, how does working with daily data compare to working with monthly data?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer
    \n", + "*Type your answer here...*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plotting" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**c)** **Plot** the modelled and observed **numbers of wet days** from 1986-2005. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Plot modelled and observed numbers of wet days for a common baseline period.\n", + "# Create a figure of the size desired\n", + "fig = plt.figure(figsize=(16, 4))\n", + "fig.suptitle('Number of wet days (1986-2005)', fontsize=16)\n", + "\n", + "# Set common limits for each subplot\n", + "cbar_lims=(0,number_chirps_days)\n", + "easia_domain = [70,160,10,50]\n", + "\n", + "# Load and plot the models' wet day count\n", + "for n, gcmid in enumerate(GCMIDS):\n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.1986_2005.GERICS-REMO2015.wetday.nc')\n", + " nwetdays = iris.load_cube(infile)\n", + " ax1 = fig.add_subplot(1, 3, n+1, projection=ccrs.PlateCarree())\n", + " qplt.pcolormesh(nwetdays, vmin=cbar_lims[0], vmax=cbar_lims[1])\n", + " plt.title(gcmid)\n", + " ax1.coastlines() # adds coastlines defined by the axes of the plot\n", + " ax1.set_extent(easia_domain, crs=ccrs.PlateCarree())\n", + "\n", + "# Load and plot CHIRPS wet day count\n", + "infile = os.path.join(CLIMDIR, 'chirps.wetday.nc')\n", + "obs_nwetdays = iris.load_cube(infile)\n", + "fig.add_subplot(1, 3, 3, projection=ccrs.PlateCarree())\n", + "qplt.pcolormesh(obs_nwetdays, vmin=cbar_lims[0], vmax=cbar_lims[1])\n", + "plt.title('Observations (CHIRPS)')\n", + "ax = plt.gca() # gca function that returns the current axes\n", + "ax.coastlines()\n", + "ax.set_extent(easia_domain, crs=ccrs.PlateCarree())\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: Which of the following steps are required in order to calculate the model bias (the difference between CORDEX model output and observed data)?
    \n", + " \n", + "* Regrid data onto a common grid, to the finer (higher) resolution
    \n", + "* Regrid data onto a common grid, to the coarser (lower) resolution
    \n", + "* Convert CODREX data to a regular lat-lon grid if the simulation used a rotated pole
    \n", + "* Ensure the units are comparable (e.g not comparing K with C)
    \n", + " \n", + "Which of these steps are required when __comparing output for different time periods from the same model simulation__ (e.g. _future - baseline_ difference calculations)? \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer
    \n", + "Steps required to calculate the model bias:
    \n", + "* *type your answer here...*
    \n", + "\n", + "Steps required when comparing output from the same simulation:
    \n", + "* *type your answer here...*
    \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**d)** Calculate the **difference in modelled future and baseline** wet day frequency and also the **difference in modelled baseline and observation** wet day frequency." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load percentage of wet days data for the CHIRPS observations\n", + "infile = os.path.join(CLIMDIR, 'chirps.wetday.pcent.nc')\n", + "obs = iris.load_cube(infile)\n", + "# Add coordinate system information to facilitate regridding later\n", + "wgs84_cs = iris.coord_systems.GeogCS(6371229.0) \n", + "obs.coord('latitude').coord_system = wgs84_cs \n", + "obs.coord('longitude').coord_system = wgs84_cs\n", + "\n", + "# constrain the observations to a smaller domain \n", + "obs_sub = obs.intersection(longitude=(70, 160), latitude=(10, 50))\n", + "\n", + "\n", + "# The observed rainfall data have been created using surface rain gauges, and so are only available\n", + "# over land points. Define a mask to remove sea points. The mask is True for masked points.\n", + "mask = np.where(obs.data > 0.0, False, True)\n", + "\n", + "# Redefine the obs data array as a masked array.\n", + "obs.data = np.ma.array(obs.data, mask=mask)\n", + "\n", + "# Define regridding method\n", + "scheme = iris.analysis.Linear(extrapolation_mode='mask')\n", + "\n", + "for gcmid in GCMIDS:\n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.wetday.pcent.nc')\n", + " model_baseline = iris.load_cube(infile)\n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['future'] + '.GERICS-REMO2015.wetday.pcent.nc')\n", + " model_future = iris.load_cube(infile)\n", + " # In order to compare the modelled and observed numbers of wet days,\n", + " # the model data needs to be regridded to the CHIRPS grid\n", + " model_baseline_rg = model_baseline.regrid(obs_sub, scheme)\n", + " model_future_rg = model_future.regrid(obs_sub, scheme)\n", + "\n", + " # Find the difference between futue and baseline models\n", + " diff_model = model_future_rg - model_baseline_rg\n", + " diff_model.rename('{} change in number of wet days (>=1mm/day) 2041-2060 vs 1986-2005 ')\n", + " # Save the file\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.GERICS-REMO2015.wetday.pcent.diff.nc')\n", + " iris.save(diff_model, outfile)\n", + " print('Saved {}'.format(outfile))\n", + "\n", + " # Subtract the observed percentages of wet days from the modelled percentages\n", + " diff_mod_obs = model_baseline_rg - obs_sub\n", + " diff_mod_obs.rename(f'{gcmid} number of wet days (>=1mm/day) bias compared to CHIRPS')\n", + " # Save the file\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.GERICS-REMO2015.wetday.pcent.bias.nc')\n", + " iris.save(diff_mod_obs, outfile)\n", + " print(f'Saved {outfile}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: A cube can be easily constrained to a given domain using the cube.intersection method. More information on this (and other) Iris cube functionality can be found in the Iris Documentation online.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**e)** **Plot the percentage change and model bias for wet day frequency**. \n", + "\n", + "**First**, run the code block below to produce a series of plots showing the model bias and future precipitation change for _cahpa_ and _cahpb_ simulations.
    \n", + "\n", + "As the model domain is smaller than the observations domain, you will see that the data is plotted on a domain which is larger than necessary. \n", + "\n", + "**Next, read the Iris documentation** to learn how to use the `cube.intersection` method, then **add the necessary code** below, to constrain the plots to the model domain.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Create a figure of the size 12x12 inches\n", + "plt.figure(figsize=(12, 12))\n", + "\n", + "\n", + "# Load the model's future percentage change in wet days (future - baseline)\n", + "for n, gcmid in enumerate(GCMIDS):\n", + " infile = os.path.join(CLIMDIR, gcmid + '.GERICS-REMO2015.wetday.pcent.diff.nc')\n", + " pcent_change = iris.load_cube(infile)\n", + " \n", + " # Add in a line of code to constrain the model domain to these coordinates: \n", + " # longitude=(70, 160)\n", + " # latitude=(10, 50)\n", + " pcent_change_subset = \n", + " \n", + " # plot percentage changes on first row\n", + " plt.subplot(2, 2, n+1)\n", + " qplt.pcolormesh(pcent_change_subset, \n", + " vmax=10, vmin=-10, cmap='BrBG')\n", + " plt.title(gcmid + ' future-historical \\n precipitation change (%)')\n", + " ax = plt.gca()\n", + " ax.coastlines()\n", + "\n", + " \n", + "# Load the percentage bias (differences in precipitation between the models and obs)\n", + "for n, gcmid in enumerate(GCMIDS):\n", + " infile = os.path.join(CLIMDIR, gcmid + '.GERICS-REMO2015.wetday.pcent.bias.nc')\n", + " pcent_bias = iris.load_cube(infile)\n", + " \n", + " # Add in a line of code to constrain the model domain to these lat-lon coordinates: \n", + " # longitude=(70, 160)\n", + " # latitude=(10, 50)\n", + " pcent_bias_subset = \n", + " \n", + " # plot bias on the second row\n", + " plt.subplot(2, 2, n+3)\n", + " qplt.pcolormesh(pcent_bias_subset, \n", + " vmax=20, vmin=-20, cmap='BrBG')\n", + " plt.title(gcmid + ' model-observations \\n precipitation difference (%)')\n", + " ax = plt.gca()\n", + " ax.coastlines()\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + " Question:
    \n", + "\n", + "* Which simulation (HadGEM2-ES or MPI-ESM-LR) has better agreement with observations for wet day frequency?
    \n", + "* What is the magnitude and location of any notable wet or dry biases for each simulation during the baseline period?
    \n", + "* Summarise the projected change in wet day frequency over South-East Asia for both simulations.
    \n", + "* Given any wet/dry biases in each simulation's baseline period, what adjustments might we make to our summary of projected change from HadGEM2-ES or MPI-ESM-LR? \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Answers:**\n", + "\n", + "Which simulation has better agreement with observations?\n", + " \n", + "* \n", + "\n", + " \n", + "Magnitude and location of any notable wet or dry biases:\n", + "\n", + "* HadGEM2-ES driven run: \n", + "* MPI-ESM-LR driven run: \n", + "\n", + "Summarise the projected change in wet day frequency:\n", + "\n", + "* HadGEM2-ES driven run: \n", + "* MPI-ESM-LR driven run: \n", + "\n", + "Adjustments in light of model bias:\n", + "\n", + "* HadGEM2-ES driven run: \n", + "* MPI-ESM-LR driven run: \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 5.2. Calculating percentiles\n", + "\n", + "**f)** Calculate in mm/day the baseline (1986-2005) and future (2041-2060) **95th percentile of precipitation**. Do this for HadGEM2-ES, MPI-ESM-LE driven runs and also for CHIRPS baseline.\n", + "\n", + "This introduces some new processing challenges: **the size of the daily future data set is (probably) too large to load into memory**. Sometimes Iris can handle this for us (see [Iris and Lazy Data](https://scitools.org.uk/iris/docs/v2.4.0/userguide/real_and_lazy_data.html)), but in this case we need to manually **'chunk' the data to load and process smaller sections**. This way Iris only loads a section of the data at a time and keeps within the memory limits imposed by this computer." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Specify the number of chunks for the lat and lon dimensions\n", + "# This will give us 3 x 3 = 9 cubes\n", + "steps = (3, 3) \n", + "\n", + "# Define a helper function to extract our cube chunks\n", + "def chunks(cube, x, y):\n", + " \"\"\"Yield successive x-y sized chunks from cube\"\"\"\n", + " for i in range(0, cube.coord(axis='x').shape[0], x):\n", + " for j in range(0, cube.coord(axis='y').shape[0], y):\n", + " yield cube[:, j:j + y, i:i + x]\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now process the data:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Loop over job ID and time period\n", + "for gcmid in GCMIDS:\n", + " for period in TIME_PERIODS.keys():\n", + " infile = os.path.join(DATADIR, period, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.pr.mmday-1.nc')\n", + " model_precip = iris.load_cube(infile)\n", + " # if cube has both latitude (2d true latitude) and grid_latitude, then\n", + " # coord(axis='y') does not work, so remove unused 'latitude' and 'longitude'\n", + " model_precip.remove_coord('latitude')\n", + " model_precip.remove_coord('longitude')\n", + " \n", + " # Calculate lat-lon chunks in terms of their index\n", + " lat_chunk = int(model_precip.coord(axis='y').shape[0] / steps[0])\n", + " lon_chunk = int(model_precip.coord(axis='x').shape[0] / steps[1])\n", + " # Make list of cubes\n", + " subcubes = list(chunks(model_precip, lon_chunk, lat_chunk))\n", + " # Loop through subcubes\n", + " model_pc95 = iris.cube.CubeList()\n", + " for cube in subcubes:\n", + " model_pc95.append(cube.collapsed('time', iris.analysis.PERCENTILE, percent=95.))\n", + " # Concatenate the cube list back into one cube\n", + " model_pc95 = model_pc95.concatenate_cube()\n", + " # Give cube a helpful name\n", + " model_pc95.rename(f'R95p of {gcmid} daily rainfall {TIME_PERIODS[period]}')\n", + " # Save output\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.day.pc95.' + TIME_PERIODS[period] + '.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(model_pc95, outfile)\n", + " print(f'Saved: {outfile}')\n", + " # Tidy up memory\n", + " del model_precip, model_pc95" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + " Question: Why can we only 'chunk' in the lat-lon dimensions? Why can't we 'chunk' the time dimension?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer
    \n", + "Type your answer here..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now do the same for the CHIRPS data. First we take a subset of the CHIRPS data to make the code run quicker - constraining the data in time to the same period as the RCM data above and in space to a similar area to the EAS-22 domain (62-185 degrees longitude, -2 to 50 degree latitude)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "historical_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", + " <= cell.point <= PartialDateTime(year=2005))\n", + "# now load CHIRPS daily data\n", + "infile = os.path.join(CHIRPSDIR, 'chirps-v2.0_pr_day_1981-2018_p25.nc')\n", + "obs_precip = iris.load_cube(infile, historical_time_constraint)\n", + "obs_precip = obs_precip.intersection(longitude=(62, 185), latitude=(-2, 50))\n", + "\n", + "\n", + "# save this to disk \n", + "subsetfile = os.path.join(CHIRPSDIR, 'chirps-v2.0_pr_day_1986-2005_p25_eastasia.nc')\n", + "iris.save(obs_precip, subsetfile)\n", + "\n", + "# save memory\n", + "del obs_precip\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Repeat the percentile calculation for the CHIRPS data\n", + "\n", + "# load subset of CHRIRPS in \n", + "obs_precip = iris.load_cube(subsetfile)\n", + "\n", + "# Calculate lat-lon chunks in terms of their index\n", + "lat_chunk = int(obs_precip.coord(axis='y').shape[0] / steps[0])\n", + "lon_chunk = int(obs_precip.coord(axis='x').shape[0] / steps[1])\n", + "\n", + "# Make list of cubes\n", + "subcubes = list(chunks(obs_precip, lon_chunk, lat_chunk))\n", + "# Loop through subcubes\n", + "obs_pc95 = iris.cube.CubeList()\n", + "for cube in subcubes:\n", + " cube.data = np.ma.filled(cube.data, np.nan)\n", + " obs_pc95.append(cube.collapsed('time', iris.analysis.PERCENTILE, percent=95.))\n", + " print(f'Done {len(obs_pc95)} chunks')\n", + "\n", + "# Concatenate the cube list back into one cube\n", + "obs_pc95 = obs_pc95.concatenate_cube()\n", + "\n", + "# Redefine the data array of pc95 as a masked array. \n", + "obs_pc95.data = np.ma.masked_where(np.isnan(obs_pc95.data), obs_pc95.data)\n", + "outfile = os.path.join(CLIMDIR, 'chirps.pc95.1986_2005.mmday-1.nc')\n", + "iris.save(obs_pc95, outfile)\n", + "print(f'Saved: {outfile}')\n", + "\n", + "# Tidy up memory\n", + "del obs_precip, obs_pc95" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "**g)** **Calculate the change in extreme precipitation** _(the difference between the future and baseline 95th percentiles of precipitation)_ **and the associated model bias** _(the difference between the baseline and CHIRPS 95th percentiles of precipitation)._\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Define WGS84 coordinate system\n", + "wgs84 = iris.coord_systems.GeogCS(semi_major_axis=6378137.0, inverse_flattening=298.257223563)\n", + "\n", + "# Load CHIRPS data\n", + "infile = os.path.join(CLIMDIR, 'chirps.pc95.1986_2005.mmday-1.nc')\n", + "obs_cube = iris.load_cube(infile)\n", + "obs_cube.coord('latitude').coord_system = wgs84 \n", + "obs_cube.coord('longitude').coord_system = wgs84\n", + "\n", + "# constrain the observations to a smaller domain \n", + "obs_cube = obs_cube.intersection(longitude=(70, 160), latitude=(10, 50))\n", + "\n", + "\n", + "# Define regridding method\n", + "scheme = iris.analysis.Linear(extrapolation_mode='mask')\n", + "\n", + "for gcmid in GCMIDS:\n", + " # First, calculate the difference between the modelled future and baseline 95th percentiles\n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.pc95.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + " print(infile)\n", + " model_base = iris.load_cube(infile)\n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.pc95.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", + " model_fut = iris.load_cube(infile)\n", + " diff = iris.analysis.maths.subtract(model_fut, model_base)\n", + " diff.rename(f'{gcmid} change in R95p (future - historical)')\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.day.pc95.diff.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(diff, outfile)\n", + " print('Saved: {}'.format(outfile))\n", + "\n", + " # Next, calculate the differences between the modelled baseline and observed 95th percentiles\n", + " # Remember, to compare the model and observations, the model data need to be regridded.\n", + " model_base_rg = model_base.regrid(obs_cube, scheme)\n", + " bias = obs_cube.copy()\n", + " bias.data = model_base_rg.data - obs_cube.data\n", + " bias.rename(f'{gcmid} bias in R95p (model - obs)')\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.day.pc95.bias.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(bias, outfile)\n", + " print(f'Saved: {outfile}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**h)** **Plot the differences in the 95th percentiles** between the models and observations, and the future changes in the 95th percentiles of precipitation from both models.\n", + "\n", + "**Complete the code block to plot the figures...**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: You will probably find it useful to consult the matpltlib documentation to help you produce your plots. In this case, take a look at the plt.subplot() docs to help you arrange your plots: plt.subplot().\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# HINT: The filenames have the following pattern: gcmid + '.day.pc95.bias.pr.mmday-1.nc'\n", + "# Create a figure of the size 12x12 inches\n", + "plt.figure(figsize=(12, 12))\n", + "\n", + "for n, gcmid in enumerate(GCMIDS):\n", + " # HINT: Use the `n` variable to help arrange you plots using: plt.subplot()\n", + " # Use the matplotlib documention to help you! \n", + "\n", + " # Load and plot the model bias (model - obs)\n", + "\n", + " # Load and plot the percentage change in precipitation between future and baseline\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + " Question:
    \n", + "\n", + "* Where do we see the greatest changes in extreme precipitation for each simulation?
    \n", + "* Comment on each model's ability to reprent observed extremes in precipitation at the 95th percentile.
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Answer:**\n", + "\n", + "Greatest changes:\n", + "\n", + "* HadGEM2-ES driven run: \n", + "* MPI-ESM-LR driven run: \n", + "\n", + "Abilty to represent observed extremes:\n", + "\n", + "* HadGEM2-ES driven run: \n", + "* MPI-ESM-LR driven run: \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "This completes worksheet 5.
    You have calculated and compared climate indices for future and baseline rainfall. You have also learned an effective method for working with large quantities of daily data.
    \n", + "In the final worksheet you will combine all the techniques learned to this point, through writing your own code to post-process and analyse CORDEX simulations of extreme temperature over East Asia. \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    \"python

    \n", + "
    © Crown Copyright 2022, Met Office
    " + ] + } + ], + "metadata": { + "instance_type": "ml.t3.medium", + "kernelspec": { + "display_name": "pyprecis-environment", + "language": "python", + "name": "pyprecis-environment" + }, + "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.6.10" + }, + "widgets": { + "state": {}, + "version": "1.1.2" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/AFR-22/worksheet6.ipynb b/notebooks/AFR-22/worksheet6.ipynb new file mode 100755 index 0000000..a2bab3c --- /dev/null +++ b/notebooks/AFR-22/worksheet6.ipynb @@ -0,0 +1,258 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Worksheet 6: Investigating Extremes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This final worksheet is a chance for you to put together all the techniques you have learned in the previous worksheets.\n", + "\n", + "Working with the same datasets, write some code to undertake an analysis of temperature extremes over our East Asia domain.\n", + "\n", + "You have the following datasets available to you:\n", + "\n", + "**CORDEX data** (REMO2015 dowscaling _HadGEM2-ES_ and _MPI-EMS-LR_)\n", + " * Maximum daily temperature\n", + " * Minimum daily temperature\n", + " * Mean daily temperature\n", + " * Daily precipitation flux\n", + " * Monthly mean preciptation and temperature data as used in previous worksheets\n", + "\n", + "**Observations**\n", + " * CHIRPS rainfall data\n", + " * CRU temperature data\n", + " \n", + "**Extremes indicies**
    \n", + "The full list of 27 core extreme indices are listed on the [CLIMDEX website](https://www.climdex.org/learn/indices/), or look at the summary table take from the IPCC AR5 report below. We suggest you look at one of the following:\n", + "\n", + " * Number of tropical nights (*TR*): $\\mathrm{TN}_{ij} > 20^{\\circ}C$\n", + " * Percentage of days when max temperature is > 90th percentile (*TX90p*): $\\mathrm{TX}_{ij} > \\mathrm{TX}_{in}90$\n", + " * Monthly maximum 1-day precipitation (*Rx1day*): $\\mathrm{Rx1day}_j = max (\\mathrm{RR}_{ij})$\n", + "\n", + "Speak to your instructor if you would like to look at alternative indicies.\n", + "\n", + "

    \"AR5

    \n", + "\n", + "**Table 1:** Definitions of extreme temperature and precipitation indices used in IPCC Assessment Report 5 (after Zhang et al., 2011). The most common units are shown but these may be shown as normalized or relative depending on application in different chapters. Figure, Tables and Section numbers refer to the IPCC AR5 report [here](https://www.ipcc.ch/report/ar5/wg1/)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "By the end of this worksheet you should be able to:
    \n", + "\n", + "- Build a coding workflow to undertake extremes analysis
    \n", + "- Understand the different stages of post-processing
    \n", + "- Have an appreciation of data storage and file naming issues.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Preamble" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Code preamble - these libraries will be used in this worksheet.\n", + "# This code block needs to be re-run every time you restart this worksheet!\n", + "%matplotlib inline \n", + "import os\n", + "import iris\n", + "import iris.coord_categorisation\n", + "import iris.quickplot as qplt\n", + "import iris.plot as iplt\n", + "import cartopy.crs as ccrs\n", + "import cartopy.feature as cfeature\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import dask\n", + "dask.config.set(get=dask.get)\n", + "import dask.array as da\n", + "from iris.analysis import Aggregator\n", + "\n", + "# Some helpful data locations\n", + + "DATADIR = 'data_v2/EAS-22'\n", + + "PPDIR = os.path.join(DATADIR, 'pp')\n", + "CLIMDIR = os.path.join(DATADIR, 'climatology')\n", + "HISTDIR = os.path.join(DATADIR, 'historical')\n", + "FUTRDIR = os.path.join(DATADIR, 'future')\n", + "APHRODIR = os.path.join(DATADIR, 'APHRODITE')\n", + "CRUDIR = os.path.join(DATADIR, 'CRU')\n", + "GCMIDS = ['hadgem2-es', 'mpi-esm']\n", + "TIME_PERIODS = {'historical':'1986-2005', 'future':'2041_2060'}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Step 1: Process raw CORDEX netCDF files" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Remember to:\n", + " * Select the raw data with the correct variable\n", + " * Remove incompatible attributes\n", + " * Concatenate into a single netCDF file\n", + " * Save the netCDF file so you can access it later" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "Step 1: Process the raw pp files\n", + "'''\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Step 2: Calculate the extreme index\n", + "\n", + "Remember to:\n", + " * Consider which observational data set to use for comparison\n", + " * Calculate the index for both the model data you prepared in step 1, but also the observed data\n", + " * Calculate the index for present and future model periods\n", + " * Save your index data sets as a netCDF file with appropriate metadata" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "Step 2: Calculate the extreme index\n", + "'''\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Step 3: Plot some results\n", + "\n", + "Remember to:\n", + " * Think about plotting absolute values, differences, or scaled differences. Which one communicates your message best?\n", + " * Choose an appropriate colour scale" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "Step 3: Plot some results\n", + "'''\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question:
    \n", + "Which extreme index did you chose to analyse?
    \n", + "Summarise the results of your analysis of this extreme index.
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer
    \n", + "_Summarise the results of your extremes analysis here..._" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "This completes worksheet 6.
    \n", + "You have independently converted raw CORDEX output into files ready for analysis and used them to undertake scientific verification and analysis of a commonly recognised extreme index. \n", + " \n", + "These will be the same steps required to post-process and analyse CORDEX simulations over your region of interest, so keep hold of these worksheets to refer back to in the future. \n", + "
    \n", + "
    \n", + "\n", + "_Useful resources for future work is available online:_
    \n", + "* [IRIS Documentation](https://scitools.org.uk/iris/docs/v2.4.0/userguide/index.html) is the first port of call for IRIS usage.
    \n", + "* [Stack Overflow - Python](https://stackoverflow.com/questions/tagged/python) provides solutions for common Python queries.
    \n", + "* [Stack Overflow - Iris](https://stackoverflow.com/questions/tagged/python-iris) is a forum for queries about Iris.
    \n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    \"python

    \n", + "
    © Crown Copyright 2022, Met Office
    " + ] + } + ], + "metadata": { + "instance_type": "ml.t3.medium", + "kernelspec": { + + "display_name": "pyprecis-environment", + "language": "python", + "name": "pyprecis-environment" + + }, + "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.6.10" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/AFR-22/worksheet6example.ipynb b/notebooks/AFR-22/worksheet6example.ipynb new file mode 100755 index 0000000..639a7df --- /dev/null +++ b/notebooks/AFR-22/worksheet6example.ipynb @@ -0,0 +1,392 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Worksheet 6 example code\n", + "\n", + "## Example 1 Frequency of warm days (TX90P) in the future\n", + "\n", + "Calculate the baseline (1986-2005) 90th percentile of maximum temperature. Then calculate the frequency of warm days in the future (2041-2060). Do this for HadGEM2-ES and MPI-ESM-LR." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Code preamble - these libraries will be used in this worksheet.\n", + "# This code block needs to be re-run every time you restart this worksheet!\n", + "%matplotlib inline \n", + "import os\n", + "import iris\n", + "import iris.coord_categorisation\n", + "import iris.quickplot as qplt\n", + "import iris.plot as iplt\n", + "from iris.experimental.equalise_cubes import equalise_attributes\n", + "import cartopy.crs as ccrs\n", + "import cartopy.feature as cfeature\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from iris.analysis import Aggregator\n", + "\n", + "# Some helpful data locations\n", + "DATADIR = 'data_v2'\n", + "CHIRPSDIR = os.path.join(DATADIR, 'CHIRPS')\n", + "CRUDIR = os.path.join(DATADIR, 'CRU')\n", + "CLIMDIR = os.path.join(DATADIR, 'EAS-22', 'climatology/')\n", + "MODELDIR = os.path.join(DATADIR, 'EAS-22/')\n", + "GCMIDS = ['hadgem2-es', 'mpi-esm-lr']\n", + "GCM_FULL = {'hadgem2-es':'MOHC-HadGEM2-ES' , 'mpi-esm-lr':'MPI-M-MPI-ESM-LR'}\n", + "TIME_PERIODS = {'historical':'1986_2005', 'rcp85':'2041_2060'}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First calculate the 90th percentile of tsmax in the baseline and future periods for both set of downscaled GCMs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Define a helper function to extract our cube chunks\n", + "def chunks(cube, x=200, y=200):\n", + " \"\"\"\n", + " Yield successive x-y sized chunks from cube,\n", + " works for 3D Time-Lat-Lon\n", + " \n", + " Args:\n", + " cube (Iris cube): input cube to be chunked\n", + " x: size of chunks in x direction\n", + " y: size of chunk in y direction\n", + " \"\"\"\n", + " coord_names = [coord.name() for coord in cube.coords()]\n", + " if 'grid_latitude' in coord_names and 'latitude' in coord_names:\n", + " cube.remove_coord('latitude')\n", + " if 'grid_longitude' in coord_names and 'longitude' in coord_names:\n", + " cube.remove_coord('longitude')\n", + " \n", + " for i in range(0, cube.coord(axis='x').shape[0], x):\n", + " for j in range(0, cube.coord(axis='y').shape[0], y):\n", + " yield cube[:, j:j + y, i:i + x]\n", + "\n", + " \n", + "def chunks_2d(cube, x=200, y=200):\n", + " coord_names = [coord.name() for coord in cube.coords()]\n", + " if 'grid_latitude' in coord_names and 'latitude' in coord_names:\n", + " cube.remove_coord('latitude')\n", + " if 'grid_longitude' in coord_names and 'longitude' in coord_names:\n", + " cube.remove_coord('longitude')\n", + " \n", + " for i in range(0, cube.coord(axis='x').shape[0], x):\n", + " for j in range(0, cube.coord(axis='y').shape[0], y):\n", + " yield cube[j:j + y, i:i + x]\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for gcmid in GCMIDS:\n", + " for period in TIME_PERIODS.keys():\n", + " filename = f'tasmax_EAS-22_{GCM_FULL[gcmid]}_{period}_*GERICS-REMO2015*_*_day_*.nc'\n", + " model_tasmax = iris.load(MODELDIR + filename)\n", + " # solve merge issues\n", + " equalise_attributes(model_tasmax)\n", + " model_tasmax = model_tasmax.concatenate_cube()\n", + "\n", + " # 90th percentile calculation\n", + " model_pc90 = iris.cube.CubeList()\n", + " for model_data in chunks(model_tasmax):\n", + " model_pc90_chk = model_data.collapsed('time', iris.analysis.PERCENTILE, percent=90.0)\n", + " model_pc90.append(model_pc90_chk)\n", + " model_pc90 =model_pc90.concatenate_cube()\n", + "\n", + " # save to file\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.tasmax.90pc.nc')\n", + " print(f'saving to file: {outfile}')\n", + " iris.save(model_pc90, outfile)\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Calculate the frequency of warm days in the future (extreme index TX90P), i.e. the number of days which exceed the 90th percentile temperatures in the baseline. Then calculate the numbers of days as a percentage.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for gcmid in GCMIDS:\n", + " \n", + " # load daily data for future \n", + " filename = f'tasmax_EAS-22_{GCM_FULL[gcmid]}_rcp85_*GERICS-REMO2015*_*_day_*.nc'\n", + " future_tasmax = iris.load(MODELDIR + filename)\n", + "\n", + " # solve merge issues\n", + " equalise_attributes(future_tasmax)\n", + " future_tasmax = future_tasmax.concatenate_cube() \n", + " ndays = len(future_tasmax.coord('time').points)\n", + " \n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.tasmax.90pc.nc')\n", + " print(infile)\n", + " hist_90pc = iris.load_cube(infile)\n", + " \n", + " \n", + " # need to do next operation chunking data, also chunk 90th percentile \n", + " nwarmdays_future = iris.cube.CubeList() \n", + " for chunk_ft_tasmax, chunk_hist_90pc in zip(chunks(future_tasmax), chunks_2d(hist_90pc)):\n", + "\n", + " # Use np.where to identify all cells where daily temperatures \n", + " # in the future exceed the 90th percentile\n", + " assert(chunk_ft_tasmax.coord('grid_longitude') == chunk_hist_90pc.coord('grid_longitude'))\n", + " assert(chunk_ft_tasmax.coord('grid_latitude') == chunk_hist_90pc.coord('grid_latitude'))\n", + " temp_gt_chunk = np.where(chunk_ft_tasmax.data >= chunk_hist_90pc.data, 1, 0)\n", + " \n", + " # use the 90th percentile cube as a template to copy warm days data into \n", + " nwarmdays_future_chunk = chunk_hist_90pc.copy()\n", + " nwarmdays_future_chunk.data = np.ma.sum(temp_gt_chunk.data, axis=0)\n", + " nwarmdays_future.append(nwarmdays_future_chunk)\n", + " \n", + " nwarmdays_future = nwarmdays_future.concatenate_cube()\n", + "\n", + " # the sum above removes the mask - reinstate it with \n", + " nwarmdays_future.data.mask = hist_90pc.data.mask\n", + " nwarmdays_future.units = '1'\n", + " nwarmdays_future.rename('days > 90th %ile of baseline ')\n", + " \n", + " print (\"Saving numbers of warm days in the future from \" + gcmid)\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.tasmax.nwarmdays.nc')\n", + " iris.save(nwarmdays_future, outfile)\n", + " \n", + " # calculate percentage of days (see below)\n", + " nwarm_pc = nwarmdays_future/ndays*100.\n", + " nwarm_pc.units = '%'\n", + " nwarm_pc.rename('percentage of days T > 90th %ile of baseline ')\n", + " \n", + " # save percentage\n", + " print (\"Saving precentage of warm days in the future from \" + gcmid)\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.tasmax.nwarmpc.nc') \n", + " iris.save(nwarm_pc, outfile)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plot the numbers of warm days in the future and the percentage of warm days." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.figure(figsize=(12, 12))\n", + "\n", + "for i, gcmid in enumerate(GCMIDS):\n", + " \n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.tasmax.nwarmdays.nc')\n", + " nwarmdays = iris.load_cube(infile)\n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.tasmax.nwarmpc.nc') \n", + " nwd_pcent = iris.load_cube(infile)\n", + "\n", + " plotnum = 1 + 2*i\n", + " plt.subplot(2, 2, plotnum)\n", + " qplt.pcolormesh(nwarmdays, vmin=0, vmax=10000)\n", + " plt.title(gcmid + ': Number of warm days')\n", + " plt.gca().coastlines()\n", + " plt.subplot(2, 2, plotnum+1)\n", + " qplt.pcolormesh(nwd_pcent, vmin=0, vmax=30)\n", + " plt.title(gcmid + ': Percentage of warm days')\n", + " plt.gca().coastlines()\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2. Percentage of total precipitation which falls on very wet days\n", + "\n", + "Calculate the percentage of total precipitation which falls on very wet days in the future over Thailand\n", + "(where a very wet day is one on which daily rainfall exceeds the 95th percentile of the baseline).\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First find the 95th percentile of rainfall during baseline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for gcmid in GCMIDS:\n", + " filename = f'pr_EAS-22_{GCM_FULL[gcmid]}_historical_*GERICS-REMO2015*_*_day_*.nc'\n", + " model_pr = iris.load(MODELDIR + filename)\n", + " # solve merge issues\n", + " equalise_attributes(model_pr)\n", + " model_pr = model_pr.concatenate_cube()\n", + "\n", + " # 95th percentile calculation\n", + " model_pc95 = iris.cube.CubeList()\n", + " for model_data in chunks(model_pr):\n", + " model_pc95_chk = model_data.collapsed('time', iris.analysis.PERCENTILE, percent=95.0)\n", + " model_pc95.append(model_pc95_chk)\n", + " model_pc95 = model_pc95.concatenate_cube()\n", + "\n", + " # save to file\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.pr.95pc.nc')\n", + " print(f'saving to file: {outfile}')\n", + " iris.save(model_pc95, outfile)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Coordinates of a box around Thailand\n", + "thai_lons = np.array([98.0, 98.0, 105.0, 105.0])\n", + "thai_lats = np.array([10.0, 21.0, 10.0, 21.0])\n", + "\n", + "# Load a cube on the rotated grid\n", + "gcmid = 'hadgem2-es'\n", + "infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.pr.95pc.nc')\n", + "rotg = iris.load_cube(infile)\n", + "rcs = rotg.coord('grid_latitude').coord_system\n", + "\n", + "# Get the rotated pole coordinates\n", + "pole_lat = rcs.grid_north_pole_latitude\n", + "pole_lon = rcs.grid_north_pole_longitude\n", + "\n", + "# Convert the coordinates of a box around Thailand from real coordinates to rotated polar coordinates\n", + "grid_lons, grid_lats = iris.analysis.cartography.rotate_pole(thai_lons, thai_lats, pole_lon, pole_lat)\n", + "\n", + "# Find the max / min of the lons / lats on the rotated grid. They will be used to extract the data around Malaysia\n", + "# N.B. The conversion to float is needed, as numpy data are of type float64 by default. If the coordinate limits\n", + "# are passed as float64, they are interpreted as a list of two floats and the program will stop with an error:\n", + "# ValueError: setting an array element with a sequence.\n", + "lon_0 = float(min(grid_lons))\n", + "lon_1 = float(max(grid_lons))\n", + "lat_0 = float(min(grid_lats))\n", + "lat_1 = float(max(grid_lats))\n", + "\n", + "# Set up constraints on the rotated grid for Thailand\n", + "lon_con = iris.Constraint(grid_longitude = lambda cell: lon_0 <= cell <= lon_1)\n", + "lat_con = iris.Constraint(grid_latitude = lambda cell: lat_0 <= cell <= lat_1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# loop over GCMs\n", + "for i, gcmid in enumerate(GCMIDS):\n", + " # load the RCP 8.5 daily precip data\n", + " file_f = f'pr_EAS-22_{GCM_FULL[gcmid]}*_rcp85_*_GERICS-REMO2015*_*_day_*.nc'\n", + "# precip = iris.load_cube(data_path + file_f, lon_con).intersection(grid_latitude = (-14.767, -5,623))\n", + " precip = iris.load(MODELDIR + file_f, lat_con & lon_con)\n", + " # solve merge issues\n", + " equalise_attributes(precip)\n", + " precip = precip.concatenate_cube()\n", + " \n", + " \n", + " # load the historical 95th percentile\n", + " file_f = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.pr.95pc.nc')\n", + " precip_pc95 = iris.load_cube(file_f, lat_con & lon_con)\n", + " \n", + "# Use broadcasting to identify all cells in precip where p95 is exceeded\n", + " pre_gt_pc95 = np.where(precip.data > precip_pc95.data, precip.data, 0.0)\n", + " pre_p95 = np.sum(pre_gt_pc95, axis=0)\n", + " pre_tot = precip.collapsed('time', iris.analysis.SUM)\n", + " pre_tot.data = np.divide(pre_p95, pre_tot.data, out=np.zeros_like(pre_tot.data), where = pre_tot.data != 0)\n", + " pre_tot = iris.analysis.maths.multiply(pre_tot, 100)\n", + " file_out = gcmid + '.R95pTOT.future.GERICS-REMO2015.nc'\n", + " iris.save(pre_tot, CLIMDIR + file_out)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plot the percentages of heavy rainfall in the future." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.figure(figsize=(12, 6))\n", + "\n", + "for i, gcmid in enumerate(GCMIDS):\n", + " filename = gcmid + '.R95pTOT.future.GERICS-REMO2015.nc'\n", + " pcent_heavy_rain = iris.load_cube(CLIMDIR + filename)\n", + " plotnum = 1 + i\n", + " plt.subplot(1, 2, plotnum)\n", + " qplt.pcolormesh(pcent_heavy_rain, vmin=0, vmax=100)\n", + " plt.title(gcmid + ': Percentage of heavy rain \\n over Thailand in the future')\n", + " plt.gca().coastlines()\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.10" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebooks/AFR-22/worksheet_solutions.ipynb b/notebooks/AFR-22/worksheet_solutions.ipynb new file mode 100755 index 0000000..a643be1 --- /dev/null +++ b/notebooks/AFR-22/worksheet_solutions.ipynb @@ -0,0 +1,461 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Worksheet Solutions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2.2c\n", + "\n", + "Complete the following code block to repeat the same procedure for MPI-ESM-LR:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Print the current MPI-ESM-LR cube units\n", + "print(f'The current unit for data is: {mpiesm.units}')\n", + "\n", + "# convert units to kg m-2 day-1\n", + "mpiesm.convert_units('kg m-2 day-1')\n", + "\n", + "\n", + "# Rename the units to mm day-1. Recall that 1 kg m-2 is equivalent to 1 mm of rain\n", + "mpiesm.units = 'mm day-1'\n", + "\n", + "# Save the new cube as a new netCDF file using the `outfile` filename we've provided below!\n", + "outfile = os.path.join(OUTDIR, 'mpi-esm-lr.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + "\n", + "iris.save(mpiesm, outfile)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2.3e\n", + "\n", + "Answer: Write the line of code required to calculate CHIRPS's (a) standard deviation and (b) annual maximum rainfall in the code block below.
    \n", + "Hint: How could you adapt chirps_ond.aggregated_by(['seasons'], iris.analysis.MEAN) from above? You can refer to the [Iris documentation](https://scitools.org.uk/iris/docs/v2.4.0/iris/iris/analysis.html) if needed." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# From chirps, calculate: \n", + "# (a) chirps_std \n", + "chirps_std = chirps_ond.aggregated_by(['seasons'], iris.analysis.STD_DEV) \n", + "\n", + "# (b) chirps_max\n", + "chirps_std = chirps.collapsed('time', iris.analysis.MAX) \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3.1a" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Enter the ordered latitude and longitude coordinates for Kuala Lumpur here:\n", + "# lon=( , ) # longitude (East - West extent)\n", + "# lat=( , ) # latuitude (South - North extent)\n", + "lon = (99.5, 100.5)\n", + "lat = (13.5, 14.5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3.2e part 1\n", + "\n", + "e) Find the multi-annual monthly means (1986-2005) over the BK area for CHIRPS observations by following the same methodology as above in step d). As before we've given you the input and output files names.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load the BK extracted data created in previous step\n", + "infile = os.path.join(CHIRPSDIR, 'chirps.mon.1986_2005.BK.nc')\n", + "data = iris.load_cube(infile)\n", + "\n", + "# Add monthly coord categorisation to the time dim coordinate\n", + "iris.coord_categorisation.add_month_number(data, 'time', name='month_number')\n", + "\n", + "# Now calculate monthly means\n", + "monthly_mean = data.aggregated_by(['month_number'], iris.analysis.MEAN)\n", + "\n", + "# and change units to mm/day\n", + "monthly_mean.convert_units('mm day-1')\n", + "\n", + "# create the area averaged monthly mean of daily rainfall\n", + "# Find latitude weights\n", + "monthly_mean.coord('longitude').guess_bounds()\n", + "monthly_mean.coord('latitude').guess_bounds()\n", + "grid_areas = iris.analysis.cartography.area_weights(monthly_mean)\n", + "# Calculate area averaged monthly mean rainfall\n", + "monthly_mean = monthly_mean.collapsed(['longitude', 'latitude'], iris.analysis.MEAN, \n", + " weights=grid_areas)\n", + "\n", + "\n", + "# Save output\n", + "outfile = os.path.join(CLIMDIR, 'chirps.mon.mean.1986_2005.mmday-1.nc')\n", + "iris.save(monthly_mean, outfile)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3.2e part 2\n", + " Plot the CHIRPS observations, compare with the HadGEM2-ES and MPI-ESM-LR driven REMO2015 runs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load the CHIRPS cube\n", + "inpath = os.path.join(CLIMDIR, 'chirps.mon.mean.1986_2005.mmday-1.nc')\n", + "cube = iris.load_cube(inpath) \n", + "\n", + "# Quick line plot for cube \n", + "qplt.plot(cube.coord('month_number'), cube)\n", + "plt.title('BK area averaged ' + gcm + '\\n monthly average of daily rainfall')\n", + "ax = plt.gca()\n", + "ax.xaxis.set_label_text('Month Number')\n", + "ax.set_xlim(0.5, 12.5)\n", + "ax.set_ylim(0, 16)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3.3f\n", + "Question: Now that the cubes are all on the same grid, what differences do you see?
    Complete the code template below to help answer this question." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Directory name where data is read from\n", + "indir = os.path.join(DATADIR, 'EAS-22', 'climatology')\n", + "\n", + "# load HadGEM2-ES downscaled model data\n", + "hadgem2 = iris.load_cube(f'{indir}/hadgem2-es.OND.mean.1986_2005.pr.mmday-1.rg.nc')\n", + "\n", + "# load MPI-ESM-LR downscaled model data\n", + "mpiesm = iris.load_cube(f'{indir}/mpi-esm-lr.OND.mean.1986_2005.pr.mmday-1.rg.nc')\n", + "\n", + "# load CHIRPS data and extract region\n", + "chirps = iris.load_cube(f'{indir}/chirps.OND.mean.1986_2005.pr.mmday-1.nc')\n", + "chirps = chirps.intersection(latitude=lat, longitude=lon)\n", + "\n", + "# Do some plotting!\n", + "plt.figure(figsize=(12, 10))\n", + "plt.subplot(1,3,1)\n", + "qplt.pcolormesh(hadgem2[0], vmin=0., vmax=8.)\n", + "plt.title('HadGEM2-ES')\n", + "plt.gca().coastlines()\n", + "plt.subplot(1,3,2)\n", + "qplt.pcolormesh(mpiesm[0], vmin=0., vmax=8.)\n", + "plt.title('MPI-ESM-LR')\n", + "plt.gca().coastlines()\n", + "plt.subplot(1,3,3)\n", + "qplt.pcolormesh(chirps[0], vmin=0., vmax=8.)\n", + "plt.title('CHIRPS')\n", + "plt.gca().coastlines()\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 4.2c\n", + "\n", + "Now, repeat the calculations yourself for **temperature**. \n", + "\n", + "First, we calculate the **OND mean** temperatures. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for gcmid in GCMIDS:\n", + " infile = os.path.join(FUTRDIR, gcmid + '.mon.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", + " data = iris.load_cube(infile)\n", + "\n", + " # in order to calculate OND mean, we divide the months into two seasons: \n", + " # one for OND and a second for the remaining months\n", + " iris.coord_categorisation.add_season(data, 'time', name='seasons', seasons=('jfmamjjas','ond'))\n", + "\n", + " # Extract the data for the OND season only\n", + " data_ond = data.extract(iris.Constraint(seasons='ond'))\n", + "\n", + " # Now calculate the mean over the OND season\n", + " ond_mean = data_ond.aggregated_by(['seasons'], iris.analysis.MEAN)\n", + "\n", + " # save the OND mean as a netCDF\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(ond_mean, outfile)\n", + " print('Saved: {}'.format(outfile))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 4.4h\n", + "Produce and plot a montly time series of temperature data** relative to the 1986-2005 baseline. As for (f) and (g) produce time series for HadGEM2-ES and MPI-ESM-LR driven runs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Read in the land-sea mask. \n", + "# The cube data array has a land fraction associated with it which we'll use to mask out ocean points.\n", + "land_fraction_file = 'sftlf_EAS-22_MOHC-HadGEM2-ES_historical_r0i0p0_GERICS-REMO2015_v1_fx_r0i0p0.nc'\n", + "land_fraction = iris.load_cube(DATADIR + land_fraction_file)\n", + "\n", + "# convert this to a binary (i.e. 1 or 0 mask)\n", + "land_sea_mask = land_fraction.copy()\n", + "land_sea_mask.data = np.where(land_sea_mask.data < 50, 0, 1)\n", + "land_sea_mask.name = 'land_binary_mask'\n", + "# apply a mask to the cube \n", + "land_sea_mask = iris.util.mask_cube(land_sea_mask, land_sea_mask.data < 0.5)\n", + "\n", + "\n", + "# Loop over GCMIDS\n", + "for gcmid in GCMIDS:\n", + " # Read in original data for baseline and future\n", + " baselinepath = os.path.join(HISTDIR, gcmid + '.mon.1986_2005.GERICS-REMO2015.tm.C.nc')\n", + " futurepath = os.path.join(FUTRDIR, gcmid + '.mon.2041_2060.GERICS-REMO2015.tm.C.nc')\n", + " baseline = iris.load_cube(baselinepath)\n", + " future = iris.load_cube(futurepath)\n", + " \n", + " # Apply land mask\n", + " baseline.data = ma.array(baseline.data, mask=baseline.data*land_sea_mask.data.mask[np.newaxis, :,:])\n", + " future.data = ma.array(future.data, mask=future.data*land_sea_mask.data.mask[np.newaxis, :,:])\n", + "\n", + " # remove the 2D \"true\" lat and lon\n", + " baseline.remove_coord('longitude')\n", + " baseline.remove_coord('latitude')\n", + " future.remove_coord('longitude')\n", + " future.remove_coord('latitude')\n", + " \n", + " # Guess bounds\n", + " for cube in [baseline, future]:\n", + " for coord in ['grid_longitude', 'grid_latitude']:\n", + " cube.coord(coord).guess_bounds()\n", + " \n", + " # Calculate mean values over land points\n", + " baseline_land = baseline.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN,\n", + " weights = iris.analysis.cartography.area_weights(baseline))\n", + " future_land = future.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN,\n", + " weights = iris.analysis.cartography.area_weights(future))\n", + "\n", + " # Save future & baseline area averaged monthly data (time series)\n", + " baselineout = os.path.join(CLIMDIR, gcmid + '.mon.1986_2005.series.GERICS-REMO2015.tm.C.nc')\n", + " futureout = os.path.join(CLIMDIR, gcmid + '.mon.2041_2060.series.GERICS-REMO2015.tm.C.nc')\n", + " iris.save(baseline_land, baselineout)\n", + " iris.save(future_land, futureout)\n", + "\n", + " # Subtract baseline from future\n", + " diff = future_land.copy()\n", + " diff.data = future_land.data - baseline_land.data.mean()\n", + " diff.rename('future anomaly relative to mean historical precipitation')\n", + "\n", + " # Save the area averaged monthly future anomalies (time series)\n", + " outpath = os.path.join(CLIMDIR, gcmid + '.mon.2041_2060.anom.series.GERICS-REMO2015.tm.C.nc')\n", + " iris.save(diff, outpath)\n", + " print('Saved: {}'.format(outpath)) \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Read in the monthly series\n", + "hadgem2es = iris.load_cube(CLIMDIR + '/hadgem2-es.mon.2041_2060.anom.series.GERICS-REMO2015.tm.C.nc')\n", + "mpiesm = iris.load_cube(CLIMDIR + '/mpi-esm-lr.mon.2041_2060.anom.series.GERICS-REMO2015.tm.C.nc')\n", + "time = hadgem2es.coord('time')\n", + "\n", + "# Plot the two model time series' on the same figure\n", + "plt.figure(figsize=(16,5))\n", + "iplt.plot(time, hadgem2es, label = 'HadGEM2-ES')\n", + "iplt.plot(time, mpiesm, label = 'MPI-ESM-LR')\n", + "plt.legend()\n", + "plt.suptitle('2041-2060 Temperature anomaly (relative to 1986-2005)')\n", + "plt.ylabel(f'Temperature change ({hadgem2es.units}')\n", + "plt.xlabel('Years')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 5.1b\n", + "\n", + "We'll use CHIRPS as our observational data from which to compare our CORDEX model data.\n", + "\n", + "**Fill in the missing code** to calculate the observed wet days: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load CHIRPS daily precipitation data, but only period of interest\n", + "historical_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", + " <= cell.point <= PartialDateTime(year=2005))\n", + "\n", + "infile = os.path.join(CHIRPSDIR, 'chirps-v2.0_pr_day_1981-2018_p25.nc')\n", + "obs = iris.load_cube(infile, historical_time_constraint)#, 'daily precipitation analysis interpolated onto 0.25deg grids [mm/day]')\n", + "\n", + "# Find number of wet days\n", + "chirps_wetdays = obs.collapsed('time', count_nonzero)\n", + "chirps_wetdays.rename(f'CHIRPS number of wet days (>=1mm/day)')\n", + "\n", + "# Save wet days cube\n", + "outfile = os.path.join(CLIMDIR, 'chirps.wetday.nc')\n", + "iris.save(chirps_wetdays, outfile)\n", + "\n", + "# Find number of days in dataset (number_chirps_days)\n", + "number_chirps_days = len(obs.coord('time').points)\n", + "\n", + "\n", + "# Find wet days as percent of all chirps days \n", + "chirps_pcent_wetdays = (chirps_wetdays / number_chirps_days) * 100\n", + "chirps_pcent_wetdays.rename(f'CHIRPS percent of wet days (>=1mm/day)')\n", + "chirps_pcent_wetdays.units='%'\n", + "\n", + "# Save \n", + "outfile = os.path.join(CLIMDIR, 'chirps.wetday.pcent.nc')\n", + "iris.save(chirps_pcent_wetdays, outfile)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 5.1e" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + " # Add in a line of code to constrain the model domain to these coordinates: \n", + " # longitude=(70, 160)\n", + " # latitude=(10, 50)\n", + " pcent_change_subset = pcent_change.intersection(longitude=(70, 160), latitude=(10, 50))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 5.2h\n", + "**Plot the differences in the 95th percentiles** between the models and observations, and the future changes in the 95th percentiles of precipitation from both models.\n", + "\n", + "**Complete the code block to plot the figures...**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Create a figure of the size 12x12 inches\n", + "plt.figure(figsize=(12, 12))\n", + "\n", + "for n, gcmid in enumerate(GCMIDS):\n", + " # HINT: Use the `n` variable to help arrange you plots using: plt.subplot()\n", + " # Use the matplotlib documention to help you! \n", + "\n", + " # Load and plot the model bias (model - obs)\n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.pc95.bias.GERICS-REMO2015.pr.mmday-1.nc')\n", + " bias = iris.load_cube(infile)\n", + " plt.subplot(2,2,2*n+1)\n", + " qplt.pcolormesh(bias)\n", + " plt.gca().coastlines()\n", + "\n", + "\n", + " # Load and plot the percentage change in precipitation between future and baseline\n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.pc95.diff.GERICS-REMO2015.pr.mmday-1.nc')\n", + " pc_change = iris.load_cube(infile)\n", + " plt.subplot(2,2,2*n+2)\n", + " qplt.pcolormesh(pc_change)\n", + " plt.gca().coastlines()\n", + "\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.10" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 963aa1b2f1ecb2b7b8293a3a844e1f9c107bc2b3 Mon Sep 17 00:00:00 2001 From: Nick Savage Date: Fri, 22 Apr 2022 08:31:54 +0100 Subject: [PATCH 02/23] Gitignore issue fixed --- .gitignore | 6 - CONTRIBUTING.ipynb | 253 --- CONTRIBUTING.md | 70 - LICENCE | 29 - README.md | 77 - dockerfile | 23 - environment.yml | 20 - notebooks/AFR-22/img | 1 - notebooks/AFR-22/makedata.ipynb | 236 --- notebooks/AFR-22/worksheet1.ipynb | 864 --------- notebooks/AFR-22/worksheet2.ipynb | 772 -------- notebooks/AFR-22/worksheet3.ipynb | 1054 ----------- notebooks/AFR-22/worksheet4.ipynb | 629 ------- notebooks/AFR-22/worksheet5.ipynb | 853 --------- notebooks/AFR-22/worksheet6.ipynb | 258 --- notebooks/AFR-22/worksheet6example.ipynb | 392 ----- notebooks/AFR-22/worksheet_solutions.ipynb | 461 ----- .../CSSP_20CRDS_Tutorials/Introduction.ipynb | 245 --- .../images/global_airtemp_cp.png | Bin 150651 -> 0 bytes .../images/global_airtemp_ts.png | Bin 6278 -> 0 bytes .../CSSP_20CRDS_Tutorials/images/jupyter.png | Bin 37078 -> 0 bytes .../CSSP_20CRDS_Tutorials/images/region.PNG | Bin 101249 -> 0 bytes .../images/rotated_pole_1.png | Bin 794319 -> 0 bytes .../images/rotated_pole_2.png | Bin 436316 -> 0 bytes .../scripts/cssp37-env-nobuilds.yml | 194 -- .../scripts/xarray_iris_coord_system.py | 85 - .../solution_tutorial_1_data_access.ipynb | 1075 ------------ ...solution_tutorial_2_data_preparation.ipynb | 1285 -------------- .../solution_tutorial_3_basic_analysis.ipynb | 1561 ----------------- ...solution_tutorial_4_advance_analysis.ipynb | 1201 ------------- .../tutorial_1_data_access.ipynb | 1054 ----------- .../tutorial_2_data_preparation.ipynb | 1128 ------------ .../tutorial_3_basic_analysis.ipynb | 1301 -------------- .../tutorial_4_advance_analysis.ipynb | 779 -------- .../CSSP_20CRDS_Tutorials/variableslist.pdf | Bin 103839 -> 0 bytes notebooks/awsutils/README-AWS.md | 129 -- notebooks/awsutils/fetch_s3_file.py | 111 -- notebooks/awsutils/main.py | 42 - notebooks/awsutils/s3_bulk_data_upload.py | 26 - notebooks/awsutils/s3_files_upload.py | 43 - notebooks/img/AR5_extreme_indices.png | Bin 195544 -> 0 bytes notebooks/img/Iris7_1_trim_100.png | Bin 10899 -> 0 bytes ..._MASTER_black_mono_for_light_backg_RBG.png | Bin 25991 -> 0 bytes notebooks/img/multi_array_to_cube.png | Bin 36118 -> 0 bytes notebooks/img/python-logo-master-v3-TM.png | Bin 83564 -> 0 bytes notebooks/img/python_and_iris.png | Bin 16912 -> 0 bytes notebooks/img/two_runids.jpg | Bin 75890 -> 0 bytes notebooks/makedata.ipynb | 236 --- notebooks/py_makedata.sh | 7 - notebooks/utils.py | 162 -- notebooks/worksheet1.ipynb | 864 --------- notebooks/worksheet2.ipynb | 772 -------- notebooks/worksheet3.ipynb | 1054 ----------- notebooks/worksheet4.ipynb | 629 ------- notebooks/worksheet5.ipynb | 853 --------- notebooks/worksheet6.ipynb | 258 --- notebooks/worksheet6example.ipynb | 392 ----- notebooks/worksheet_solutions.ipynb | 461 ----- pyprecis-environment.lock | 217 --- 59 files changed, 22162 deletions(-) delete mode 100644 .gitignore delete mode 100644 CONTRIBUTING.ipynb delete mode 100644 CONTRIBUTING.md delete mode 100644 LICENCE delete mode 100644 README.md delete mode 100644 dockerfile delete mode 100644 environment.yml delete mode 120000 notebooks/AFR-22/img delete mode 100755 notebooks/AFR-22/makedata.ipynb delete mode 100755 notebooks/AFR-22/worksheet1.ipynb delete mode 100755 notebooks/AFR-22/worksheet2.ipynb delete mode 100755 notebooks/AFR-22/worksheet3.ipynb delete mode 100755 notebooks/AFR-22/worksheet4.ipynb delete mode 100755 notebooks/AFR-22/worksheet5.ipynb delete mode 100755 notebooks/AFR-22/worksheet6.ipynb delete mode 100755 notebooks/AFR-22/worksheet6example.ipynb delete mode 100755 notebooks/AFR-22/worksheet_solutions.ipynb delete mode 100644 notebooks/CSSP_20CRDS_Tutorials/Introduction.ipynb delete mode 100644 notebooks/CSSP_20CRDS_Tutorials/images/global_airtemp_cp.png delete mode 100644 notebooks/CSSP_20CRDS_Tutorials/images/global_airtemp_ts.png delete mode 100644 notebooks/CSSP_20CRDS_Tutorials/images/jupyter.png delete mode 100644 notebooks/CSSP_20CRDS_Tutorials/images/region.PNG delete mode 100755 notebooks/CSSP_20CRDS_Tutorials/images/rotated_pole_1.png delete mode 100755 notebooks/CSSP_20CRDS_Tutorials/images/rotated_pole_2.png delete mode 100644 notebooks/CSSP_20CRDS_Tutorials/scripts/cssp37-env-nobuilds.yml delete mode 100644 notebooks/CSSP_20CRDS_Tutorials/scripts/xarray_iris_coord_system.py delete mode 100644 notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_1_data_access.ipynb delete mode 100644 notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_2_data_preparation.ipynb delete mode 100644 notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_3_basic_analysis.ipynb delete mode 100644 notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_4_advance_analysis.ipynb delete mode 100644 notebooks/CSSP_20CRDS_Tutorials/tutorial_1_data_access.ipynb delete mode 100644 notebooks/CSSP_20CRDS_Tutorials/tutorial_2_data_preparation.ipynb delete mode 100644 notebooks/CSSP_20CRDS_Tutorials/tutorial_3_basic_analysis.ipynb delete mode 100644 notebooks/CSSP_20CRDS_Tutorials/tutorial_4_advance_analysis.ipynb delete mode 100755 notebooks/CSSP_20CRDS_Tutorials/variableslist.pdf delete mode 100644 notebooks/awsutils/README-AWS.md delete mode 100644 notebooks/awsutils/fetch_s3_file.py delete mode 100644 notebooks/awsutils/main.py delete mode 100644 notebooks/awsutils/s3_bulk_data_upload.py delete mode 100644 notebooks/awsutils/s3_files_upload.py delete mode 100644 notebooks/img/AR5_extreme_indices.png delete mode 100644 notebooks/img/Iris7_1_trim_100.png delete mode 100755 notebooks/img/MO_MASTER_black_mono_for_light_backg_RBG.png delete mode 100644 notebooks/img/multi_array_to_cube.png delete mode 100644 notebooks/img/python-logo-master-v3-TM.png delete mode 100644 notebooks/img/python_and_iris.png delete mode 100644 notebooks/img/two_runids.jpg delete mode 100755 notebooks/makedata.ipynb delete mode 100644 notebooks/py_makedata.sh delete mode 100644 notebooks/utils.py delete mode 100755 notebooks/worksheet1.ipynb delete mode 100755 notebooks/worksheet2.ipynb delete mode 100755 notebooks/worksheet3.ipynb delete mode 100755 notebooks/worksheet4.ipynb delete mode 100755 notebooks/worksheet5.ipynb delete mode 100755 notebooks/worksheet6.ipynb delete mode 100755 notebooks/worksheet6example.ipynb delete mode 100755 notebooks/worksheet_solutions.ipynb delete mode 100644 pyprecis-environment.lock diff --git a/.gitignore b/.gitignore deleted file mode 100644 index bb6957c..0000000 --- a/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -.ipynb_checkpoints/ -notebooks/.ipynb_checkpoints/ -/data/stash_select -notebooks/data_v2/ -notebooks/AFR-22/data_afr22/ -*.pyc diff --git a/CONTRIBUTING.ipynb b/CONTRIBUTING.ipynb deleted file mode 100644 index 8de44ad..0000000 --- a/CONTRIBUTING.ipynb +++ /dev/null @@ -1,253 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# PyPRECIS Notebook Style Guide\n", - "\n", - "Thanks for showing the enthusiasm to help develop the PyPRECIS notebooks. Please use this style guide as a reference when creating or modifying content...\n", - "\n", - "## Worksheet Title\n", - "\n", - "All worksheets should start with a title formatted as a level 1 heading:\n", - "\n", - "```md\n", - "# Worksheet ?: All Worksheets Should Have a Clear Title\n", - "```\n", - "\n", - "Worksheet titles should be followed with a short description of the worksheet.\n", - "\n", - "## Learning Aims\n", - "\n", - "This followed by a list of 3 to 4 learning aims for the worksheet. We use the HTML `div class=\"alert alert-block alert-warning\"` to colour this is a nice way:\n", - "\n", - "```md\n", - "
    \n", - "By the end of this worksheet you should be able to:
    \n", - "- Identify and list the names of PRECIS output data in PP format using standard Linux commands.
    \n", - "- Use basic Iris commands to load data files, and view Iris cubes.
    \n", - "- Use Iris commands to remove the model rim, select data variables and save the output as NetCDF files.\n", - "
    \n", - "```\n", - "\n", - "When rendered, it looks like this:\n", - "\n", - "
    \n", - "By the end of this worksheet you should be able to:
    \n", - "- Identify and list the names of PRECIS output data in PP format using standard Linux commands.
    \n", - "- Use basic Iris commands to load data files, and view Iris cubes.
    \n", - "- Use Iris commands to remove the model rim, select data variables and save the output as NetCDF files.\n", - "
    \n", - "\n", - "Remember to start each learning aim with a verb. Keep them short and to the point. If you have more than 3 to 4 learning aims, consider whether there is too much content in the workbook.\n", - "\n", - "## Notes\n", - "\n", - "You may wish to use a Note box to draw the learners attention to particular actions or points to note. Note boxes are created using `div class=\"alert alert-block alert-info\"`\n", - "\n", - "```md\n", - "
    \n", - "Note: In the boxes where there is code or where you are asked to type code, click in the box, then press Ctrl + Enter to run the code.
    \n", - "Note: An percentage sign % is needed to run some commands on the shell. It is noted where this is needed.
    \n", - "Note: A hash # denotes a comment; anything written after this character does not affect the command being run.
    \n", - "
    \n", - "```\n", - "\n", - "Which looks like:\n", - "\n", - "
    \n", - "Note: In the boxes where there is code or where you are asked to type code, click in the box, then press Ctrl + Enter to run the code.
    \n", - "Note: An percentage sign % is needed to run some commands on the shell. It is noted where this is needed.
    \n", - "Note: A hash # denotes a comment; anything written after this character does not affect the command being run.
    \n", - "
    \n", - "\n", - "## Contents\n", - "\n", - "Immediately following the Learning Aims (or Note box if used) add a list of contents.\n", - "\n", - "```md\n", - "## Contents\n", - "### [1.1: Data locations and file names](#1.1) \n", - "### ...additional headings\n", - "```\n", - "\n", - "Items in the contents list are formatted as level 3 headings. Note the `[Link Name](Link location)` syntax. Each subsequent heading in the notebook needs to have a `id` tag associated with it for the links to work. These are formatted like this:\n", - "\n", - "```md\n", - "\n", - "## 1.1 Data locations and file names\n", - "```\n", - "\n", - "Remember that the `id` string must match the link location otherwise the link won't work. Remember to update both the link title numbering and the link id numbering if you are reordering content.\n", - "\n", - "## Section Headings\n", - "\n", - "To help users navigate round the document use section headings to break the content into sections. As detailed above, each section heading needs to have an `id` tag associated with it to build the Contents links.\n", - "\n", - "If you want to further subdivide each section, use bold letters with a parentheses:\n", - "\n", - "```md\n", - "**a)** Ordinary section text continues...\n", - "```\n", - "\n", - "## General Formatting\n", - "\n", - "Use links to point learners to additional learning resources. These follow the standard markdown style: `[Link text](Link location)`, eg.\n", - "\n", - "```md\n", - "[Iris](http://scitools.org.uk/iris/docs/latest/index.html)\n", - "```\n", - "\n", - "gives\n", - "\n", - "[Iris](http://scitools.org.uk/iris/docs/latest/index.html)\n", - "\n", - "Format key commands using bold back-ticks: \n", - "\n", - "```md\n", - "**`cd`**\n", - "```\n", - "\n", - "Where certain keyboard combinations are necessary to execute commands, use the `` html formatting.\n", - "\n", - "\n", - "```md\n", - "Ctrl + Enter\n", - "```\n", - "\n", - "which gives:\n", - "\n", - "Ctrl + Enter\n", - "\n", - "Code blocks are entered in new notebook cells, with the `Code` style. Remember, all python should be **Python 3**." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "# This is a code block\n", - "# Make sure you include comments with your code to help explain what you are doing\n", - "\n", - "# Leave space if you want learners to complete portions of code\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: Remember you can use additional Note blocks at any time to highlight important points!\n", - "
    \n", - "\n", - "If you want to add pictures, place image files in the `/notebooks/img` folder. Use html image formatting tags to control the position of the image in the rendered notebook cell:\n", - "\n", - "```md\n", - "

    \"python

    \n", - "```\n", - "\n", - "gives\n", - "\n", - "

    \"python

    \n", - "\n", - "Images can also be places in Note and Question blocks in the same manner. See Worksheet 1 for an example.\n", - "\n", - "## Questions\n", - "\n", - "Asking questions is a key part of the learning process. Questions blocks use the `div class=\"alert alert-block alert-success\"` style, and should be visually separated from the main text using horizontal rules above and below the question section:\n", - "\n", - "```md\n", - "---\n", - "
    \n", - "Question: How many pp files are in this directory, in total?\n", - "
    How many of these pp files contain the string 'sep'; relating to September? What command do you need to use to find this out?\n", - "
    \n", - "\n", - "Answer: \n", - "
    *Total number of pp files: \n", - "
    Number of September pp files:\n", - "
    Command used to find number of september pp files:*\n", - "\n", - "---\n", - "```\n", - "\n", - "This renders as:\n", - "\n", - "---\n", - "
    \n", - "Question: How many pp files are in this directory, in total?\n", - "
    How many of these pp files contain the string 'sep'; relating to September? What command do you need to use to find this out?\n", - "
    \n", - "\n", - "Answer: \n", - "
    *Total number of pp files: \n", - "
    Number of September pp files:\n", - "
    Command used to find number of september pp files:*\n", - "\n", - "---\n", - "\n", - "Make sure to put your _answer_ section in a different notebook cell from the _question_ section to avoid learners accidently editing the question blocks. Questions may also include code blocks. Remember to use a horizonal rule `---` to show where the question section starts and stops.\n", - "\n", - "## Worksheet footer\n", - "\n", - "At the end of the worksheet, summarise the content using a `div class=\"alert alert-block alert-warning\"`\n", - "\n", - "```md\n", - "
    \n", - "
    \n", - "This completes worksheet 1.
    You have created pre-processed files (rim removed, individual variables, concenated over time, in NetCDF format).
    \n", - "In worksheet 2, you will begin to analyse these files.\n", - "
    \n", - "
    \n", - "```\n", - "\n", - "
    \n", - "
    \n", - "This completes worksheet 1.
    You have created pre-processed files (rim removed, individual variables, concenated over time, in NetCDF format).
    \n", - "In worksheet 2, you will begin to analyse these files.\n", - "
    \n", - "
    \n", - "\n", - "Finally, a copyright statement and the Met Office logo should be added to all notebooks:\n", - "\n", - "```md\n", - "

    \"python

    \n", - "
    © Crown Copyright 2019, Met Office
    \n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "

    \"Met

    \n", - "
    © Crown Copyright 2019, Met Office
    " - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "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.6.8" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 403075e..0000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,70 +0,0 @@ -# Contributing Guidelines - -You'd like to help? Great! :tada: - -[Clone your own local copy](https://help.github.com/en/articles/cloning-a-repository) of this repositry run the following in your terminal: - -```shell -git clone git@github.com:MetOffice/PyPRECIS.git -``` - -Consider [creating a conda environment](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html) from the PyPRECIS dependencies specified in the `environment.yml` file: -```shell -conda env create -f environment.yml -``` -Remember to activate your new environment: -```shell -conda activate pyprecis-environment -``` - -:exclamation: *Note: As of v1.0 we are unable to provison the model data necessary for reproducing the full PyPRECIS learning environment via github due to it's large file size. Contact the PRECIS team for more information.* - -## Before you start... -Read through the current issues to see what you can help with. If you have your own ideas for improvements, please start a new issue so we can track and discuss your improvement. You must create a new branch for any changes you make. - -**Please take note of the following guidelines when contributing to the PyPRECIS repository.** - -* Please do **not** make changes to `main` or `develop` branches. The `main` branch is reserved for files and code that has been fully tested and reviewed. Only the core PyPRECIS developers can push to the `main` and `develop` branches. - -* The `develop` branch contains the latest holistic version of the `PyPRECIS` repository. Please branch off `develop` to fix a particular issue or add a new feature. -* Please use the following tokens at the start of a new branch name to help sign-post and group branches: - -Name | Description ----- | ----------- -new | Branch adding new code/files that don't exist in the repo -fix | Branch modifying code/files that already exist in the repo. -junk | Throwaway branch created to experiment - -* Git can pattern match branches to to give you an overview of all (e.g. fix) branches: - ```shell - git branch --list "fix/*" - ``` -* Use a forward slash to separate the token from the branch name. For example: -``` -new/Wks10 -fix/Wks2_units -``` -* When you think your branch is ready to be merged into `develop`, open a new pull request. - -## Signposting -* **Issues** are tracked and discussed under the Issues tab. Please use issues to disucss proposed changes or capture improvements needed to work towards the next milestone. Issues or improvements that contribute to the next milestone to be captured in thr Wiki tab. -* **Pull requests** show branches that are currently under review. New pull requests are created in reponse to branch fixes identified and recorded in the Issues tab. -* **Wiki** is used for summarising update aims for future versions of the notebooks, and to record speculative improvements that cannot be action in the current milestone. - - - -Other more general points to note: - -* **Avoid long descriptive names.** Long branch names can be very helpful when you are looking at a list of branches but it can get in the way when looking at decorated one-line logs as the branch names can eat up most of the single line and abbreviate the visible part of the log. -* **Do not use bare numbers.** Do not use use bare numbers (or hex numbers) as part of your branch naming scheme. - -## CONTRIBUTING.ipynb -The `CONTRIBUTING.ipyn` file contains the worksheet style guide. Please consult this for information on formatting the new and ammended worksheets in a consistent style. - -**If in doubt, please contact the PRECIS team (precis@metoffice.gov.uk) if you -have questions.** - -
    -Met Office
    -© British Crown Copyright 2018 - 2022, Met Office -
    diff --git a/LICENCE b/LICENCE deleted file mode 100644 index 9dfda08..0000000 --- a/LICENCE +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause Licence - -Copyright (c) 2020, Met Office -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md deleted file mode 100644 index 66495ab..0000000 --- a/README.md +++ /dev/null @@ -1,77 +0,0 @@ -# PyPRECIS - -

    -PyPRECIS is the python based training environment for Met Office PRECIS training courses. -

    - -

    - - - - Latest version - - Commits since last release -Release date -Repo size -GitHub -

    -
    - - - -## Overview -PyPRECIS is principally designed as a learning tool to faciliate processing of regional climate model (RCM) output. It is desgined to be used in conjunction with taught workshops in an instructor led environment. The name PyPRECIS is a refefence to the initial version of these notebooks which were designed for analysis of data from the PRECIS model but the training is now designed to be more general. - -PyPRECIS is built on [Jupyter Notebooks](https://jupyter.org/), with data processing performed in python, making use of [Iris](https://scitools.org.uk/iris/docs/latest/). - -The data analysed in the first set of notebooks is from the CORDEX-Core simulations which provide an ensemble of high-resolution (at least 25 km) regional climate change information. Further information about CORDEX-Core can be found on the [CORDEX website](https://cordex.org/experiment-guidelines/cordex-core/cordex-core-simulations/). There is also a [Special issue of Climate Dynamics](https://link.springer.com/journal/382/volumes-and-issues/57-5) which gives more information about this data. There are also a set of notebooks which analyse the 20CR-DS data set covering China. - -## Contents -The teaching elements of PyPRECIS are contained in the `notebooks` directory. The core primary worksheets are: - -Worksheet | Aims -:----: | ----------- -[1](notebooks/worksheet1.ipynb) |
  • Identify and list the names of CORDEX output data in netCDF format using standard Linux commands.
  • Use basic Iris commands to load data files, and view Iris cubes.
  • Use Iris commands to merge netCDF files - Take a subset of the data based on a date range - Save the output as NetCDF files.
  • -[2](notebooks/worksheet2.ipynb) |
  • Apply basic statistical operations to Iris cubes
  • Plot information from Iris cubes
  • -[3](notebooks/worksheet3.ipynb) |
  • Extract specific regions of interested from large datasets
  • Apply more advanced statistical operations to multi-annual data
  • Produce your own data processing workflow
  • -[4](notebooks/worksheet4.ipynb) |
  • Calculate difference and percentage differences across cubes
  • Plot cubes using different plotting methods and with an appropriate colour scale
  • Create time series anomalies of precipitation and tempeature
  • -[5](notebooks/worksheet5.ipynb) |
  • Have an appreciation for working with daily model data
  • Understand how to calculate some useful climate extremes statistics
  • Be aware of some coding stratagies for dealing with large data sets
  • -[6](notebooks/worksheet6.ipynb) | An extended coding exercise designed to allow you to put everything you've learned into practise - -Additional tutorials specific to the CSSP 20th Century reanalysis dataset: - -Worksheet | Aims -:----: | ----------- -[CSSP 1](notebooks/CSSP_20CRDS_Tutorials/Introduction.ipynb) |
  • How to use a cloud based platform to analyse the 20CR-DS dataset
  • Setting up a python environment
  • -[CSSP 2](notebooks/CSSP_20CRDS_Tutorials/tutorial_1_data_access.ipynb) |
  • How to load data into Xarrays format
  • How to convert the data xarrays into iris cube format
  • How to perform basic cube operations
  • -[CSSP 3](notebooks/CSSP_20CRDS_Tutorials/tutorial_3_basic_analysis.ipynb) |
  • Calculate and visualise annual and monthly means
  • Calculate and visualise seasonal means
  • Calculate mean differences (anomalies)
  • -[CSSP 4](notebooks/CSSP_20CRDS_Tutorials/tutorial_4_advance_analysis.ipynb) |
  • Calculate frequency of wet days
  • Calculate percentiles
  • Calculate some useful climate extremes statistics
  • - -Three additional worksheets are available for use by workshop instructors: - -* `makedata.ipynb`: Provides scripts for preparing raw model output for use in notebook exercises. -* `worksheet_solutions.ipyn`: Solutions to worksheet exercices. -* `worksheet6example.ipynb`: Example code for Worksheet 6. - -## Data -For information on how to access the CORDEX-Core data used in these worksheets, see: [CORDEX: How to access the data](https://cordex.org/data-access/how-to-access-the-data/). Most CORDEX data is available for unrestricted use but some is provided for non commercial use only. Before you download any CORDEX data you must ensure you are aware of the Terms of Use for the data you are accessing. - -Data relating to the **CSSP 20CRDS** tutorials is held online in an Azure Blob Storage Service. To access this data user will need a valid shared access signature (SAS) token. The data is in [Zarr](https://zarr.readthedocs.io/en/stable/) format and the total volume is ~2TB. The data is in hourly, 3 hourly, 6 hourly, daily and monthly frequencies stored seperatrely under the `metoffice-20cr-ds` container on MS-Azure. Monthly data only is also via [Zenodo](https://zenodo.org/record/2558135). - - - -## Contributing -Information on how to contribute can be found in the [Contributing guide](CONTRIBUTING.md). -Please also consult the `CONTRIBUTING.ipynb` for information on formatting the worksheets in Jupyter Notebooks. **Note** that we do not currently make use of Jupyter Lab as it doesn't currently support the types of html formatting we use in Jupyter Notebooks. - -## Licence -PyPRECIS is licenced under BSD 3-clause licence for use outside of the Met Office. - -
    -Met Office
    -© British Crown Copyright 2018 - 2022, Met Office -
    diff --git a/dockerfile b/dockerfile deleted file mode 100644 index 931cd9e..0000000 --- a/dockerfile +++ /dev/null @@ -1,23 +0,0 @@ -FROM continuumio/miniconda3 - -RUN apt-get update - -# Set working directory for the project -WORKDIR /app - -SHELL ["/bin/bash", "--login", "-c"] - -RUN apt-get install -y git - -# Create Conda environment from the YAML file -COPY environment.yml . -RUN pip install --upgrade pip - -RUN conda env create -f environment.yml - -RUN conda init bash -RUN conda activate pyprecis-environment - -RUN pip install ipykernel && \ - python -m ipykernel install --name pyprecis-training - diff --git a/environment.yml b/environment.yml deleted file mode 100644 index 43fb8fa..0000000 --- a/environment.yml +++ /dev/null @@ -1,20 +0,0 @@ -name: pyprecis-environment -channels: - - conda-forge -dependencies: - - python=3.6.10 - - iris=2.4.0 - - numpy=1.17.4 - - matplotlib=3.1.3 - - nc-time-axis=1.2.0 - - jupyter_client=6.1.7 - - jupyter_core=4.6.3 - - dask=2.11.0 - - notebook=5.7.8 - - mo_pack=0.2.0 - - boto3 - - botocore - - tqdm - - cdo - - nco - - ncview diff --git a/notebooks/AFR-22/img b/notebooks/AFR-22/img deleted file mode 120000 index 6ffc6ca..0000000 --- a/notebooks/AFR-22/img +++ /dev/null @@ -1 +0,0 @@ -../img \ No newline at end of file diff --git a/notebooks/AFR-22/makedata.ipynb b/notebooks/AFR-22/makedata.ipynb deleted file mode 100755 index 51abdd8..0000000 --- a/notebooks/AFR-22/makedata.ipynb +++ /dev/null @@ -1,236 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import glob\n", - "import os\n", - "import iris\n", - "from iris.time import PartialDateTime\n", - "from iris.experimental.equalise_cubes import equalise_attributes\n", - "\n", - "DATADIR = '/project/ciid/projects/PRECIS/worksheets/data_v2/EAS-22/'\n", - "# write outputs to own directory so that can be checked before upload under ciid\n", - "OUTDIR = f'{os.getenv(\"SCRATCH\")}/cordex_inputs/'\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Make data for worksheet 4" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Prep future data (2041-2060) from ESGF CORDEX files\n", - "# Note this assumes that only want to process the REMO2015 data.\n", - "\n", - "shortnames = {'MOHC-HadGEM2-ES':'hadgem2-es', 'MPI-M-MPI-ESM-LR':'mpi-esm-lr'}\n", - "\n", - "# Make future 2021-2050 data\n", - "future_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=2041) \n", - " <= cell.point <= PartialDateTime(year=2060))\n", - "for gcmid in ['MOHC-HadGEM2-ES', 'MPI-M-MPI-ESM-LR']:\n", - "\n", - " # set a short name consistent with what used in the exercises [would it be better to use full names?]\n", - " shortgcm = shortnames[gcmid]\n", - " for var in ['pr', 'tas']:\n", - "\n", - " # find all the files to consolidate \n", - " flist = glob.glob(DATADIR + f'{var}_*_{gcmid}_rcp85_*_GERICS-REMO2015_*_mon_*.nc')\n", - " print (f'input files: {flist}')\n", - "\n", - " # merge the cubes\n", - " datacubes = iris.load(flist, future_time_constraint)\n", - " equalise_attributes(datacubes)\n", - " cube = datacubes.concatenate_cube()\n", - " \n", - " if cube.name() == 'air_temperature':\n", - " cube.convert_units('celsius')\n", - " outpath = os.path.join(OUTDIR, 'future', shortgcm + '.mon.2041_2060.GERICS-REMO2015.tm.C.nc')\n", - " iris.save(cube, outpath)\n", - " if cube.name() == 'precipitation_flux':\n", - " cube.convert_units('kg m-2 day-1')\n", - " cube.units = 'mm day-1'\n", - " outpath = os.path.join(OUTDIR, 'future', shortgcm + '.mon.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", - " iris.save(cube, outpath)\n", - " print(f'saved file: {outpath}')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Prep baseline data (1986-2005) from \n", - "historical_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", - " <= cell.point <= PartialDateTime(year=2005))\n", - "for gcmid in ['MOHC-HadGEM2-ES', 'MPI-M-MPI-ESM-LR']:\n", - "\n", - " # set a short name consistent with what used in the exercises [would it be better to use full names?]\n", - " shortgcm = shortnames[gcmid]\n", - " for var in ['pr', 'tas']:\n", - "\n", - " # find all the files to consolidate \n", - " flist = glob.glob(DATADIR + f'{var}_*_{gcmid}_historical_*_GERICS-REMO2015_*_mon_*.nc')\n", - " flist = glob.glob(DATADIR + f'{var}_*_{gcmid}_historical_*_GERICS-REMO2015_*_mon_*.nc')\n", - " print (f'input files: {flist}')\n", - "\n", - " # merge the cubes\n", - " datacubes = iris.load(flist, historical_time_constraint)\n", - " equalise_attributes(datacubes)\n", - " cube = datacubes.concatenate_cube()\n", - " \n", - " if cube.name() == 'air_temperature':\n", - " cube.convert_units('celsius')\n", - " outpath = os.path.join(OUTDIR, 'historical', shortgcm + '.mon.1986_2005.GERICS-REMO2015.tm.C.nc')\n", - " iris.save(cube, outpath)\n", - " if cube.name() == 'precipitation_flux':\n", - " cube.convert_units('kg m-2 day-1')\n", - " cube.units = 'mm day-1'\n", - " outpath = os.path.join(OUTDIR, 'historical', shortgcm + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", - " iris.save(cube, outpath)\n", - " print(f'saved file: {outpath}')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Make data for Worksheet 5" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The files needed are daily precipitation, with the two periods (historical and future) consolidated into a single file\n", - "\n", - "Note that these datasets should be saved with compression to reduce their file size. If for some reason this needs to be done during a PRECIS course, it is quicker to save them without compression using `iris.save(cube, outfile)` but the filesize is significantly larger.\n", - "\n", - "Unlike the previous PRECIS data, the memory requirements of this code are modest (probably due to the lack of rim removal meaning the data remains lazy). It does take several minutes (~5) to run each example." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Prep future data (2041-2060) from CORDEX files\n", - "\n", - "shortnames = {'MOHC-HadGEM2-ES':'hadgem2-es', 'MPI-M-MPI-ESM-LR':'mpi-esm-lr'}\n", - "\n", - "# Make future 2041-2060 data\n", - "future_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=2041) \n", - " <= cell.point <= PartialDateTime(year=2060))\n", - "for gcmid in ['MOHC-HadGEM2-ES', 'MPI-M-MPI-ESM-LR']:\n", - "\n", - " # set a short name consistent with what used in the exercises [would it be better to use full names?]\n", - " shortgcm = shortnames[gcmid]\n", - "\n", - " # find all the files \n", - " flist = glob.glob(DATADIR + f'pr_EAS-22_{gcmid}_rcp85_*_GERICS-REMO2015_*_day_*.nc')\n", - " print (f'input files: {flist}')\n", - " \n", - " # load using time constraint above\n", - " datacubes = iris.load(flist, future_time_constraint)\n", - "\n", - " # merge the cubes\n", - " equalise_attributes(datacubes)\n", - " cube = datacubes.concatenate_cube()\n", - " \n", - " if cube.name() == 'air_temperature':\n", - " cube.convert_units('celsius')\n", - " outpath = os.path.join(OUTDIR, 'future', shortgcm + '.day.2041_2060.GERICS-REMO2015.tm.C.nc')\n", - " iris.save(cube, outpath, least_significant_digit=3, \n", - " complevel=4, zlib=True)\n", - " if cube.name() == 'precipitation_flux':\n", - " cube.convert_units('kg m-2 day-1')\n", - " cube.units = 'mm day-1'\n", - " outpath = os.path.join(OUTDIR, 'future', shortgcm + '.day.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", - " iris.save(cube, outpath, least_significant_digit=3, \n", - " complevel=4, zlib=True)\n", - " print(f'saved file: {outpath}')\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Prep baseline data (1986-2006) from CORDEX files\n", - "historical_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", - " <= cell.point <= PartialDateTime(year=2005))\n", - "# Make baseline data\n", - "for gcmid in ['MOHC-HadGEM2-ES', 'MPI-M-MPI-ESM-LR']:\n", - "\n", - " # set a short name consistent with what used in the exercises [would it be better to use full names?]\n", - " shortgcm = shortnames[gcmid]\n", - "\n", - " # find all the files \n", - " flist = glob.glob(DATADIR + f'pr_EAS-22_{gcmid}_historical_*_GERICS-REMO2015_*_day_*.nc')\n", - " print (f'input files: {flist}')\n", - " \n", - " # load using time constraint above\n", - " datacubes = iris.load(flist, historical_time_constraint)\n", - "\n", - " # merge the cubes\n", - " equalise_attributes(datacubes)\n", - " cube = datacubes.concatenate_cube()\n", - " \n", - " if cube.name() == 'air_temperature':\n", - " cube.convert_units('celsius')\n", - " outpath = os.path.join(OUTDIR, 'historical', shortgcm + '.day.1986_2005.GERICS-REMO2015.tm.C.nc')\n", - " iris.save(cube, outpath, least_significant_digit=3, \n", - " complevel=4, zlib=True)\n", - " if cube.name() == 'precipitation_flux':\n", - " cube.convert_units('kg m-2 day-1')\n", - " cube.units = 'mm day-1'\n", - " outpath = os.path.join(OUTDIR, 'historical', shortgcm + '.day.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", - " iris.save(cube, outpath, least_significant_digit=3, \n", - " complevel=4, zlib=True)\n", - " print(f'saved file: {outpath}')\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "pyprecis-environment", - "language": "python", - "name": "pyprecis-environment" - }, - "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.6.10" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/notebooks/AFR-22/worksheet1.ipynb b/notebooks/AFR-22/worksheet1.ipynb deleted file mode 100755 index 8f08b0b..0000000 --- a/notebooks/AFR-22/worksheet1.ipynb +++ /dev/null @@ -1,864 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Worksheet 1: File locations and pre-processing\n", - "The exercises in this worksheet demonstrate some of the tools available for data analysis, and how to prepare CORDEX output for analysis (pre-processing). This can be time consuming for large amounts of data, so in this worksheet a small subset of data is used to easily demonstrate the steps involved. \n", - "\n", - "[CORDEX data](https://cordex.org/data-access/how-to-access-the-data/) is in [NetCDF](https://www.unidata.ucar.edu/software/netcdf/) format (a standard format in climate science) so that it can be used in post processing packages such as Python and the Python library [Iris](http://scitools.org.uk/iris/docs/latest/index.html)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "By the end of this worksheet you should be able to:
    \n", - "- Identify and list the names of CORDEX output data in netCDF format using standard Linux commands.
    \n", - "- Use basic Iris commands to load data files, and view Iris cubes.
    \n", - "- Use Iris commands to merge netCDF files\n", - "- Take a subset of the data based on a date range\n", - "- Save the output as NetCDF files.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: In the boxes where there is code or where you are asked to type code, click in the box, then press Ctrl + Enter to run the code.
    \n", - "Note: An percentage sign % is needed to run some commands on the shell. It is noted where this is needed.
    \n", - "Note: A hash # denotes a comment; anything written after this character does not affect the command being run.
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Contents\n", - "### [1.1: Data locations and file names](#1.1) \n", - "### [1.2: Getting started with Python and Iris](#1.2)\n", - "### [1.3: Merge Problems](#1.3)\n", - "### [1.4 Extracting data within a specific time range](#1.4)\n", - "### [1.5: Saving data to a new file](#1.5)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 1.1 Data locations and file names\n", - "The datasets used within these worksheets are already linked to the notebook in order to provide quick and easy access for the purpose of this training. However the commands learned in this worksheet provide useful context for future work in a linux and unix scripting environment." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**a)** Firstly, find out what location you are currently in by using the **`pwd`** command; **`pwd`** stands for **print working directory**.\n", - "\n", - "In the cell below type **`%pwd`** on a new line and then press Ctrl + Enter.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Type %pwd below and press 'ctrl' + 'enter'\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**b)** List the contents of this directory; **`ls`** stands for **list** and using the **`-l`** option gives a longer listing with more information, such as file size and modification date. \n", - "\n", - "In the cell below type **`%ls`** on a separate line then press Ctrl + Enter." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Type %ls and press 'ctrl' + 'enter'.\n", - "\n", - "\n", - "# Type %ls -l and press 'ctrl' + 'enter'.\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: What is the difference between ls and ls -l? What extra information do you see? Which file was edited most recently?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer:
    \n", - "*...Double click here to type your answer...*\n", - "\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**c)** To avoid conflicts of data when running locally, we will take a copy of the source files used in the training (this is not needed if running on the cloud, we instead download from an S3 bucket). Run the command in the following cell. It might take a few minutes to complete." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import subprocess\n", - "subprocess.run(['rsync', '-r', '/project/ciid/projects/PRECIS/worksheets/data_v2', '.'])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If the command works correctly you should see the message:\n", - "\n", - "`CompletedProcess(args=['rsync', '-r', '/project/ciid/projects/PRECIS/worksheets/data_v2', '.'], returncode=0)`\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**d)** Move to the directory (i.e. folder) called `data_v2/EAS-22`. This directory contains CORDEX data for the East Asia Domain.\n", - "\n", - "**Hint:** The `cd` command stands for _change directory_\n", - "\n", - "Type your command(s) below and press Ctrl + Enter.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Type your %cd [directory-path] command below and press 'ctrl' + 'enter'.\n", - "\n", - "\n", - "# List the contents of this directory, using a previous command.\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**d)** There are a lot of files in this directory! The file names contain information on the simulated date of the data they contain - you'll learn more about the naming convention for CORDEX data in another presention.\n", - "\n", - "For now, list only the files containing monthly temperature data using the following command:\n", - "\n", - "Type **`%ls tas*mon*`** in the code block below." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Type %ls tas*mon* and press 'ctrl' + 'enter'.\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: The asterisk character * (also known as glob) matches any string within the filename\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**e)** This still returns too many files to comfortably count manually. **`wc`** stands for **word count**; combining this command with **`ls`** allows us to count the number of items in that directory. \n", - "\n", - "In the cell below type **`%ls tas*mon* | wc -l`** then press Ctrl + Enter." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Type %ls *mon* | wc -l command below and press 'ctrl' + 'enter'\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: How many nc files are in this directory, in total?\n", - "
    How many of these nc files contain the string 'historical'; relating to the historical climate simulation? What command do you need to use to find this out?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer: \n", - "
    *Total number of nc files: \n", - "
    Number of historical nc files:\n", - "
    Command used to find number of historical nc files:*\n", - "\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**f)** To list all the files containing monthly data from a period starting 202101, we use the code **`*mon_202101-??????.nc`**\n", - "\n", - "Type below **`%ls *mon_202101-??????.nc`**" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Type %ls *mon_202101-??????.nc and press 'ctrl' + 'enter'.\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: The question mark character ? matches any single character\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**g)** Now move up one level in the directory tree and list the directories.\n", - "\n", - "Type `cd ..` to move up one level in the directory tree and press Ctrl + Enter to execute the command" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Type %cd .. and press 'ctrl' + 'enter'.\n", - "\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: Which directory are you in now? What else can you see in this directory?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer:
    \n", - "*...Double click here to type your answer...*\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "***\n", - "\n", - "## 1.2 Getting started with Python and Iris\n", - "

    \"python

    \n", - "\n", - "\n", - "Python is a general purpose programming language. Python supports modules and packages, which encourages program modularity and code reuse. \n", - "\n", - "\n", - "We also use the Python library [Iris](http://scitools.org.uk/iris/docs/v2.4.0/index.html), which is written in Python and is maintained by the Met Office. Iris seeks to provide a powerful, easy to use, and community-driven Python library for analysing and visualising meteorological and oceanographic data sets.\n", - "\n", - "The top level object in Iris is called a cube. A cube contains data and metadata about a phenomenon (i.e. air_temperature). Iris handles several different types of file formats, loading them into Iris cubes.\n", - "\n", - "\n", - "For a brief introduction to Iris and the cube formatting please read this Introduction page here: \n", - "\n", - "http://scitools.org.uk/iris/docs/v2.4.0/userguide/iris_cubes.html\n", - "\n", - "For future reference please refer to the Iris website:\n", - "\n", - "http://scitools.org.uk/iris/docs/v2.4.0/index.html\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**a)** First, run the code-block below to **load** a file into Iris and **print** its metadata structure.
    \n", - "\n", - "To run the code, click in the box below and press Ctrl + Enter." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%cd /home/h03/fris/code/PyPRECIS/notebooks/data_v2" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "# import the necessary modules\n", - "import iris\n", - "import glob\n", - "import os\n", - "\n", - "# this is needed so that the plots are generated inline with the code instead of a separate window\n", - "%matplotlib inline \n", - "\n", - "# provide the path of your sample data\n", - "sample_data = 'EAS-22/sample_data.nc'\n", - "\n", - "# Constraint the reading to a single variable and load it into an Iris cube\n", - "cube = iris.load_cube(sample_data)\n", - "\n", - "# Print the Iris cube\n", - "print(cube)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: Can you explain how our sample data we printed above relates to this picture?\n", - "\"diagram
    \n", - "\n", - "- Is our data above a 3D or a 2D cube?
    \n", - "- What are the cube dimensions?
    \n", - "- How many grid boxes is the latitudinal range divided into?
    \n", - "- What meteorological variable does this cube represent?
    \n", - "- What unit is used for this variable?
    \n", - "
    \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Double click here to type your answer::\n", - "
    *Is this cube 3D or 2D? \n", - "
    What are the cube dimensions? \n", - "
    How many grid boxes is the latitudinal range divided into? \n", - "
    What meteorological variable does this cube represent? \n", - "
    What unit is used for this variable?* \n", - "\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**b)** Now **plot** the data for the selected variable:
    \n", - "\n", - "To run the code, click in the box below and press Ctrl + Enter." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import matplotlib.pyplot as plt\n", - "import iris.quickplot as qplt\n", - "\n", - "plt.figure(figsize=(12,12)) # Set the figure size\n", - "\n", - "# find the edges of grid cells (Aka the boounds)\n", - "cube.coord('grid_latitude').guess_bounds()\n", - "cube.coord('grid_longitude').guess_bounds()\n", - "\n", - "qplt.pcolormesh(cube) # Plot the cube\n", - "plt.title(cube.name()) # Add plot title\n", - "plt.clim(0, 5e-4) # Set colour bar range\n", - "plt.show() # Show the plot" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Sense check the data plotted: \n", - "\n", - "* Can you make out sections of the East Asian coastline? \n", - "* How about the scale? \n", - "\n", - "As we progress through these workbooks, we'll learn how to process the data into more intuitive units and mask / add country boundaries, so it's easier to understand the information.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 1.3 Merge problems\n", - "\n", - "**a)** When using data, we want a single cube for all fields with the same standard name and sequential timesteps. `iris.load` will return as few cubes as possible, by collecting cubes from multiple files together. However, on some occasions this merge process does not give a single cube when we would expect it to. \n", - "\n", - "This section demonstrates how to deal with cases like this and make a single cube for these data." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "You can read more about iris loading behaviour here.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As an example we will load some temperature data from the [East Asia Domain](https://cordex.org/domains/region-7-east-asia/) at 25 km resolution" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# these variables form part of the standard CORDEX filename convention\n", - "domain = \"EAS-22\"\n", - "rcm = \"GERICS-REMO2015\"\n", - "experiment = \"historical\"\n", - "gcm = \"NCC-NorESM1-M\"\n", - "variable = \"tas\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's find out which of the files match the pattern above." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "root_dir = \"./\"\n", - "\n", - "path_dir = root_dir+domain+\"/\"\n", - "file_name = variable+\"*\"+gcm+\"*\"+experiment+\"*\"+rcm+\"*\"\n", - "file_list = glob.glob(path_dir+file_name)\n", - "\n", - "# Complete the print statement to see which East Asian files match the specified criteria\n", - "print()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "How many files were returned? \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Double click here to type your answer:**\n", - "\n", - "How many files were returned? " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**b)** If we try and force Iris to load a single cube we get an error:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "cube = iris.load_cube(file_list)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The important part of this error is the following message: \n", - " \n", - " ConstraintMismatchError: failed to merge into a single cube.\n", - " cube.attributes values differ for keys: 'history', 'creation_date', 'tracking_id'\n", - " \n", - "Instead we will load this data with `iris.load()` and then look more closely at the data, before we fix the issues." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "cubes = iris.load(file_list)\n", - "print(cubes)\n", - "print()\n", - "for cube in cubes:\n", - " print(cube.attributes['creation_date'], cube.attributes['tracking_id'])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Question:\n", - "\n", - "- How many cubes are in the cube list you loaded?
    \n", - "- Are they all the same size in space?
    \n", - "- Do they have the same number of timesteps? Why do you think this is? (Hint: look again at the filenames we are loading)\n", - "- What are the differences in the attributes and do you think this is important when analysing your data?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer:\n", - "
    *How many cubes are in the cube list you loaded?\n", - "
    Are they all the same size in space?\n", - "
    Do they have the same number of timesteps? Why do you think this is? (Hint: look again at the filenames we are loading)\n", - "
    What are the differences in the attributes?\n", - "
    Do you think these differences are important when analysing your data?* \n", - "\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**c)** Now let's solve this problem so we can get a single cube. We will do this using the [equalise_attributes](https://scitools.org.uk/iris/docs/v2.4.0/iris/iris/experimental/equalise_cubes.html) function from Iris." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from iris.experimental.equalise_cubes import equalise_attributes\n", - "\n", - "equalise_attributes(cubes)\n", - "\n", - "# now print the attributes of each cube\n", - "for cube in cubes:\n", - " print(list(cube.attributes.keys()))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "\n", - "The equalise_attributes function has removed the metadata which is inconsistent between the cubes. \n", - "\n", - "Question:\n", - " - Why might it be a bad idea to apply this function without looking at the data first?\n", - "\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Type your answer::\n", - "
    *Why might it be a bad idea to apply this function without looking at the data first?*" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The following loop is an alternative method to eliminate the mismatching attributes\n", - "\n", - " for i, icube in enumerate(cube):\n", - " del cube[i].attributes['creation_date']\n", - " del cube[i].attributes['tracking_id']\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**d)** We can now merge the data into a single cube." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "cube = cubes.concatenate_cube()\n", - "print(cube)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "
  • Now that we have combined multiple files into a single cube, what is the cube's shape? \n", - "
  • How does this compare with the cube_list created in 1.2e? \n", - "
  • Based on all the information you've gained about the data so far, what time period do you expect the data in this cube to span?\n", - "
  • " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Type your answers here**\n", - "* Now that we have combined multiple files into a single cube, what is the cube's shape? \n", - "* How does this compare with the cube_list created in 1.2e? \n", - "* Based on all the information you've gained about the data so far, what time period do you expect the data in this cube to span?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 1.4 Extracting data within a specific time range\n", - "\n", - "**a)** This is a lot of data, and so for now, we will cut this down to include December 1989 to November 1991 inclusive using a time constraint. Edit the code below to specify the missing end date.\n", - "(**Hint:** specify the adjacent months BEFORE and AFTER the time period you wish to keep.)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from iris.time import PartialDateTime\n", - "\n", - "print('original cube first and last dates')\n", - "print(cube.coord(\"time\")[0])\n", - "print(cube.coord(\"time\")[-1])\n", - "\n", - "time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1989,month=11) \n", - " < cell.point < PartialDateTime(year=YYYY,month=MM))\n", - "sub_cube = cube.extract(time_constraint)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**b)** Check the first and last timesteps in your constrained cube are correct:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print()\n", - "print('new cube first and last dates')\n", - "print(sub_cube.coord(\"time\")[0])\n", - "print(sub_cube.coord(\"time\")[-1])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 1.5 Save data to a new file\n", - "\n", - "**a)** We will now save this data to a new file.\n", - "\n", - "Take note of the file names. Well chosen filenames can help you keep track of the contents of your files. We suggest developing a consistent syntax based on the filename patterns of the CORDEX data." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "out_file_name = f'{variable}_{domain}_{gcm}_{experiment}_r1ip1_{rcm}_v2_mon_198912-199111.nc'\n", - "\n", - "save_location = root_dir + 'cordex_training/'\n", - "\n", - "%mkdir {save_location}\n", - "\n", - "print('saving file to: ' + save_location + out_file_name)\n", - "iris.save(sub_cube, save_location + out_file_name)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note:\n", - "As we progress through these worksheets, keep a note of how we update the file names when making further changes to the data.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "b) Question: Use the cd and ls commands to check the NetCDF directory that you have been creating new files in.
    \n", - "\n", - "- Confirm the names of the new files you have been creating.
    \n", - "- What is the size of the concatenated file (containing December 1979 to November 1989 data)?\n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# use %cd and %ls to list the contents of your new directory containing NetCDF files:\n", - "\n", - "\n", - "# use %ls -lh to compare the size of the original files and final netcdf file you saved\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer:
    \n", - "*Size of the file written out at the end:*" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "
    \n", - "This completes worksheet 1.
    You have created pre-processed files (metdata fixed, concenated over time, extracted data in a specific time range and saved in NetCDF format).
    \n", - "In worksheet 2, you will begin to analyse these files.\n", - "
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "

    \"python

    \n", - "
    © Crown Copyright 2022, Met Office
    " - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "pyprecis-environment", - "language": "python", - "name": "pyprecis-environment" - }, - "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.6.10" - }, - "widgets": { - "state": {}, - "version": "1.1.2" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/notebooks/AFR-22/worksheet2.ipynb b/notebooks/AFR-22/worksheet2.ipynb deleted file mode 100755 index 21a8572..0000000 --- a/notebooks/AFR-22/worksheet2.ipynb +++ /dev/null @@ -1,772 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Worksheet 2: Using the Python Iris library for analysis and visualisation\n", - "\n", - "In this worksheet, sample CORDEX output over Southeast Asia is compared with observations for validation purposes. Validating model results by comparing with observed data is an essential step - this is the measure by which we can assess the quality of the model and it informs appropriate uses of the data.\n", - "\n", - "\n", - "Here, we validate CORDEX output driven by two different GCMs (HadGEM2-ES and MPI-ESM-LR) created with the REMO2015 Regional Climate Model. Using data from both experiments will give us two representations of present day climate and two possible climate scenarios. For more details on multimodel approaches, refer to the workshop lecture on climate model ensembles.\n", - "\n", - "The following exercises provide examples of how analysis can be undertaken as part of a model validation. The methods shown are not necessarily the only way to proceed and are intended to demonstrate the use of Iris in model validation, and provide a starting point for your own analyses." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "By the end of this worksheet you should be able to:
    \n", - "- Apply basic statistical operations to Iris cubes.
    \n", - "- Plot information from Iris cubes.
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Contents\n", - "### [2.1: Inspecting the data](#2.1) \n", - "### [2.2: Converting units](#2.2)\n", - "### [2.3: Climatological mean calculation](#2.3)\n", - "### [2.4: IRIS quick plotting and visualising data](#2.4)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Preamble\n", - "Run the code preamble below to import the necessary libraries for this worksheet.\n", - "\n", - "To run the code, click in the box below and press Ctrl + Enter." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Code preamble - these libraries will be used in this worksheet.\n", - "# This code block needs to be re-run every time you restart this worksheet!\n", - "%matplotlib inline\n", - "import os\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import matplotlib.cm as cm\n", - "import matplotlib.dates as mdates\n", - "import calendar\n", - "import iris\n", - "import iris.coord_categorisation\n", - "import iris.quickplot as qplt\n", - "from iris.experimental.equalise_cubes import equalise_attributes\n", - "from iris.time import PartialDateTime\n", - "import cartopy.crs as ccrs\n", - "from mpl_toolkits.axes_grid1 import AxesGrid\n", - "from cartopy.mpl.geoaxes import GeoAxes\n", - "from utils import copy_s3_files, flush_data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "# 2.1 Inspecting the data\n", - "\n", - "The datasets used here contain daily and monthly data from two REMO2015 runs carried out over Southeast Asia, one driven by HadGEM2-ES and the other driven by MPI-ESM-LR. The observations used for comparison are from the CHIRPS gridded observational data set (https://chc.ucsb.edu/data/chirps).\n", - "\n", - "Remember, in Iris, data are read into an object called a **cube**. A single cube describes only one variable; it is not possible for a cube to contain both temperature and rainfall, for example. A cube always has a name, a unit and an n-dimensional data array to represent the cube’s data. Additionally, the cube contains collections of coordinates. Coordinate types can include spatial information (latitude, longitude, altitude), a time dimension, or other information, e.g., an ensemble number.\n", - "\n", - "

    \"Example

    \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__a) Load the NetCDF file for the HadGEM2-ES and MPI-ESM-LR model data and the CHIRPS rainfall observation data and print the cube output__\n", - "\n", - "A cube has coordinates (e.g. time, longitude, latitude, model levels) which can be accessed with Python commands. In the following exercise we find the latitude and longitude covered by the CHIRPS data. This can be done either by printing the latitude and longitude coordinates (`.points`), noting the first and last values in the array, or in the case of the CHIRPS data, printing the cube and looking through the attributes. A similar example can be found in the [Iris documentation](https://scitools.org.uk/iris/docs/v2.4.0/userguide/navigating_a_cube.html#accessing-coordinates-on-the-cube). \n", - "\n", - "Before running the code, take a look at it line-by-line to understand what steps are being taken. Then click in the box and press ctrl + enter to run the code." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we first need to download APHRODITE data\n", - "copy_s3_files('s3://ias-pyprecis/data/APHRODITE/*.nc', 'data/APHRODITE/')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Provide the names of the directories where the netCDF model files are stored\n", - "DATADIR = 'data_v2/'\n", - "\n", - "# Load and concatenate the HadGEM2-ES model cube data\n", - "infile = os.path.join(DATADIR, 'EAS-22/pr_EAS-22_MOHC-HadGEM2-ES_historical_r1i1p1_GERICS-REMO2015_v1_mon_*.nc')\n", - "cubes = iris.load(infile)\n", - "equalise_attributes(cubes)\n", - "hadgem2 = cubes.concatenate_cube()\n", - "\n", - "# Load and concatenate the MPI-ESM-LR model cube data\n", - "infile = os.path.join(DATADIR, 'EAS-22/pr_EAS-22_MPI-M-MPI-ESM-LR_historical_r1i1p1_GERICS-REMO2015_v1_mon_*.nc')\n", - "cubes = iris.load(infile)\n", - "equalise_attributes(cubes)\n", - "mpiesm = cubes.concatenate_cube()\n", - "\n", - "# finally load the CHIRPS data and print the cube \n", - "infile = os.path.join(DATADIR, 'CHIRPS', 'chirps-v2.0.monthly.global.1981_2018.nc')\n", - "chirpsData = iris.load_cube(infile)\n", - "print(chirpsData)\n", - "\n", - "# print the first and last latitude points\n", - "print(chirpsData.coord('latitude').points[0], chirpsData.coord('latitude').points[-1])\n", - "# print the first and last longitude points\n", - "print(chirpsData.coord('longitude').points[0], chirpsData.coord('longitude').points[-1])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - " Question: How many years of data does the CHIRPS dataset contain? What longitudes and latitudes are covered by the CHIRPS data?\n", - "
    \n", - "\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer:*(Double click here to fill in the answers)*
    \n", - "\n", - "Number of years:\n", - "\n", - "Latitude and longitude covered: \n", - "

    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__b) Extract a subset of the data within a cube__\n", - "\n", - "Data extraction is an important function in Iris. The extraction of a subset of data is called **slicing**. For example, it could be necessary to extract data over all latitude and longitude grid points on the first time step. For more information around subsetting cubes please read the [Iris documentation on slicing](https://scitools.org.uk/iris/docs/v2.4.0/userguide/subsetting_a_cube.html#cube-indexing).\n", - "\n", - "__Using the HadGEM2-ES data, the example below shows how to subset a cube for the first and last timesteps. This method will be used later for plotting data from a cube.__ \n", - "\n", - "Work through the example below line by line then click in the box and press Ctrl + Enter to run the code.\n", - "\n", - "First, print the HadGEM2-ES cube, containing all the time steps:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Use the print() command to display a summary of the HadGEM2-ES cube\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: What dimensions does this cube have?
    \n", - " t = number of timesteps
    \n", - " y = number of latitude steps
    \n", - " x = number of longitude steps
    \n", - " Write your answer in the form `[ t, y, x ]`\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer: *(Double click here to fill in the answers)*
    \n", - "HadGEM2-ES dimensions: [ t, y, x]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: When indexing a cube dimension, you either can specify a single coordinate, e.g. 0 is the first (zeroth) item, -1 is the last item, or you can use : to include all items.
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Display the cube's **first** timestep and check the associated `time` value:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Use the print() funiction with slicing notation\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Display the cube's **last** timestep and check the associated `time` value:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Use the print() function with slicing notation\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For the analysis here, we will use data from 1986 to 2005 inclusive as used in the AR5 WG1 atlas. To do this we will use the same approach as in Worksheet 1 by using time constraints" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", - " <= cell.point <= PartialDateTime(year=2005))\n", - "hadgem2 = hadgem2.extract(time_constraint)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now apply the same time constraint to the mpiesm data to restrict to the same period" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "mpiesm = mpiesm.extract(time_constraint)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 2.2 Converting units\n", - "\n", - "__c) Convert the precipitation units from kg/m2/s (equivalent to mm/s) to mm/day__\n", - "\n", - "To convert to mm/day, we could just multiply the raw data (in mm/s) by 86400 seconds, but a clearer way is to use the __`.convert_units()`__ method with the name of the units we want to convert the data into.\n", - "\n", - "Let's do this for the __HadGEM2-ES__ historical data first and break down the steps as follows:\n", - "\n", - "* Print the units and summary statistic about the data\n", - "* Convert the unit and print the information again\n", - "* Rename the `.units` value in the cube and save it as a new netCDF file" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(hadgem2)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# print the unit\n", - "print('The current unit for data is: {}'.format(hadgem2.units))\n", - "# print the summary statistic (maximum monthly precipitation)\n", - "maxpr = np.max(hadgem2.data)\n", - "print('This is an example rainfall rate (kg m-2 s-1) prior to conversion: {:f}'.format(maxpr))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Convert units to kg m-2 day-1 (same as multiplying by 86400 seconds)\n", - "hadgem2.convert_units('kg m-2 day-1')\n", - "# Print cube.units to view new units for precipitation\n", - "print(f'The new rainfall units are: {hadgem2.units}')\n", - "maxpr = np.max(hadgem2.data)\n", - "# print the summary statistic (maximum monthly precipitation) after the unit conversion\n", - "print(f'This is the same rainfall rate but now in (kg m-2 day-1): {maxpr:f}')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Rename the new cube units for consistency, then save the converted cube:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Rename cube units\n", - "hadgem2.units = 'mm day-1'\n", - "\n", - "# Save the new cube as a new netCDF file\n", - "OUTDIR = 'data_v2/EAS-22'\n", - "\n", - "# Check to see if this directory exists, if not create it\n", - "if not os.path.isdir(OUTDIR):\n", - " # Make directory\n", - " os.mkdir(OUTDIR)\n", - " # Set directory permissions \n", - " os.chmod(OUTDIR, 0o776)\n", - "\n", - "outfile = os.path.join(OUTDIR, 'hadgem2-es.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", - "iris.save(hadgem2, outfile)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Complete the following code block to repeat the same procedure for MPI-ESM-LR:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Print the current MPI-ESM-LR cube units\n", - "\n", - "\n", - "# convert units to kg m-2 day-1\n", - "\n", - "\n", - "# Rename the units to mm day-1. Recall that 1 kg m-2 is equivalent to 1 mm of rain\n", - "\n", - "\n", - "# Save the new cube as a new netCDF file using the `outfile` filename we've provided below!\n", - "outfile = os.path.join(OUTDIR, 'mpi-esm-lr.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 2.3 Climatological seasonal mean calculation\n", - "\n", - "__d) Calculate the 1986-2005 seasonal mean precipitation__ field for October-December (OND) from both the HadGEM2-ES and MPI-ESM-LR driven runs.\n", - "\n", - "Work through the example below line by line then click in the box and press ctrl + enter to run the code." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Set up directory for the climatology\n", - "CLIMDIR = 'data_v2/EAS-22/climatology'\n", - "\n", - "# Check to see if this directory exists, if not create it\n", - "if not os.path.isdir(CLIMDIR):\n", - " # Make directory\n", - " os.mkdir(CLIMDIR)\n", - " # Set directory permissions \n", - " os.chmod(CLIMDIR, 0o776)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "# Loop through two model runs\n", - "for gcmid in ['hadgem2-es', 'mpi-esm-lr']:\n", - " infile = os.path.join(OUTDIR, gcmid + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", - "\n", - " # Load the data\n", - " data = iris.load_cube(infile)\n", - "\n", - " # In order to calculate OND mean, we use the command below to add a season membership coordinate.\n", - " # The seasons can be any sequence of months, identified by the first letters of the names of the months.\n", - " # Here, we define two seasons, jfmamjjas (the months we are not interested in) and ond (October, November and\n", - " # December); the months we do want.\n", - " iris.coord_categorisation.add_season(data, 'time', name='seasons', seasons=('jfmamjjas','ond'))\n", - "\n", - " # This command extracts data for the OND season using a constraint\n", - " data_ond = data.extract(iris.Constraint(seasons='ond'))\n", - "\n", - " # The cube 'data_ond' contains data from October-December for all years. \n", - " # The command below calculates the mean over all years.\n", - " seasonal_mean = data_ond.aggregated_by(['seasons'], iris.analysis.MEAN)\n", - " \n", - " # Save the OND seasonal mean as a netCDF\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.1986_2005.pr.mmday-1.nc')\n", - " iris.save(seasonal_mean, outfile)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: What dimensions does this cube have now?
    \n", - " t = number of timesteps
    \n", - " y = number of latitude steps
    \n", - " x = number of longitude steps
    \n", - " Write your answer in the form `[ t, y, x ]`
    \n", - " Compare your answer to the answer you found in (b). Which dimensions have changed?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer: *(Double click here to fill in the answers)*
    \n", - "Seasonal mean dimensions: [ t, y, x]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__e) Calculate the 1986-2005 seasonal mean for OND from the CHIRPS observation data__\n", - "\n", - "CHIRPS is a daily high resolution (0.05 degree) data set for 1981 to almost the present day. See https://chc.ucsb.edu/data/chirps for more information.\n", - "\n", - "Follow step d) and complete the code yourself. The file name to load is: `chirps-v2.0.monthly.global.1981_2018.nc`. We've given you the infile and outfile names to make sure you load and save it in the right place for later!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we first need to download APHRODITE data\n", - "copy_s3_files('s3://ias-pyprecis/data/climatology/*.nc', 'data/climatology/')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Directory names where data is read from and stored to\n", - "infile = os.path.join(DATADIR, 'CHIRPS', 'chirps-v2.0.monthly.global.1981_2018.nc')\n", - "\n", - "# Load the CHIRPS data, only for the period 1986-2005 \n", - "chirps = iris.load_cube(infile, constraint=time_constraint)\n", - "\n", - "# convert the units to mm day^-1 \n", - "chirps.convert_units('mm day-1')\n", - "\n", - "# In order to calculate OND mean, we need to a add season membership coordinate\n", - "iris.coord_categorisation.add_season(chirps, 'time', name='seasons', seasons=('jfmamjjas','ond'))\n", - "\n", - "# Then constrain the cube just for the OND season\n", - "chirps_ond = chirps.extract(iris.Constraint(seasons='ond'))\n", - "\n", - "# Now calculate the climatological mean for this season\n", - "seasonal_mean = chirps_ond.aggregated_by(['seasons'], iris.analysis.MEAN)\n", - "\n", - "# save the seasonal mean cube as a NetCDF file\n", - "outfile = os.path.join(CLIMDIR, 'chirps.OND.mean.1986_2005.pr.mmday-1.nc')\n", - "iris.save(seasonal_mean, outfile)\n", - "\n", - "# print the CHIRPS seasonal mean cube\n", - "print(seasonal_mean)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: How would you calculate the standard deviation of mean rainfall? How about annual maximum rainfall?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer: Write the line of code required to calculate CHIRPS's (a) standard deviation and (b) annual maximum rainfall in the code block below.
    \n", - "Hint: How could you adapt chirps_ond.aggregated_by(['seasons'], iris.analysis.MEAN) from above? You can refer to the [Iris documentation](https://scitools.org.uk/iris/docs/v2.4.0/iris/iris/analysis.html) if needed." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# From chirps, calculate: \n", - "# (a) chirps_std \n", - "\n", - "\n", - "# (b) chirps_max\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 2.4 IRIS quick plotting and visualising data\n", - "\n", - "Now we will plot the output to take a first look at what climatological winter precipitation (1986-2005 OND seasonal mean) looks like for each dataset. This section provides an initial introduction to visualising data quickly using iris, for further reading and instructions please visit: https://scitools.org.uk/iris/docs/v2.4.0/userguide/plotting_a_cube.html\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**f) Plot and compare** the climatological winter preciptation over South East Asia for three datasets." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Question: Work through the code block below line by line. Think about what you expect the plot setup to look like:
    \n", - "\n", - "* Which lines of code specify the layout of sub-plots?
    \n", - "* Will the plots have a common colour scale or separate ones?
    \n", - "* What are the maximum and minimum precipitation values that will be displayed?
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Think about your answers, then click in the box and press ctrl + enter to run the code and create the plots." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# load hadgem2-es model data\n", - "infile = os.path.join(CLIMDIR, 'hadgem2-es.OND.mean.1986_2005.pr.mmday-1.nc')\n", - "hadgem_cube = iris.load_cube(infile)\n", - "\n", - "# load mpi-esm model data\n", - "infile = os.path.join(CLIMDIR, 'mpi-esm-lr.OND.mean.1986_2005.pr.mmday-1.nc')\n", - "mpi_cube = iris.load_cube(infile)\n", - "\n", - "# load CHIRPS data\n", - "infile = os.path.join(CLIMDIR, 'chirps.OND.mean.1986_2005.pr.mmday-1.nc')\n", - "obs_cube = iris.load_cube(infile)\n", - "\n", - "# Do some plotting!\n", - "# Create a figure of the size 12x10 inches\n", - "plt.figure(figsize=(12, 10))\n", - "\n", - "plt.subplot(1, 3, 1) # Create a new subplot for the model data; 1 row x 3 columns, 1st plot\n", - "levels = range(0, 22, 2) # Define the contour levels for all plots\n", - "\n", - "# Note this is where cube slicing is needed as you can only plot 2-coordinate\n", - "# dimensions with qplt.contourf, so here we have selected time[0] as there is only\n", - "# one timestep (the baseline 1986-2005 mean)\n", - "qplt.contourf(hadgem_cube[0], levels=levels, cmap=cm.RdBu, extend='max')\n", - " \n", - "\n", - "plt.title('HadGEM2-ES model') # plots a title for the plot\n", - "ax = plt.gca() # gca function that returns the current axes\n", - "ax.coastlines() # adds coastlines defined by the axes of the plot\n", - "\n", - "plt.subplot(1, 3, 2) # Create a new subplot for the model data; 1 row x 3 columns, 2nd plot\n", - "qplt.contourf(mpi_cube[0], levels=levels, cmap=cm.RdBu, extend='max')\n", - "\n", - "plt.title('MPI-ESM-LR model') # plots a title for the plot\n", - "ax = plt.gca() # gca function that returns the current axes\n", - "ax.coastlines() # adds coastlines defined by the axes of the plot\n", - "\n", - "plt.subplot(1, 3, 3) # Create a new subplot for the observed data 1 row x 3 columns, 3rd plot\n", - " # This plot will be centred and below the two model plots\n", - "qplt.contourf(obs_cube[0], levels=levels, cmap=cm.RdBu, extend='max')\n", - "\n", - "plt.title('CHIRPS obs') # plots a title for the plot\n", - "ax = plt.gca() # gca function that returns the current axes\n", - "ax.coastlines() # adds coastlines defined by the axes of the plot\n", - "ax.set_extent((65.0, 155.0, 0.0, 40.0))\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: \n", - "
    What are the differences between the following plots for HadGEM2-ES, MPI-ESM and CHIRPS? Note the colour bars. \n", - "
    Where are the largest daily rainfall rates distributed?\n", - "
    Why do you think this is happening?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer: *(Double click here to fill in the answers)*
    \n", - "\n", - "What differences do you see between the three plots?\n", - "\n", - "\n", - "Location of greatest rainfall\n", - "
    *HadGEM2-ES*: \n", - "
    *MPI-ESM*: \n", - "
    *CHIRPS*:\n", - "\n", - "\n", - "What is happening and why?\n", - "\n", - "\n", - "How could comparison be made easier?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "
    \n", - "This completes worksheet 2.
    You have covered converting units, created seasonal means and visualised your results.
    \n", - "In worksheet 3, you will start to consider more advanced analysis, extract regional means, look at annule cycles, work with ensemble data and produce difference plots.\n", - "
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "

    \"python

    \n", - "
    © Crown Copyright 2022, Met Office
    " - ] - } - ], - "metadata": { - "instance_type": "ml.t3.medium", - "kernelspec": { - "display_name": "pyprecis-environment", - "language": "python", - "name": "pyprecis-environment" - }, - "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.6.10" - }, - "widgets": { - "state": {}, - "version": "1.1.2" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/notebooks/AFR-22/worksheet3.ipynb b/notebooks/AFR-22/worksheet3.ipynb deleted file mode 100755 index 3919b84..0000000 --- a/notebooks/AFR-22/worksheet3.ipynb +++ /dev/null @@ -1,1054 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Worksheet 3: Comparing models and observations for the historical period\n", - "\n", - "In the last worksheet we started to undertake basic data analysis and visulisation in python using Iris. This worksheet picks-up where we left off and introduces us to more advanced data analysis. This worksheet ends with an extended exercise to start you thinking about coding more independently." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "By the end of this worksheet you should be able to:
    \n", - "- Extract specific regions of interest from large datasets
    \n", - "- Apply more advanced statistical operations to multi-annual data.
    \n", - "- Produce your own data processing workflow.
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Contents\n", - "### [3.1: Region extraction](#3.1)\n", - "### [3.2: Mean annual cycle calculation](#3.2)\n", - "### [3.3: Comparing models and observations](#3.3)\n", - "### [3.4: Climatological mean and annual cycle for an ensemble](#3.4)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Preamble\n", - "Run the code preamble below to import the necessary libraries for this worksheet.\n", - "\n", - "To run the code, click in the box below and press Ctrl + Enter." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Code preamble - these libraries will be used in this worksheet.\n", - "# This code block needs to be re-run every time you restart this worksheet!\n", - "%matplotlib inline\n", - "import os\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import matplotlib.cm as cm\n", - "import matplotlib.dates as mdates\n", - "import calendar\n", - "import iris\n", - "import iris.coord_categorisation\n", - "import iris.quickplot as qplt\n", - "import cartopy.crs as ccrs\n", - "from mpl_toolkits.axes_grid1 import AxesGrid\n", - "from cartopy.mpl.geoaxes import GeoAxes\n", - "from utils import copy_s3_files, flush_data\n", - "\n", - "\n", - "# Provide the names of the directories where the netCDF model files are stored\n", - "DATADIR = 'data_v2/'\n", - "\n", - "# CHIRPS dir\n", - "CHIRPSDIR = os.path.join(DATADIR, 'CHIRPS/')\n", - "\n", - "# Directory name where processed data is stored \n", - "HISTDIR = 'data_v2/EAS-22/historical'\n", - "\n", - "# Directory name where climtology data is stored \n", - "CLIMDIR = 'data_v2/EAS-22/climatology'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 3.1 Region extraction \n", - "\n", - "If you have an area or region you want to focus on, you can extract data for the region of interest. This example works through how to constrain your cube by latitude and longitude.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**a) Extract the area** around Bangkok for each of the three datasets, by specifiying latitude and longitude coordinates" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: Sort these jumbled values into the correct latitude and longitude extent for Bangkok, then enter them into the code block below so that they can be used to extract CHIRPS precipitation data over the city. \n", - "
    14.5\n", - "
    99.5\n", - "
    100.5\n", - "
    13.5\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Solution:**" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Enter the ordered latitude and longitude coordinates for Bangkok here:\n", - "# lon=( , ) # longitude (East - West extent)\n", - "# lat=( , ) # latuitude (South - North extent)\n", - "lon =\n", - "lat =" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Run the code block below to extract the specified lat, lon coordinates from the **CHIRPS** dataset:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# load CHIRPS data\n", - "obs_cube = iris.load_cube(CHIRPSDIR + 'chirps-v2.0.monthly.global.1981_2018.nc')\n", - "\n", - "# Note that the CHIRPS data are on a regular grid (unlike the model data) so real latitudes and longitudes are\n", - "# used to define the region around KL (more on this in section 2.6)\n", - "obs_cube_BK = obs_cube.intersection(latitude=lat, longitude=lon)\n", - "\n", - "# save the constrained cube to directory\n", - "outfile = os.path.join(CHIRPSDIR, 'chirps.mon.1981_2018.BK.nc')\n", - "iris.save(obs_cube_BK, outfile)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: Recall that CORDEX uses a rotated pole grid for these simulations, so coordinates in the rotated pole frame of reference are required to correctly extract Bangkok from the model data.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__b) Extract the area around Bangkok for HadGEM2-ES and MPI-ESM__ driven simulations. To do this we must specify the **rotated latitude and longitude coordinates**. \n", - "\n", - "To convert the true Bangkok coordinates onto the rotated pole frame of reference, we need know the latitude and longitude of the pole in our rotated pole coordinate system. We can find this from the model cube:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Load the HadGEM2-ES model cube data as need grid information from it\n", - "infile = os.path.join(HISTDIR, 'hadgem2-es.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", - "hadgem2_cube = iris.load_cube(infile)\n", - "\n", - "pole_lat = hadgem2_cube.coord_system().grid_north_pole_latitude\n", - "pole_lon = hadgem2_cube.coord_system().grid_north_pole_longitude\n", - "print(f'Pole Latitude: {pole_lat}')\n", - "print(f'Pole Longitude: {pole_lon}')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Iris includes a function to help us convert between coordinates in a rotated and non-rotated coordinate frame. We can use this to convert our non-rotated Bangkok coordinates:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "lon=np.array([99.5, 100.5])\n", - "lat=np.array([13.5, 14.5])\n", - "rotated_lons, rotated_lats = iris.analysis.cartography.rotate_pole(lon, lat, pole_lon, pole_lat)\n", - "print(f'Rotated Longitudes: {rotated_lons[0]:.2f}, {rotated_lons[1]:.2f}')\n", - "print(f'Rotated Latitudes: {rotated_lats[0]:.2f}, {rotated_lats[1]:.2f}')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we can run the code below to constrain the HadGEM2-ES and MPI-ESM data to Bangkok in rotated pole coordinates: " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Constrain the cube area over Bangkok (BK).\n", - "# CORDEX EAS-22 uses a rotated grid, so the co-ordinates required are different to real world coordinates.\n", - "\n", - "for gcm in ['hadgem2-es', 'mpi-esm-lr']:\n", - " # Directory name where data are read from and stored to\n", - " infile = os.path.join(HISTDIR, gcm + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", - " \n", - " # Load the baseline precipitation data using the BK_constraint - the command below\n", - " # loads the data into a cube constrained by the area chosen\n", - " data = iris.load_cube(infile)\n", - "\n", - " # All grid cells whose longitudes and latitudes lie within the limits shown will be selected.\n", - " data_BK = data.intersection(grid_longitude=rotated_lons,\n", - " grid_latitude=rotated_lats)\n", - "\n", - " # save the constrained cube\n", - " outfile = os.path.join(CLIMDIR, gcm + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.BK.nc')\n", - " iris.save(data_BK, outfile)\n", - " print(f'Saved: {outfile}')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: How many grid cells are in the newly constrained Bangkok file?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Answer:**\n", - "*Write your answer here...*" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 3.2 Mean annual cycle calculation\n", - "\n", - "Average over a given area (e.g Bangkok) to calculate multi-annual monthly mean values. \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**c) We now calculate monthly mean fields** for 1986-2005 for each of the twelve months for the Bangkok area." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: To accurately find averages over latitudinal areas, we must account for changes in the \n", - " distance between lines of latitude. These changes make the areas of grid boxes smaller as we move towards the\n", - " model pole. Iris provides a tool to help us do this: iris.analysis.cartography.area_weights(). Find out more in the Iris documentation here\n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for gcm in ['hadgem2-es', 'mpi-esm-lr']:\n", - " # Set up the path to the data\n", - " infile = os.path.join(CLIMDIR, gcm + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.BK.nc')\n", - "\n", - " # Load the data extracted around Bangkok created in previous step\n", - " data = iris.load_cube(infile)\n", - "\n", - " # Add monthly coord categorisation to the time dimension coordinate\n", - " iris.coord_categorisation.add_month_number(data, 'time', name='month_number')\n", - "\n", - " # Calculate monthly mean values\n", - " monthly_mean = data.aggregated_by(['month_number'], iris.analysis.MEAN)\n", - " \n", - " # due to a limitation in Iris remove the 2D 'True' lat and lon coords\n", - " monthly_mean.remove_coord('longitude')\n", - " monthly_mean.remove_coord('latitude')\n", - "\n", - " # Find latitude weights\n", - " monthly_mean.coord('grid_longitude').guess_bounds()\n", - " monthly_mean.coord('grid_latitude').guess_bounds()\n", - " grid_areas = iris.analysis.cartography.area_weights(monthly_mean)\n", - " # Calculate area averaged monthly mean rainfall\n", - " monthly_mean = monthly_mean.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN, \n", - " weights=grid_areas)\n", - "\n", - " # Save the area averaged monthly mean data\n", - " outfile = os.path.join(CLIMDIR, gcm + '.mon.mean.1986_2005.pr.mmday-1.BK.nc')\n", - " iris.save(monthly_mean, outfile)\n", - " print('Saved: {}'.format(outfile))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**d) Plot the BK area averaged monthly mean precipitation** amount in mm/day for the HadGEM2-ES and MPI-ESM driven runs." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for gcm in ['hadgem2-es', 'mpi-esm-lr']:\n", - " # Load the model cube\n", - " inpath = os.path.join(CLIMDIR, gcm + '.mon.mean.1986_2005.pr.mmday-1.BK.nc')\n", - " print(inpath)\n", - " cube = iris.load_cube(inpath) \n", - " # Quick line plot for each cube \n", - " qplt.plot(cube.coord('month_number'), cube)\n", - " plt.title('BK area averaged ' + gcm + '\\n monthly average of daily rainfall')\n", - " ax = plt.gca()\n", - " ax.xaxis.set_label_text('Month Number')\n", - " ax.set_xlim(0.5, 12.5)\n", - " ax.set_ylim(0, 16)\n", - " plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: Considering the plots of HadGEM2-ES and MPI-ESM-LR data, note down their approximate values in mm day-1 for the following features: \n", - "\n", - "- Which month experiences the most rainfall? (also note the amount)\n", - "- If a second rainfall peak exists in another season, note the month and amount\n", - "- Which month experiences the least rainfall? (also note the amount)\n", - "\n", - "What comparisons can be made about these two datasets?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer:
    \n", - " \n", - "HadGEM2-ES\n", - "- Most rainfall: *month, amount*\n", - "- Secondary peak of rainfall: *month, amount*\n", - "- Least rainfall: *month, amount*\n", - "\n", - "MPI-ESM-LR\n", - "- Most rainfall: *month, amount*\n", - "- Secondary peak of rainfall: *month, amount*\n", - "- Least rainfall: *month, amount*\n", - "\n", - "How comparable are these datasets? How are they different?
    \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**e) Find the multi-annual monthly means (1986-2005) over the BK area for CHIRPS observations** by following the same methodology as above in step d). As before we've given you the input and output files names." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Load the BK extracted data created in previous step\n", - "infile = os.path.join(CHIRPSDIR, 'chirps.mon.1986_2005.BK.nc')\n", - "\n", - "\n", - "# Add monthly coord categorisation to the time dim coordinate\n", - "\n", - "\n", - "# Now calculate monthly means\n", - "\n", - "\n", - "# and change units to mm/day from mm/month\n", - "\n", - "\n", - "# create the area averaged monthly mean of daily rainfall\n", - "\n", - "# Save output\n", - "outfile = os.path.join(CLIMDIR, 'chirps.mon.mean.1986_2005.mmday-1.nc')\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: Plot the CHIRPS observations, compare with the HadGEM2-ES and MPI-ESM-LR driven REMO2015 runs. What are the differences between the observations and models; in which months are the differences greatest?\n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Complete your plotting script here\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer:
    \n", - "*Write your findings here...*\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 3.3 Comparing models and observations\n", - "\n", - "In Section 2.4 we saw how to plot model output on individual maps, but in order to do a rigorous comparison, **spatial model and observation fields must be on the same grid.**\n", - "\n", - "**You should regrid to the coarsest resolution grid.** For the data used here, the observations have the coarsest resolution so we will regrid the model data onto the observation grid.\n", - "\n", - "Recall that the REMO2015 model data are on a grid known as a **Rotated Pole** coordinate system. The idea is that the \"real\" north pole in the Arctic is shifted such that the equator relative to our rotated pole then runs through the centre of the regional model domain." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**f) Regrid the multiannual OND mean model** fields onto the observations grid.\n", - "\n", - "Here we use the `regrid` method to regrid the target cube. Here we will use linear interpolation. First, load in the data.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# load HadGEM2-ES\n", - "infile = os.path.join(CLIMDIR, 'hadgem2-es.OND.mean.1986_2005.pr.mmday-1.nc')\n", - "hadgem2_model_cube = iris.load_cube(infile)\n", - "# load MPI-ESM-LR\n", - "infile = os.path.join(CLIMDIR, 'mpi-esm-lr.OND.mean.1986_2005.pr.mmday-1.nc')\n", - "mpi_model_cube = iris.load_cube(infile)\n", - "# load \n", - "infile = os.path.join(CLIMDIR, 'chirps.OND.mean.1986_2005.pr.mmday-1.nc')\n", - "obs_cube = iris.load_cube(infile)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Before we can regrid any data, both the model and observation datasets must have a **specified coordinate system**. \n", - "\n", - "In this case, CHIRPS's coordinate system is missing from the original netCDF file, but the observations are on a regular longitude-latitude grid so the correct coordinate system is [WGS84](https://epsg.io/32600/). \n", - "\n", - "In the code below, we define the WGS84 coordinate system and then apply it to the x- and y-axes (i.e. longitudes and latitudes) of the observations. \n", - "\n", - "The coordinate system used by the model (the rotated grid) is already defined.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "# Define WGS84 projection for obs data\n", - "wgs84 = iris.coord_systems.GeogCS(semi_major_axis=6378137.0, inverse_flattening=298.257223563)\n", - "\n", - "# Apply WGS84 to obs cube\n", - "obs_cube.coord(axis='x').coord_system = wgs84\n", - "obs_cube.coord(axis='y').coord_system = wgs84\n", - "\n", - "# Print out and compare the two coordinate systems\n", - "print(obs_cube.coord_system())\n", - "print(hadgem2_model_cube.coord_system())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The next few lines of code **regrid the model data from rotated pole to the regular grid used by the observations**. \n", - "\n", - "From the plots created in section 2.4, we know that the area covered by CHIRPS data is larger than the EAS-22 model domain. Hence, the **extrapolation mode** is set to `mask` so that any grid cells on the CHIRPS grid which do not overlap with model grid cells are masked `off`; otherwise, the model data would be interpolated and would produce misleading results.\n", - "\n", - "Note also that as CHIRPS is a near global data set, we take a subset of the data over our region of interest.\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Note: When working with data arrays masks can be extremely useful. Masks are an array of boolean values matching the shape of the data arrya, where a particular condition is met. These boolean arrays can then be used to hide or show parts of the dataset, given the value of the mask. You can see more examples of masks here \n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "lon = (60., 150.)\n", - "lat = (10., 50.)\n", - "\n", - "obs_cube_sub = obs_cube.intersection(latitude=lat, longitude=lon)\n", - "\n", - "# Regrid the climate model data onto CHIRPS grid\n", - "hadgem2_regrid = hadgem2_model_cube.regrid(obs_cube_sub, iris.analysis.Nearest(extrapolation_mode='mask'))\n", - "mpi_regrid = mpi_model_cube.regrid(obs_cube_sub, iris.analysis.Nearest(extrapolation_mode='mask'))\n", - "\n", - "# Save HadGEM2 output\n", - "outpath = os.path.join(CLIMDIR, 'hadgem2-es.OND.mean.1986_2005.pr.mmday-1.rg.nc')\n", - "iris.save(hadgem2_regrid, outpath)\n", - "print('Saved: {}'.format(outfile))\n", - "\n", - "# Save MPI-ESM output\n", - "outpath = os.path.join(CLIMDIR, 'mpi-esm-lr.OND.mean.1986_2005.pr.mmday-1.rg.nc')\n", - "iris.save(mpi_regrid, outpath)\n", - "print('Saved: {}'.format(outfile))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: Now that the cubes are all on the same grid, what differences do you see?
    Complete the code template below to help answer this question.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Hint:** You need to (i) load the NetCDF files, (ii) plot the CHIRPS and model data again (as in section 2.4) to compare them visually once again." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Directory name where data is read from\n", - "indir = os.path.join(DATADIR, 'EAS-22', 'climatology')\n", - "\n", - "# load HadGEM2-ES downscaled model data\n", - "\n", - "# load MPI-ESM-LR downscaled model data\n", - "\n", - "# load CHIRPS data and extract region\n", - "\n", - "# Do some plotting!\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Answer:**\n", - "\n", - "_Write your findings here..._" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**g) Find the difference between the model and the observation OND multiannual mean** fields and plot maps to view the differences\n", - "\n", - "To find differences, now that the model and observations are on the same grid we can simply subtract the model data from the observations. \n", - "\n", - "There is a subtract function within Iris but it cannot be used here. The model cubes contain extra coordinates which are not present in the obs cube; Iris requires all coordinates within the cubes to match exactly." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Make sure units are the same\n", - "obs_cube.units = hadgem2_regrid.units\n", - "\n", - "# Make recieving cube\n", - "hadgem2_obs_diff = obs_cube.copy()\n", - "mpi_obs_diff = obs_cube.copy()\n", - "\n", - "# Replace data with the differences\n", - "hadgem2_obs_diff.data = hadgem2_regrid.data - obs_cube.data\n", - "mpi_obs_diff.data = mpi_regrid.data - obs_cube.data\n", - "\n", - "# Plotting\n", - "plt.figure(figsize=(12, 10))\n", - "plt.subplot(1, 2, 1) # Create a new subplot for the first differences, 2 rows, 1 column, 1st plot\n", - "\n", - "# Only plot the region containing data. We use the intersection method to do this.\n", - "qplt.pcolormesh(hadgem2_obs_diff[0].intersection(longitude=(90, 135), latitude=(-20, 32)), \n", - " vmax=10, vmin=-10, \n", - " cmap=plt.get_cmap('RdBu')) # Note this is where cube slicing is needed as you can only plot 2-coordinate\n", - " # dimensions with qplt.contourf, so here we have selected time[0] as there is only\n", - " # one timestep (the baseline 1986-2005 mean)\n", - "\n", - "plt.title('HadGEM2-ES - obs') # plots a title for the plot\n", - "ax = plt.gca() # gca function that returns the current axes\n", - "ax.coastlines() # adds coastlines defined by the axes of the plot\n", - "\n", - "plt.subplot(1, 2, 2) # Create a new subplot for the model data 2 row, 2 columns, 2nd plot\n", - "qplt.pcolormesh(mpi_obs_diff[0].intersection(longitude=(90, 135), latitude=(-20, 32)),\n", - " vmax=10, vmin=-10,\n", - " cmap=plt.get_cmap('RdBu'))\n", - "\n", - "plt.title('MPI-ESM-LR - obs') # plots a title for the plot\n", - "ax = plt.gca() # gca function that returns the current axes\n", - "ax.coastlines() # adds coastlines defined by the axes of the plot\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Questions: We have now created difference plots; to more easily validate the model(s) directly against observations. \n", - " \n", - "- Why has the data over the oceans disappeared?\n", - "- Which of the two model datasets (HadGEM2-ES and MPI-ESM-LR) has the greatest wet bias? In which region? \n", - "- Are there any areas in HadGEM2-ES or MPI-ESM-LR with a strong dry bias? Roughly what is the extent of this bias (in mm/day)? \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answers\n", - "- The data over the oceans has disappeared because [...] \n", - "\n", - "- The greatest wet bias occus in model [...], in region [...] \n", - "\n", - "- A strong dry bias exists in model [...] in region [...] (roughly [...] mm/day drier than CHIRPS observations). \n", - "\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 3.4 Climatological mean and annual cycle for an ensemble\n", - "\n", - "So far data from two GCMs downscaled with the REMO2015 RCM have been analysed. In this section we will add data from an extra RCM (REGCM4) and an extra GCM giving 6 runs in total. We will also make use of the CRU observational data set. \n", - "\n", - "The CRU data are a monthly global land-only dataset (1901-present) at 0.5 degree resolution. Nine variables are available, including mean, min, max temperature and precipitation. For further details please see: https://crudata.uea.ac.uk/cru/data/hrg/ \n", - "\n", - "This gives us an ensemble of 6 GCM-RCM pairs:\n", - "\n", - "* RCM REMO2015 downscaling:\n", - " * HadGEM2-ES\n", - " * MPI-ESM-LR\n", - " * NorESM1-M\n", - "* RCM REGCM4-7 downscaling:\n", - " * HadGEM2-ES\n", - " * MPI-ESM-MR (note medium resolution not low resolution)\n", - " * NorESM1-M\n", - "\n", - "And observational datasets:\n", - "\n", - "* CHIRPS\n", - "* CRU\n", - "\n", - "Taking an ensemble approach allows us to account for a range of uncertainty in the model projections.\n", - "\n", - "Write a series of scripts to do the following:\n", - "\n", - "**h) Calculate the OND seasonal mean and annual cycle** (for the BK area) for 1.5m temperature and precipitation for CRU and CHIRPS observations\n", - "\n", - "**i) Calculate OND seasonal-mean and monthly-mean anomalies** for the BK area for the 4 additional models\n", - "\n", - "**j) Plot a series of figures** that shows 1) the monthly cycles of temperature and rainfall comparing the 6 models and the observations; and 2) the monthly differences between the models and observations" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we first need to download CRU and netcdf data\n", - "copy_s3_files('s3://ias-pyprecis/data/CRU/*.nc', 'data/CRU/')\n", - "copy_s3_files('s3://ias-pyprecis/data/netcdf/*.nc', 'data/netcdf/')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "'''\n", - "Here are some useful variables you might like to use in your scripts\n", - "'''\n", - "# Some helpful data locations\n", - "DATADIR = 'data_v2'\n", - "CHIRPSDIR = os.path.join(DATADIR, 'CHIRPS')\n", - "CRUDIR = os.path.join(DATADIR, 'CRU')\n", - "CLIMDIR = 'data_v2/EAS-22/climatology'\n", - "MODELDIR = os.path.join(DATADIR, 'cordex/EAS-22')\n", - "\n", - "# Some helpful model variables\n", - "GCMS = ['hadgem2-es', 'mpi-esm-lr']\n", - "RCMS = ['GERICS-REMO2015','ICTP-RegCM4-7']\n", - "\n", - "# Bangkok domains...\n", - "# ... in true lat-lon coordiates\n", - "lon=(99.5, 100.5)\n", - "lat=(13.5, 14.5)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "'''\n", - "h) Calculate the OND seasonal-mean and monthly-mean 1.5m temperature and precipitation \n", - "for the BK area, for CRU and CHIRPS observations\n", - "'''\n", - "# Load CHIRPS data\n", - "\n", - "# Load CRU data\n", - "\n", - "# Extract BK area\n", - "\n", - "# Add OND season catagorisation\n", - "\n", - "# Add monthly catagorisation\n", - "\n", - "# Extract season\n", - "\n", - "# Aggregate cubes\n", - "\n", - "# Find BK area average\n", - "\n", - "# Check and add cube metadata\n", - "\n", - "# Save cubes to CLIMDIR\n", - "# Remember to use the same naming convention we used earlier\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "'''\n", - "i) Calculate OND seasonal-mean and monthly-mean anomalies for the BK area \n", - "for the 4 additional models runs \n", - "'''\n", - "# Load ensemble members\n", - "# Remember you need to do this for both precipitation AND temperature\n", - "\n", - "# Regrid ensemble members onto observational grid\n", - "# Remember you need to check your model and obs cubes have the appropriate coordinate systems defined\n", - "\n", - "# Extract the BK area. Remember you are now working in true lat-lon coordinates!\n", - "\n", - "# Find OND and monthly means\n", - "\n", - "# Calculate model anomalies\n", - "# Remember temp anomaly = model - CRU data\n", - "# precip anomaly = model - CHIRPS data\n", - "\n", - "# Check cube metadata consistency and save\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - " Question: What difference would it make if we first extracted the BK area and then regrid the models?
    \n", - "Which order is best for preserving data integrity?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer:
    \n", - "\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Create four figures:\n", - " \n", - " i) the monthly cycle of temperature (model and observations) \n", - " ii) the monthly cycle of rainfall (model and observations)\n", - " iii) the monthly temperature anomaly for each model\n", - " iv) the monthly precipitation anomaly for each model" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "'''\n", - "Plot 1: The monthly cycle of temperature (model and observations)\n", - "'''\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "'''\n", - "Plot 2: The monthly cycle of precipitation (model and observations)\n", - "'''\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "'''\n", - "Plot 3: The monthly temperature anomaly for each model\n", - "'''\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "'''\n", - "Plot 4: The monthly precipitation anomaly for each model\n", - "'''\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - " Question: How could you summarise the ensemble variability amongst model members in a plot?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer:
    \n", - " " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Question: How does the monthly temperature and precipitation anomaly compare to the OND average?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer:
    \n", - " " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Question: What are the advantages and disadvantages of plotting spatial maps of temperature and rainfall variability over Bangkok?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer:
    \n", - "\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "
    \n", - "
    This completes worksheet 3.

    \n", - " You have used Python and Iris to validate the model's climatology (30 years of baseline data: 1986-2005) against observations, in order to analyse the model's capability of representing real-world trends.
    \n", - "To do so, you have:\n", - " \n", - "- calculated and plotted multiannual seasonal and monthly mean data,\n", - "- regridded rotated pole model data to a regular latitude-longitude grid,\n", - "- created difference plots to compare model data with observations, and \n", - "- written your own code to do all of these post-processing and analysis tasks with an multi-model ensemble!
    \n", - "\n", - "In worksheet 4, you will consider future model projections and their changes with respect to the baseline period (calculated in this worksheet).\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "

    \"python

    \n", - "
    © Crown Copyright 2022, Met Office
    " - ] - } - ], - "metadata": { - "instance_type": "ml.t3.medium", - "kernelspec": { - "display_name": "pyprecis-environment", - "language": "python", - "name": "pyprecis-environment" - }, - "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.6.10" - }, - "widgets": { - "state": {}, - "version": "1.1.2" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/notebooks/AFR-22/worksheet4.ipynb b/notebooks/AFR-22/worksheet4.ipynb deleted file mode 100755 index 64f072e..0000000 --- a/notebooks/AFR-22/worksheet4.ipynb +++ /dev/null @@ -1,629 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Worksheet 4: Creating future climate scenarios and analysing climate change\n", - "\n", - "The following exercises demonstrate basic methods for analysing changes in climate, using two CORDEX-Core experiments (REMO2015 driven by HadGEM2-ES and MPI-ESM-LR) As with worksheets 2 & 3, these are examples of some of the many types of analyses that can be performed using Python and Iris." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "By the end of this worksheet you should be able to:
    \n", - "\n", - "- Calculate difference and percentage differences across cubes
    \n", - "- Plot cubes using different plotting methods and with an appropriate colour scale
    \n", - "- Create time series anomalies of precipitation and tempeature
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: As in Worksheet 2, the data used here has been processed in the same way as in Worksheet 1. The whole period has been concatenated into a single file to avoid issues with loading multiple files.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Contents\n", - "### [4.1: Calculate future OND mean precipitation](#4.1) \n", - "### [4.2: Find OND anomalies](#4.2)\n", - "### [4.3: Plot precipitation and temperature](#4.3)\n", - "### [4.4: Future time series](#4.4)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Preamble" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Code preamble - these libraries will be used in this worksheet.\n", - "# This code block needs to be re-run every time you restart this worksheet!\n", - "%matplotlib inline \n", - "import os\n", - "import iris\n", - "import iris.coord_categorisation\n", - "from iris.experimental.equalise_cubes import equalise_attributes\n", - "import iris.quickplot as qplt\n", - "import iris.plot as iplt\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "import numpy.ma as ma\n", - "\n", - "# Some helpful data locations\n", - "DATADIR = 'data_v2/EAS-22/'\n", - "CLIMDIR = os.path.join(DATADIR, 'climatology')\n", - "HISTDIR = os.path.join(DATADIR, 'historical')\n", - "FUTRDIR = os.path.join(DATADIR, 'future')\n", - "GCMIDS = ['hadgem2-es', 'mpi-esm-lr']" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 4.1 Calculate future OND mean precipitation\n", - "**a)** First, we **calculate future OND (October, November, December) mean precipitation** for the period 2041-2060 for the HadGEM2-ES driven REMO2015 simulation and the MPI-ESM-driven simulation :" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for gcmid in GCMIDS:\n", - " infile = os.path.join(FUTRDIR, gcmid + '.mon.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", - " data = iris.load_cube(infile)\n", - "\n", - " # in order to calculate OND mean, we divide the months into two seasons: \n", - " # one for OND and a second for the remaining months\n", - " iris.coord_categorisation.add_season(data, 'time', name='seasons', seasons=('jfmamjjas','ond'))\n", - "\n", - " # Extract the data for the OND season only\n", - " data_ond = data.extract(iris.Constraint(seasons='ond'))\n", - "\n", - " # Now calculate the mean over the OND season\n", - " ond_mean = data_ond.aggregated_by(['seasons'], iris.analysis.MEAN)\n", - "\n", - " # save the OND mean as a netCDF\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", - " iris.save(ond_mean, outfile)\n", - " print('Saved: {}'.format(outfile))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: Within the loop, we have created two cubes: a seasonal OND constrained cube data_ond, and a seasonal mean cube ond_mean. Inspect the cube metadata. What are the differences? \n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Use this code block to inspect the two cubes\n", - "# e.g. print(cube)\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer
    \n", - " *Type your answer here...*" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Note: Remember, the loop has created and saved two cubes, one for each downscaled GCM.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 4.2 Find OND anomalies\n", - "**b)** Next, we **subtract the baseline (1986-2005) mean from the future (2041-2060) mean** for OND to get the change in precipitation (or **anomaly**) from both simulations. The changes are also converted to percentages:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for gcmid in GCMIDS:\n", - " # Load the baseline cube\n", - " infile = os.path.join(CLIMDIR, gcmid + '.OND.mean.1986_2005.pr.mmday-1.nc')\n", - " OND_baseline = iris.load_cube(infile)\n", - " # Set the correct units\n", - " OND_baseline.units = \"mm day-1\"\n", - " # Load the future cube\n", - " infile = os.path.join(CLIMDIR, gcmid + '.OND.mean.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", - " OND_future = iris.load_cube(infile)\n", - " # Subtract the baseline cube from the future cube\n", - " diff = iris.analysis.maths.subtract(OND_future, OND_baseline)\n", - " # rename the cube to reflect the data processing\n", - " diff.rename('precipitation flux difference')\n", - " # Save the resulting cube\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.diff.GERICS-REMO2015.pr.mmday-1.nc')\n", - " iris.save(diff, outfile)\n", - " print('Saved {}'.format(outfile))\n", - " # Find the percentage change\n", - " pcent_change = iris.analysis.maths.multiply(iris.analysis.maths.divide(diff, OND_baseline), 100)\n", - " # remember to change the title and units to reflect the data processing\n", - " pcent_change.rename('precipitation flux percent difference')\n", - " pcent_change.units = '%'\n", - " # And save this too\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.diffperc.GERICS-REMO2015.pr.mmday-1.nc')\n", - " iris.save(pcent_change, outfile)\n", - " print('Saved {}'.format(outfile))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**c)** Now, repeat the calculations yourself for **temperature**. \n", - "\n", - "First, we calculate the **OND mean** temperatures. \n", - "\n", - "**Fill in the missing commands in the code block below**:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# HINT: Your filenames should have the format: \n", - "# gcmid + '.OND.mean.' + time_periods[period] + '.GERICS-REMO2015.tm.C.nc'\n", - "time_periods = {'historical':'1986_2005', 'future':'2041_2060'}\n", - "\n", - "for gcmid in GCMIDS:\n", - " for period in time_periods.keys():\n", - " # Load the data:\n", - "\n", - " # In order to calculate OND mean, add a season coordinate, separating OND from the other months:\n", - "\n", - " # Extract the data for the OND season only:\n", - " \n", - " # Now calculate the mean over the OND season:\n", - "\n", - " # save the OND mean as a netCDF ('outfile' specifies the output file name for your OND mean cube):\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.' + time_periods[period] + '.GERICS-REMO2015.tm.C.nc')\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**d)** Next, we **calculate the difference** between the baseline and future periods." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for gcmid in GCMIDS:\n", - " # Load files:\n", - " baselinefile = os.path.join(CLIMDIR, gcmid + '.OND.mean.1986_2005.GERICS-REMO2015.tm.C.nc')\n", - " futurefile = os.path.join(CLIMDIR, gcmid + '.OND.mean.2041_2060.GERICS-REMO2015.tm.C.nc')\n", - " OND_baseline = iris.load_cube(baselinefile)\n", - " OND_future = iris.load_cube(futurefile)\n", - " \n", - " # Calculate 'future mean' minus 'baseline mean':\n", - " diff = iris.analysis.maths.subtract(OND_future, OND_baseline)\n", - " diff.rename('surface temperature difference')\n", - " \n", - " # Save\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.diff.GERICS-REMO2015.tm.C.nc')\n", - " iris.save(diff, outfile)\n", - " print('Saved: {}'.format(outfile))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 4.3 Plot precipitation and temperature\n", - "\n", - "**e)** **Plot changes** to precipitation (in %) and temperature (in deg.C)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Create a figure of the size 12x12 inches\n", - "plt.figure(figsize=(12, 12))\n", - "\n", - "# Read in the percentage changes in precipitation\n", - "for n, gcmid in enumerate(GCMIDS):\n", - " prpath = os.path.join(CLIMDIR, gcmid + '.OND.mean.diffperc.GERICS-REMO2015.pr.mmday-1.nc')\n", - " tmpath = os.path.join(CLIMDIR, gcmid + '.OND.mean.diff.GERICS-REMO2015.tm.C.nc')\n", - " pcent_change = iris.load_cube(prpath)\n", - " degc_change = iris.load_cube(tmpath)\n", - "\n", - " # Remove extra time dimension using an iris utility \n", - " pcent_change = iris.util.squeeze(pcent_change)\n", - " degc_change = iris.util.squeeze(degc_change)\n", - " \n", - " plot_num = n*2 + 1\n", - " plt.subplot(2, 2, plot_num) # Create a new subplot with 2 rows, 2 columns, 1st plot\n", - " qplt.pcolormesh(pcent_change, vmax=30, vmin=-30, cmap='BrBG')\n", - " plt.title(gcmid + ' precipitation change (%)')\n", - " ax = plt.gca() # gca function that returns the current axes\n", - " ax.coastlines() # adds coastlines defined by the axes of the plot\n", - "\n", - " plt.subplot(2, 2, plot_num+1)\n", - " qplt.pcolormesh(degc_change, vmax=2.5, vmin=0, cmap='Reds')\n", - " plt.title(gcmid + ' temperature change ($\\degree$C)')\n", - " ax = plt.gca()\n", - " ax.coastlines()\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: How would you use a discrete contoured colour map to show changes in precipitation and temperature?
    \n", - " Modify the code above to use qplt.pcontourf(). Remember to choose appropriate contours.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Question: The plots show projected changes in precipitation and temperature using two models; what are the common features between the two model projections? \n", - " \n", - "What differences exist between the two model projections? Which is hotter, wetter, how does the spatial distribution differ? \n", - " \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer:
    \n", - "*Type your answers here...*" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 4.4 Future time series\n", - "\n", - "**f)** Calculate and then plot a 2041-2060 monthly **time series of precipitation anomalies** for land\n", - "points only, relative to the 1986-2005 baseline monthly mean. Do this for both the downscaled HadGEM2-ES and MPI-ESM-LR \n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Read in the land-sea mask. \n", - "# The cube data array has a land fraction associated with it which we'll use to mask out ocean points.\n", - "land_fraction_file = 'sftlf_EAS-22_MOHC-HadGEM2-ES_historical_r0i0p0_GERICS-REMO2015_v1_fx_r0i0p0.nc'\n", - "land_fraction = iris.load_cube(DATADIR + land_fraction_file)\n", - "\n", - "# convert this to a binary (i.e. 1 or 0 mask)\n", - "land_sea_mask = land_fraction.copy()\n", - "land_sea_mask.data = np.where(land_sea_mask.data < 50, 0, 1)\n", - "land_sea_mask.name = 'land_binary_mask'\n", - "# apply a mask to the cube \n", - "land_sea_mask = iris.util.mask_cube(land_sea_mask, land_sea_mask.data < 0.5)\n", - "\n", - "\n", - "for gcmid in GCMIDS:\n", - " # Read in original data for baseline and future\n", - " baselinepath = os.path.join(HISTDIR, gcmid + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", - " futurepath = os.path.join(FUTRDIR, gcmid + '.mon.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", - " baseline = iris.load_cube(baselinepath)\n", - " future = iris.load_cube(futurepath)\n", - " \n", - " # Apply land mask\n", - " baseline.data = ma.array(baseline.data, mask=baseline.data*land_sea_mask.data.mask[np.newaxis, :,:])\n", - " future.data = ma.array(future.data, mask=future.data*land_sea_mask.data.mask[np.newaxis, :,:])\n", - "\n", - " # the code to calculate area weights requires a single longitude and latitude coordindate - \n", - " # remove the 2D \"true\" lat and lon\n", - " baseline.remove_coord('longitude')\n", - " baseline.remove_coord('latitude')\n", - " future.remove_coord('longitude')\n", - " future.remove_coord('latitude')\n", - " \n", - " # Guess bounds\n", - " for cube in [baseline, future]:\n", - " for coord in ['grid_longitude', 'grid_latitude']:\n", - " cube.coord(coord).guess_bounds()\n", - " \n", - " # Calculate mean values over land points\n", - " baseline_land = baseline.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN,\n", - " weights = iris.analysis.cartography.area_weights(baseline))\n", - " future_land = future.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN,\n", - " weights = iris.analysis.cartography.area_weights(future))\n", - "\n", - " # Save future & baseline area averaged monthly data (time series)\n", - " baselineout = os.path.join(CLIMDIR, gcmid + '.mon.1986_2005.series.GERICS-REMO2015.pr.mmday-1.nc')\n", - " futureout = os.path.join(CLIMDIR, gcmid + '.mon.2041_2060.series.GERICS-REMO2015.pr.mmday-1.nc')\n", - " iris.save(baseline_land, baselineout)\n", - " iris.save(future_land, futureout)\n", - "\n", - " # Subtract baseline from future\n", - " diff = future_land.copy()\n", - " diff.data = future_land.data - baseline_land.data.mean()\n", - " diff.rename('future anomaly relative to mean historical precipitation')\n", - "\n", - " # Save the area averaged monthly future anomalies (time series)\n", - " outpath = os.path.join(CLIMDIR, gcmid + '.mon.2041_2060.anom.series.GERICS-REMO2015.pr.mmday-1.nc')\n", - " iris.save(diff, outpath)\n", - " print('Saved: {}'.format(outpath))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - " Question: Why do we only want to produce a time series for changes over land?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Answer:**\n", - "\n", - "_Type your answer here..._" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**g)** **Plot the precipitation anomalies** of HadGEM2-ES and MPI-ESM-LR downscaled" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "# Read in the monthly series\n", - "hadgem2es = iris.load_cube(CLIMDIR + '/hadgem2-es.mon.2041_2060.anom.series.GERICS-REMO2015.pr.mmday-1.nc')\n", - "mpiesm = iris.load_cube(CLIMDIR + '/mpi-esm-lr.mon.2041_2060.anom.series.GERICS-REMO2015.pr.mmday-1.nc')\n", - "time = hadgem2es.coord('time')\n", - "\n", - "# Plot the two model time series' on the same figure\n", - "plt.figure(figsize=(16,5))\n", - "iplt.plot(time, hadgem2es, label = 'HadGEM2-ES')\n", - "iplt.plot(time, mpiesm, label = 'MPI-ESM-LR')\n", - "plt.legend()\n", - "plt.suptitle('2041-2060 Precipitation anomaly (relative to 1986-2005)')\n", - "plt.ylabel(f'Precipitation change ({hadgem2es.units}')\n", - "plt.xlabel('Years')\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**h) Produce and plot a montly time series of temperature data** relative to the 1986-2005 baseline. As for (f) and (g) produce time series for HadGEM2-ES and MPI-ESM-LR driven runs.\n", - "\n", - "**Fill in the missing commands in the code blocks below**:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# HINT: The temperature data has filenames with the pattern:\n", - "# gcmid + '.mon.1986_2005.GERICS-REMO2015.tm.C.nc' or gcmid + '.mon.2041_2060.GERICS-REMO2015.tm.C.nc'\n", - "\n", - "# Loop over GCMIDS\n", - "\n", - "\n", - "# Read in original data for baseline and future\n", - "\n", - "# Apply land mask\n", - "\n", - "# remove the 2D \"true\" lat and lon\n", - "\n", - "# Guess bounds\n", - "\n", - "# Calculate mean values over land points\n", - "\n", - "# Save future & baseline area averaged monthly data (time series)\n", - "\n", - "# Subtract baseline from future\n", - "\n", - "# Save the data, make sure you follow the file naming convention!\n", - "\n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Do some plotting...\n", - "# Read in the monthly series\n", - "\n", - "\n", - "# Plot the two model time series' on the same figure\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: Write a short summary of these two graphs. Include:\n", - " \n", - "- A description of what each plot shows\n", - "- The differences between the two models\n", - "- A consideration of the ways the climate in East Asia might be different in the future\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Answer:**\n", - "\n", - "_Type your answer here..._" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Question: Conside the plots we produced in Section 4.3. What additional time series analysis could you do to support your consideration of future changes to climate in the question above?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "
    This completes worksheet 4.

    \n", - " You have used Iris to investigate differences between historical and future changes in model output by comparing 20 years of baseline data (1986-2005) against a future period (20241-2060).
    \n", - "To do so, you have:\n", - " \n", - "- calculated and plotted seasonal mean changes in temperature and precipitation\n", - "- masked out ocean data to focus on changes over land\n", - "- calculated anomalies by comparing future data to the historical mean period\n", - "- plotted time series of both temperature and precipitation anomalies over land for two different models
    \n", - "\n", - "In worksheet 5, you will investigate climate extremes by investigating threshold and extreme climate indicies.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "

    \"python

    \n", - "
    © Crown Copyright 2022, Met Office
    " - ] - } - ], - "metadata": { - "instance_type": "ml.t3.medium", - "kernelspec": { - "display_name": "pyprecis-environment", - "language": "python", - "name": "pyprecis-environment" - }, - "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.6.10" - }, - "widgets": { - "state": {}, - "version": "1.1.2" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/notebooks/AFR-22/worksheet5.ipynb b/notebooks/AFR-22/worksheet5.ipynb deleted file mode 100755 index 4a6d417..0000000 --- a/notebooks/AFR-22/worksheet5.ipynb +++ /dev/null @@ -1,853 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Worksheet 5: Thresholds and climate extremes\n", - "The following exercises demonstrate analysis of moderate extremes in climate simulated in CORDEX. As with the other worksheets, these are just examples of some of the analysis that you might perform using packages such as Python and and the python Library IRIS.\n", - "\n", - "The basis of climate extremes analysis is a common set of standard extreme climate indices, defined by the World Climate Research Programme [Expert Team on Climate Change Detection and Indices (ETCCDI)](https://www.wcrp-climate.org/etccdi).\n", - "\n", - "There are 27 climate extremes indices, nicely summarised by the [Climdex](https://www.climdex.org/learn/indices/) website. You can read more about them in the frame below..." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from IPython.display import IFrame\n", - "IFrame('https://www.climdex.org/learn/indices/', width=950, height=350)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this worksheet we'll be looking at wet days, a threshold measure giving the count of days when $\\mathrm{pr} \\geq 1 mm \\;day^{-1}$, and **R95p**, the 95th percentile of precipitation on wet days ($\\mathrm{pr} \\geq 1 mm \\;day^{-1}$) in the 1986-2005 period." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "By the end of this worksheet you should be able to:
    \n", - "- Have an appreciation for working with daily model data
    \n", - "- Understand how to calculate some useful climate extremes statistics
    \n", - "- Be aware of some coding stratagies for dealing with large data sets
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Contents\n", - "### [5.1: Frequency of Wet days](#5.1) \n", - "### [5.2: Calculating percentiles](#5.2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Preamble" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Code preamble - these libraries will be used in this worksheet.\n", - "# This code block needs to be re-run every time you restart this worksheet!\n", - "%matplotlib inline \n", - "import os\n", - "import iris\n", - "import iris.coord_categorisation\n", - "import iris.quickplot as qplt\n", - "import iris.plot as iplt\n", - "from iris.time import PartialDateTime\n", - "import cartopy.crs as ccrs\n", - "import cartopy.feature as cfeature\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "import dask\n", - "dask.config.set(scheduler=dask.get)\n", - "import dask.array as da\n", - "from iris.analysis import Aggregator\n", - "\n", - "# Some helpful data locations\n", - "DATADIR = 'data_v2/EAS-22'\n", - "CLIMDIR = os.path.join(DATADIR, 'climatology')\n", - "HISTDIR = os.path.join(DATADIR, 'historical')\n", - "FUTRDIR = os.path.join(DATADIR, 'future')\n", - "CHIRPSDIR = os.path.join('data_v2', 'CHIRPS')\n", - "GCMIDS = ['hadgem2-es', 'mpi-esm-lr']\n", - "TIME_PERIODS = {'historical':'1986_2005', 'future':'2041_2060'}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - " Question: Thinking about climate extremes, what model averaging period should we be using for our data analysis? Why?
    \n", - " How do we identify this model avergaing period in the model output filenames?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer:
    \n", - "*Type your answer here...*" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 5.1 Frequency of wet days\n", - "\n", - "**a)** Start by finding the frequency of wet days using daily data for both _HadGEM2-ES_ and _MPI-ESM-LR_ driven runs. Calculate the number of days in both the baseline and future periods which are wet days - **a wet day is defined as having precipitation >=1 mm/day**. Then calculate the percentage of wet days.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# For each day: is rainfall >= 1? True/False\n", - "# Sum over all days to get number of wet days at each grid point\n", - "# Do for both model simulations and time periods\n", - "# Then calcuate the percentage of wet days.\n", - "\n", - "# Define a new aggregator to help count non-zero days\n", - "# (This uses a dask array to reduce memory load)\n", - "# To learn more about custom aggregators see\n", - "# https://scitools.org.uk/iris/docs/v2.4.0/examples/General/custom_aggregation.html#general-custom-aggregation \n", - "\n", - "count_nonzero = Aggregator('count', None,\n", - " units_func=lambda units: 1,\n", - " lazy_func=da.count_nonzero)\n", - "\n", - "for gcmid in GCMIDS:\n", - " for period in TIME_PERIODS.keys():\n", - " # Get path to daily data\n", - " infile = os.path.join(DATADIR, period, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.pr.*.nc')\n", - " data = iris.load_cube(infile)\n", - " # Select only wet days using our custom aggregator\n", - " model_wetdays = data.collapsed('time', count_nonzero)\n", - " model_wetdays.rename(f'{gcmid} number of wet days (>=1mm/day) {TIME_PERIODS[period]}')\n", - " # Save the file\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.wetday.nc')\n", - " iris.save(model_wetdays, outfile)\n", - " print(f'Saved: {outfile}')\n", - " \n", - " # Find wet days as a percentage of total days\n", - " total_days = len(data.coord('time').points) \n", - " model_pcent_wetdays = (model_wetdays / total_days) * 100\n", - " # Add metadata\n", - " model_pcent_wetdays.rename(f'{gcmid} percentage of wet days (>=1mm/day) {TIME_PERIODS[period]}')\n", - " model_pcent_wetdays.units = '%'\n", - "\n", - " # Save the file\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.wetday.pcent.nc')\n", - " iris.save(model_pcent_wetdays, outfile)\n", - " print('Saved: {}'.format(outfile))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "**b) Calculate numbers of wet days and percentage of wet days from the _CHIRPS_ observations**. \n", - "\n", - "Climate Hazards Group InfraRed Precipitation with Station data ([CHIRPS](https://chc.ucsb.edu/data/chirps)) is a 35+ year quasi-global rainfall data set. Spanning 50°S-50°N (and all longitudes) and ranging from 1981 to near-present, CHIRPS incorporates climatology, 0.05° resolution satellite imagery, and in-situ station data to create gridded rainfall time series for trend analysis and seasonal drought monitoring. \n", - "\n", - "We'll use CHIRPS as our observational data from which to compare our CORDEX model data.\n", - "\n", - "**Fill in the missing code** to calculate the observed wet days: " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Load CHIRPS daily precipitation data, but only period of interest\n", - "historical_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", - " <= cell.point <= PartialDateTime(year=2005))\n", - "\n", - "infile = os.path.join(CHIRPSDIR, 'chirps-v2.0_pr_day_1981-2018_p25.nc')\n", - "\n", - "# Find number of wet days\n", - "\n", - "# Save wet days cube\n", - "outfile = os.path.join(CLIMDIR, 'chirps.wetday.nc')\n", - "\n", - "# Find number of days in dataset (number_chirps_days)\n", - "\n", - "# Find wet days as percent of all chirps days \n", - "\n", - "# Save \n", - "outfile = os.path.join(CLIMDIR, 'chirps.wetday.pcent.nc')\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - " Question: Are there any additional considerations that have to be made with daily data?
    \n", - " From a coding perspective, how does working with daily data compare to working with monthly data?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer
    \n", - "*Type your answer here...*" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Plotting" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**c)** **Plot** the modelled and observed **numbers of wet days** from 1986-2005. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Plot modelled and observed numbers of wet days for a common baseline period.\n", - "# Create a figure of the size desired\n", - "fig = plt.figure(figsize=(16, 4))\n", - "fig.suptitle('Number of wet days (1986-2005)', fontsize=16)\n", - "\n", - "# Set common limits for each subplot\n", - "cbar_lims=(0,number_chirps_days)\n", - "easia_domain = [70,160,10,50]\n", - "\n", - "# Load and plot the models' wet day count\n", - "for n, gcmid in enumerate(GCMIDS):\n", - " infile = os.path.join(CLIMDIR, gcmid + '.day.1986_2005.GERICS-REMO2015.wetday.nc')\n", - " nwetdays = iris.load_cube(infile)\n", - " ax1 = fig.add_subplot(1, 3, n+1, projection=ccrs.PlateCarree())\n", - " qplt.pcolormesh(nwetdays, vmin=cbar_lims[0], vmax=cbar_lims[1])\n", - " plt.title(gcmid)\n", - " ax1.coastlines() # adds coastlines defined by the axes of the plot\n", - " ax1.set_extent(easia_domain, crs=ccrs.PlateCarree())\n", - "\n", - "# Load and plot CHIRPS wet day count\n", - "infile = os.path.join(CLIMDIR, 'chirps.wetday.nc')\n", - "obs_nwetdays = iris.load_cube(infile)\n", - "fig.add_subplot(1, 3, 3, projection=ccrs.PlateCarree())\n", - "qplt.pcolormesh(obs_nwetdays, vmin=cbar_lims[0], vmax=cbar_lims[1])\n", - "plt.title('Observations (CHIRPS)')\n", - "ax = plt.gca() # gca function that returns the current axes\n", - "ax.coastlines()\n", - "ax.set_extent(easia_domain, crs=ccrs.PlateCarree())\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: Which of the following steps are required in order to calculate the model bias (the difference between CORDEX model output and observed data)?
    \n", - " \n", - "* Regrid data onto a common grid, to the finer (higher) resolution
    \n", - "* Regrid data onto a common grid, to the coarser (lower) resolution
    \n", - "* Convert CODREX data to a regular lat-lon grid if the simulation used a rotated pole
    \n", - "* Ensure the units are comparable (e.g not comparing K with C)
    \n", - " \n", - "Which of these steps are required when __comparing output for different time periods from the same model simulation__ (e.g. _future - baseline_ difference calculations)? \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer
    \n", - "Steps required to calculate the model bias:
    \n", - "* *type your answer here...*
    \n", - "\n", - "Steps required when comparing output from the same simulation:
    \n", - "* *type your answer here...*
    \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**d)** Calculate the **difference in modelled future and baseline** wet day frequency and also the **difference in modelled baseline and observation** wet day frequency." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Load percentage of wet days data for the CHIRPS observations\n", - "infile = os.path.join(CLIMDIR, 'chirps.wetday.pcent.nc')\n", - "obs = iris.load_cube(infile)\n", - "# Add coordinate system information to facilitate regridding later\n", - "wgs84_cs = iris.coord_systems.GeogCS(6371229.0) \n", - "obs.coord('latitude').coord_system = wgs84_cs \n", - "obs.coord('longitude').coord_system = wgs84_cs\n", - "\n", - "# constrain the observations to a smaller domain \n", - "obs_sub = obs.intersection(longitude=(70, 160), latitude=(10, 50))\n", - "\n", - "\n", - "# The observed rainfall data have been created using surface rain gauges, and so are only available\n", - "# over land points. Define a mask to remove sea points. The mask is True for masked points.\n", - "mask = np.where(obs.data > 0.0, False, True)\n", - "\n", - "# Redefine the obs data array as a masked array.\n", - "obs.data = np.ma.array(obs.data, mask=mask)\n", - "\n", - "# Define regridding method\n", - "scheme = iris.analysis.Linear(extrapolation_mode='mask')\n", - "\n", - "for gcmid in GCMIDS:\n", - " infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.wetday.pcent.nc')\n", - " model_baseline = iris.load_cube(infile)\n", - " infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['future'] + '.GERICS-REMO2015.wetday.pcent.nc')\n", - " model_future = iris.load_cube(infile)\n", - " # In order to compare the modelled and observed numbers of wet days,\n", - " # the model data needs to be regridded to the CHIRPS grid\n", - " model_baseline_rg = model_baseline.regrid(obs_sub, scheme)\n", - " model_future_rg = model_future.regrid(obs_sub, scheme)\n", - "\n", - " # Find the difference between futue and baseline models\n", - " diff_model = model_future_rg - model_baseline_rg\n", - " diff_model.rename('{} change in number of wet days (>=1mm/day) 2041-2060 vs 1986-2005 ')\n", - " # Save the file\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.GERICS-REMO2015.wetday.pcent.diff.nc')\n", - " iris.save(diff_model, outfile)\n", - " print('Saved {}'.format(outfile))\n", - "\n", - " # Subtract the observed percentages of wet days from the modelled percentages\n", - " diff_mod_obs = model_baseline_rg - obs_sub\n", - " diff_mod_obs.rename(f'{gcmid} number of wet days (>=1mm/day) bias compared to CHIRPS')\n", - " # Save the file\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.GERICS-REMO2015.wetday.pcent.bias.nc')\n", - " iris.save(diff_mod_obs, outfile)\n", - " print(f'Saved {outfile}')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: A cube can be easily constrained to a given domain using the cube.intersection method. More information on this (and other) Iris cube functionality can be found in the Iris Documentation online.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**e)** **Plot the percentage change and model bias for wet day frequency**. \n", - "\n", - "**First**, run the code block below to produce a series of plots showing the model bias and future precipitation change for _cahpa_ and _cahpb_ simulations.
    \n", - "\n", - "As the model domain is smaller than the observations domain, you will see that the data is plotted on a domain which is larger than necessary. \n", - "\n", - "**Next, read the Iris documentation** to learn how to use the `cube.intersection` method, then **add the necessary code** below, to constrain the plots to the model domain.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Create a figure of the size 12x12 inches\n", - "plt.figure(figsize=(12, 12))\n", - "\n", - "\n", - "# Load the model's future percentage change in wet days (future - baseline)\n", - "for n, gcmid in enumerate(GCMIDS):\n", - " infile = os.path.join(CLIMDIR, gcmid + '.GERICS-REMO2015.wetday.pcent.diff.nc')\n", - " pcent_change = iris.load_cube(infile)\n", - " \n", - " # Add in a line of code to constrain the model domain to these coordinates: \n", - " # longitude=(70, 160)\n", - " # latitude=(10, 50)\n", - " pcent_change_subset = \n", - " \n", - " # plot percentage changes on first row\n", - " plt.subplot(2, 2, n+1)\n", - " qplt.pcolormesh(pcent_change_subset, \n", - " vmax=10, vmin=-10, cmap='BrBG')\n", - " plt.title(gcmid + ' future-historical \\n precipitation change (%)')\n", - " ax = plt.gca()\n", - " ax.coastlines()\n", - "\n", - " \n", - "# Load the percentage bias (differences in precipitation between the models and obs)\n", - "for n, gcmid in enumerate(GCMIDS):\n", - " infile = os.path.join(CLIMDIR, gcmid + '.GERICS-REMO2015.wetday.pcent.bias.nc')\n", - " pcent_bias = iris.load_cube(infile)\n", - " \n", - " # Add in a line of code to constrain the model domain to these lat-lon coordinates: \n", - " # longitude=(70, 160)\n", - " # latitude=(10, 50)\n", - " pcent_bias_subset = \n", - " \n", - " # plot bias on the second row\n", - " plt.subplot(2, 2, n+3)\n", - " qplt.pcolormesh(pcent_bias_subset, \n", - " vmax=20, vmin=-20, cmap='BrBG')\n", - " plt.title(gcmid + ' model-observations \\n precipitation difference (%)')\n", - " ax = plt.gca()\n", - " ax.coastlines()\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - " Question:
    \n", - "\n", - "* Which simulation (HadGEM2-ES or MPI-ESM-LR) has better agreement with observations for wet day frequency?
    \n", - "* What is the magnitude and location of any notable wet or dry biases for each simulation during the baseline period?
    \n", - "* Summarise the projected change in wet day frequency over South-East Asia for both simulations.
    \n", - "* Given any wet/dry biases in each simulation's baseline period, what adjustments might we make to our summary of projected change from HadGEM2-ES or MPI-ESM-LR? \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Answers:**\n", - "\n", - "Which simulation has better agreement with observations?\n", - " \n", - "* \n", - "\n", - " \n", - "Magnitude and location of any notable wet or dry biases:\n", - "\n", - "* HadGEM2-ES driven run: \n", - "* MPI-ESM-LR driven run: \n", - "\n", - "Summarise the projected change in wet day frequency:\n", - "\n", - "* HadGEM2-ES driven run: \n", - "* MPI-ESM-LR driven run: \n", - "\n", - "Adjustments in light of model bias:\n", - "\n", - "* HadGEM2-ES driven run: \n", - "* MPI-ESM-LR driven run: \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 5.2. Calculating percentiles\n", - "\n", - "**f)** Calculate in mm/day the baseline (1986-2005) and future (2041-2060) **95th percentile of precipitation**. Do this for HadGEM2-ES, MPI-ESM-LE driven runs and also for CHIRPS baseline.\n", - "\n", - "This introduces some new processing challenges: **the size of the daily future data set is (probably) too large to load into memory**. Sometimes Iris can handle this for us (see [Iris and Lazy Data](https://scitools.org.uk/iris/docs/v2.4.0/userguide/real_and_lazy_data.html)), but in this case we need to manually **'chunk' the data to load and process smaller sections**. This way Iris only loads a section of the data at a time and keeps within the memory limits imposed by this computer." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Specify the number of chunks for the lat and lon dimensions\n", - "# This will give us 3 x 3 = 9 cubes\n", - "steps = (3, 3) \n", - "\n", - "# Define a helper function to extract our cube chunks\n", - "def chunks(cube, x, y):\n", - " \"\"\"Yield successive x-y sized chunks from cube\"\"\"\n", - " for i in range(0, cube.coord(axis='x').shape[0], x):\n", - " for j in range(0, cube.coord(axis='y').shape[0], y):\n", - " yield cube[:, j:j + y, i:i + x]\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now process the data:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Loop over job ID and time period\n", - "for gcmid in GCMIDS:\n", - " for period in TIME_PERIODS.keys():\n", - " infile = os.path.join(DATADIR, period, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.pr.mmday-1.nc')\n", - " model_precip = iris.load_cube(infile)\n", - " # if cube has both latitude (2d true latitude) and grid_latitude, then\n", - " # coord(axis='y') does not work, so remove unused 'latitude' and 'longitude'\n", - " model_precip.remove_coord('latitude')\n", - " model_precip.remove_coord('longitude')\n", - " \n", - " # Calculate lat-lon chunks in terms of their index\n", - " lat_chunk = int(model_precip.coord(axis='y').shape[0] / steps[0])\n", - " lon_chunk = int(model_precip.coord(axis='x').shape[0] / steps[1])\n", - " # Make list of cubes\n", - " subcubes = list(chunks(model_precip, lon_chunk, lat_chunk))\n", - " # Loop through subcubes\n", - " model_pc95 = iris.cube.CubeList()\n", - " for cube in subcubes:\n", - " model_pc95.append(cube.collapsed('time', iris.analysis.PERCENTILE, percent=95.))\n", - " # Concatenate the cube list back into one cube\n", - " model_pc95 = model_pc95.concatenate_cube()\n", - " # Give cube a helpful name\n", - " model_pc95.rename(f'R95p of {gcmid} daily rainfall {TIME_PERIODS[period]}')\n", - " # Save output\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.day.pc95.' + TIME_PERIODS[period] + '.GERICS-REMO2015.pr.mmday-1.nc')\n", - " iris.save(model_pc95, outfile)\n", - " print(f'Saved: {outfile}')\n", - " # Tidy up memory\n", - " del model_precip, model_pc95" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - " Question: Why can we only 'chunk' in the lat-lon dimensions? Why can't we 'chunk' the time dimension?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer
    \n", - "Type your answer here..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now do the same for the CHIRPS data. First we take a subset of the CHIRPS data to make the code run quicker - constraining the data in time to the same period as the RCM data above and in space to a similar area to the EAS-22 domain (62-185 degrees longitude, -2 to 50 degree latitude)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "historical_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", - " <= cell.point <= PartialDateTime(year=2005))\n", - "# now load CHIRPS daily data\n", - "infile = os.path.join(CHIRPSDIR, 'chirps-v2.0_pr_day_1981-2018_p25.nc')\n", - "obs_precip = iris.load_cube(infile, historical_time_constraint)\n", - "obs_precip = obs_precip.intersection(longitude=(62, 185), latitude=(-2, 50))\n", - "\n", - "\n", - "# save this to disk \n", - "subsetfile = os.path.join(CHIRPSDIR, 'chirps-v2.0_pr_day_1986-2005_p25_eastasia.nc')\n", - "iris.save(obs_precip, subsetfile)\n", - "\n", - "# save memory\n", - "del obs_precip\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Repeat the percentile calculation for the CHIRPS data\n", - "\n", - "# load subset of CHRIRPS in \n", - "obs_precip = iris.load_cube(subsetfile)\n", - "\n", - "# Calculate lat-lon chunks in terms of their index\n", - "lat_chunk = int(obs_precip.coord(axis='y').shape[0] / steps[0])\n", - "lon_chunk = int(obs_precip.coord(axis='x').shape[0] / steps[1])\n", - "\n", - "# Make list of cubes\n", - "subcubes = list(chunks(obs_precip, lon_chunk, lat_chunk))\n", - "# Loop through subcubes\n", - "obs_pc95 = iris.cube.CubeList()\n", - "for cube in subcubes:\n", - " cube.data = np.ma.filled(cube.data, np.nan)\n", - " obs_pc95.append(cube.collapsed('time', iris.analysis.PERCENTILE, percent=95.))\n", - " print(f'Done {len(obs_pc95)} chunks')\n", - "\n", - "# Concatenate the cube list back into one cube\n", - "obs_pc95 = obs_pc95.concatenate_cube()\n", - "\n", - "# Redefine the data array of pc95 as a masked array. \n", - "obs_pc95.data = np.ma.masked_where(np.isnan(obs_pc95.data), obs_pc95.data)\n", - "outfile = os.path.join(CLIMDIR, 'chirps.pc95.1986_2005.mmday-1.nc')\n", - "iris.save(obs_pc95, outfile)\n", - "print(f'Saved: {outfile}')\n", - "\n", - "# Tidy up memory\n", - "del obs_precip, obs_pc95" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "**g)** **Calculate the change in extreme precipitation** _(the difference between the future and baseline 95th percentiles of precipitation)_ **and the associated model bias** _(the difference between the baseline and CHIRPS 95th percentiles of precipitation)._\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Define WGS84 coordinate system\n", - "wgs84 = iris.coord_systems.GeogCS(semi_major_axis=6378137.0, inverse_flattening=298.257223563)\n", - "\n", - "# Load CHIRPS data\n", - "infile = os.path.join(CLIMDIR, 'chirps.pc95.1986_2005.mmday-1.nc')\n", - "obs_cube = iris.load_cube(infile)\n", - "obs_cube.coord('latitude').coord_system = wgs84 \n", - "obs_cube.coord('longitude').coord_system = wgs84\n", - "\n", - "# constrain the observations to a smaller domain \n", - "obs_cube = obs_cube.intersection(longitude=(70, 160), latitude=(10, 50))\n", - "\n", - "\n", - "# Define regridding method\n", - "scheme = iris.analysis.Linear(extrapolation_mode='mask')\n", - "\n", - "for gcmid in GCMIDS:\n", - " # First, calculate the difference between the modelled future and baseline 95th percentiles\n", - " infile = os.path.join(CLIMDIR, gcmid + '.day.pc95.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", - " print(infile)\n", - " model_base = iris.load_cube(infile)\n", - " infile = os.path.join(CLIMDIR, gcmid + '.day.pc95.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", - " model_fut = iris.load_cube(infile)\n", - " diff = iris.analysis.maths.subtract(model_fut, model_base)\n", - " diff.rename(f'{gcmid} change in R95p (future - historical)')\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.day.pc95.diff.GERICS-REMO2015.pr.mmday-1.nc')\n", - " iris.save(diff, outfile)\n", - " print('Saved: {}'.format(outfile))\n", - "\n", - " # Next, calculate the differences between the modelled baseline and observed 95th percentiles\n", - " # Remember, to compare the model and observations, the model data need to be regridded.\n", - " model_base_rg = model_base.regrid(obs_cube, scheme)\n", - " bias = obs_cube.copy()\n", - " bias.data = model_base_rg.data - obs_cube.data\n", - " bias.rename(f'{gcmid} bias in R95p (model - obs)')\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.day.pc95.bias.GERICS-REMO2015.pr.mmday-1.nc')\n", - " iris.save(bias, outfile)\n", - " print(f'Saved: {outfile}')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**h)** **Plot the differences in the 95th percentiles** between the models and observations, and the future changes in the 95th percentiles of precipitation from both models.\n", - "\n", - "**Complete the code block to plot the figures...**" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: You will probably find it useful to consult the matpltlib documentation to help you produce your plots. In this case, take a look at the plt.subplot() docs to help you arrange your plots: plt.subplot().\n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# HINT: The filenames have the following pattern: gcmid + '.day.pc95.bias.pr.mmday-1.nc'\n", - "# Create a figure of the size 12x12 inches\n", - "plt.figure(figsize=(12, 12))\n", - "\n", - "for n, gcmid in enumerate(GCMIDS):\n", - " # HINT: Use the `n` variable to help arrange you plots using: plt.subplot()\n", - " # Use the matplotlib documention to help you! \n", - "\n", - " # Load and plot the model bias (model - obs)\n", - "\n", - " # Load and plot the percentage change in precipitation between future and baseline\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - " Question:
    \n", - "\n", - "* Where do we see the greatest changes in extreme precipitation for each simulation?
    \n", - "* Comment on each model's ability to reprent observed extremes in precipitation at the 95th percentile.
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Answer:**\n", - "\n", - "Greatest changes:\n", - "\n", - "* HadGEM2-ES driven run: \n", - "* MPI-ESM-LR driven run: \n", - "\n", - "Abilty to represent observed extremes:\n", - "\n", - "* HadGEM2-ES driven run: \n", - "* MPI-ESM-LR driven run: \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "
    \n", - "This completes worksheet 5.
    You have calculated and compared climate indices for future and baseline rainfall. You have also learned an effective method for working with large quantities of daily data.
    \n", - "In the final worksheet you will combine all the techniques learned to this point, through writing your own code to post-process and analyse CORDEX simulations of extreme temperature over East Asia. \n", - "
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "

    \"python

    \n", - "
    © Crown Copyright 2022, Met Office
    " - ] - } - ], - "metadata": { - "instance_type": "ml.t3.medium", - "kernelspec": { - "display_name": "pyprecis-environment", - "language": "python", - "name": "pyprecis-environment" - }, - "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.6.10" - }, - "widgets": { - "state": {}, - "version": "1.1.2" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/notebooks/AFR-22/worksheet6.ipynb b/notebooks/AFR-22/worksheet6.ipynb deleted file mode 100755 index a2bab3c..0000000 --- a/notebooks/AFR-22/worksheet6.ipynb +++ /dev/null @@ -1,258 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Worksheet 6: Investigating Extremes" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This final worksheet is a chance for you to put together all the techniques you have learned in the previous worksheets.\n", - "\n", - "Working with the same datasets, write some code to undertake an analysis of temperature extremes over our East Asia domain.\n", - "\n", - "You have the following datasets available to you:\n", - "\n", - "**CORDEX data** (REMO2015 dowscaling _HadGEM2-ES_ and _MPI-EMS-LR_)\n", - " * Maximum daily temperature\n", - " * Minimum daily temperature\n", - " * Mean daily temperature\n", - " * Daily precipitation flux\n", - " * Monthly mean preciptation and temperature data as used in previous worksheets\n", - "\n", - "**Observations**\n", - " * CHIRPS rainfall data\n", - " * CRU temperature data\n", - " \n", - "**Extremes indicies**
    \n", - "The full list of 27 core extreme indices are listed on the [CLIMDEX website](https://www.climdex.org/learn/indices/), or look at the summary table take from the IPCC AR5 report below. We suggest you look at one of the following:\n", - "\n", - " * Number of tropical nights (*TR*): $\\mathrm{TN}_{ij} > 20^{\\circ}C$\n", - " * Percentage of days when max temperature is > 90th percentile (*TX90p*): $\\mathrm{TX}_{ij} > \\mathrm{TX}_{in}90$\n", - " * Monthly maximum 1-day precipitation (*Rx1day*): $\\mathrm{Rx1day}_j = max (\\mathrm{RR}_{ij})$\n", - "\n", - "Speak to your instructor if you would like to look at alternative indicies.\n", - "\n", - "

    \"AR5

    \n", - "\n", - "**Table 1:** Definitions of extreme temperature and precipitation indices used in IPCC Assessment Report 5 (after Zhang et al., 2011). The most common units are shown but these may be shown as normalized or relative depending on application in different chapters. Figure, Tables and Section numbers refer to the IPCC AR5 report [here](https://www.ipcc.ch/report/ar5/wg1/)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "By the end of this worksheet you should be able to:
    \n", - "\n", - "- Build a coding workflow to undertake extremes analysis
    \n", - "- Understand the different stages of post-processing
    \n", - "- Have an appreciation of data storage and file naming issues.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Preamble" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Code preamble - these libraries will be used in this worksheet.\n", - "# This code block needs to be re-run every time you restart this worksheet!\n", - "%matplotlib inline \n", - "import os\n", - "import iris\n", - "import iris.coord_categorisation\n", - "import iris.quickplot as qplt\n", - "import iris.plot as iplt\n", - "import cartopy.crs as ccrs\n", - "import cartopy.feature as cfeature\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "import dask\n", - "dask.config.set(get=dask.get)\n", - "import dask.array as da\n", - "from iris.analysis import Aggregator\n", - "\n", - "# Some helpful data locations\n", - - "DATADIR = 'data_v2/EAS-22'\n", - - "PPDIR = os.path.join(DATADIR, 'pp')\n", - "CLIMDIR = os.path.join(DATADIR, 'climatology')\n", - "HISTDIR = os.path.join(DATADIR, 'historical')\n", - "FUTRDIR = os.path.join(DATADIR, 'future')\n", - "APHRODIR = os.path.join(DATADIR, 'APHRODITE')\n", - "CRUDIR = os.path.join(DATADIR, 'CRU')\n", - "GCMIDS = ['hadgem2-es', 'mpi-esm']\n", - "TIME_PERIODS = {'historical':'1986-2005', 'future':'2041_2060'}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Step 1: Process raw CORDEX netCDF files" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Remember to:\n", - " * Select the raw data with the correct variable\n", - " * Remove incompatible attributes\n", - " * Concatenate into a single netCDF file\n", - " * Save the netCDF file so you can access it later" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "'''\n", - "Step 1: Process the raw pp files\n", - "'''\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Step 2: Calculate the extreme index\n", - "\n", - "Remember to:\n", - " * Consider which observational data set to use for comparison\n", - " * Calculate the index for both the model data you prepared in step 1, but also the observed data\n", - " * Calculate the index for present and future model periods\n", - " * Save your index data sets as a netCDF file with appropriate metadata" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "'''\n", - "Step 2: Calculate the extreme index\n", - "'''\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Step 3: Plot some results\n", - "\n", - "Remember to:\n", - " * Think about plotting absolute values, differences, or scaled differences. Which one communicates your message best?\n", - " * Choose an appropriate colour scale" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "'''\n", - "Step 3: Plot some results\n", - "'''\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question:
    \n", - "Which extreme index did you chose to analyse?
    \n", - "Summarise the results of your analysis of this extreme index.
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer
    \n", - "_Summarise the results of your extremes analysis here..._" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "
    \n", - "This completes worksheet 6.
    \n", - "You have independently converted raw CORDEX output into files ready for analysis and used them to undertake scientific verification and analysis of a commonly recognised extreme index. \n", - " \n", - "These will be the same steps required to post-process and analyse CORDEX simulations over your region of interest, so keep hold of these worksheets to refer back to in the future. \n", - "
    \n", - "
    \n", - "\n", - "_Useful resources for future work is available online:_
    \n", - "* [IRIS Documentation](https://scitools.org.uk/iris/docs/v2.4.0/userguide/index.html) is the first port of call for IRIS usage.
    \n", - "* [Stack Overflow - Python](https://stackoverflow.com/questions/tagged/python) provides solutions for common Python queries.
    \n", - "* [Stack Overflow - Iris](https://stackoverflow.com/questions/tagged/python-iris) is a forum for queries about Iris.
    \n", - "\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "

    \"python

    \n", - "
    © Crown Copyright 2022, Met Office
    " - ] - } - ], - "metadata": { - "instance_type": "ml.t3.medium", - "kernelspec": { - - "display_name": "pyprecis-environment", - "language": "python", - "name": "pyprecis-environment" - - }, - "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.6.10" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/notebooks/AFR-22/worksheet6example.ipynb b/notebooks/AFR-22/worksheet6example.ipynb deleted file mode 100755 index 639a7df..0000000 --- a/notebooks/AFR-22/worksheet6example.ipynb +++ /dev/null @@ -1,392 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Worksheet 6 example code\n", - "\n", - "## Example 1 Frequency of warm days (TX90P) in the future\n", - "\n", - "Calculate the baseline (1986-2005) 90th percentile of maximum temperature. Then calculate the frequency of warm days in the future (2041-2060). Do this for HadGEM2-ES and MPI-ESM-LR." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Code preamble - these libraries will be used in this worksheet.\n", - "# This code block needs to be re-run every time you restart this worksheet!\n", - "%matplotlib inline \n", - "import os\n", - "import iris\n", - "import iris.coord_categorisation\n", - "import iris.quickplot as qplt\n", - "import iris.plot as iplt\n", - "from iris.experimental.equalise_cubes import equalise_attributes\n", - "import cartopy.crs as ccrs\n", - "import cartopy.feature as cfeature\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "from iris.analysis import Aggregator\n", - "\n", - "# Some helpful data locations\n", - "DATADIR = 'data_v2'\n", - "CHIRPSDIR = os.path.join(DATADIR, 'CHIRPS')\n", - "CRUDIR = os.path.join(DATADIR, 'CRU')\n", - "CLIMDIR = os.path.join(DATADIR, 'EAS-22', 'climatology/')\n", - "MODELDIR = os.path.join(DATADIR, 'EAS-22/')\n", - "GCMIDS = ['hadgem2-es', 'mpi-esm-lr']\n", - "GCM_FULL = {'hadgem2-es':'MOHC-HadGEM2-ES' , 'mpi-esm-lr':'MPI-M-MPI-ESM-LR'}\n", - "TIME_PERIODS = {'historical':'1986_2005', 'rcp85':'2041_2060'}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First calculate the 90th percentile of tsmax in the baseline and future periods for both set of downscaled GCMs." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Define a helper function to extract our cube chunks\n", - "def chunks(cube, x=200, y=200):\n", - " \"\"\"\n", - " Yield successive x-y sized chunks from cube,\n", - " works for 3D Time-Lat-Lon\n", - " \n", - " Args:\n", - " cube (Iris cube): input cube to be chunked\n", - " x: size of chunks in x direction\n", - " y: size of chunk in y direction\n", - " \"\"\"\n", - " coord_names = [coord.name() for coord in cube.coords()]\n", - " if 'grid_latitude' in coord_names and 'latitude' in coord_names:\n", - " cube.remove_coord('latitude')\n", - " if 'grid_longitude' in coord_names and 'longitude' in coord_names:\n", - " cube.remove_coord('longitude')\n", - " \n", - " for i in range(0, cube.coord(axis='x').shape[0], x):\n", - " for j in range(0, cube.coord(axis='y').shape[0], y):\n", - " yield cube[:, j:j + y, i:i + x]\n", - "\n", - " \n", - "def chunks_2d(cube, x=200, y=200):\n", - " coord_names = [coord.name() for coord in cube.coords()]\n", - " if 'grid_latitude' in coord_names and 'latitude' in coord_names:\n", - " cube.remove_coord('latitude')\n", - " if 'grid_longitude' in coord_names and 'longitude' in coord_names:\n", - " cube.remove_coord('longitude')\n", - " \n", - " for i in range(0, cube.coord(axis='x').shape[0], x):\n", - " for j in range(0, cube.coord(axis='y').shape[0], y):\n", - " yield cube[j:j + y, i:i + x]\n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for gcmid in GCMIDS:\n", - " for period in TIME_PERIODS.keys():\n", - " filename = f'tasmax_EAS-22_{GCM_FULL[gcmid]}_{period}_*GERICS-REMO2015*_*_day_*.nc'\n", - " model_tasmax = iris.load(MODELDIR + filename)\n", - " # solve merge issues\n", - " equalise_attributes(model_tasmax)\n", - " model_tasmax = model_tasmax.concatenate_cube()\n", - "\n", - " # 90th percentile calculation\n", - " model_pc90 = iris.cube.CubeList()\n", - " for model_data in chunks(model_tasmax):\n", - " model_pc90_chk = model_data.collapsed('time', iris.analysis.PERCENTILE, percent=90.0)\n", - " model_pc90.append(model_pc90_chk)\n", - " model_pc90 =model_pc90.concatenate_cube()\n", - "\n", - " # save to file\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.tasmax.90pc.nc')\n", - " print(f'saving to file: {outfile}')\n", - " iris.save(model_pc90, outfile)\n", - " " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Calculate the frequency of warm days in the future (extreme index TX90P), i.e. the number of days which exceed the 90th percentile temperatures in the baseline. Then calculate the numbers of days as a percentage.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for gcmid in GCMIDS:\n", - " \n", - " # load daily data for future \n", - " filename = f'tasmax_EAS-22_{GCM_FULL[gcmid]}_rcp85_*GERICS-REMO2015*_*_day_*.nc'\n", - " future_tasmax = iris.load(MODELDIR + filename)\n", - "\n", - " # solve merge issues\n", - " equalise_attributes(future_tasmax)\n", - " future_tasmax = future_tasmax.concatenate_cube() \n", - " ndays = len(future_tasmax.coord('time').points)\n", - " \n", - " infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.tasmax.90pc.nc')\n", - " print(infile)\n", - " hist_90pc = iris.load_cube(infile)\n", - " \n", - " \n", - " # need to do next operation chunking data, also chunk 90th percentile \n", - " nwarmdays_future = iris.cube.CubeList() \n", - " for chunk_ft_tasmax, chunk_hist_90pc in zip(chunks(future_tasmax), chunks_2d(hist_90pc)):\n", - "\n", - " # Use np.where to identify all cells where daily temperatures \n", - " # in the future exceed the 90th percentile\n", - " assert(chunk_ft_tasmax.coord('grid_longitude') == chunk_hist_90pc.coord('grid_longitude'))\n", - " assert(chunk_ft_tasmax.coord('grid_latitude') == chunk_hist_90pc.coord('grid_latitude'))\n", - " temp_gt_chunk = np.where(chunk_ft_tasmax.data >= chunk_hist_90pc.data, 1, 0)\n", - " \n", - " # use the 90th percentile cube as a template to copy warm days data into \n", - " nwarmdays_future_chunk = chunk_hist_90pc.copy()\n", - " nwarmdays_future_chunk.data = np.ma.sum(temp_gt_chunk.data, axis=0)\n", - " nwarmdays_future.append(nwarmdays_future_chunk)\n", - " \n", - " nwarmdays_future = nwarmdays_future.concatenate_cube()\n", - "\n", - " # the sum above removes the mask - reinstate it with \n", - " nwarmdays_future.data.mask = hist_90pc.data.mask\n", - " nwarmdays_future.units = '1'\n", - " nwarmdays_future.rename('days > 90th %ile of baseline ')\n", - " \n", - " print (\"Saving numbers of warm days in the future from \" + gcmid)\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.tasmax.nwarmdays.nc')\n", - " iris.save(nwarmdays_future, outfile)\n", - " \n", - " # calculate percentage of days (see below)\n", - " nwarm_pc = nwarmdays_future/ndays*100.\n", - " nwarm_pc.units = '%'\n", - " nwarm_pc.rename('percentage of days T > 90th %ile of baseline ')\n", - " \n", - " # save percentage\n", - " print (\"Saving precentage of warm days in the future from \" + gcmid)\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.tasmax.nwarmpc.nc') \n", - " iris.save(nwarm_pc, outfile)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plot the numbers of warm days in the future and the percentage of warm days." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plt.figure(figsize=(12, 12))\n", - "\n", - "for i, gcmid in enumerate(GCMIDS):\n", - " \n", - " infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.tasmax.nwarmdays.nc')\n", - " nwarmdays = iris.load_cube(infile)\n", - " infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.tasmax.nwarmpc.nc') \n", - " nwd_pcent = iris.load_cube(infile)\n", - "\n", - " plotnum = 1 + 2*i\n", - " plt.subplot(2, 2, plotnum)\n", - " qplt.pcolormesh(nwarmdays, vmin=0, vmax=10000)\n", - " plt.title(gcmid + ': Number of warm days')\n", - " plt.gca().coastlines()\n", - " plt.subplot(2, 2, plotnum+1)\n", - " qplt.pcolormesh(nwd_pcent, vmin=0, vmax=30)\n", - " plt.title(gcmid + ': Percentage of warm days')\n", - " plt.gca().coastlines()\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Example 2. Percentage of total precipitation which falls on very wet days\n", - "\n", - "Calculate the percentage of total precipitation which falls on very wet days in the future over Thailand\n", - "(where a very wet day is one on which daily rainfall exceeds the 95th percentile of the baseline).\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First find the 95th percentile of rainfall during baseline" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for gcmid in GCMIDS:\n", - " filename = f'pr_EAS-22_{GCM_FULL[gcmid]}_historical_*GERICS-REMO2015*_*_day_*.nc'\n", - " model_pr = iris.load(MODELDIR + filename)\n", - " # solve merge issues\n", - " equalise_attributes(model_pr)\n", - " model_pr = model_pr.concatenate_cube()\n", - "\n", - " # 95th percentile calculation\n", - " model_pc95 = iris.cube.CubeList()\n", - " for model_data in chunks(model_pr):\n", - " model_pc95_chk = model_data.collapsed('time', iris.analysis.PERCENTILE, percent=95.0)\n", - " model_pc95.append(model_pc95_chk)\n", - " model_pc95 = model_pc95.concatenate_cube()\n", - "\n", - " # save to file\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.pr.95pc.nc')\n", - " print(f'saving to file: {outfile}')\n", - " iris.save(model_pc95, outfile)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Coordinates of a box around Thailand\n", - "thai_lons = np.array([98.0, 98.0, 105.0, 105.0])\n", - "thai_lats = np.array([10.0, 21.0, 10.0, 21.0])\n", - "\n", - "# Load a cube on the rotated grid\n", - "gcmid = 'hadgem2-es'\n", - "infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.pr.95pc.nc')\n", - "rotg = iris.load_cube(infile)\n", - "rcs = rotg.coord('grid_latitude').coord_system\n", - "\n", - "# Get the rotated pole coordinates\n", - "pole_lat = rcs.grid_north_pole_latitude\n", - "pole_lon = rcs.grid_north_pole_longitude\n", - "\n", - "# Convert the coordinates of a box around Thailand from real coordinates to rotated polar coordinates\n", - "grid_lons, grid_lats = iris.analysis.cartography.rotate_pole(thai_lons, thai_lats, pole_lon, pole_lat)\n", - "\n", - "# Find the max / min of the lons / lats on the rotated grid. They will be used to extract the data around Malaysia\n", - "# N.B. The conversion to float is needed, as numpy data are of type float64 by default. If the coordinate limits\n", - "# are passed as float64, they are interpreted as a list of two floats and the program will stop with an error:\n", - "# ValueError: setting an array element with a sequence.\n", - "lon_0 = float(min(grid_lons))\n", - "lon_1 = float(max(grid_lons))\n", - "lat_0 = float(min(grid_lats))\n", - "lat_1 = float(max(grid_lats))\n", - "\n", - "# Set up constraints on the rotated grid for Thailand\n", - "lon_con = iris.Constraint(grid_longitude = lambda cell: lon_0 <= cell <= lon_1)\n", - "lat_con = iris.Constraint(grid_latitude = lambda cell: lat_0 <= cell <= lat_1)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "# loop over GCMs\n", - "for i, gcmid in enumerate(GCMIDS):\n", - " # load the RCP 8.5 daily precip data\n", - " file_f = f'pr_EAS-22_{GCM_FULL[gcmid]}*_rcp85_*_GERICS-REMO2015*_*_day_*.nc'\n", - "# precip = iris.load_cube(data_path + file_f, lon_con).intersection(grid_latitude = (-14.767, -5,623))\n", - " precip = iris.load(MODELDIR + file_f, lat_con & lon_con)\n", - " # solve merge issues\n", - " equalise_attributes(precip)\n", - " precip = precip.concatenate_cube()\n", - " \n", - " \n", - " # load the historical 95th percentile\n", - " file_f = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.pr.95pc.nc')\n", - " precip_pc95 = iris.load_cube(file_f, lat_con & lon_con)\n", - " \n", - "# Use broadcasting to identify all cells in precip where p95 is exceeded\n", - " pre_gt_pc95 = np.where(precip.data > precip_pc95.data, precip.data, 0.0)\n", - " pre_p95 = np.sum(pre_gt_pc95, axis=0)\n", - " pre_tot = precip.collapsed('time', iris.analysis.SUM)\n", - " pre_tot.data = np.divide(pre_p95, pre_tot.data, out=np.zeros_like(pre_tot.data), where = pre_tot.data != 0)\n", - " pre_tot = iris.analysis.maths.multiply(pre_tot, 100)\n", - " file_out = gcmid + '.R95pTOT.future.GERICS-REMO2015.nc'\n", - " iris.save(pre_tot, CLIMDIR + file_out)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plot the percentages of heavy rainfall in the future." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plt.figure(figsize=(12, 6))\n", - "\n", - "for i, gcmid in enumerate(GCMIDS):\n", - " filename = gcmid + '.R95pTOT.future.GERICS-REMO2015.nc'\n", - " pcent_heavy_rain = iris.load_cube(CLIMDIR + filename)\n", - " plotnum = 1 + i\n", - " plt.subplot(1, 2, plotnum)\n", - " qplt.pcolormesh(pcent_heavy_rain, vmin=0, vmax=100)\n", - " plt.title(gcmid + ': Percentage of heavy rain \\n over Thailand in the future')\n", - " plt.gca().coastlines()\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "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.6.10" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/notebooks/AFR-22/worksheet_solutions.ipynb b/notebooks/AFR-22/worksheet_solutions.ipynb deleted file mode 100755 index a643be1..0000000 --- a/notebooks/AFR-22/worksheet_solutions.ipynb +++ /dev/null @@ -1,461 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Worksheet Solutions" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2.2c\n", - "\n", - "Complete the following code block to repeat the same procedure for MPI-ESM-LR:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Print the current MPI-ESM-LR cube units\n", - "print(f'The current unit for data is: {mpiesm.units}')\n", - "\n", - "# convert units to kg m-2 day-1\n", - "mpiesm.convert_units('kg m-2 day-1')\n", - "\n", - "\n", - "# Rename the units to mm day-1. Recall that 1 kg m-2 is equivalent to 1 mm of rain\n", - "mpiesm.units = 'mm day-1'\n", - "\n", - "# Save the new cube as a new netCDF file using the `outfile` filename we've provided below!\n", - "outfile = os.path.join(OUTDIR, 'mpi-esm-lr.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", - "\n", - "iris.save(mpiesm, outfile)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2.3e\n", - "\n", - "Answer: Write the line of code required to calculate CHIRPS's (a) standard deviation and (b) annual maximum rainfall in the code block below.
    \n", - "Hint: How could you adapt chirps_ond.aggregated_by(['seasons'], iris.analysis.MEAN) from above? You can refer to the [Iris documentation](https://scitools.org.uk/iris/docs/v2.4.0/iris/iris/analysis.html) if needed." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# From chirps, calculate: \n", - "# (a) chirps_std \n", - "chirps_std = chirps_ond.aggregated_by(['seasons'], iris.analysis.STD_DEV) \n", - "\n", - "# (b) chirps_max\n", - "chirps_std = chirps.collapsed('time', iris.analysis.MAX) \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 3.1a" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Enter the ordered latitude and longitude coordinates for Kuala Lumpur here:\n", - "# lon=( , ) # longitude (East - West extent)\n", - "# lat=( , ) # latuitude (South - North extent)\n", - "lon = (99.5, 100.5)\n", - "lat = (13.5, 14.5)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 3.2e part 1\n", - "\n", - "e) Find the multi-annual monthly means (1986-2005) over the BK area for CHIRPS observations by following the same methodology as above in step d). As before we've given you the input and output files names.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Load the BK extracted data created in previous step\n", - "infile = os.path.join(CHIRPSDIR, 'chirps.mon.1986_2005.BK.nc')\n", - "data = iris.load_cube(infile)\n", - "\n", - "# Add monthly coord categorisation to the time dim coordinate\n", - "iris.coord_categorisation.add_month_number(data, 'time', name='month_number')\n", - "\n", - "# Now calculate monthly means\n", - "monthly_mean = data.aggregated_by(['month_number'], iris.analysis.MEAN)\n", - "\n", - "# and change units to mm/day\n", - "monthly_mean.convert_units('mm day-1')\n", - "\n", - "# create the area averaged monthly mean of daily rainfall\n", - "# Find latitude weights\n", - "monthly_mean.coord('longitude').guess_bounds()\n", - "monthly_mean.coord('latitude').guess_bounds()\n", - "grid_areas = iris.analysis.cartography.area_weights(monthly_mean)\n", - "# Calculate area averaged monthly mean rainfall\n", - "monthly_mean = monthly_mean.collapsed(['longitude', 'latitude'], iris.analysis.MEAN, \n", - " weights=grid_areas)\n", - "\n", - "\n", - "# Save output\n", - "outfile = os.path.join(CLIMDIR, 'chirps.mon.mean.1986_2005.mmday-1.nc')\n", - "iris.save(monthly_mean, outfile)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 3.2e part 2\n", - " Plot the CHIRPS observations, compare with the HadGEM2-ES and MPI-ESM-LR driven REMO2015 runs." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Load the CHIRPS cube\n", - "inpath = os.path.join(CLIMDIR, 'chirps.mon.mean.1986_2005.mmday-1.nc')\n", - "cube = iris.load_cube(inpath) \n", - "\n", - "# Quick line plot for cube \n", - "qplt.plot(cube.coord('month_number'), cube)\n", - "plt.title('BK area averaged ' + gcm + '\\n monthly average of daily rainfall')\n", - "ax = plt.gca()\n", - "ax.xaxis.set_label_text('Month Number')\n", - "ax.set_xlim(0.5, 12.5)\n", - "ax.set_ylim(0, 16)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 3.3f\n", - "Question: Now that the cubes are all on the same grid, what differences do you see?
    Complete the code template below to help answer this question." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Directory name where data is read from\n", - "indir = os.path.join(DATADIR, 'EAS-22', 'climatology')\n", - "\n", - "# load HadGEM2-ES downscaled model data\n", - "hadgem2 = iris.load_cube(f'{indir}/hadgem2-es.OND.mean.1986_2005.pr.mmday-1.rg.nc')\n", - "\n", - "# load MPI-ESM-LR downscaled model data\n", - "mpiesm = iris.load_cube(f'{indir}/mpi-esm-lr.OND.mean.1986_2005.pr.mmday-1.rg.nc')\n", - "\n", - "# load CHIRPS data and extract region\n", - "chirps = iris.load_cube(f'{indir}/chirps.OND.mean.1986_2005.pr.mmday-1.nc')\n", - "chirps = chirps.intersection(latitude=lat, longitude=lon)\n", - "\n", - "# Do some plotting!\n", - "plt.figure(figsize=(12, 10))\n", - "plt.subplot(1,3,1)\n", - "qplt.pcolormesh(hadgem2[0], vmin=0., vmax=8.)\n", - "plt.title('HadGEM2-ES')\n", - "plt.gca().coastlines()\n", - "plt.subplot(1,3,2)\n", - "qplt.pcolormesh(mpiesm[0], vmin=0., vmax=8.)\n", - "plt.title('MPI-ESM-LR')\n", - "plt.gca().coastlines()\n", - "plt.subplot(1,3,3)\n", - "qplt.pcolormesh(chirps[0], vmin=0., vmax=8.)\n", - "plt.title('CHIRPS')\n", - "plt.gca().coastlines()\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 4.2c\n", - "\n", - "Now, repeat the calculations yourself for **temperature**. \n", - "\n", - "First, we calculate the **OND mean** temperatures. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for gcmid in GCMIDS:\n", - " infile = os.path.join(FUTRDIR, gcmid + '.mon.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", - " data = iris.load_cube(infile)\n", - "\n", - " # in order to calculate OND mean, we divide the months into two seasons: \n", - " # one for OND and a second for the remaining months\n", - " iris.coord_categorisation.add_season(data, 'time', name='seasons', seasons=('jfmamjjas','ond'))\n", - "\n", - " # Extract the data for the OND season only\n", - " data_ond = data.extract(iris.Constraint(seasons='ond'))\n", - "\n", - " # Now calculate the mean over the OND season\n", - " ond_mean = data_ond.aggregated_by(['seasons'], iris.analysis.MEAN)\n", - "\n", - " # save the OND mean as a netCDF\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", - " iris.save(ond_mean, outfile)\n", - " print('Saved: {}'.format(outfile))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 4.4h\n", - "Produce and plot a montly time series of temperature data** relative to the 1986-2005 baseline. As for (f) and (g) produce time series for HadGEM2-ES and MPI-ESM-LR driven runs." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Read in the land-sea mask. \n", - "# The cube data array has a land fraction associated with it which we'll use to mask out ocean points.\n", - "land_fraction_file = 'sftlf_EAS-22_MOHC-HadGEM2-ES_historical_r0i0p0_GERICS-REMO2015_v1_fx_r0i0p0.nc'\n", - "land_fraction = iris.load_cube(DATADIR + land_fraction_file)\n", - "\n", - "# convert this to a binary (i.e. 1 or 0 mask)\n", - "land_sea_mask = land_fraction.copy()\n", - "land_sea_mask.data = np.where(land_sea_mask.data < 50, 0, 1)\n", - "land_sea_mask.name = 'land_binary_mask'\n", - "# apply a mask to the cube \n", - "land_sea_mask = iris.util.mask_cube(land_sea_mask, land_sea_mask.data < 0.5)\n", - "\n", - "\n", - "# Loop over GCMIDS\n", - "for gcmid in GCMIDS:\n", - " # Read in original data for baseline and future\n", - " baselinepath = os.path.join(HISTDIR, gcmid + '.mon.1986_2005.GERICS-REMO2015.tm.C.nc')\n", - " futurepath = os.path.join(FUTRDIR, gcmid + '.mon.2041_2060.GERICS-REMO2015.tm.C.nc')\n", - " baseline = iris.load_cube(baselinepath)\n", - " future = iris.load_cube(futurepath)\n", - " \n", - " # Apply land mask\n", - " baseline.data = ma.array(baseline.data, mask=baseline.data*land_sea_mask.data.mask[np.newaxis, :,:])\n", - " future.data = ma.array(future.data, mask=future.data*land_sea_mask.data.mask[np.newaxis, :,:])\n", - "\n", - " # remove the 2D \"true\" lat and lon\n", - " baseline.remove_coord('longitude')\n", - " baseline.remove_coord('latitude')\n", - " future.remove_coord('longitude')\n", - " future.remove_coord('latitude')\n", - " \n", - " # Guess bounds\n", - " for cube in [baseline, future]:\n", - " for coord in ['grid_longitude', 'grid_latitude']:\n", - " cube.coord(coord).guess_bounds()\n", - " \n", - " # Calculate mean values over land points\n", - " baseline_land = baseline.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN,\n", - " weights = iris.analysis.cartography.area_weights(baseline))\n", - " future_land = future.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN,\n", - " weights = iris.analysis.cartography.area_weights(future))\n", - "\n", - " # Save future & baseline area averaged monthly data (time series)\n", - " baselineout = os.path.join(CLIMDIR, gcmid + '.mon.1986_2005.series.GERICS-REMO2015.tm.C.nc')\n", - " futureout = os.path.join(CLIMDIR, gcmid + '.mon.2041_2060.series.GERICS-REMO2015.tm.C.nc')\n", - " iris.save(baseline_land, baselineout)\n", - " iris.save(future_land, futureout)\n", - "\n", - " # Subtract baseline from future\n", - " diff = future_land.copy()\n", - " diff.data = future_land.data - baseline_land.data.mean()\n", - " diff.rename('future anomaly relative to mean historical precipitation')\n", - "\n", - " # Save the area averaged monthly future anomalies (time series)\n", - " outpath = os.path.join(CLIMDIR, gcmid + '.mon.2041_2060.anom.series.GERICS-REMO2015.tm.C.nc')\n", - " iris.save(diff, outpath)\n", - " print('Saved: {}'.format(outpath)) \n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Read in the monthly series\n", - "hadgem2es = iris.load_cube(CLIMDIR + '/hadgem2-es.mon.2041_2060.anom.series.GERICS-REMO2015.tm.C.nc')\n", - "mpiesm = iris.load_cube(CLIMDIR + '/mpi-esm-lr.mon.2041_2060.anom.series.GERICS-REMO2015.tm.C.nc')\n", - "time = hadgem2es.coord('time')\n", - "\n", - "# Plot the two model time series' on the same figure\n", - "plt.figure(figsize=(16,5))\n", - "iplt.plot(time, hadgem2es, label = 'HadGEM2-ES')\n", - "iplt.plot(time, mpiesm, label = 'MPI-ESM-LR')\n", - "plt.legend()\n", - "plt.suptitle('2041-2060 Temperature anomaly (relative to 1986-2005)')\n", - "plt.ylabel(f'Temperature change ({hadgem2es.units}')\n", - "plt.xlabel('Years')\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 5.1b\n", - "\n", - "We'll use CHIRPS as our observational data from which to compare our CORDEX model data.\n", - "\n", - "**Fill in the missing code** to calculate the observed wet days: " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Load CHIRPS daily precipitation data, but only period of interest\n", - "historical_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", - " <= cell.point <= PartialDateTime(year=2005))\n", - "\n", - "infile = os.path.join(CHIRPSDIR, 'chirps-v2.0_pr_day_1981-2018_p25.nc')\n", - "obs = iris.load_cube(infile, historical_time_constraint)#, 'daily precipitation analysis interpolated onto 0.25deg grids [mm/day]')\n", - "\n", - "# Find number of wet days\n", - "chirps_wetdays = obs.collapsed('time', count_nonzero)\n", - "chirps_wetdays.rename(f'CHIRPS number of wet days (>=1mm/day)')\n", - "\n", - "# Save wet days cube\n", - "outfile = os.path.join(CLIMDIR, 'chirps.wetday.nc')\n", - "iris.save(chirps_wetdays, outfile)\n", - "\n", - "# Find number of days in dataset (number_chirps_days)\n", - "number_chirps_days = len(obs.coord('time').points)\n", - "\n", - "\n", - "# Find wet days as percent of all chirps days \n", - "chirps_pcent_wetdays = (chirps_wetdays / number_chirps_days) * 100\n", - "chirps_pcent_wetdays.rename(f'CHIRPS percent of wet days (>=1mm/day)')\n", - "chirps_pcent_wetdays.units='%'\n", - "\n", - "# Save \n", - "outfile = os.path.join(CLIMDIR, 'chirps.wetday.pcent.nc')\n", - "iris.save(chirps_pcent_wetdays, outfile)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 5.1e" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - " # Add in a line of code to constrain the model domain to these coordinates: \n", - " # longitude=(70, 160)\n", - " # latitude=(10, 50)\n", - " pcent_change_subset = pcent_change.intersection(longitude=(70, 160), latitude=(10, 50))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 5.2h\n", - "**Plot the differences in the 95th percentiles** between the models and observations, and the future changes in the 95th percentiles of precipitation from both models.\n", - "\n", - "**Complete the code block to plot the figures...**" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Create a figure of the size 12x12 inches\n", - "plt.figure(figsize=(12, 12))\n", - "\n", - "for n, gcmid in enumerate(GCMIDS):\n", - " # HINT: Use the `n` variable to help arrange you plots using: plt.subplot()\n", - " # Use the matplotlib documention to help you! \n", - "\n", - " # Load and plot the model bias (model - obs)\n", - " infile = os.path.join(CLIMDIR, gcmid + '.day.pc95.bias.GERICS-REMO2015.pr.mmday-1.nc')\n", - " bias = iris.load_cube(infile)\n", - " plt.subplot(2,2,2*n+1)\n", - " qplt.pcolormesh(bias)\n", - " plt.gca().coastlines()\n", - "\n", - "\n", - " # Load and plot the percentage change in precipitation between future and baseline\n", - " infile = os.path.join(CLIMDIR, gcmid + '.day.pc95.diff.GERICS-REMO2015.pr.mmday-1.nc')\n", - " pc_change = iris.load_cube(infile)\n", - " plt.subplot(2,2,2*n+2)\n", - " qplt.pcolormesh(pc_change)\n", - " plt.gca().coastlines()\n", - "\n", - "plt.show()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "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.6.10" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/notebooks/CSSP_20CRDS_Tutorials/Introduction.ipynb b/notebooks/CSSP_20CRDS_Tutorials/Introduction.ipynb deleted file mode 100644 index b783800..0000000 --- a/notebooks/CSSP_20CRDS_Tutorials/Introduction.ipynb +++ /dev/null @@ -1,245 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# CSSP 20CR dataset - Tutorials" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Contents:\n", - "1. [Introduction](#introduction)\n", - "2. [Description of datasets](#dataset)\n", - "3. [Learning objectives](#objectives)\n", - "4. [Jupyter notebook](#notebook)\n", - "5. [Data format and python libraries](#libs)\n", - "6. [Instructions to create an environment](#env)\n", - "7. [Resources](#resources)\n", - "\n", - " " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1. Introduction\n", - "\n", - "This short course is an introductory set of tutorials on accessing a large (~3Tb) dataset hosted on a cloud server. By putting the data and the computer resources in the same place, users no longer have to spend time downloading data, finding local storage for and manging the software needed to analyse the data. These notebooks explain how to use this cloud based platform to analyse the 20CR-DS dataset.\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2. Learning objectives\n", - "\n", - "The high level learning objectives for these tutorials are:\n", - "- To access and explore variables of interest\n", - "- To convert data into different formats (xarrays and iris) \n", - "- To prepare data for analysis\n", - "- To carry out basic analyses\n", - "- To carry out advanced analysis\n", - "- To visualise the results \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 3. Description of the tutorial dataset\n", - "\n", - "A climate reanalysis gives a numerical description of the recent climate, produced by combining models with observations. The Twentieth Century Reanalysis Project (20CR-V2c) is a global reanalysis carried out by the National Oceanic and Atmospheric Administration (NOAA). The outputs from this dataset include temperature, pressure, winds, moisture, solar radiation and clouds, from the surface to the top of the atmosphere as far back as the mid-1800s. More information are available from [climate-reanalysis](https://www.ecmwf.int/en/research/climate-reanalysis) and [20CR-V2c](https://www.esrl.noaa.gov/psd/data/gridded/data.20thC_ReanV2c.html).\n", - "\n", - "At the UK Met Office we have increased the resolution of the 20CR-V2c reanalysis dataset using a process known as dynamical downscaling and it now covers the whole of China for the period 1851 to 2010 at a horizontal resolution of 25 km [(Amato et al., 2019)](https://doi.org/10.1175/JAMC-D-19-0083.1). (https://zenodo.org/record/2558135#.XJj2uaD7RWE). This work was funded through the Climate Science for Service Partnership China (CSSP-China) project.\n", - "\n", - "The Climate Science for Service Partnership China (CSSP China) is a scientific research project that is building the basis for services to support climate and weather resilient economic development and social welfare through strong, strategic partnerships harnessing UK scientific expertise. Through CSSP China (supported by the Newton Fund and the Department for Business, Energy & Industrial Strategy (BEIS) UK-China Research Innovation Partnership Fund) we are developing a strongly bilateral partnership between the Met Office, the China Meteorological Administration (CMA), the Institute of Atmospheric Physics (IAP) at the Chinese Academy of Sciences, and other key institutes within China and the UK. See the [CSSP-China](https://www.metoffice.gov.uk/research/approach/collaboration/newton/cssp-china/index) for more information.\n", - "\n", - "
    \n", - " \"Trulli\"\n", - "
    Figure: Downscaled domain of 20CR datasets (Amato et al., 2019)
    \n", - "
    \n", - "\n", - "\n", - "The area of interests are devided into seven subregions, shown in figure, are considered for analysis [Burke and Stott (2017)](https://journals.ametsoc.org/jcli/article/30/14/5205/97096/Impact-of-Anthropogenic-Climate-Change-on-the-East). The coordinates of these seven regions are: \n", - "\n", - "\n", - "\n", - "North Central (NC): 104°–113°E, 32°–39°N\n", - "\n", - "North East Coast (NEC): 113°–122°E, 32°–39°N\n", - "\n", - "North East (NE): 113°–131°E, 39°–44°N\n", - "\n", - "Tibetan Plateau (TP): 77°–104°E, 26°–36°N\n", - "\n", - "South Central (SC): 104°–113°E, 26°–32°N\n", - "\n", - "South East Coast (SEC): 113°–122°E, 26°–32°N\n", - "\n", - "South East (SE): 107°–120°E, 21°–26°N" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The dataset include monthly, daily, 3 hourly and hourly frequencies for the historical period of 1851-2010. Though in the tutorials we have only used monthly, daily and hourly frequencies. The details of variables and frequencies can be found in [supplementary material](variableslist.pdf). The data for this course is held online in an Azure Blob Storage Service. To access this we use a SAS (shared access signature). You should have been given the credentials for this service before the course, but if not please ask your instructor. \n", - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 4. Jupyter notebook\n", - "Jupyter is an open source platform that contains a suite of tools including Jupyter Notebook: A browser-based application that allows you to create and share documents (i.e. Jupyter Notebook files such as this notebook you are reading right now!). These notebooks can contain simple text content and live code, equations, visualizations and narrative text. It is an Integrated Development Environment (IDE) that allows you to write code, navigate files on the system and inspect variables and more. The Jupyter Notebook file format (.ipynb ) allows you to combine descriptive text, code blocks and code output in a single file. You can then share the notebook itself with anyone who might want to run it and also convert the notebook to a PDF or HTML format that can be viewed like a report.\n", - "\n", - "##### How to run Jupyter Notebook\n", - "A Jupyter Notebook file (.ipynb) has three main parts, which are highlighted in the image below:\n", - "\n", - "- Menu bar\n", - "- Toolbar\n", - "- Cells\n", - "\n", - "\n", - "
    \n", - " \"Trulli\"\n", - "
    \n", - "\n", - "\n", - "Cells can be specified to store documentation text such as Markdown or programming code such as Python. Text written using the Markdown syntax can be rendered in a cell that is of the cell type Markdown. You can run code (e.g. Python) using the Code as cell type write you code and then either click on the run the selected cell button on top or use the Shift+Enter keyboard combination. When you run the code in a Code cell, the code output displayed below.\n", - "\n", - "**Example:** click on the cell below and press `Shift+Enter` or `Ctrl+Enter`, It will print the output below the cell. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print('CSSP 20CR dataset')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can also execute shell commands from the cell. For Example cell below list down the contents of the *~/cloudfiles/code/Users* directory" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ls ~/cloudfiles/code/Users" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notice that **`Shift+Enter`** runs the cell and moves the cursor to next cell but **`Ctrl+Enter`** runs the cell but the cursor stays in the same cell.\n", - "\n", - "An important component of a Jupyter Notebook is its Kernel. A kernel runs your code in a specific programming language. Jupyter Notebook supports over 40 different languages. In this tutorials, we will use the Python kernel within the Jupyter Notebook IDE.\n", - "\n", - "To learn more about Jupyter Notebooks use the introductory free online course available from [Here](https://www.earthdatascience.org/courses/intro-to-earth-data-science/open-reproducible-science/jupyter-python/)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 5. Data format and python libraries\n", - "\n", - "##### ZARR\n", - "The data used in our tutorials have been converted from the [Met Office's PP file format](https://help.ceda.ac.uk/article/4424-pp-binary-forma) to Zarr. Zarr is a [specification](https://zarr.readthedocs.io/en/stable/spec.html) for how to store gridded data in a key-value interface (such as Amazon S3 object store), where each chunk of data is a separate value with a corresponding key indicating its position in the full dataset. This has advantage over NetCDF format as it allows for a highly parallel data access where many CPUs can simultaneously read different parts of the same dataset. Zarr is also a [Python library](https://zarr.readthedocs.io/en/stable/api.html) implementation of this specification that allows you to read and write data in a Zarr store.\n", - "\n", - "##### Iris\n", - "In order to explore and analyse our dataset in these tutorials we make use of a Python library called Iris. Iris is a key tool in the [SciTools](https://scitools.org.uk/) project which is a collaborative effort to produce and maintain python-based open-source tools for Earth scientists. Iris is a useful toolkit as it supports read/write access to a range of data formats, including (CF-)netCDF, GRIB, and PP; fundamental data manipulation operations, such as arithmetic, interpolation, and statistics; and a range of integrated plotting options. See [latest Iris documentation](https://scitools.org.uk/iris/docs/latest/) for more information.\n", - "\n", - "##### CATNIP\n", - "At Met Office we have also developed a python library called CATNIP (Climate Analysis Tools: Now In Python). This library is a collection of routines to make frequently used climate data analysis and visualisation tasks in Iris easier and quicker to perform. We will make use of some of CATNIP's routines in these tutorials. See [CATNIP documentation](https://metoffice.github.io/CATNIP/#) for more information.\n", - "\n", - "##### CONDA\n", - "For these tutorials we have used the [CONDA](https://docs.conda.io/en/latest/) package management system to install the packages for our development environment. Conda is a package manager that helps you find and install packages. It allows you to set up Python environments (and other software packages) in a reproducible way that can be transferred between computers.\n", - "\n", - "You should have already set this environment up following the steps in the joining instructions." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Resources\n", - "\n", - "The following are the links you can follow for further information for the packages that we have installed and use in these tutorials.\n", - "\n", - "- [python](https://docs.python.org/3/library/)\n", - "- [zarr](https://zarr.readthedocs.io/en/stable/)\n", - "- [iris](https://scitools.org.uk/iris/docs/latest/)\n", - "- [numpy](https://numpy.org/)\n", - "- [matplotlib](https://matplotlib.org/)\n", - "- [xarray](http://xarray.pydata.org/en/stable/)\n", - "- [jupyterlab](https://jupyterlab.readthedocs.io/en/stable/)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "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.6.9" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/notebooks/CSSP_20CRDS_Tutorials/images/global_airtemp_cp.png b/notebooks/CSSP_20CRDS_Tutorials/images/global_airtemp_cp.png deleted file mode 100644 index 019c78315da3d919a0e1cf2e4dd49bd12bd96570..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 150651 zcmeEt^LHI#+iu#}M#Bb;ZQHhuCTVQ%w6W6|ZEV|iV;j4%ZJ+7;u5X?57o4BItUYV* zJu~~6d7ioN>$+|vTv<^H837*w0s;bAMp|4I0s`_g1jI*eI2d40x_f{l@CM}~Dx(eu z{Q1I}hXLQ=9i??#ARtgp{%s$Mg^H{pAU;FLh>NIu{ytgvNz~U!yLdm}*q`fYeF6=4 zV2U;e>0#_(ppoWwQ*R?4(Fr-K_d6}{U7PLAUmA>p@tLyoVzw>j&@IDRzsCe_m!TYF zv(iFMWmBMq36H&Iy7Fdpdbk-(EI;25@n{&#H@U_uQvKMk)69NWpXVu3)X+M$Jhv3m z)3IR?g(D3@6NO`eycrh!@Sl&Q{WhUcpZ~i*>=XHiFyJt7z;sX=g6!X^q(P}H7~lW< zGt#e7|9k5HuE78A6`-0j@K_ICNH5CtJ~GdW0F2T}_9uim9BE9CrQr3a`UR_s$EM&*s>Gc;O(lEoys5eU;4K%t$7+7+;#8BONZUCMZ?nm<35B14t~da)CCXMLhmm2ZKs^At*sA}?=O>1 z=X@&PVi(di$~2uW{)z}*{6J;)IMdf(+~os5P6Q2gyxy(qGIF_D{uUV--{O=+x_Z9MDdTs6u4ql^rR<^eNPK55~8_3;9 z^JR~JVTJz86v&lSRD4O3cYb@^zb;Yoi|`dRYUm0^#7$OPsqB0@Dm~U!T@lP2+1D@W z=*W_BBulL}|cCTyC=T)$x zfdNt1^ZNP2!;sL#cC63@lmFu=OZ4H!hGAv%76NM;QqzVv-TL}E|IL(`zW?iOxlUaO zD(E8c=I+jUJDN+C9>?n-C$xDtSx>v}>v-x7YXO$f({${^csgyV;QxB6I(8p{XQprN0XJdk z2hO^>)T%PHOH#c%Yda^tzk5FK0s|xPZCs-Kn%pn5Z+kv#t5{e8o!S@?-0QzxF}>G* zd-mvhHYiK1MMg%xvvcs#n}5p$Jy`=gxWK+H^Jc`Je}7!Pf$r+EG}iALs{F=*@fsEl z^%`C~&i$(9byt}{mysH)*N^QTZ%@Y++uV1+vJ<)>*Du`Zfu9zd7fps@h_>zD`>6y? z8W!$gg&sua@4^j>;>)T!SH4vYb)5cyC9Vc01I%92&cVT<3HZFn)wTS!ZkZ+ad522K z8kmm5+nz%?OJVyup4oZxHcDATqtN59(x5;gV8{~`&~gBV^)_|A+7S+IPQIN?j;w9~ zSYr~kxe7cyl~X$W=&N8RUz6UsOtZ`RDo~O%MX%rex)w1q_2bfzprn`>B(Q$>gZzwX z@>j9%53w4n_8qsH`ilikO(|8N+cJ&kwyP03YX^t@U|d7Id;X1wK`!S$WG;2P=d!LR zx(V)WBx3&;r@ND7NT@vFe`7U2Y(+k1vY;a4*a@3*}dLdJY{)vA#Rx{1@GjzE87RmFaxU zX?J(-00b4DzJ!E^E?1jCj*pMO%nH5Ermj{r^qaD9+OKi%HGYvx{wZ5f+L)x;Tf0n; zh(nKeoyy~~cL7*tj1Qxhf!lnlovuw~`;}~?19;-;_Bf5pf!JoTa^T)CQFRSiPBUV) z^g7lJ9wkj3`d{N$NmahVp(LQx@n2kQ%*@J}YB`Cf;7&hGL3iGyz0s&fuj{WUB!Xk{ zU*sNcii8CA+-(@b#ZA}t8G_J?`2O*RX~bE_y0r5RxHE(P?u(4cg~pXJ_B+l)UDTwW(|gX|P%Rhqx}I3{6vOYw{Er9|C$I@~CpN zs2La-w(Xe&&KdL?<)3t;@7sgXwp^+H2|RfbEiK$w{wp|$rZs0oU>i++rY>j(0JMnk zyZn7CW`VE?z^LVVP4>F?e)TBC{M=`EF)=8{JNk0(?^B_I{kUBZ19`lI;)~~TQp6^w zD-CO)=hHP0u%B6s|Du5h(Y(`l=k(t!U)SJYqUzQkCW+5wVa=O3)8-2%anYkqGCiCrXn(mH1rSzM zOUpxa!h|-{_ew_at|nH)j%_e;^odcg5eaUlxPF2E^=5X~{iH&#DK`~2N0&W z<9>thtgGuGvWvTL_&_SJrUpH`ePh7tADIsCU;mr&E_;zIz#-*EU2j1dM#KNuA}>}@ zx8XGF{V{8~(T)J%Zqto+F9>!nE|*oirW*To-ZubAL2D4k&v&OMYb`D#L-r01L%MvF zOG}-8d?c?2QbR;Z|M*pxZ_}+~Ctj|4Ax7u+ZL#a^w%I0$FnpVP&1*m71l*Oycix_$ z&&ahWNJK=$3M&qGSxP|;2ze){GOenwvxN%!o}0nt+BK%V&+7n_`0lY~ZN5F9?*j;% zxp1WU#WKSU$7OG9^BMdu7$+U{c)g#OxFvAzg?ha=zJ0gqu>ZK9wNC(kfU*4T1oQ8i zUhhv9wYB{s;&Z>4Q&YNpyYKoBUC)B-lkD3sCGA@eDgSLaOon6s=xx&f%?0q@=KV~c z(zEB=D*p`NpUQi2kS1lhEyqR;E-*q$*NX+G z?NT?O>y{d9aR2F*f2wK-8LzTs55IoF_a={I7uEkk%&UL<{O#=gyD|D7Cf`j&-!qr2 zZ2;{4uDMKF05f^n!tMII_sc=Bki8Ue!EM{6>K_iE>t8Q`?^*zCH{&i(MgbXrFFuY+TW%|7tm&Zo$-Xqxu}K z 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%0A&g zutDCP-Ig>*ba4C13JpJU9~~_(o#V5LDRh2thfMp&W);=y>$2K;`ZG-fFnI{$CpTMy z>1fG{@{F)vQmJPaJgOz3d(HqbJgA@ z{{W?6eQ7xJ-l&JyYa=cVy0^;2$1>u=yiUKZnRH0Ntd#HU=rZLPvdP0&L(V!0ONHy zSG8>SeZu*ly7kpVysM()JOkp*p)$>q6&PK>OB3PG5lUE6+_0Y~%j4@DaYmcb_Xm&0 zA5Cx0VJ;UD;}Q4o;Fvr#N+~OGP%p~kS$+Pc)bpFJ%9~PGfldk1#zTPU|8W6U%;v&0 z7I#k|t8bC`$IMkcAYe(0f7Nz{$p9!wM+aMmMJ9G1QQ>Y3(1=%AsGt;8^0Y?6rGrfd zM$-9j|7Jf{OBr|6B{zS56l18IM*yYo^Di+JCNk=Egr&gPf$G0cS4+LSF36R;8bUkp zmu%kGBwUZJkil-=eVM;mk4;@{BwjUJ2^A%cC|j&%hx_@lrH!A#R#i~*beYaGaBDE- z692k)=s%jS-evP4*I6eUzI~4MBME5Nj}WbN`)9({BL;q_SlTfcMNuhj_^vCZ$I@TO zF70C`o(m)%*y!|3WF|VS97#65FZ%Pk&w>A7UqRZQ_PsT}H!%U-K59jzz9^cvfWg

    M4N%!OfxtGZx_y{Frat(MnUFgGHRlQmR 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 Ut^C9dt_n*=Qt@4}_y_<03l~VUEC2ui diff --git a/notebooks/CSSP_20CRDS_Tutorials/images/global_airtemp_ts.png b/notebooks/CSSP_20CRDS_Tutorials/images/global_airtemp_ts.png deleted file mode 100644 index 8c8f66cfd22e9a1d773a6795902a505ca227c44a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6278 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 diff --git a/notebooks/CSSP_20CRDS_Tutorials/images/jupyter.png b/notebooks/CSSP_20CRDS_Tutorials/images/jupyter.png deleted file mode 100644 index bf8e9f5f1aa6b7cf070aae807b5f26a6f4c01b3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37078 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 z 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 z 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 diff --git a/notebooks/CSSP_20CRDS_Tutorials/images/region.PNG b/notebooks/CSSP_20CRDS_Tutorials/images/region.PNG deleted file mode 100644 index c47c58495a3377bd449b30529304b8b39cd6f6ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101249 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

    D7YGMPI$IZ%O)(JyaR{{oFurPHI`&{Pa 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 Y>LV}a#6QlPT+9Fjp00i_>zopr02d?fU;qFB diff --git a/notebooks/CSSP_20CRDS_Tutorials/images/rotated_pole_1.png b/notebooks/CSSP_20CRDS_Tutorials/images/rotated_pole_1.png deleted file mode 100755 index 84ad49f9e5786b413f7bcffd6b254a2713c0796f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 794319 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ΝeYz-)27av&PrS)^ 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À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%0D&h-7c}v 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 iRaE6Uev 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

    %~*aIig>8@~_mzk4e0fEmi;qKaE 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ℑ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[RUPn89x4M}hK_5u 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%0DM)tOo?u>(2+Z5JfcFxb6pQZD#_>CBz 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 *Bskx>X#AucNlYdJuNnMmA0FJl`K1%HZMw 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

    $OaUnKoDRe;mwsJlXf+}|ia&IFFI3q3eH!x$M; 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�{B0V?RZUzdT98RkO~mRd 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%0Ahau4bv^ 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 diff --git a/notebooks/CSSP_20CRDS_Tutorials/images/rotated_pole_2.png b/notebooks/CSSP_20CRDS_Tutorials/images/rotated_pole_2.png deleted file mode 100755 index 39a12392a68977418b4c40a154c388cca5eb895e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 436316 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

    Lx^ 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�`4|+(9InxlH_pf`a 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�`ZQXpf_F?f$f_uQ#8C*~r2V(!4-+rq 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 diff --git a/notebooks/CSSP_20CRDS_Tutorials/scripts/cssp37-env-nobuilds.yml b/notebooks/CSSP_20CRDS_Tutorials/scripts/cssp37-env-nobuilds.yml deleted file mode 100644 index f26c518..0000000 --- a/notebooks/CSSP_20CRDS_Tutorials/scripts/cssp37-env-nobuilds.yml +++ /dev/null @@ -1,194 +0,0 @@ -name: cssp37 -channels: - - defaults - - conda-forge -dependencies: - - _libgcc_mutex=0.1 - - _openmp_mutex=4.5 - - adal=1.2.5 - - aiohttp=3.7.3 - - antlr-python-runtime=4.7.2 - - argon2-cffi=20.1.0 - - asciitree=0.3.3 - - async-timeout=3.0.1 - - async_generator=1.10 - - attrs=20.3.0 - - azure-common=1.1.24 - - azure-nspkg=3.0.2 - - azure-storage-blob=2.1.0 - - azure-storage-common=2.1.0 - - backports=1.0 - - backports.functools_lru_cache=1.6.1 - - bleach=3.2.1 - - blinker=1.4 - - bokeh=1.4.0 - - brotlipy=0.7.0 - - bzip2=1.0.8 - - c-ares=1.17.1 - - ca-certificates=2020.11.8 - - cachetools=4.1.1 - - cartopy=0.18.0 - - certifi=2020.11.8 - - cf-units=2.1.4 - - cffi=1.14.3 - - cftime=1.3.0 - - chardet=3.0.4 - - click=7.1.2 - - cloudpickle=1.6.0 - - cryptography=3.2.1 - - curl=7.71.1 - - cycler=0.10.0 - - cytoolz=0.11.0 - - dask=2.30.0 - - dask-core=2.30.0 - - dask-kubernetes=0.11.0 - - decorator=4.4.2 - - defusedxml=0.6.0 - - distributed=2.30.1 - - entrypoints=0.3 - - expat=2.2.9 - - fasteners=0.14.1 - - freetype=2.10.4 - - fsspec=0.8.4 - - geos=3.8.1 - - google-auth=1.23.0 - - hdf4=4.2.13 - - hdf5=1.10.6 - - heapdict=1.0.1 - - idna=2.10 - - importlib-metadata=3.1.0 - - importlib_metadata=3.1.0 - - ipykernel=5.3.4 - - ipython=5.8.0 - - ipython_genutils=0.2.0 - - iris=2.4.0 - - jinja2=2.11.2 - - jpeg=9d - - json5=0.9.5 - - jsonschema=3.2.0 - - jupyter-server-proxy=1.5.0 - - jupyter_client=6.1.7 - - jupyter_core=4.7.0 - - jupyterlab=2.2.9 - - jupyterlab_pygments=0.1.2 - - jupyterlab_server=1.2.0 - - kiwisolver=1.3.1 - - krb5=1.17.2 - - kubernetes_asyncio=12.0.1 - - lcms2=2.11 - - ld_impl_linux-64=2.35.1 - - libblas=3.9.0 - - libcblas=3.9.0 - - libcurl=7.71.1 - - libedit=3.1.20191231 - - libev=4.33 - - libffi=3.2.1 - - libgcc-ng=9.3.0 - - libgfortran-ng=9.3.0 - - libgfortran5=9.3.0 - - libgomp=9.3.0 - - liblapack=3.9.0 - - libnetcdf=4.7.4 - - libnghttp2=1.41.0 - - libopenblas=0.3.12 - - libpng=1.6.37 - - libsodium=1.0.18 - - libssh2=1.9.0 - - libstdcxx-ng=9.3.0 - - libtiff=4.1.0 - - libwebp-base=1.1.0 - - locket=0.2.0 - - lz4-c=1.9.2 - - markupsafe=1.1.1 - - matplotlib-base=3.3.3 - - mistune=0.8.4 - - monotonic=1.5 - - msgpack-python=1.0.0 - - multidict=4.7.5 - - nbclient=0.5.1 - - nbconvert=6.0.7 - - nbformat=5.0.8 - - ncurses=6.2 - - nest-asyncio=1.4.3 - - netcdf4=1.5.4 - - notebook=6.1.5 - - numcodecs=0.7.2 - - numpy=1.19.4 - - oauthlib=3.0.1 - - olefile=0.46 - - openssl=1.1.1h - - packaging=20.4 - - pandas=1.1.4 - - pandoc=2.11.2 - - pandocfilters=1.4.2 - - partd=1.1.0 - - pexpect=4.8.0 - - pickleshare=0.7.5 - - pillow=8.0.1 - - pip=20.2.4 - - proj=7.1.1 - - prometheus_client=0.9.0 - - prompt_toolkit=1.0.15 - - psutil=5.7.3 - - ptyprocess=0.6.0 - - pyasn1=0.4.8 - - pyasn1-modules=0.2.7 - - pycparser=2.20 - - pygments=2.7.2 - - pyjwt=1.7.1 - - pyke=1.1.1 - - pyopenssl=19.1.0 - - pyparsing=2.4.7 - - pyrsistent=0.17.3 - - pyshp=2.1.2 - - pysocks=1.7.1 - - python=3.7.8 - - python-dateutil=2.8.1 - - python-kubernetes=12.0.1 - - python-xxhash=2.0.0 - - python_abi=3.7 - - pytz=2020.4 - - pyyaml=5.3.1 - - pyzmq=20.0.0 - - readline=8.0 - - requests=2.25.0 - - requests-oauthlib=1.3.0 - - rsa=4.6 - - scipy=1.5.3 - - send2trash=1.5.0 - - setuptools=49.6.0 - - shapely=1.7.1 - - simpervisor=0.3 - - simplegeneric=0.8.1 - - six=1.15.0 - - sortedcontainers=2.3.0 - - sqlite=3.33.0 - - tblib=1.6.0 - - terminado=0.9.1 - - testpath=0.4.4 - - tk=8.6.10 - - toolz=0.11.1 - - tornado=6.1 - - traitlets=5.0.5 - - typing-extensions=3.7.4.3 - - typing_extensions=3.7.4.3 - - udunits2=2.2.27.6 - - urllib3=1.25.11 - - wcwidth=0.2.5 - - webencodings=0.5.1 - - websocket-client=0.57.0 - - wheel=0.35.1 - - xarray=0.16.1 - - xxhash=0.8.0 - - xz=5.2.5 - - yaml=0.2.5 - - yarl=1.6.3 - - zarr=2.5.0 - - zeromq=4.3.3 - - zict=2.0.0 - - zipp=3.4.0 - - zlib=1.2.11 - - zstd=1.4.5 - - pip: - - mo-catnip==0.0.5 -prefix: /home/h03/fris/miniconda3/envs/cssp37 diff --git a/notebooks/CSSP_20CRDS_Tutorials/scripts/xarray_iris_coord_system.py b/notebooks/CSSP_20CRDS_Tutorials/scripts/xarray_iris_coord_system.py deleted file mode 100644 index f359e98..0000000 --- a/notebooks/CSSP_20CRDS_Tutorials/scripts/xarray_iris_coord_system.py +++ /dev/null @@ -1,85 +0,0 @@ -import json - -import iris -import iris.coord_systems -import xarray as xr - - -class XarrayIrisCoordSystem(object): - coord_systems_lookup = {'latitude_longitude': iris.coord_systems.GeogCS, - 'rotated_latitude_longitude': iris.coord_systems.RotatedGeogCS, - 'mercator': iris.coord_systems.Mercator} - - def __init__(self): - self._cube = None - self._data_array = None - - self.coord_system_attr_name = "iris_coord_system" - - @property - def cube(self): - return self._cube - - @cube.setter - def cube(self, value): - self._cube = value - - @property - def data_array(self): - return self._data_array - - @data_array.setter - def data_array(self, value): - self._data_array = value - - def _attrs_as_dict(self, attrs): - return {k: v for (k, v) in attrs} - - def _store_coord_system(self): - coord_system = self.cube.coord_system() - attrs = self._attrs_as_dict(coord_system._pretty_attrs()) - # We don't want the default ellipsoid attr, which is a reference to an Iris class. - attrs["ellipsoid"] = self._attrs_as_dict(coord_system.ellipsoid._pretty_attrs()) - attrs["coord_system_name"] = coord_system.grid_mapping_name - return json.dumps(attrs) - - def _build_ellipsoid(self, ellipsoid_kwargs): - return iris.coord_systems.GeogCS(**ellipsoid_kwargs) - - def _build_coord_system(self, coord_system_str): - coord_system_dict = json.loads(coord_system_str) - coord_system_name = coord_system_dict.pop("coord_system_name") - ellipsoid_kwargs = coord_system_dict.pop("ellipsoid") - - ellipsoid = self._build_ellipsoid(ellipsoid_kwargs) - - constructor = self.coord_systems_lookup.get(coord_system_name) - if constructor is not None: - result = constructor(**coord_system_dict, ellipsoid=ellipsoid) - else: - raise ValueError(f"Coord system name {coord_system_name!r} is either not known or supported.") - return result - - def from_iris(self, cube): - self.cube = cube - - data_array = xr.DataArray.from_iris(self.cube) - data_array.attrs[self.coord_system_attr_name] = self._store_coord_system() - - self.data_array = data_array - return self.data_array - - def to_iris(self, data_array): - self.data_array = data_array - coord_system_str = self.data_array.attrs.pop(self.coord_system_attr_name, None) - - self.cube = self.data_array.to_iris() - if coord_system_str is not None: - cube_coord_system = self._build_coord_system(coord_system_str) - for axis in ['X', 'Y']: - try: - self.cube.coord(axis=axis).coord_system = cube_coord_system - except AttributeError: - pass - - return self.cube diff --git a/notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_1_data_access.ipynb b/notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_1_data_access.ipynb deleted file mode 100644 index 4759f19..0000000 --- a/notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_1_data_access.ipynb +++ /dev/null @@ -1,1075 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "# Tutorial 1: Accessing and exploring CSSP China 20CR datasets\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Learning Objectives:\n", - "\n", - "1. How to load data into Xarrays format\n", - "2. How to convert the data xarrays into iris cube format\n", - "3. How to perform basic cube operations " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Contents\n", - "\n", - "1. [Use Xarray to access monthly data](#access_zarr) \n", - "2. [Retrieve single (or list of) variables](#get_vars)\n", - "3. [Convert datasets to iris cube](#to_iris)\n", - "4. [Explore cube attributes and coordinates](#explore_iris)\n", - "5. [Exercises](#exercise)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "

    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1. Use Xarray to access monthly data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.1 Import libraries.\n", - "Import the necessary libraries. Current datasets are in zarr format, we need zarr and xarray libraries to access the data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "import numpy as np\n", - "import xarray as xr\n", - "import zarr\n", - "sys.path.append(os.path.abspath('../'))\n", - "from scripts.xarray_iris_coord_system import XarrayIrisCoordSystem as xics\n", - "xi = xics()\n", - "xr.set_options(display_style='text') # Work around for AML bug that won't display HTML output." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.2 Set up authentication for the Azure blob store\n", - "\n", - "The data for this course is held online in an Azure Blob Storage Service. To access this we use a SAS (shared access signature). You should have been given the credentials for this service before the course, but if not please ask your instructor. We use the getpass module here to avoid putting the token into the public domain. Run the cell below and in the box enter your SAS and press return. This will store the password in the variable SAS." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import getpass\n", - "# SAS WITHOUT leading '?'\n", - "SAS = getpass.getpass()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We now use the Zarr library to connect to this storage. This is a little like opening a file on a local file system but works without downloading the data. This makes use of the Azure Blob Storage service. The zarr.ABStore method returns a zarr.storage.ABSStore object which we can now use to access the Zarr data in the same way we would use a local file. If you have a Zarr file on a local file system you could skip this step and instead just use the path to the Zarr data below when opening the dataset." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "store = zarr.ABSStore(container='metoffice-20cr-ds', prefix='monthly/', account_name=\"metdatasa\", blob_service_kwargs={\"sas_token\":SAS})\n", - "type(store)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.3 Read monthly data\n", - "A Dataset consists of coordinates and data variables. Let's use the xarray's **open_zarr()** method to read all our zarr data into a dataset object and display it's metadata" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# use the open_zarr() method to read in the whole dataset metadata\n", - "dataset = xr.open_zarr(store)\n", - "# print out the metadata\n", - "dataset" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: The dataset lists coordinates and data variables.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "We can also access and print list of all the variables in our dataset" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# display all the variables in our dataset\n", - "dataset.data_vars" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2. Retrieve single (or list of) variables" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 2.1 Read mean air temperature at 2 m \n", - "Access and print just a single variable i.e minumum air temperature at 2m\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: The DataArrays in our dataset can be accessed either as attributes or indexed by name\n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Access the variable by indexing it with its name\n", - "t2m_mean = dataset['air_temperature_mean']\n", - "# print the metadata\n", - "t2m_mean" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Access the variable like an attribute\n", - "t2m_mean = dataset.air_temperature_mean\n", - "# print the metadata\n", - "t2m_mean" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 2.2 Read list of variables \n", - "We can also create a smaller dataset containing a subset of our variables" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# creating a list containing a subset of our variables \n", - "varlist = ['relative_humidity_mean',\n", - " 'relative_humidity_at_pressure_mean',\n", - " 'specific_humidity',\n", - " 'surface_temperature'\n", - " ]\n", - "\n", - "# extracting the list of variables from dataset\n", - "mini_ds = dataset[varlist]\n", - "\n", - "# print the metadata\n", - "mini_ds" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Task:
      \n", - "
    • Access \"cloud_area_fraction\" using both index and attribute method in the cell below and save it in varaible named **caf**
    • \n", - "
    • Create a dataset **pres_ds** containing all the pressure variables, (hint: use for loop)
    • \n", - "
    \n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Retrieve \"cloud_area_fraction\"\n", - "caf = dataset['cloud_area_fraction']\n", - "# print the metadata\n", - "caf" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Retrieve all the pressure variables\n", - "pres_vars = [name for name in dataset.data_vars if 'pressure' in name]\n", - "pres_ds = dataset[pres_vars]\n", - "pres_ds" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 3. Convert datasets to iris cube" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 3.1 Convert a variable to an Iris Cube\n", - "We now convert the minimum air temperature variable that we accessed in section 2.1 into iris cube. This can be done simply using the method **DataArray.to_iris()**.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Use the method to_iris() to convert the xarray data array into an iris cube\n", - "cube_t2m_mean = t2m_mean.to_iris()\n", - "cube_t2m_mean" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Task 3.2 Convert whole Dataset to an Iris Cubelist\n", - "Instead of converting all variables one by one into iris cube one by one, we can convert the whole dataset (or a subset of dataset) into an iris cubelist" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: This is not as simple as done for single variable above but it is straightforward with the dataset.apply() method, obviousely will take a bit longer to complete!\n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# first import the Iris library\n", - "import iris" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# create an empty list to hold the iris cubes\n", - "cubelist = iris.cube.CubeList([])\n", - "\n", - "# use the DataSet.apply() to convert the dataset to Iris Cublelist\n", - "dataset.apply(lambda da: cubelist.append(xi.to_iris(da)))\n", - "\n", - "# print out the cubelist\n", - "cubelist" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Note: By clicking on any variable above, you can see its dimension coordinates and matadata\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Task:
      \n", - "
    • convert caf variable into iris cube **caf_cube**
    • \n", - "
    • create a cube list containing pressure variables only
    • \n", - "
    • Can you note the difference between cube and cubelist?
    • \n", - "
    \n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "## convert caf into iris cube\n", - "caf_cube = xi.to_iris(caf)\n", - "caf_cube" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "## convert pressure dataset into iris cube list\n", - "pres_cubelist = iris.cube.CubeList([])\n", - "pres_ds.apply(lambda da: pres_cubelist.append(xi.to_iris(da)))\n", - "\n", - "pres_cubelist" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 4. Explore cube attributes and coordinates" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 4.1 Accessing cube from cubelist\n", - "Now that we have our variables in cubelist we can extract any varaible using the variable name. For instance the following code indices for **precipitation_flux** variable." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# lets load and print the Precipitation Flux variable\n", - "precipitation_cube = cubelist.extract_strict('precipitation_flux')\n", - "precipitation_cube" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: We can see that we have time, grid_latitude and grig_longitude dimensions, and a cell method of mean: time (1 hour) which means that the cube contains monthly mean Precipitation Flux data.\n", - "
    \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 4.2 Cube attributes\n", - "We can explore the cube information further" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we can print its shape\n", - "precipitation_cube.shape" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we can print its dimensions\n", - "precipitation_cube.ndim" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we can print all of the data values (takes a bit of time as it is a large dataset!)\n", - "precipitation_cube.data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# We can also print the maximum, minimum and mean value in data\n", - "print('Maximum value: ', precipitation_cube.data.max())\n", - "print('Minimum value: ', precipitation_cube.data.min())\n", - "print('Mean value: ', precipitation_cube.data.mean())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we can print cube's name\n", - "precipitation_cube.name()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we can print the unit of data\n", - "precipitation_cube.units" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we can also print cube's general attributes\n", - "precipitation_cube.attributes" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 4.3 Rename the cube\n", - "Rename the precipitation_flux cube" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: The name, standard_name, long_name and to an extent var_name are all attributes to describe the phenomenon that the cube represents.\n", - " \n", - "standard_name is restricted to be a CF standard name (see the CF standard name table). \n", - "\n", - "If there is not a suitable CF standard name, cube.standard_name is set to None and the long_name is used instead. \n", - "long_name is less restrictive and can be set to be any string.\n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(precipitation_cube.standard_name)\n", - "print(precipitation_cube.long_name)\n", - "print(precipitation_cube.var_name)\n", - "print(precipitation_cube.name())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# changing the cube name to 'pflx' using \"rename\" method\n", - "precipitation_cube.rename(\"pflx\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(precipitation_cube.standard_name)\n", - "print(precipitation_cube.long_name)\n", - "print(precipitation_cube.var_name)\n", - "print(precipitation_cube.name())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We see that standard_name and var_name are not set to be a non CF standard name, they are changed to None and long_name is renamed as pflx instead. The cube.name() method first tries standard_name, then ‘long_name’, then ‘var_name’, then the STASH attribute before falling back to the value of default (which itself defaults to ‘unknown’).\n", - "\n", - "We can also rename the specific name of the cube. Suppose if we only want to change standard_name." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "precipitation_cube.standard_name = 'precipitation_flux'" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(precipitation_cube.standard_name)\n", - "print(precipitation_cube.long_name)\n", - "print(precipitation_cube.var_name)\n", - "print(precipitation_cube.name())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Similarly, we can change long_name, var_name, and name without using rename method" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 4.3 Change the cube units\n", - "Change precipitation_cube units from kg m-2 s-1 to kg m-2 day-1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: The units attribute on a cube tells us the units of the numbers held in the data array. To convert to 'kg m-2 day-1', we could just multiply the raw data by 86400 seconds, but a clearer way is to use the convert_units() method with the name of the units we want to convert the data into. It will automatically update the data array.\n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# inspect the current unit and maximum data value\n", - "print(precipitation_cube.units)\n", - "print(precipitation_cube.data.max())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# convert the units to 'mm day-1' using convert_units method\n", - "precipitation_cube.convert_units('kg m-2 day-1')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# inspect the current unit and maximum data value after the conversion \n", - "print(precipitation_cube.units)\n", - "print(precipitation_cube.data.max())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 4.4 Add or remove the attributes\n", - "In section 4.2 we see how to access the cube attributes. In this section we will try to add or remove the attributes \n", - "\n", - "Let's try to add new attribute to the precipitation_flux. \n", - "We want to keep the information of original units of the cube. Best way is to add this information in the attribute.\n", - "Define the new attribute as a key value pair and we can add the attribute using **update** method." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# defining new attribute\n", - "new_attr = {'original_units':'kg m-2 s-1'}" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# List the attibutes\n", - "precipitation_cube.attributes" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# add new attribute using .update() method\n", - "precipitation_cube.attributes.update(new_attr)\n", - "\n", - "# now printing the attributes list to see if new attribute has updated\n", - "precipitation_cube.attributes" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "So, we got 'original_units' in attributes list. \n", - "\n", - "We can also delete any specific attribute. For example, in our precipitation_cube attributes list, we do not need 'source' and we can think of deleting it. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "del precipitation_cube.attributes['source']\n", - "precipitation_cube.attributes" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 4.5 Accessing cube coordinates\n", - "Access cube's coordinates and explore coordinates attribute" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: \n", - "
      \n", - "
    • Cubes need coordinate information to help us describe the underlying phenomenon. Typically a cube's coordinates are accessed with the coords or coord methods. The latter must return exactly one coordinate for the given parameter filters, where the former returns a list of matching coordinates.
    • \n", - "
    • The coordinate interface is very similar to that of a cube. The attributes that exist on both cubes and coordinates are: standard_name, long_name, var_name, units, attributes and shape.
    • \n", - "
    • Coordinate does not have data, instead it has points and bounds (bounds may be None), so we can access the actual point data
    • \n", - "
    \n", - "\n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# let's print out all cube's coordinates\n", - "print([coord.name() for coord in precipitation_cube.coords()])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# let's access the 'grid_latitude' coordinate and print out the last 10 values\n", - "grid_latitude = precipitation_cube.coord('grid_latitude')\n", - "grid_latitude" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# print the maximum and minimum value of 'grid_latitude' coordinate\n", - "print(grid_latitude.points.max())\n", - "print(grid_latitude.points.min())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Task:
      \n", - "
    • Inspect the following attributes of caf_cube you created in previous task
    • \n", - "
        \n", - "
      • name (standard_name)
      • \n", - "
      • Number of dimensions (ndim)
      • \n", - "
      • units
      • \n", - "
      • mean of data
      • \n", - "
      \n", - "
    • Print all the coordinates of caf_cube, (hint: use for loop)
    • \n", - "
    • Explore attributes of \"grid_latitude\"
    • \n", - "
        \n", - "
      • name (standard_name)
      • \n", - "
      • shape
      • \n", - "
      • units
      • \n", - "
      \n", - " \n", - " \n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "## Inspect attributes \n", - "print(caf_cube.standard_name)\n", - "print(caf_cube.ndim)\n", - "print(caf_cube.units)\n", - "print(caf_cube.data.mean())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "## Inspect coordinates\n", - "print([coord.name() for coord in caf_cube.coords()])\n", - "\n", - "lat = caf_cube.coord('grid_latitude')\n", - "\n", - "print(lat.standard_name)\n", - "print(lat.shape)\n", - "print(lat.units)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 5. Exercise\n", - "\n", - "In this exercise we will explore the variables and attributes of hourly data." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 1: Load hourly data\n", - "Load hourly data into xarrays and display all variables\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "store = zarr.ABSStore(container='metoffice-20cr-ds', prefix='hourly/', account_name=\"metdatasa\", blob_service_kwargs={\"sas_token\":SAS})\n", - "type(store)\n", - "\n", - "dataset = xr.open_zarr(store)\n", - "# print out the metadata\n", - "dataset" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 2: Convert to iris cublist\n", - "Convert the dataset into iris cublist and display the cubelist\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "cubelist = iris.cube.CubeList([])\n", - "dataset.apply(lambda da: cubelist.append(xi.to_iris(da)))\n", - "\n", - "cubelist" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 3: Extract variable\n", - "Extract x_wind variable from cubelist and display the cube" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "xwind = cubelist.extract_strict('x_wind')\n", - "xwind" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 4: Explore cube attributes \n", - "Using the Iris cube in previous excercise explore its attributes as follow:\n", - "- print out the number of dimensions\n", - "- print out its shape\n", - "- print out its coordinates names\n", - "- print out the maximum and minimum values of latitude and longitude\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "xwind.ndim" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "xwind.shape" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "coords = [coord.name() for coord in xwind.coords()]\n", - "coords" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print('latitude: [', xwind.coord('grid_latitude').points.min(), ', ', xwind.coord('grid_latitude').points.max(), ']')\n", - "print('longitude: [', xwind.coord('grid_longitude').points.min(), ', ', xwind.coord('grid_longitude').points.max(), ']')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 5: Change units and add the original units to attributes list \n", - "\n", - "- change the units of x_wind to km/hr\n", - "- add the original units to the attributes list\n", - "- print out the attributes to see if new attribtue has added successfully\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "orig_units = xwind.units\n", - "print('original units: ', orig_units)\n", - "\n", - "# Changing the units to km/hr\n", - "xwind.convert_units('km h-1')\n", - "\n", - "print('New units: ', xwind.units)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "new_attr = {'original_units': orig_units}\n", - "\n", - "xwind.attributes.update(new_attr)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "xwind.attributes" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Summary
    \n", - " In this session we learned how:
    \n", - "
      \n", - "
    • to load data from a zarr database into xarray dataset and explore its metadata.
    • \n", - "
    • to convert xarray dataset into iris cube and explore its metadata
    • \n", - "
    • to further explore iris cube's attributes through simple operations
    • \n", - "
    \n", - "\n", - "
    \n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cssp37", - "language": "python", - "name": "cssp37" - }, - "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.7.8" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_2_data_preparation.ipynb b/notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_2_data_preparation.ipynb deleted file mode 100644 index fce7fc9..0000000 --- a/notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_2_data_preparation.ipynb +++ /dev/null @@ -1,1285 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "# Tutorial 2: Data Preparation and visualisation\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Learning Objectives:\n", - "\n", - "In this session we will learn: \n", - "1. How to perform further cube operations\n", - "2. How to prepare data for analysis\n", - "4. How to visualise data " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Contents\n", - "\n", - "1. [Constraint and cube extraction](#extract)\n", - "2. [Basic cube calculations](#calc)\n", - "3. [Time series and spatial plots](#plots)\n", - "4. [Saving the cube](#save)\n", - "5. [Exercises](#exercise)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Prerequisites
    \n", - "- Basic programming skills in python
    \n", - "- Familiarity with python libraries Iris, Numpy and Matplotlib
    \n", - "- Basic understanding of climate data
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1. Constraint and cube extraction" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.1 Import libraries.\n", - "Import the necessary libraries. Current datasets are in zarr format, we need zarr and xarray libraries to access the data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import xarray as xr\n", - "import zarr\n", - "import iris\n", - "import os\n", - "import sys\n", - "sys.path.append(os.path.abspath('../'))\n", - "from scripts.xarray_iris_coord_system import XarrayIrisCoordSystem as xics\n", - "xi = xics()\n", - "xr.set_options(display_style='text') # Work around for AML bug that won't display HTML output." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.2 Set up authentication for the Azure blob store\n", - "\n", - "The data for this course is held online in an Azure Blob Storage Service. To access this we use a SAS (shared access signature). You should have been given the credentials for this service before the course, but if not please ask your instructor. We use the getpass module here to avoid putting the token into the public domain. Run the cell below and in the box enter your SAS and press return. This will store the password in the variable SAS." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import getpass\n", - "# SAS WITHOUT leading '?'\n", - "SAS = getpass.getpass()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "store = zarr.ABSStore(container='metoffice-20cr-ds', prefix='monthly/', account_name=\"metdatasa\", \n", - " blob_service_kwargs={\"sas_token\":SAS})\n", - "type(store)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.3 Read monthly data\n", - "A Dataset consists of coordinates and data variables. Let's use the xarray's **open_zarr()** method to read all our zarr data into a dataset object and display it's metadata" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# use the open_zarr() method to read in the whole dataset metadata\n", - "dataset = xr.open_zarr(store)\n", - "# print out the metadata\n", - "dataset" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Convert dataset into iris cubelist" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# create an empty list to hold the iris cubes\n", - "cubelist = iris.cube.CubeList([])\n", - "# use the DataSet.apply() to convert the dataset to Iris Cublelist\n", - "dataset.apply(lambda da: cubelist.append(xi.to_iris(da)))\n", - "# print out the cubelist\n", - "cubelist" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The cubelist printed above holds all of the data from the Zarr file in a list. To see more detail on each of the cubes in the list click on it. That shows a table with information about the name and units of the cube, its shape and coordinates.\n", - "\n", - "We will see in the next section how to obtain a single cube for use in our analysis and visualisation." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.4 Indexing the cube\n", - "**AIM:** Extract the ***cloud_area_fraction*** data and index it by a subset of latitudes and longitudes values" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "
    \n", - "Note: Cubes can be indexed in a similar manner to that of NumPy arrays. The result of indexing a cube is always a copy of the cube.\n", - " \n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# extract the variale from cubelist\n", - "caf = cubelist.extract_strict('cloud_area_fraction')\n", - "caf" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# subsetting the lat/lon values by indexing the first 10 values\n", - "subset_caf = caf[..., :10, :10]\n", - "subset_caf" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# subseting the cube with 50th to 99th lat/lon values at time index 10\n", - "subset_caf = caf[10, 50:100, 50:100]\n", - "subset_caf" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: The extract above returns a 2 dimensional cube with latitude/longitude at a single time. Note that time is now a scalar (a single time: 1851-11-16 00:00:00)\n", - " \n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Extracting first 10 elements from time dimension\n", - "subset_caf = caf[:10]\n", - "subset_caf" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.5 Time constraint\n", - "**AIM:** Use constraint and extract methods to subset a cube or cubelist.\n", - "\n", - "The monthly data ranges from 1850 to 2000. In some cases we might not need all the time series and we might only be interested in 50 years 1950 - 2000.\n", - "In such cases, we can extract cube creating a time constraint. \n", - "Let's extract \"air_pressure_at_sea_level\" cube, extract the cube containing data from 1950 to 2000 using time constraint." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: We've already seen above the extract_strict method to extract specific cube from cubelist. We can also apply constraints to a single cube (or a CubeList) using the respective constraint and extract methods.\n", - " \n", - "Iris's constraint mechanism provides a powerful way to filter a subset of data from a larger collection. The Constraint constructor takes arbitrary keywords to constrain coordinate values.\n", - " \n", - "extract_strict returns a single cube while extract methods returns a cubelist. If you use extract_strict and more or less than 1 cube matches then it is an error. \n", - " \n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Extracting air pressure at sea level cube from cublist \n", - "air_pres = cubelist.extract_strict('air_pressure_at_sea_level')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Extracting from year 1950 to 2000\n", - "start_time = 1950\n", - "end_time = 2000\n", - "time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", - "subcube = air_pres.extract(time_constraint)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To check if we have got the right cube, we can print start data and end date of subcube" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "tcoord = subcube.coord('time')\n", - "units = tcoord.units\n", - "tdata = [units.num2date(point) for point in tcoord.points]\n", - "print('Start time: ',tdata[0])\n", - "print('End time: ',tdata[-1])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: It is common to want to build a constraint for time.\n", - "This can be achieved by comparing cells containing datetimes\n", - "\n", - "There are a few different approaches for producing time constraints in Iris. We focus here on one approach for constraining on time in Iris.\n", - "\n", - "This approach allows us to access individual components of cell datetime objects and run comparisons on those.\n", - " \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Similar to constraining years, we can also constrain months and days\n", - "\n", - "Consider a case where we want to get only a few months, like March, April and May, from our subcube" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# extracting month june, july and august from the list of years\n", - "month_constraint = iris.Constraint(time=lambda cell: cell.point.month in (3,4,5))\n", - "subcube.extract(month_constraint)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.6 Extract region.\n", - "\n", - "To make your analysis faster and easier, you can extract a smaller part of the model domain. In these examples we will work with Shanghai, but you can choose any region you want. \n", - "\n", - "Note: The original model data is on a rotated pole grid system, as shown in the diagrams below. The x and y coordinates are not true latitude and longitude so to extract a latitude-longitude box, we use the *extract_rot_cube()* function to do this. It works by first calculating the true latitude and longitue of each grid cell and uses these to select which are in the area of interest." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# let's first print the values of lat/lon before extracting\n", - "print('latitude: [', air_pres.coord('grid_latitude').points.min(), ', ', \n", - " air_pres.coord('grid_latitude').points.max(), ']')\n", - "print('longitude: [', air_pres.coord('grid_longitude').points.min(), ', ', \n", - " air_pres.coord('grid_longitude').points.max(), ']')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's try to extract Shanghai region using **extract_rot_cube**.\n", - "\n", - "**extract_rot_cube** takes the latitude and longitude of the region of interest and returns a smaller cube with the extracted region of rotated pole coordinates. \n", - "\n", - "First define the lat lon of Shanghai region:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "min_lat=29.0\n", - "max_lat=32.0\n", - "min_lon=118.0\n", - "max_lon=123.0" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# load extract_rot_cube from catnip\n", - "from catnip.preparation import extract_rot_cube\n", - "ext_cube = extract_rot_cube(air_pres, min_lat, min_lon, max_lat, max_lon)\n", - "ext_cube" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we can see that the min/max boundaries now changed\n", - "print('latitude: [', ext_cube.coord('grid_latitude').points.min(), ', ', \n", - " ext_cube.coord('grid_latitude').points.max(), ']')\n", - "print('longitude: [', ext_cube.coord('grid_longitude').points.min(), ', ', \n", - " ext_cube.coord('grid_longitude').points.max(), ']')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.7 Constraint on cell methods and attributes\n", - "\n", - "In our cubelist, we can see that we have four cubes named air_temperature: Minimum, Maximum and two Means (one with pressure level).\n", - "Let's try to extract air temperature and see what we get.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "air_temp = cubelist.extract('air_temperature')\n", - "air_temp" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In order to get only one cube i.e. the time mean at the surface and not on the pressure levels, we need to constrain using the cell method. A [cell_method](https://cfconventions.org/Data/cf-conventions/cf-conventions-1.7/build/ch07s03.html) is a piece of metadata which describes additional characteristics of a field. Let try to create a constraint and use it to extract the desired cube." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# constrain for the cube that does not have 'pressure' in its coordinate list\n", - "cube_cons_surf = iris.Constraint(cube_func=lambda c: 'pressure' not in [coord.name() for coord in c.coords()])\n", - "# also constrain to be only mean temperature \n", - "cube_cons_mean = iris.Constraint(cube_func=lambda c: (len(c.cell_methods) > 0) and \n", - " (c.cell_methods[0].method == 'mean'))\n", - "# now apply the above constrains\n", - "air_temp_mean = air_temp.extract_strict(cube_cons_surf & cube_cons_mean)\n", - "air_temp_mean " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we got desired cube. Now, if we look into minimum and maximum cubes, that does not contains cell method, instead, information lies in their respective attributes. \n", - "\n", - "We can extract, for example minimum cube, by constraining the attributes." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "min_cons = iris.Constraint(cube_func=lambda c: ('ukmo__process_flags' in c.attributes) and \n", - " (c.attributes['ukmo__process_flags'][0].split(' ')[0] == 'Minimum'))\n", - "air_temp_min = air_temp.extract_strict(min_cons)\n", - "air_temp_min " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Task:
      \n", - "
    • Extract from cubelist relative humidity cube: year: 1900-2000, months: May-September Cell method: Mean (4 hours) \n", - "\n", - " \n", - "
    \n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# First extracting relative_humidity cubes from cublist \n", - "rel_hum = cubelist.extract('relative_humidity')\n", - "rel_hum" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Next constrain for the cube with mean(4 hour) as its cell method value\n", - "# This the cube that has 'pressure' in its coordinate list i.e. the first one\n", - "cons_pressure = iris.Constraint(cube_func=lambda c: 'pressure' in [coord.name() for coord in c.coords()])\n", - "cons_pressure_rel_hum = rel_hum.extract_strict(cons_pressure)\n", - "cons_pressure_rel_hum" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Now that we have the right cube let's constraint by time\n", - "start_time = 1900\n", - "end_time = 2000\n", - "# year constraint\n", - "year_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", - "\n", - "# extracting months May-September\n", - "month_constraint = iris.Constraint(time=lambda cell: cell.point.month in (5,6,7,8,9))\n", - "\n", - "time_constraint_rel_hum_subcube = cons_pressure_rel_hum.extract(year_constraint&month_constraint)\n", - "time_constraint_rel_hum_subcube" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we can print the time coordinate values to be sure\n", - "tcoord = time_constraint_rel_hum_subcube.coord('time')\n", - "units = tcoord.units\n", - "tdata = [units.num2date(point) for point in tcoord.points]\n", - "print('Start time: ',tdata[0])\n", - "print('End time: ',tdata[-1])\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2. Basic Calculations" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 2.1 Calculating mean, max, min\n", - "In this section we will use **iris.analysis** method to calculate basic mean, min and max values. But before we do this we need to understand two important concepts/techniques that are used in the analysis code to follow:\n", - "1. When we calculate area averages, we need to be able to calculate the area of each grid box. and for this we need to know the boundaries of each grid box. If the longitude and latitude bounds are not defined in the cube we can guess the bounds based on the coordinates point values and that is what the *guess.bounds()* function does in the code below.\n", - "2. Once we have our longitude and latitude boundaries we can use the *iris.analysis.cartography.area_weights* to compute the data as a weighted mean of all grid-boxes. The *area_weights()* function returns an array of area weights, with the same dimensions as the cube where a larger cell has more weight in the average than a smaller one.\n", - "\n", - "Now let's extract the *surface_temperature* and calculate mean over the whole region. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# extract surface_temerature\n", - "sft = cubelist.extract_strict('surface_temperature')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Using the **collapsed** and **analysis** methods over grid_latitude and grid_longitude, we can get the timeseries of mean over the whole domain." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import iris.analysis.cartography\n", - "\n", - "# Since grid_latitude and grid_longitude were both point coordinates we must guess bound positions \n", - "# for them in order to calculate the area of the grid boxes\n", - "sft.coord('grid_latitude').guess_bounds()\n", - "sft.coord('grid_longitude').guess_bounds()\n", - "\n", - "grid_areas = iris.analysis.cartography.area_weights(sft)\n", - "\n", - "# calculating mean using area_weights method\n", - "sft_mean = sft.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN, weights=grid_areas)\n", - "sft_mean" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: The above cube has reduced to only one dimension i.e. \"time\"\n", - "\n", - " \n", - "
    iris.analysis provides a range of statistical methods, see [iris.analysis dcumentation](https://scitools.org.uk/iris/docs/v1.9.0/html/iris/iris/analysis.html)\n", - " \n", - "
    Collapse method can be applied to one, more or all the dimensions.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 2.2 Basic arithmetic operations\n", - "\n", - "Basic arithmetic operations like addition, subtraction, multiplication, square root, power etc. can be performed on iris cube.\n", - "\n", - "Let's calculate 10m windspeed using **x_wind** and **y_wind** cubes.\n", - "\n", - "In our cubelist, we have two variables with same cell method. We can constraint using coordinates information.\n", - "\n", - "To calculate 10m windspeed we need data which is not on pressure levels." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# extract x_wind and y_wind\n", - "xcons = iris.Constraint(cube_func=lambda c: c.standard_name == 'x_wind' and \n", - " ('pressure' not in [coord.name() for coord in c.coords()]))\n", - "ycons = iris.Constraint(cube_func=lambda c: c.standard_name == 'y_wind' and \n", - " ('pressure' not in [coord.name() for coord in c.coords()]))\n", - "\n", - "u = cubelist.extract_strict(xcons)\n", - "v = cubelist.extract_strict(ycons)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's create a windspeed cube by copying the u cube first" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "windspeed = u.copy()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Calculate windspeed:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "windspeed.data = np.sqrt(u.data**2 + v.data**2)\n", - "windspeed" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We see that cube name is \"x_wind\", that is becuase we copied the u_cube. We can rename it to \"windspeed\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "windspeed.rename(\"wind speed\")\n", - "windspeed" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: When performing arithmetic calculation, consider the units, name and other metadata information. \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 3. Time series and spatial plots" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 3.1 Time series plots\n", - "Using iris quick plot to create time series plots. Let's load the necessary libraries first.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we first need to load libraries for plotting \n", - "import iris.plot as iplt\n", - "import iris.quickplot as qplt\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's plot the timeseries of mean surface temeprature over Shanghai region from 1950 - 2000" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# loading mean air temperature \n", - "sft = cubelist.extract_strict('surface_temperature')\n", - "sft.coord_system()\n", - "sft" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Shanghai region coordinates \n", - "min_lat=29.0\n", - "max_lat=32.0\n", - "min_lon=118.0\n", - "max_lon=123.0\n", - "# load extract_rot_cube from catnip\n", - "from catnip.preparation import extract_rot_cube\n", - "sft_shangai = extract_rot_cube(sft, min_lat, min_lon, max_lat, max_lon)\n", - "sft_shangai" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Now constrain over time\n", - "start_time = 1950\n", - "end_time = 2000\n", - "time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", - "sft_tim = sft_shangai.extract(time_constraint)\n", - "sft_tim" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# collapse the longitude and latitude and calculate mean over the time period\n", - "timeseries = sft_tim.collapsed(['grid_latitude','grid_longitude'], iris.analysis.MEAN)\n", - "timeseries" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Lets plot the timeseries using a standard matplotlib library.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# ploting with matplotlib \n", - "plt.plot(timeseries.data)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We have got the time series values. Now we can plot them using the [**iris quickplot**](https://scitools.org.uk/iris/docs/latest/iris/iris/quickplot.html?highlight=quickplot).[what does this add?]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# plotting with the quickplot \n", - "qplt.plot(timeseries)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: iris.quickplot adds extra automatic labelling: axes are labelled with a coordinate name and units, and the plot title is taken from the cube name. On the other hand using matplotlib.plot we need to add labels and title manually. \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 3.2 Contour plots\n", - "Using iris quick plot to create contour plots\n", - "\n", - "Let's plot the average surface temperature from 1900 to 2000 over Shangai region.\n", - "\n", - "We can collapse 'time' dimension of sft_tim cube to get the spatial mean " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "spatial_mean = sft_tim.collapsed(['time'], iris.analysis.MEAN)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now that we have the mean values we can make a spatial contour plot using the iris quickplot contourf method" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# plot the surface temperature contour at the first timestep \n", - "qplt.contourf(spatial_mean)\n", - "# add some coastlines for context\n", - "plt.gca().coastlines()\n", - "# set the figure size\n", - "plt.gcf().set_size_inches(8,12)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: iris.quickplot also adds the colorbar\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Task:
      \n", - "
    • Plot time series of maximum air temperature from 1900 to 2000 of only summer season (June, July and August)
    • \n", - "
    • Plot contour plot of the maximum air temperature from 1900 to 2000 of only summer season (June, July and August)
    • \n", - "
    \n", - "
    \n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# first extracting the air temperature from cubelist\n", - "air_temp = cubelist.extract('air_temperature')\n", - "\n", - "# define constraint for maximum air temperature\n", - "max_cons = iris.Constraint(cube_func=lambda c: ('ukmo__process_flags' in c.attributes) and \n", - " (c.attributes['ukmo__process_flags'][0].split(' ')[0] == 'Maximum'))\n", - "#air_temp_max = air_temp.extract_strict(max_cons)\n", - "\n", - "# define time constraints\n", - "start_time = 1900\n", - "end_time = 2000\n", - "# year constraint\n", - "year_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", - "\n", - "# extracting only summer season (June, July and August)\n", - "month_constraint = iris.Constraint(time=lambda cell: cell.point.month in (6,7,8))\n", - "\n", - "constraint_air_temp_max = air_temp.extract_strict(max_cons&year_constraint&month_constraint)\n", - "\n", - "# we first need to load libraries for plotting \n", - "import iris.plot as iplt\n", - "import iris.quickplot as qplt\n", - "import matplotlib.pyplot as plt\n", - "\n", - "\n", - "# collapse the longitude and latitude and calculate mean over the time period\n", - "timeseries = constraint_air_temp_max.collapsed(['grid_latitude','grid_longitude'], iris.analysis.MEAN)\n", - "\n", - "# plotting with the quickplot \n", - "qplt.plot(timeseries)\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# collapse 'time' dimension of the cube to get its spatial mean\n", - "spatial_mean = constraint_air_temp_max.collapsed(['time'], iris.analysis.MEAN)\n", - "\n", - "# plot the surface temperature contour at the first timestep \n", - "qplt.contourf(spatial_mean)\n", - "# add some coastlines for context\n", - "plt.gca().coastlines()\n", - "# set the figure size\n", - "plt.gcf().set_size_inches(8,12)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 4. Saving the cube" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 4.1 Save the cube in zarr store\n", - "We can save our cube in zarr store to be used later. \n", - "\n", - "For this purpose, we first need to convert cube into xarray and then save it into zarr store.\n", - "\n", - "Let's save 'spatial_mean' cube from the above section." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# converting cube back to xarray\n", - "sft_mean = xr.DataArray.from_iris(spatial_mean)\n", - "\n", - "# rename the xarray\n", - "sft_mean.rename('surface_temperature_mean')\n", - "\n", - "# checking the chunk size of the xarray\n", - "sft_mean.chunks" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# convert the xarray into dataset\n", - "sft_mean_ds = sft_mean.to_dataset()\n", - "\n", - "# path to where store the zarr data\n", - "zarr_store = f\"{os.environ['HOME']}/zstore\"\n", - "\n", - "# store the dataset to specfied path as zarr data store\n", - "sft_mean_ds.to_zarr(zarr_store, consolidated=True, mode='w')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 5. Exercises" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this exercise we will analyse the mean precipitation rate from 1950 - 2010 over the Shanghai region" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 1: Load monthly data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# first get and store object to access the zarr data\n", - "store = zarr.ABSStore(container='metoffice-20cr-ds', prefix='monthly/', account_name=\"metdatasa\", \n", - " blob_service_kwargs={\"sas_token\":SAS})\n", - "type(store)\n", - "\n", - "# use the open_zarr() method to read in the whole dataset metadata\n", - "dataset = xr.open_zarr(store)\n", - "# print out the metadata\n", - "dataset" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# the dataset list is ok in text format but looks better as cubelist \n", - "# so let's convert the dataset to Iris Cublelist\n", - "\n", - "# create an empty list to hold the iris cubes\n", - "cubelist = iris.cube.CubeList([])\n", - "# use the DataSet.apply() to convert the dataset to Iris Cublelist\n", - "dataset.apply(lambda da: cubelist.append(xi.to_iris(da)))\n", - "# print out the cubelist\n", - "cubelist" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 2: Extract precipitation_flux" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Now let's load the precipitation_flux cube\n", - "precipitation_cube = cubelist.extract_strict('precipitation_flux')\n", - "precipitation_cube" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 3: calculate mean" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import iris.analysis.cartography\n", - "\n", - "# Since grid_latitude and grid_longitude were both point coordinates we must guess bound positions \n", - "# for them in order to calculate the area of the grid boxes\n", - "precipitation_cube.coord('grid_latitude').guess_bounds()\n", - "precipitation_cube.coord('grid_longitude').guess_bounds()\n", - "\n", - "grid_areas = iris.analysis.cartography.area_weights(precipitation_cube)\n", - "\n", - "# calculating mean using area_weights method\n", - "precipitation_mean = precipitation_cube.collapsed(['grid_longitude', 'grid_latitude'], \n", - " iris.analysis.MEAN, weights=grid_areas)\n", - "precipitation_mean" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 4: Plot timeseries" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import iris.quickplot as qplt\n", - "import matplotlib.pyplot as plt\n", - "\n", - "# plotting with the quickplot \n", - "qplt.plot(precipitation_mean)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 5: Spatial plot over Shanghai" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Shanghai region coordinates \n", - "min_lat=29.0\n", - "max_lat=32.0\n", - "min_lon=118.0\n", - "max_lon=123.0\n", - "\n", - "# Use extract_rot_cube from catnip to extract for Shanghai region\n", - "from catnip.preparation import extract_rot_cube\n", - "precipitation_shangai = extract_rot_cube(precipitation_cube, min_lat, min_lon, max_lat, max_lon)\n", - "\n", - "# collapse 'time' dimension of the cube to get its spatial mean\n", - "precipitation_shangai_spatial_mean = precipitation_shangai.collapsed(['time'], iris.analysis.MEAN)\n", - "\n", - "# plot the surface temperature contour at the first timestep \n", - "qplt.contourf(precipitation_shangai_spatial_mean)\n", - "# add some coastlines for context\n", - "plt.gca().coastlines()\n", - "# set the figure size\n", - "plt.gcf().set_size_inches(8,12)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "
    \n", - "Summary
    \n", - " In this session we learned how:
    \n", - "
      \n", - "
    • to prepre sube for analysis
    • \n", - "
    • to perform basic arithmatic operation
    • \n", - "
    • to plot timeseries and contours
    • \n", - "
    • to save data in zarr format
    • \n", - "
    \n", - "\n", - "
    \n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cssp37", - "language": "python", - "name": "cssp37" - }, - "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.7.8" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_3_basic_analysis.ipynb b/notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_3_basic_analysis.ipynb deleted file mode 100644 index 2df853a..0000000 --- a/notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_3_basic_analysis.ipynb +++ /dev/null @@ -1,1561 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "# Tutorial 3: Basic data analysis\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Learning Objectives:\n", - "\n", - "In this session we will learn: \n", - "1. to calculate and visualise annual and monthly means\n", - "2. to calculate and visualise seasonal means\n", - "3. to calculate mean differences (anomalies)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Contents\n", - "\n", - "1. [Calculate annual and monthly mean](#annual)\n", - "2. [Calculate seasonal means](#season)\n", - "3. [Calculating differences (anomalies)](#percent)\n", - "4. [Exercises](#exercise)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Prerequisites
    \n", - "- Basic programming skills in python
    \n", - "- Familiarity with python libraries Iris, Numpy and Matplotlib
    \n", - "- Basic understanding of climate data
    \n", - "- Tutorials 1 and 2\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1. Calculating annual and monthly mean\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1.1 Import libraries \n", - "Import the necessary libraries. Current datasets are in zarr format, we need zarr and xarray libraries to access the data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import xarray as xr\n", - "import zarr\n", - "import iris\n", - "import os\n", - "import sys\n", - "sys.path.append(os.path.abspath('../'))\n", - "from catnip.preparation import extract_rot_cube, add_bounds\n", - "from scripts.xarray_iris_coord_system import XarrayIrisCoordSystem as xics\n", - "xi = xics()\n", - "xr.set_options(display_style='text') # Work around for AML bug that won't display HTML output." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.2 Set up authentication for the Azure blob store\n", - "\n", - "The data for this course is held online in an Azure Blob Storage Service. To access this we use a SAS (shared access signature). You should have been given the credentials for this service before the course, but if not please ask your instructor. We use the getpass module here to avoid putting the token into the public domain. Run the cell below and in the box enter your SAS and press return. This will store the password in the variable SAS." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import getpass\n", - "# SAS WITHOUT leading '?'\n", - "SAS = getpass.getpass()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We now use the Zarr library to connect to this storage. This is a little like opening a file on a local file system but works without downloading the data. This makes use of the Azure Blob Storage service. The zarr.ABStore method returns a zarr.storage.ABSStore object which we can now use to access the Zarr data in the same way we would use a local file. If you have a Zarr file on a local file system you could skip this step and instead just use the path to the Zarr data below when opening the dataset." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "store = zarr.ABSStore(container='metoffice-20cr-ds', prefix='monthly/', account_name=\"metdatasa\", blob_service_kwargs={\"sas_token\":SAS})\n", - "type(store)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.3 Read monthly data\n", - "A Dataset consists of coordinates and data variables. Let's use the xarray's **open_zarr()** method to read all our zarr data into a dataset object and display it's metadata." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# use the open_zarr() method to read in the whole dataset metadata\n", - "dataset = xr.open_zarr(store)\n", - "# print out the metadata\n", - "dataset" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Convert dataset into iris cubelist" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# create an empty list to hold the iris cubes\n", - "cubelist = iris.cube.CubeList([])\n", - "\n", - "# use the DataSet.apply() to convert the dataset to Iris Cublelist\n", - "dataset.apply(lambda da: cubelist.append(xi.to_iris(da)))\n", - "\n", - "# print out the cubelist.\n", - "cubelist" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.4 Calculating annual mean, maximum and minimum over an area\n", - "\n", - "Here we calculate annual mean, maximum and minimum air_temperature over the Shanghai region from 1981 to 2010. \n", - "\n", - "We will first need to extract the required variables, extract the Shanghai region and constrain by time period. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# extract air_temperature\n", - "air_temp = cubelist.extract('air_temperature')\n", - "\n", - "# extracting maximum air temperature\n", - "cons = iris.Constraint(cube_func=lambda c: ('ukmo__process_flags' in c.attributes) and (c.attributes['ukmo__process_flags'][0].split(' ')[0] == 'Maximum'))\n", - "air_temp_max = air_temp.extract_strict(cons)\n", - "\n", - "# extracting mainimum air temperature\n", - "cons = iris.Constraint(cube_func=lambda c: ('ukmo__process_flags' in c.attributes) and (c.attributes['ukmo__process_flags'][0].split(' ')[0] == 'Minimum'))\n", - "air_temp_min = air_temp.extract_strict(cons)\n", - "\n", - "# extracting mean air temperature\n", - "cons = iris.Constraint(cube_func=lambda c: (len(c.cell_methods) > 0) and (c.cell_methods[0].method == 'mean') and c.cell_methods[0].intervals[0] == '1 hour')\n", - "air_temp_mean = air_temp.extract_strict(cons)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# defining Shangai region coords\n", - "min_lat=29.0\n", - "max_lat=32.0\n", - "min_lon=118.0\n", - "max_lon=123.0\n", - "\n", - "\n", - "# extract data for the the Shanghai region using extract_rot_cube() function\n", - "max_cube = extract_rot_cube(air_temp_max, min_lat, min_lon, max_lat, max_lon)\n", - "min_cube = extract_rot_cube(air_temp_min, min_lat, min_lon, max_lat, max_lon)\n", - "mean_cube = extract_rot_cube(air_temp_mean, min_lat, min_lon, max_lat, max_lon)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# print out the mean cube\n", - "mean_cube" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# define start and end year for our time constraint\n", - "start_time = 1981\n", - "end_time = 2010\n", - "\n", - "# define the time constraint\n", - "cons = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", - "\n", - "# load the data into cubes applying the time constraint\n", - "max_cube = max_cube.extract(cons)\n", - "min_cube = min_cube.extract(cons)\n", - "mean_cube = mean_cube.extract(cons)\n", - "\n", - "# printing out the mean cube to see the change in the shape of time dimension\n", - "mean_cube" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note:The CATNIP library function preparation.add_time_coord_cats adds a range of numeric coordinate categorisations to the cube. For more details see the documentation\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We have got required cubes. Now we can add categorical coordinates to such as *year* to the time dimension in our cubes using the CATNIP **preparation.add_time_coord_cats** function." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# load CATNIP's add_time_coord_cats method\n", - "from catnip.preparation import add_time_coord_cats\n", - "\n", - "# Add other dimension coordinates\n", - "max_cube = add_time_coord_cats(max_cube)\n", - "min_cube = add_time_coord_cats(min_cube)\n", - "mean_cube = add_time_coord_cats(mean_cube)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Print the *max_cube* and inspect the categorical coordinates that have been added to the time coordinate of our cube." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# printing the max_cube. Note the addtional coordinates under the Auxiliary coordinates\n", - "max_cube" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can see that **add_time_coord_cats** has added a few auxiliary coordinates including the *year* coordinate to the *time* dimension.\n", - "\n", - "Now we can calculate maximum, minimum and mean values over the *year* coordinate using **aggregated_by** method." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Calculate yearly max, min and mean values\n", - "yearly_max = max_cube.aggregated_by(['year'], iris.analysis.MAX)\n", - "yearly_min = min_cube.aggregated_by(['year'], iris.analysis.MIN)\n", - "yearly_mean = mean_cube.aggregated_by(['year'], iris.analysis.MEAN)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Collapse longitude and latitude to get a timeseries\n", - "yearly_max = yearly_max.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MAX)\n", - "yearly_min = yearly_min.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MIN)\n", - "yearly_mean = yearly_mean.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN)\n", - "\n", - "# The resulting cube will be time series only\n", - "yearly_mean" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Print the *year* coordinate of max cube to see if we have the correct years for our constraint time period." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(yearly_max.coord('year').points)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.5 Calculating mean annual cycle\n", - "\n", - "We can calculate the mean annual cycle for precipitation_flux data over the Shanghai region for 1981-2010 (30 years) by averaging together each month(so we average all January data to get the mean for January)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# extract the precipitation_flux data into an iris cube from the cubelist\n", - "pflx = cubelist.extract_strict('precipitation_flux')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "min_lat=29.0\n", - "max_lat=32.0\n", - "min_lon=118.0\n", - "max_lon=123.0\n", - "\n", - "# extract data for the the Shanghai region using extract_rot_cube() function\n", - "pflx_ext = extract_rot_cube(pflx, min_lat, min_lon, max_lat, max_lon)\n", - "pflx_ext" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next extracting time constraint" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Extracting time constraint\n", - "start_time = 1981\n", - "end_time = 2010\n", - "cons = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", - "subcube = pflx_ext.extract(cons)\n", - "subcube" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# remove auxiliary coordinates\n", - "subcube.remove_coord(\"latitude\")\n", - "subcube.remove_coord(\"longitude\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "we can use the **add_time_coord_cats** method and add categorical coordinates such as *month* to the *time* dimension to our cube." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# add the time categorical coordinate to cube\n", - "subcube = add_time_coord_cats(subcube)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Create mean annual cycle\n", - "monthly_mean = subcube.aggregated_by(['month_number'], iris.analysis.MEAN)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "monthly_mean = add_bounds(monthly_mean, ['grid_latitude','grid_longitude'])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can calculate the area weight using **iris.analysis.cartography.area_weights** so that we weight the average to account for the fact that the areas of grid cells are variable." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import iris.analysis.cartography\n", - "#calculate the area weight\n", - "grid_areas = iris.analysis.cartography.area_weights(monthly_mean)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Calculate area averaged monthly mean rainfall\n", - "monthly_mean = monthly_mean.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN, weights=grid_areas)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.6 Visualising yearly and monthly means\n", - "\n", - "Let's now visualise yearly mean, max, min data for the air temperature and monthly mean data for the precipitation_flux." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we first need to load libraries for plotting \n", - "import iris.plot as iplt\n", - "import iris.quickplot as qplt\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Visualise yearly max, min and mean data for *air_temperature*." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# plot the timeseries for yearly max, min and mean data\n", - "ax1 = qplt.plot(yearly_max, label = 'Max Temp')\n", - "ax2 = qplt.plot(yearly_min, label = 'Min Temp')\n", - "ax3 = qplt.plot(yearly_mean, label = 'Mean Temp')\n", - "plt.legend(bbox_to_anchor=(1.18, 0.78))\n", - "plt.grid()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's visualise monthly precipitation mean over the thirty years (1980-2010)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "qplt.plot(monthly_mean.coord('month_number'), monthly_mean,color='seagreen')\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Task:
      \n", - "
    • Calculate and visualise the monthly mean over Tibetan region from 1981 to 2010. Create the monthly mean with month names
    • \n", - "
    • Coordinates of Tibetan region: Latitude = [26 36], Longitude = [77 104]
    • \n", - "
    \n", - "
    \n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# extracting mean air temperature\n", - "cons = iris.Constraint(cube_func=lambda c: (len(c.cell_methods) > 0) and (c.cell_methods[0].method == 'mean') and c.cell_methods[0].intervals[0] == '1 hour')\n", - "air_temp_mean = air_temp.extract_strict(cons)\n", - "\n", - "# defining Tibetan region coords\n", - "min_lat=26.0\n", - "max_lat=36.0\n", - "min_lon=77.0\n", - "max_lon=104.0\n", - "\n", - "# Extract the tibetan region\n", - "air_temp_mean = extract_rot_cube(air_temp_mean, min_lat, min_lon, max_lat, max_lon)\n", - "\n", - "# Time extraction\n", - "start_time = 1981\n", - "end_time = 2010\n", - "cons = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", - "air_temp_mean = air_temp_mean.extract(cons)\n", - "\n", - "# remove auxiliary coordinates\n", - "air_temp_mean.remove_coord(\"latitude\")\n", - "air_temp_mean.remove_coord(\"longitude\")\n", - "\n", - "# add the time categorical coordinate to cube\n", - "air_temp_mean = add_time_coord_cats(air_temp_mean)\n", - "\n", - "\n", - "# Calculating monthly mean\n", - "monthly_mean = air_temp_mean.aggregated_by(['month'], iris.analysis.MEAN)\n", - "\n", - "# adding bounds\n", - "monthly_mean = add_bounds(monthly_mean, ['grid_latitude','grid_longitude'])\n", - "\n", - "#calculate the area weight\n", - "grid_areas = iris.analysis.cartography.area_weights(monthly_mean)\n", - "\n", - "# Calculate area averaged monthly mean rainfall\n", - "monthly_mean = monthly_mean.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN, weights=grid_areas)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Visualizing the monthly mean with month names on x-axis\n", - "qplt.plot(monthly_mean.coord('month'), monthly_mean,color='seagreen')\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2. Calculating seasonal means" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 2.1 Calculating seasonal means: djf, mam, jja and son\n", - "\n", - "Calculate mean wind speed and wind direction from 1981 to 2010 for different seasons over the entire domain.\n", - "\n", - "First we need to calculate wind speed and wind direction. In previous tutorial, we calculated the wind speed using hard coded simple arithmetic operations. In this tutorial, we will use catnip's **windspeed** and **wind_direction** methods.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# define constraints for x_wind and y_wind data\n", - "xcons = iris.Constraint(cube_func=lambda c: c.standard_name == 'x_wind' and ('pressure' not in [coord.name() for coord in c.coords()]))\n", - "ycons = iris.Constraint(cube_func=lambda c: c.standard_name == 'y_wind' and ('pressure' not in [coord.name() for coord in c.coords()]))\n", - "\n", - "# apply the constraint and load the x_wind and y_wind data\n", - "u = cubelist.extract_strict(xcons)\n", - "v = cubelist.extract_strict(ycons)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# define time constraint\n", - "start_time = 1981\n", - "end_time = 2010\n", - "cons = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", - "u = u.extract(cons)\n", - "v = v.extract(cons)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can now import and use catnip's **windspeed** and **wind_direction** methods" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# import catnip methods\n", - "from catnip.analysis import windspeed\n", - "from catnip.analysis import wind_direction" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# calculate windspeed and wind direction\n", - "wind_speed_cube = windspeed(u,v)\n", - "wind_direction_cube = wind_direction(u,v)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Add coordinates and extract data for different seasons" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "wind_speed_cube = add_time_coord_cats(wind_speed_cube)\n", - "wind_direction_cube = add_time_coord_cats(wind_direction_cube)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Extract the windspeed data for all four seasons\n", - "wndspd_djf = wind_speed_cube.extract(iris.Constraint(season='djf'))\n", - "wndspd_mam = wind_speed_cube.extract(iris.Constraint(season='mam'))\n", - "wndspd_jja = wind_speed_cube.extract(iris.Constraint(season='jja'))\n", - "wndspd_son = wind_speed_cube.extract(iris.Constraint(season='son'))\n", - "\n", - "# Extract the wind direction data for the all four season \n", - "wnddir_djf = wind_direction_cube.extract(iris.Constraint(season='djf'))\n", - "wnddir_mam = wind_direction_cube.extract(iris.Constraint(season='mam'))\n", - "wnddir_jja = wind_direction_cube.extract(iris.Constraint(season='jja'))\n", - "wnddir_son = wind_direction_cube.extract(iris.Constraint(season='son'))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# lets print out wnddir_son cube to see its chape\n", - "wnddir_son" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Calculate seasonal means" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# calculate the windspeed mean over the seasons\n", - "wspd_djf_mean = wndspd_djf.aggregated_by(['season'], iris.analysis.MEAN)\n", - "wspd_mam_mean = wndspd_mam.aggregated_by(['season'], iris.analysis.MEAN)\n", - "wspd_jja_mean = wndspd_jja.aggregated_by(['season'], iris.analysis.MEAN)\n", - "wspd_son_mean = wndspd_son.aggregated_by(['season'], iris.analysis.MEAN)\n", - "\n", - "# calculate the wind direction mean over the seasons\n", - "wndir_djf_mean = wnddir_djf.aggregated_by(['season'], iris.analysis.MEAN)\n", - "wndir_mam_mean = wnddir_mam.aggregated_by(['season'], iris.analysis.MEAN)\n", - "wndir_jja_mean = wnddir_jja.aggregated_by(['season'], iris.analysis.MEAN)\n", - "wndir_son_mean = wnddir_son.aggregated_by(['season'], iris.analysis.MEAN)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# lets print out wndir_son_mean cube to see its chape\n", - "wndir_son_mean" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can now visualise seasonal means" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we first need to load libraries for plotting \n", - "import iris.plot as iplt\n", - "import iris.quickplot as qplt\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# list of seasonal cubes to loop through\n", - "seasonal_cubes = [wspd_djf_mean, wspd_mam_mean, wspd_jja_mean, wspd_son_mean]\n", - "\n", - "# here we create a list of mean cubes and we will run for loop over it.\n", - "\n", - "# set a figure big enough to hold the subplots\n", - "plt.figure(figsize=(10, 10))\n", - "\n", - "# loop through the seaonal cube list and plot the data\n", - "# len functions returns the length of the list. \n", - "for i in range(len(seasonal_cubes)): \n", - " \n", - " plt.subplot(2, 2, i+1)\n", - " # above line will create the 2 rows and 2 cols of subplots and i indicates the position of subplot. \n", - " # i starts from 0, that is why we increment 1 in it. \n", - " # plot the windspeed at the first timestep \n", - " qplt.contourf(seasonal_cubes[i][0,:,:])\n", - " # add some coastlines for context\n", - " plt.gca().coastlines() \n", - " # get the season name from the coordinate\n", - " season = seasonal_cubes[i].coord('season').points[0]\n", - " # add the name as plot's title\n", - " plt.title('Season: '+ season)\n", - " plt.tight_layout()\n", - " \n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Task:
      \n", - "
    • Calculate and visualise the seasonal mean of surface temperature over Tibatan region from 1981 to 2010.
    • \n", - "
    • Coordinates of Tibetan region: Latitude = [26 36], Longitude = [77 104]
    • \n", - "
    \n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Extract surface temperature\n", - "sft = cubelist.extract_strict('surface_temperature')\n", - "\n", - "# defining Tibetan region coords\n", - "min_lat=26.0\n", - "max_lat=36.0\n", - "min_lon=77.0\n", - "max_lon=104.0\n", - "\n", - "# Extract the tibetan region\n", - "sft = extract_rot_cube(sft, min_lat, min_lon, max_lat, max_lon)\n", - "\n", - "# Extract time\n", - "start_time = 1981\n", - "end_time = 2010\n", - "cons = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", - "sft = sft.extract(cons)\n", - "\n", - "sft = add_time_coord_cats(sft)\n", - "\n", - "# Extract the surface temperature for all four seasons\n", - "sft_djf = sft.extract(iris.Constraint(season='djf'))\n", - "sft_mam = sft.extract(iris.Constraint(season='mam'))\n", - "sft_jja = sft.extract(iris.Constraint(season='jja'))\n", - "sft_son = sft.extract(iris.Constraint(season='son'))\n", - "\n", - "# calculate the mean over the seasons\n", - "sft_djf_mean = sft_djf.aggregated_by(['season'], iris.analysis.MEAN)\n", - "sft_mam_mean = sft_mam.aggregated_by(['season'], iris.analysis.MEAN)\n", - "sft_jja_mean = sft_jja.aggregated_by(['season'], iris.analysis.MEAN)\n", - "sft_son_mean = sft_son.aggregated_by(['season'], iris.analysis.MEAN)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Visualising seasonal means\n", - "# list of seasonal cubes to loop through\n", - "seasonal_cubes = [sft_djf_mean, sft_mam_mean, sft_jja_mean, sft_son_mean]\n", - "\n", - "\n", - "# set a figure big enough to hold the subplots\n", - "plt.figure(figsize=(10, 10))\n", - "\n", - "# loop through the seaonal cube list and plot the data\n", - "for i in range(len(seasonal_cubes)): \n", - " \n", - " plt.subplot(2, 2, i+1)\n", - " # plot the windspeed at the first timestep \n", - " qplt.contourf(seasonal_cubes[i][0,:,:])\n", - " # add some coastlines for context\n", - " plt.gca().coastlines() \n", - " # get the season name from the coordinate\n", - " season = seasonal_cubes[i].coord('season').points[0]\n", - " # add the name as plot's title\n", - " plt.title('Season: '+ season)\n", - " plt.tight_layout()\n", - " \n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can also plot in any other project. Python cartopy library provide us the range of option of ploting in different projection. See the list of option in [cartopy documentation](https://scitools.org.uk/cartopy/docs/latest/crs/projections.html). Lets try the above plot with **PlateCarree** projection." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import cartopy.crs as ccrs\n", - "# list of seasonal cubes to loop through\n", - "seasonal_cubes = [wspd_djf_mean, wspd_mam_mean, wspd_jja_mean, wspd_son_mean]\n", - "\n", - "# set a figure big enough to hold the subplots\n", - "plt.figure(figsize=(10, 10))\n", - "\n", - "# loop through the seaonal cube list and plot the data\n", - "for i in range(len(seasonal_cubes)): \n", - " \n", - " plt.subplot(2, 2, i+1, projection=ccrs.PlateCarree())\n", - " # plot the windspeed at the first timestep \n", - " qplt.contourf(seasonal_cubes[i][0,:,:])\n", - " # add some coastlines for context\n", - " plt.gca().coastlines() \n", - " # get the season name from the coordinate\n", - " season = seasonal_cubes[i].coord('season').points[0]\n", - " # add the name as plot's title\n", - " plt.title('Season: '+ season)\n", - " plt.tight_layout()\n", - " \n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 3. Calculating differences" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 3.1 mean surface temperature diffference in winter season (dec, jan, feb)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can find the difference of mean surface temperature between the past(1851-1880) and recent(1981-2010) 30 years periods.\n", - "\n", - "First, we need to extract out desired data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# extract air_temperature\n", - "sft = cubelist.extract_strict('surface_temperature')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# constraints: two 30 years periods - past and presnet\n", - "past_cons = iris.Constraint(time=lambda cell: 1851 <= cell.point.year <= 1880)\n", - "present_cons = iris.Constraint(time=lambda cell: 1981 <= cell.point.year <= 2010)\n", - "past = sft.extract(past_cons)\n", - "present = sft.extract(present_cons)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# load catnip's add_time_coord_cats method\n", - "from catnip.preparation import add_time_coord_cats\n", - "\n", - "# Add other dimension coordinates\n", - "past = add_time_coord_cats(past)\n", - "present = add_time_coord_cats(present)\n", - "\n", - "# Extract the winter season \n", - "past_djf = past.extract(iris.Constraint(season='djf'))\n", - "present_djf = present.extract(iris.Constraint(season='djf'))\n", - "\n", - "# extract data for Shanghai region\n", - "past_djf = extract_rot_cube(past_djf, min_lat, min_lon, max_lat, max_lon)\n", - "present_djf = extract_rot_cube(present_djf, min_lat, min_lon, max_lat, max_lon)\n", - "\n", - "# calculate 30 year mean of winter season\n", - "past_djf = past_djf.aggregated_by(['season'], iris.analysis.MEAN)\n", - "present_djf = present_djf.aggregated_by(['season'], iris.analysis.MEAN)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We have now got our cubes for different climatological periods. We now calcuate the difference by subtracting the past data form present using **iris.analysis.math.subtract** method." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "djf_diff = iris.analysis.maths.subtract(present_djf, past_djf)\n", - "djf_diff.rename('surface temperature difference: Winter')\n", - "past_djf.rename('surface temperature past climate: Winter 1851-1880 ')\n", - "present_djf.rename('surface temperature present climate: Winter 1981-2010 ')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# add bounds to the cubes \n", - "past_djf = add_bounds(past_djf, ['grid_latitude','grid_longitude'])\n", - "present_djf = add_bounds(present_djf, ['grid_latitude','grid_longitude'])\n", - "djf_diff = add_bounds(djf_diff, ['grid_latitude','grid_longitude'])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "
    \n", - "Note: iris.analysis.math provides a range of mathematical and statistical operations. See the documentation for more information\n", - "\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can now visualise the difference" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# list of our djf cubes and diff cube to loop through\n", - "seasonal_cubes = [present_djf, past_djf, djf_diff]\n", - "plt.figure(figsize=(15, 10))\n", - "# loop through the seaonal cube list and plot the data\n", - "for i in range(len(seasonal_cubes)):\n", - " plt.subplot(2, 2, i+1)\n", - " # plot the windspeed at the first timestep \n", - " if i==2:\n", - " qplt.pcolormesh(seasonal_cubes[i][0,:,:],cmap=plt.cm.get_cmap('Reds'),vmin=0, vmax=2)\n", - " else:\n", - " qplt.pcolormesh(seasonal_cubes[i][0,:,:],vmin=277.5, vmax=289)\n", - " \n", - " # add some coastlines for context\n", - " plt.gca().coastlines() \n", - " # get the season name from the coordinate\n", - " season = seasonal_cubes[i].coord('season').points[0]\n", - " # add the name as plot's title\n", - " plt.title(seasonal_cubes[i].name())\n", - " \n", - " \n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 3.2 Percentage difference in winter precipitaition " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can also calculate the percentage difference. \n", - "\n", - "Let's calculate the change in mean precipitation from a past 30 year period (1851-1880) to the most recent 30 years (1981-2010)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# extract precipitation flux\n", - "pflx = cubelist.extract_strict('precipitation_flux')\n", - "\n", - "# extract the time contraints \n", - "past_cons = iris.Constraint(time=lambda cell: 1851 <= cell.point.year <= 1880)\n", - "present_cons = iris.Constraint(time=lambda cell: 1981 <= cell.point.year <= 2010)\n", - "past = pflx.extract(past_cons)\n", - "present = pflx.extract(present_cons)\n", - "\n", - "# Add other dimension coordinates\n", - "past = add_time_coord_cats(past)\n", - "present = add_time_coord_cats(present)\n", - "\n", - "# Extract the precipitation data for the winter season \n", - "past_djf = past.extract(iris.Constraint(season='djf'))\n", - "present_djf = present.extract(iris.Constraint(season='djf'))\n", - "\n", - "# extract data for Shanghai region\n", - "past_djf = extract_rot_cube(past_djf, min_lat, min_lon, max_lat, max_lon)\n", - "present_djf = extract_rot_cube(present_djf, min_lat, min_lon, max_lat, max_lon)\n", - "\n", - "# calculate the means \n", - "past_djf = past_djf.aggregated_by(['season'], iris.analysis.MEAN)\n", - "present_djf = present_djf.aggregated_by(['season'], iris.analysis.MEAN)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can now calculate the difference using **subtract** function" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "djf_diff = iris.analysis.maths.subtract(present_djf, past_djf)\n", - "djf_diff.rename('precipitation flux difference: Winter')\n", - "past_djf.rename('precipitation flux past climate: Winter 1851-1880 ')\n", - "present_djf.rename('precipitation flux present climate: Winter 1981-2010 ')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# add bounds to the cubes \n", - "past_djf = add_bounds(past_djf, ['grid_latitude','grid_longitude'])\n", - "present_djf = add_bounds(present_djf, ['grid_latitude','grid_longitude'])\n", - "djf_diff = add_bounds(djf_diff, ['grid_latitude','grid_longitude'])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To calcuate the percentage difference, we can use **analysis.maths.multiply** and **iris.analysis.maths.divide** to calculate percentage change" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Find the percentage change\n", - "pcent_change = iris.analysis.maths.multiply(iris.analysis.maths.divide(djf_diff, past_djf), 100)\n", - "\n", - "# remember to change the title and units to reflect the data processing\n", - "pcent_change.rename('precipitation flux percent difference')\n", - "pcent_change.units = '%'" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# using iris plot for better colour saturation!\n", - "import iris.plot as iplt\n", - "\n", - "# list of our winter cubes and the diff cube to loop through for plotting\n", - "seasonal_cubes = [present_djf, past_djf, pcent_change]\n", - "plt.figure(figsize=(15, 10))\n", - "# loop through the seaonal cube list and plot the data\n", - "for i in range(len(seasonal_cubes)):\n", - " plt.subplot(2, 2, i+1)\n", - " # plot the windspeed at the first timestep \n", - " if i==2:\n", - " qplt.pcolormesh(seasonal_cubes[i][0,:,:],cmap=plt.cm.get_cmap('RdBu'))\n", - " else:\n", - " qplt.pcolormesh(seasonal_cubes[i][0,:,:])\n", - " \n", - " # add some coastlines for context\n", - " plt.gca().coastlines() \n", - " # get the season name from the coordinate\n", - " season = seasonal_cubes[i].coord('season').points[0]\n", - " # add the name as plot's title\n", - " plt.title(seasonal_cubes[i].name())\n", - " \n", - " \n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Task:
      \n", - "
    • Calculate mean surface temperature difference over Tibetan region from past 30 years (1851-1880) to present 30 years (1981-2010).\n", - "
    • Coordinates of Tibetan region: Latitude = [26 36], Longitude = [77 104]
    • \n", - "
    \n", - "
    \n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# extract air_temperature\n", - "air_temp = cubelist.extract('air_temperature')\n", - "\n", - "# Extract mean temperature\n", - "cons = iris.Constraint(cube_func=lambda c: (len(c.cell_methods) > 0) and (c.cell_methods[0].method == 'mean') and c.cell_methods[0].intervals[0] == '1 hour')\n", - "atemp = air_temp.extract_strict(cons)\n", - "\n", - "# extract the time contraints \n", - "cons1 = iris.Constraint(time=lambda cell: 1851 <= cell.point.year <= 1880)\n", - "cons2 = iris.Constraint(time=lambda cell: 1981 <= cell.point.year <= 2010)\n", - "past = atemp.extract(cons1)\n", - "present = atemp.extract(cons2)\n", - "\n", - "# Add other dimension coordinates\n", - "past = add_time_coord_cats(past)\n", - "present = add_time_coord_cats(present)\n", - "\n", - "# Add other dimension coordinates\n", - "past = add_time_coord_cats(past)\n", - "present = add_time_coord_cats(present)\n", - "\n", - "# Extract the temperature data for the winter season \n", - "past_djf = past.extract(iris.Constraint(season='djf'))\n", - "present_djf = present.extract(iris.Constraint(season='djf'))\n", - "\n", - "# defining Tibetan region coords\n", - "min_lat=26.0\n", - "max_lat=36.0\n", - "min_lon=77.0\n", - "max_lon=104.0\n", - "\n", - "# extract the tibatan region\n", - "past_djf = extract_rot_cube(past_djf, min_lat, min_lon, max_lat, max_lon)\n", - "present_djf = extract_rot_cube(present_djf, min_lat, min_lon, max_lat, max_lon)\n", - "\n", - "# calculate the means \n", - "past_djf = past_djf.aggregated_by(['season'], iris.analysis.MEAN)\n", - "present_djf = present_djf.aggregated_by(['season'], iris.analysis.MEAN)\n", - "\n", - "# Calculating the difference \n", - "djf_diff = iris.analysis.maths.subtract(present_djf, past_djf)\n", - "djf_diff.rename('Mean temperature difference: Winter')\n", - "past_djf.rename('Mean temperature past climate: Winter 1851-1880 ')\n", - "present_djf.rename('Mean temperature present climate: Winter 1981-2010 ')\n", - "\n", - "# adding bounds\n", - "past_djf = add_bounds(past_djf, ['grid_latitude','grid_longitude'])\n", - "present_djf = add_bounds(present_djf, ['grid_latitude','grid_longitude'])\n", - "djf_diff = add_bounds(djf_diff, ['grid_latitude','grid_longitude'])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# visualizing the results \n", - "\n", - "# using iris plot for better colour saturation!\n", - "import iris.plot as iplt\n", - "\n", - "# list of our winter cubes and the diff cube to loop through for plotting\n", - "seasonal_cubes = [present_djf, past_djf, djf_diff]\n", - "plt.figure(figsize=(15, 10))\n", - "# loop through the seaonal cube list and plot the data\n", - "for i in range(len(seasonal_cubes)):\n", - " plt.subplot(2, 2, i+1)\n", - " qplt.pcolormesh(seasonal_cubes[i][0,:,:])\n", - " # add some coastlines for context\n", - " plt.gca().coastlines() \n", - " # get the season name from the coordinate\n", - " season = seasonal_cubes[i].coord('season').points[0]\n", - " # add the name as plot's title\n", - " plt.title(seasonal_cubes[i].name())\n", - " \n", - " \n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 4. Exercises" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this exercise we will analyse the mean air temperature from past 30 years (1851-1880) to present 30 years (1981-2010), over the Shanghai region, in all four seasons. Visualize past, present and difference in a row." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 1: Load monthly data and constraint time and region" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# extract air_temperature\n", - "air_temp = cubelist.extract('air_temperature')\n", - "\n", - "# Extract mean temperature\n", - "cons = iris.Constraint(cube_func=lambda c: (len(c.cell_methods) > 0) and (c.cell_methods[0].method == 'mean') and c.cell_methods[0].intervals[0] == '1 hour')\n", - "atemp = air_temp.extract_strict(cons)\n", - "\n", - "# extract the time contraints \n", - "cons1 = iris.Constraint(time=lambda cell: 1851 <= cell.point.year <= 1880)\n", - "cons2 = iris.Constraint(time=lambda cell: 1981 <= cell.point.year <= 2010)\n", - "past = atemp.extract(cons1)\n", - "present = atemp.extract(cons2)\n", - "\n", - "# defining Shanghai region coords\n", - "min_lat=29.0\n", - "max_lat=32.0\n", - "min_lon=118.0\n", - "max_lon=123.0\n", - "\n", - "# extract the Shanghai region\n", - "past = extract_rot_cube(past, min_lat, min_lon, max_lat, max_lon)\n", - "present = extract_rot_cube(present, min_lat, min_lon, max_lat, max_lon)\n", - "\n", - "# Add other dimension coordinates\n", - "past = add_time_coord_cats(past)\n", - "present = add_time_coord_cats(present)\n", - "\n", - "\n", - "# add bounds \n", - "past = add_bounds(past, ['grid_latitude','grid_longitude'])\n", - "present = add_bounds(present, ['grid_latitude','grid_longitude'])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 2: Calculate seasonal mean" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Extract the mean temperature data for all four season \n", - "past_djf = past.extract(iris.Constraint(season='djf'))\n", - "present_djf = present.extract(iris.Constraint(season='djf'))\n", - "\n", - "past_mam = past.extract(iris.Constraint(season='mam'))\n", - "present_mam = present.extract(iris.Constraint(season='mam'))\n", - "\n", - "past_jja = past.extract(iris.Constraint(season='jja'))\n", - "present_jja = present.extract(iris.Constraint(season='jja'))\n", - "\n", - "past_son = past.extract(iris.Constraint(season='son'))\n", - "present_son = present.extract(iris.Constraint(season='son'))\n", - "\n", - "# calculate the means \n", - "past_djf = past_djf.aggregated_by(['season'], iris.analysis.MEAN)\n", - "present_djf = present_djf.aggregated_by(['season'], iris.analysis.MEAN)\n", - "\n", - "past_mam = past_mam.aggregated_by(['season'], iris.analysis.MEAN)\n", - "present_mam = present_mam.aggregated_by(['season'], iris.analysis.MEAN)\n", - "\n", - "past_jja = past_jja.aggregated_by(['season'], iris.analysis.MEAN)\n", - "present_jja = present_jja.aggregated_by(['season'], iris.analysis.MEAN)\n", - "\n", - "past_son = past_son.aggregated_by(['season'], iris.analysis.MEAN)\n", - "present_son = present_son.aggregated_by(['season'], iris.analysis.MEAN)\n", - "\n", - "# Calculating the difference and renaming the cubes\n", - "djf_diff = iris.analysis.maths.subtract(present_djf, past_djf)\n", - "djf_diff.rename('Mean temperature difference: DJF')\n", - "past_djf.rename('Mean temperature past climate: DJF')\n", - "present_djf.rename('Mean temperature present climate: DJF')\n", - "\n", - "mam_diff = iris.analysis.maths.subtract(present_mam, past_mam)\n", - "mam_diff.rename('Mean temperature difference: MAM')\n", - "past_mam.rename('Mean temperature past climate: MAM')\n", - "present_mam.rename('Mean temperature present climate: MAM')\n", - "\n", - "jja_diff = iris.analysis.maths.subtract(present_jja, past_jja)\n", - "jja_diff.rename('Mean temperature difference: JJA')\n", - "past_jja.rename('Mean temperature past climate: JJA')\n", - "present_jja.rename('Mean temperature present climate: JJA')\n", - "\n", - "son_diff = iris.analysis.maths.subtract(present_son, past_son)\n", - "son_diff.rename('Mean temperature difference: SON')\n", - "past_son.rename('Mean temperature past climate: SON')\n", - "present_son.rename('Mean temperature present climate: SON')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 3: Visualise the results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# visualizing the results \n", - "\n", - "# using iris plot for better colour saturation!\n", - "import iris.plot as iplt\n", - "\n", - "# list of our winter cubes and the diff cube to loop through for plotting\n", - "seasonal_cubes = [present_djf, past_djf, djf_diff, present_mam, past_mam, mam_diff, present_jja, past_jja, jja_diff, present_son, past_son, son_diff]\n", - "plt.figure(figsize=(15, 15))\n", - "# loop through the seaonal cube list and plot the data\n", - "for i in range(len(seasonal_cubes)):\n", - " plt.subplot(4, 3, i+1)\n", - " qplt.pcolormesh(seasonal_cubes[i][0,:,:])\n", - " # add some coastlines for context\n", - " plt.gca().coastlines() \n", - " # get the season name from the coordinate\n", - " season = seasonal_cubes[i].coord('season').points[0]\n", - " # add the name as plot's title\n", - " plt.title(seasonal_cubes[i].name())\n", - " \n", - " \n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Summary
    \n", - " In this session we learned how:
    \n", - "
      \n", - "
    • to calculate yearly and monthly means
    • \n", - "
    • to calculate seasonal means and differences
    • \n", - "
    • to visualize the results
    • \n", - "
    \n", - "\n", - "
    \n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cssp37", - "language": "python", - "name": "cssp37" - }, - "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.7.8" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_4_advance_analysis.ipynb b/notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_4_advance_analysis.ipynb deleted file mode 100644 index b04e128..0000000 --- a/notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_4_advance_analysis.ipynb +++ /dev/null @@ -1,1201 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "# Tutorial 4: Advanced data analysis\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Learning Objectives:\n", - "\n", - "In this session we will learn: \n", - "1. to calculate frequency of wet days\n", - "2. to calculate percentiles\n", - "3. how to calculate some useful climate extremes statistics" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Contents\n", - "\n", - "1. [Frequency of wet days](#freq)\n", - "2. [Percentiles](#percent)\n", - "3. [Investigating extremes](#extremes)\n", - "4. [Exercises](#exercise)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Prerequisites
    \n", - "- Basic programming skills in python
    \n", - "- Familiarity with python libraries Iris, Numpy and Matplotlib
    \n", - "- Basic understanding of climate data
    \n", - "- Tutorial 1, 2 and 3\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1. Frequency of wet days\n", - "### 1.1 Import libraries\n", - "Import the necessary libraries. Current datasets are in zarr format, we need zarr and xarray libraries to access the data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import xarray as xr\n", - "import zarr\n", - "import iris\n", - "import os\n", - "import sys\n", - "from iris.analysis import Aggregator\n", - "import dask\n", - "dask.config.set(scheduler=dask.get)\n", - "import dask.array as da\n", - "import iris.quickplot as qplt\n", - "import iris.plot as iplt\n", - "import cartopy.crs as ccrs\n", - "import cartopy.feature as cfeature\n", - "import matplotlib.pyplot as plt\n", - "sys.path.append(os.path.abspath('../'))\n", - "from catnip.preparation import extract_rot_cube, add_bounds\n", - "from scripts.xarray_iris_coord_system import XarrayIrisCoordSystem as xics\n", - "xi = xics()\n", - "xr.set_options(display_style='text') # Work around for AML bug that won't display HTML output." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Prerequisites
    \n", - "- Basic programming skills in python
    \n", - "- Familiarity with python libraries Iris, Numpy and Matplotlib
    \n", - "- Basic understanding of climate data
    \n", - "- Tutorials 1, 2 and 3\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.2 Set up authentication for the Azure blob store\n", - "\n", - "The data for this course is held online in an Azure Blob Storage Service. To access this we use a SAS (shared access signature). You should have been given the credentials for this service before the course, but if not please ask your instructor. We use the getpass module here to avoid putting the token into the public domain. Run the cell below and in the box enter your SAS and press return. This will store the password in the variable SAS." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import getpass\n", - "# SAS WITHOUT leading '?'\n", - "SAS = getpass.getpass()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We now use the Zarr library to connect to this storage. This is a little like opening a file on a local file system but works without downloading the data. This makes use of the Azure Blob Storage service. The zarr.ABStore method returns a zarr.storage.ABSStore object which we can now use to access the Zarr data in the same way we would use a local file. If you have a Zarr file on a local file system you could skip this step and instead just use the path to the Zarr data below when opening the dataset." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "store = zarr.ABSStore(container='metoffice-20cr-ds', prefix='daily/', account_name=\"metdatasa\", blob_service_kwargs={\"sas_token\":SAS})\n", - "type(store)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.3 Read daily data\n", - "A Dataset consists of coordinates and data variables. Let's use the xarray's **open_zarr()** method to read all our zarr data into a dataset object and display it's metadata" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# use the open_zarr() method to read in the whole dataset metadata\n", - "dataset = xr.open_zarr(store)\n", - "# print out the metadata\n", - "dataset" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Convert the dataset into an iris cubelist." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from xarray_iris_coord_system import XarrayIrisCoordSystem as xics\n", - "xi = xics()\n", - "# create an empty list to hold the iris cubes\n", - "cubelist = iris.cube.CubeList([])\n", - "\n", - "# use the DataSet.apply() to convert the dataset to Iris Cublelist\n", - "dataset.apply(lambda da: cubelist.append(xi.to_iris(da)))\n", - "\n", - "# print out the cubelist.\n", - "cubelist" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Note: The following sections demonstrate analysis of moderate extremes. The basis of climate extremes analysis is a common set of standard extreme climate indices, defined by the World Climate Research Programme Expert Team on Climate Change Detection and Indices (ETCCDI)\n", - " \n", - "
    There are 27 climate extremes indices, nicely summarised by the Climdex website.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.4 Calculate number of wet days ($\\mathrm{pr} \\geq 1 mm \\;day^{-1}$)\n", - "\n", - "In this section we'll be looking at wet days, a threshold measure giving the count of days when $\\mathrm{pr} \\geq 1 mm \\;day^{-1}$, and R95p, the 95th percentile of precipitation on wet days ($\\mathrm{pr} \\geq 1 mm \\;day^{-1}$) in the 1851-1900 period over the Shanghai region." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Extract the 'precipitation_flux' cube\n", - "pflx = cubelist.extract_strict('precipitation_flux')\n", - "# To avoid warnings when collapsing coordinates and also when plotting, add bounds to all coordinates\n", - "pflx = add_bounds(pflx,['time', 'grid_latitude', 'grid_longitude'])\n", - "# convert units to mm/day (equivalent to 'kg m-2 day-1')\n", - "pflx.convert_units('kg m-2 day-1')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Applying the time and region constraint" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# define time constraint and extract 1851-1900 period\n", - "start_time = 1851\n", - "end_time = 1900\n", - "\n", - "# define the time constraint\n", - "time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", - "\n", - "# laod the data into cubes applying the time constraint\n", - "pflx = pflx.extract(time_constraint)\n", - "\n", - "# extract Shangai region and constain with time\n", - "\n", - "# defining Shangai region coords\n", - "min_lat=29.0\n", - "max_lat=32.0\n", - "min_lon=118.0\n", - "max_lon=123.0\n", - "\n", - "# extract data for the the Shanghai region using extract_rot_cube() function\n", - "pflx = extract_rot_cube(pflx, min_lat, min_lon, max_lat, max_lon)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# now use the iris COUNT aggregator to count the number of days with > 1mm precip\n", - "wetdays = pflx.collapsed('time', iris.analysis.COUNT, function=lambda values: values > 1)\n", - "wetdays.rename('number of wet days (>=1mm/day)')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Find wet days as a percentage of total days\n", - "total_days = len(pflx.coord('time').points)\n", - "pcent_wetdays = (wetdays / total_days) * 100\n", - "\n", - "# renaming the cube name and units\n", - "pcent_wetdays.rename('percentage of wet days (>=1mm/day)')\n", - "pcent_wetdays.units = '%'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, we can plot the number and percentage of wet days" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "fig = plt.figure(figsize=(12, 6))\n", - "fig.suptitle('Number of wet days (1851-1900)', fontsize=16)\n", - "ax1 = fig.add_subplot(1, 2, 1, projection=ccrs.PlateCarree())\n", - "qplt.pcolormesh(wetdays)\n", - "ax1.coastlines()\n", - "ax1 = fig.add_subplot(1, 2, 2, projection=ccrs.PlateCarree())\n", - "qplt.pcolormesh(pcent_wetdays)\n", - "ax1.coastlines()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Task:
      \n", - "
    • Calculate and visualise the percentage difference of wet days from past (1851-1880) to recent (1981-2010) 30 years period.\n", - "
    \n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Extract the 'precipitation_flux' cube\n", - "pflx = cubelist.extract_strict('precipitation_flux')\n", - "# To avoid warnings when collapsing coordinates and also when plotting, add bounds to all coordinates\n", - "pflx = add_bounds(pflx,['time', 'grid_latitude', 'grid_longitude'])\n", - "# convert units to mm/day (equivalent to 'kg m-2 day-1')\n", - "pflx.convert_units('kg m-2 day-1')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# define historical time constraint and extract 1851-1880 period\n", - "start_time = 1851\n", - "end_time = 1880\n", - "\n", - "# define the historical time constraint\n", - "past_time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", - "\n", - "# laod the data into cubes applying the time constraint\n", - "past_pflx = pflx.extract(past_time_constraint)\n", - "\n", - "# define recent time constraint and extract 1981-2010 period\n", - "start_time = 1981\n", - "end_time = 2010\n", - "\n", - "# define the recent time constraint\n", - "recent_time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", - "\n", - "# laod the data into cubes applying the time constraint\n", - "recent_pflx = pflx.extract(recent_time_constraint)\n", - "\n", - "# defining Shangai region coords\n", - "min_lat=29.0\n", - "max_lat=32.0\n", - "min_lon=118.0\n", - "max_lon=123.0\n", - "\n", - "# extract data for the the Shanghai region using extract_rot_cube() function\n", - "past_pflx = extract_rot_cube(past_pflx, min_lat, min_lon, max_lat, max_lon)\n", - "recent_pflx = extract_rot_cube(recent_pflx, min_lat, min_lon, max_lat, max_lon)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# now use the iris COUNT aggregator to count the number of days with > 1mm precip\n", - "past_wetdays = past_pflx.collapsed('time', iris.analysis.COUNT, function=lambda values: values > 1)\n", - "past_wetdays.rename('historical number of wet days (>=1mm/day)')\n", - "\n", - "\n", - "# Find wet days as a percentage of total days\n", - "total_days = len(past_wetdays.coord('time').points)\n", - "pcent_past_wetdays = (past_wetdays / total_days) * 100\n", - "\n", - "# renaming the cube name and units\n", - "pcent_past_wetdays.rename('historical percentage of wet days (>=1mm/day)')\n", - "pcent_past_wetdays.units = '%'\n", - "\n", - "# calculate for the recent data\n", - "recent_wetdays = recent_pflx.collapsed('time', iris.analysis.COUNT, function=lambda values: values > 1)\n", - "recent_wetdays.rename('recent number of wet days (>=1mm/day)')\n", - "\n", - "# Find wet days as a percentage of total days\n", - "total_days = len(recent_wetdays.coord('time').points)\n", - "pcent_recent_wetdays = (recent_wetdays / total_days) * 100\n", - "\n", - "# renaming the cube name and units\n", - "pcent_recent_wetdays.rename('recent percentage of wet days (>=1mm/day)')\n", - "pcent_recent_wetdays.units = '%'\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# plot the data as number of wet days\n", - "fig = plt.figure(figsize=(12, 6))\n", - "fig.suptitle('Number of wet days Historical (1851-1900) vs Recent (1981-2010)', fontsize=16)\n", - "ax1 = fig.add_subplot(1, 2, 1, projection=ccrs.PlateCarree())\n", - "qplt.pcolormesh(past_wetdays)\n", - "ax1.coastlines()\n", - "ax1 = fig.add_subplot(1, 2, 2, projection=ccrs.PlateCarree())\n", - "qplt.pcolormesh(recent_wetdays)\n", - "ax1.coastlines()\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# plot the data as percentage of wet days\n", - "fig = plt.figure(figsize=(12, 6))\n", - "fig.suptitle('Percentage of wet days Historical (1851-1900) vs Recent (1981-2010)', fontsize=16)\n", - "ax1 = fig.add_subplot(1, 2, 1, projection=ccrs.PlateCarree())\n", - "qplt.pcolormesh(pcent_past_wetdays)\n", - "ax1.coastlines()\n", - "ax1 = fig.add_subplot(1, 2, 2, projection=ccrs.PlateCarree())\n", - "qplt.pcolormesh(pcent_recent_wetdays)\n", - "ax1.coastlines()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2. Percentiles" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 2.1 Calculating 95th percentile of precipitation\n", - "\n", - "In this section we will calculate the extreme precipitation i.e. 95th percentile. We have already extracted our cube *Pflx%* so we can use the *iris.analysis.PERCENTILE* method to calculate the percentile." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Extract the 'precipitation_flux' cube\n", - "pflx = cubelist.extract_strict('precipitation_flux')\n", - "\n", - "# change the units to kg m-2 d-1\n", - "pflx.convert_units('kg m-2 d-1')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# define time constraint and extract 1851-1900 period\n", - "start_time = 1981\n", - "end_time = 2010\n", - "\n", - "# define the time constraint\n", - "cons = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", - "\n", - "# laod the data into cubes applying the time constraint\n", - "pflx = pflx.extract(cons)\n", - "\n", - "# extract Shangai region and constain with time\n", - "\n", - "# defining Shangai region coords\n", - "min_lat=29.0\n", - "max_lat=32.0\n", - "min_lon=118.0\n", - "max_lon=123.0\n", - "\n", - "# extract data for the the Shanghai region using extract_rot_cube() function\n", - "pflx = extract_rot_cube(pflx, min_lat, min_lon, max_lat, max_lon)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# make a copy of the cube, mask where daily rainfall < 1 so that only wet days\n", - "# are included in the calculation\n", - "pflx_wet = pflx.copy()\n", - "pflx_wet.data = np.ma.masked_less(pflx_wet.data, 1.0)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we can use the iris.analysis.PERCENTILE method to calculate the percentile." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "pflx_pc95 = pflx_wet.collapsed('time', iris.analysis.PERCENTILE, percent=95.)\n", - "pflx_pc95.rename('R95p of daily rainfall')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "fig = plt.figure(figsize=(12, 6))\n", - "fig.suptitle('Extreme rainfall', fontsize=16)\n", - "qplt.pcolormesh(pflx_pc95)\n", - "plt.gca().coastlines()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 3. Investigate extremes" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 3.1 Calculate the extreme index TX90P" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Calculate the frequency of warm days in the present (extreme index TX90P), i.e. the number of days which exceed the 90th percentile temperatures in the baseline. Then calculate the numbers of days as a percentage." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# first extract the air_temperature at 1.5m cubes from the cubelist\n", - "air_temp = cubelist.extract('air_temperature' & iris.AttributeConstraint(Height='1.5 m'))\n", - "\n", - "# constraint for the maximum temperature \n", - "max_temp_cons = iris.Constraint(cube_func=lambda c: (len(c.cell_methods) > 0) and \n", - " (c.cell_methods[0].method == 'maximum'))\n", - "\n", - "# define time constraint and extract 1851-1900 period (the baseline)\n", - "start_time = 1851\n", - "end_time = 1900\n", - "\n", - "# define the time constraint\n", - "time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", - "\n", - "# applying the pressure, maximum temperature and time constraints getting a single cube\n", - "max_temp = air_temp.extract_strict(max_temp_cons & time_constraint)\n", - "\n", - "# defining Shangai region coords\n", - "min_lat=29.0\n", - "max_lat=32.0\n", - "min_lon=118.0\n", - "max_lon=123.0\n", - "\n", - "# extract data for the the Shanghai region using extract_rot_cube() function\n", - "max_temp = extract_rot_cube(max_temp, min_lat, min_lon, max_lat, max_lon)\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "max_temp_pc90 = max_temp.collapsed('time', iris.analysis.PERCENTILE, percent=90.)\n", - "max_temp_pc90.rename('R90p of daily maximum temperature')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Now extract present day\n", - "# extract a single cube of maximum air_temperature at 1.5m cube from the cubelist\n", - "max_temp = cubelist.extract_strict('air_temperature' & iris.AttributeConstraint(Height='1.5 m') &\n", - " max_temp_cons)\n", - "# extract data for the the Shanghai region using extract_rot_cube() function\n", - "max_temp = extract_rot_cube(max_temp, min_lat, min_lon, max_lat, max_lon)\n", - "\n", - "start_time = 1981\n", - "end_time = 2010\n", - "\n", - "time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", - "max_temp = max_temp.extract(time_constraint)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we need to calculate the number of warm days, we do so by counting all the data points that are greater than 90th percentile of the baseline period within the last 30 years. We can use numpy method **np.where** which return 1 where max_temp is greater then max_temp_pc90 and returns 0 otherise. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# make new cube to hold the counts\n", - "nwarmdays = max_temp_pc90.copy()\n", - "\n", - "# Use broadcasting to identify all cells where daily temperatures in the future exceed the 95th percentile\n", - "temp_gt_pc90 = np.where(max_temp.data >= max_temp_pc90.data, 1, 0)\n", - "\n", - "# using np.ma.sum to sum the number of warm days above the 90th percentile\n", - "nwarmdays.data = np.ma.sum(temp_gt_pc90, axis=0)\n", - "\n", - "# the sum above removes the mask - reinstate it with \n", - "nwarmdays.data.mask = max_temp_pc90.data.mask\n", - "nwarmdays.units = '1'\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "nwarmdays = add_bounds(nwarmdays,['grid_latitude', 'grid_longitude'])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "qplt.pcolormesh(nwarmdays)\n", - "plt.gca().coastlines() \n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Calculate percentage of warmest days by using **iris.analysis.maths**" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ndays = max_temp.shape[0]\n", - "# calculating percentage \n", - "nwd_pcent = iris.analysis.maths.divide(iris.analysis.maths.multiply(nwarmdays, 100), ndays)\n", - "nwd_pcent.units=\"%\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Ploting the percentage of warm days" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "qplt.pcolormesh(nwd_pcent)\n", - "plt.title('Percentage of warm days')\n", - "plt.gca().coastlines() \n", - "plt.tight_layout()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Task:
      \n", - "
    • Calculate and plot the past (1851-1880) and present (1981-2010) 90th percentile of maximum temperature and the difference between them.\n", - "
    \n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# first extract the air_temperature at 1.5m cubes from the cubelist\n", - "air_temp = cubelist.extract('air_temperature' & iris.AttributeConstraint(Height='1.5 m'))\n", - "\n", - "# constraint for the maximum temperature \n", - "max_temp_cons = iris.Constraint(cube_func=lambda c: (len(c.cell_methods) > 0) and \n", - " (c.cell_methods[0].method == 'maximum'))\n", - "\n", - "# define time constraint and extract 1851-1900 period (the baseline)\n", - "start_time = 1851\n", - "end_time = 1880\n", - "\n", - "# define the time constraint\n", - "time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", - "\n", - "# applying the pressure, maximum temperature and time constraints getting a single cube\n", - "past_max_temp = air_temp.extract_strict(max_temp_cons & time_constraint)\n", - "\n", - "# defining Shangai region coords\n", - "min_lat=29.0\n", - "max_lat=32.0\n", - "min_lon=118.0\n", - "max_lon=123.0\n", - "\n", - "# extract data for the the Shanghai region using extract_rot_cube() function\n", - "past_max_temp_shanghai = extract_rot_cube(past_max_temp, min_lat, min_lon, max_lat, max_lon)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# calculate the 90 percentile\n", - "past_max_temp_shanghai_pc90 = past_max_temp_shanghai.collapsed('time', iris.analysis.PERCENTILE, percent=90.)\n", - "past_max_temp_shanghai_pc90.rename('Historic R90p of daily maximum temperature')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# guessing bounds\n", - "past_max_temp_shanghai_pc90 = add_bounds(past_max_temp_shanghai_pc90,['grid_latitude', 'grid_longitude'])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# let's plot the historic data\n", - "qplt.pcolormesh(past_max_temp_shanghai_pc90)\n", - "plt.title('R90p of daily maximum temperature (1880-1900)')\n", - "plt.gca().coastlines() \n", - "plt.tight_layout()\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Now extract present day\n", - "# extract a single cube of maximum air_temperature at 1.5m cube from the cubelist\n", - "max_temp = cubelist.extract_strict('air_temperature' & iris.AttributeConstraint(Height='1.5 m') &\n", - " max_temp_cons)\n", - "# extract data for the the Shanghai region using extract_rot_cube() function\n", - "max_temp_shanghai = extract_rot_cube(max_temp, min_lat, min_lon, max_lat, max_lon)\n", - "\n", - "start_time = 1981\n", - "end_time = 2010\n", - "\n", - "time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", - "recent_max_temp_shanghai = max_temp_shanghai.extract(time_constraint)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# calculate the 90 percentile\n", - "recent_max_temp_shanghai_pc90 = recent_max_temp_shanghai.collapsed('time', iris.analysis.PERCENTILE, percent=90.)\n", - "recent_max_temp_shanghai_pc90.rename('Recent R90p of daily maximum temperature')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# guessing bounds\n", - "recent_max_temp_shanghai_pc90 = add_bounds(recent_max_temp_shanghai_pc90,['grid_latitude', 'grid_longitude'])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# let's plot the recent data\n", - "qplt.pcolormesh(recent_max_temp_shanghai_pc90)\n", - "plt.title('R90p of daily maximum temperature (1981-2010)')\n", - "plt.gca().coastlines() \n", - "plt.tight_layout()\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# now let calculate the difference plot\n", - "diff_max_temp_shanghai_pc90 = recent_max_temp_shanghai_pc90 - past_max_temp_shanghai_pc90\n", - "diff_max_temp_shanghai_pc90.rename('Difference R90p of daily maximum temperature')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# guessing bounds\n", - "past_max_temp_shanghai_pc90 = add_bounds(past_max_temp_shanghai_pc90,['grid_latitude', 'grid_longitude'])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# and finally plot the historic, recent and difference plots next to each other\n", - "fig = plt.figure(figsize=(20, 6))\n", - "fig.suptitle('90th percentile of maximum temperature (1851-1880) vs Recent (1981-2010)', fontsize=16)\n", - "ax1 = fig.add_subplot(1, 3, 1, projection=ccrs.PlateCarree())\n", - "qplt.pcolormesh(past_max_temp_shanghai_pc90)\n", - "ax1.coastlines()\n", - "ax1 = fig.add_subplot(1, 3, 2, projection=ccrs.PlateCarree())\n", - "qplt.pcolormesh(recent_max_temp_shanghai_pc90)\n", - "ax1.coastlines()\n", - "ax1 = fig.add_subplot(1, 3, 3, projection=ccrs.PlateCarree())\n", - "qplt.pcolormesh(diff_max_temp_shanghai_pc90)\n", - "ax1.coastlines()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 4. Exercises\n", - "\n", - "In this exercise we will calculate the percentage of total precipitation from 1981-2010 which falls on very wet days (where a very wet day is one on which daily rainfall exceeds the 95th percentile of the baseline) over Shanghai region.\n", - "\n", - "Further we also calculate the percentage of very wet days in the past (1851-1880) and see the difference by plotting the difference of heavy rainfall in the past and present." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 1: Calculate what percentage of all of the precipitation in period 1981-2010 fell on days when there was heavy rain i.e. => 95th Percentile.\n", - "\n", - "For this task, we need to calculate the percentage of all of the precipitation in this period which fell on days when there was heavy rain i.e. => 95th Percentile.\n", - "\n", - "We can break this down as follows:\n", - "\n", - "
  • load the daily data for the period 1981-2010 and extract Shanghai
  • \n", - "
  • find the 95th percentile of daily rainfall on wet days for the period
  • \n", - "
  • find the sum of the rainfall on days when the precip > 95th percentile
  • \n", - "
  • find the total rainfall on all days
  • \n", - "
  • find the percentage of all of the precipitation in this period which fell on days when there was heavy rain
  • " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# first extract the air_temperature at 1.5m cubes from the cubelist\n", - "precip = cubelist.extract_strict('precipitation_flux')\n", - "# convert units to mm/day (equivalent to 'kg m-2 day-1')\n", - "precip.convert_units('kg m-2 day-1')\n", - "# To avoid warnings when collapsing coordinates and also when plotting, add bounds to all coordinates\n", - "precip = add_bounds(precip,['time', 'grid_latitude', 'grid_longitude'])\n", - "\n", - "# define time constraint and extract 1851-1900 period (the baseline)\n", - "start_time = 1981\n", - "end_time = 2010\n", - "\n", - "# define the time constraint\n", - "time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", - "\n", - "# applying the pressure, maximum temperature and time constraints getting a single cube\n", - "present_precip = precip.extract(time_constraint)\n", - "\n", - "# defining Shangai region coords\n", - "min_lat=29.0\n", - "max_lat=32.0\n", - "min_lon=118.0\n", - "max_lon=123.0\n", - "\n", - "# extract data for the the Shanghai region using extract_rot_cube() function\n", - "present_precip_shanghai = extract_rot_cube(present_precip, min_lat, min_lon, max_lat, max_lon)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# make a copy of the cube, mask where daily rainfall < 1 so that only wet days\n", - "# are included in the calculation of the 95th percentile\n", - "present_precip_shanghai_wet = present_precip_shanghai.copy()\n", - "present_precip_shanghai_wet.data = np.ma.masked_less(present_precip_shanghai_wet.data, 1.0)\n", - "\n", - "# Calculating percentile\n", - "present_precip_shanghai_pc95 = present_precip_shanghai_wet.collapsed('time', iris.analysis.PERCENTILE, percent=95.)\n", - "present_precip_shanghai_pc95.rename('Present R95p of daily precipitation')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Total number of days of the rainfall on days when the precip > 95th percentile\n", - "# mask the present_precip_shanghai using 95th percentile (very wet days)\n", - "masked_cube = present_precip_shanghai.copy()\n", - "masked_cube.data = np.ma.masked_less(present_precip_shanghai.data, present_precip_shanghai_pc95.data)\n", - "\n", - "# Now calculating the total sum to extreme rainfall\n", - "total_extreme_precipitation = masked_cube.collapsed(['time'], iris.analysis.SUM)\n", - "\n", - "# also the sum on all days\n", - "total_precip = present_precip_shanghai.collapsed(['time'], iris.analysis.SUM)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# percentage of rainfall on very high rainfall days\n", - "extreme_present_pct = (total_extreme_precipitation/total_precip) * 100.0\n", - "extreme_present_pct.rename('Fraction of precipitation from very heavy rain')\n", - "extreme_present_pct.units = '%'" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Finally check the result by doing a plot\n", - "extreme_present_pct = add_bounds(extreme_present_pct,['grid_latitude', 'grid_longitude'])\n", - "fig = plt.figure(figsize=(12, 6))\n", - "fig.suptitle('Heavy rainfall', fontsize=16)\n", - "qplt.pcolormesh(extreme_present_pct)\n", - "plt.gca().coastlines()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 2: Calculate what percentage of all of the precipitation in period 1851-1880 fell on days when there was heavy rain i.e. => 95th Percentile." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# first extract the air_temperature at 1.5m cubes from the cubelist\n", - "precip = cubelist.extract_strict('precipitation_flux')\n", - "# convert units to mm/day (equivalent to 'kg m-2 day-1')\n", - "precip.convert_units('kg m-2 day-1')\n", - "# To avoid warnings when collapsing coordinates and also when plotting, add bounds to all coordinates\n", - "precip = add_bounds(precip,['time', 'grid_latitude', 'grid_longitude'])\n", - "\n", - "# define time constraint and extract 1851-1900 period (the baseline)\n", - "start_time = 1851\n", - "end_time = 1880\n", - "\n", - "# define the time constraint\n", - "time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", - "\n", - "# applying the pressure, maximum temperature and time constraints getting a single cube\n", - "past_precip = precip.extract(time_constraint)\n", - "\n", - "# extract data for the the Shanghai region using extract_rot_cube() function\n", - "past_precip_shanghai = extract_rot_cube(past_precip, min_lat, min_lon, max_lat, max_lon)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "past_precip_shanghai_wet = past_precip_shanghai.copy()\n", - "past_precip_shanghai_wet.data = np.ma.masked_less(past_precip_shanghai_wet.data, 1.0)\n", - "\n", - "# Calculating percentile\n", - "past_precip_shanghai_pc95 = past_precip_shanghai_wet.collapsed('time', iris.analysis.PERCENTILE, percent=95.)\n", - "past_precip_shanghai_pc95.rename('Past R95p of daily precipitation')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Total number of days of the rainfall on days when the precip > 95th percentile\n", - "masked_cube = past_precip_shanghai.copy()\n", - "masked_cube.data = np.ma.masked_less(past_precip_shanghai.data, past_precip_shanghai_pc95.data)\n", - "\n", - "# Now calculating the total sum to extreme rainfall\n", - "total_extreme_precip_past = masked_cube.collapsed(['time'], iris.analysis.SUM)\n", - "\n", - "# also the sum on all days\n", - "total_precip_past = past_precip_shanghai.collapsed(['time'], iris.analysis.SUM)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# percentage of rainfall on very high rainfall days\n", - "extreme_past_pct = (total_extreme_precip_past/total_precip_past) * 100.0\n", - "extreme_past_pct.rename('Fraction of precipitation from very heavy rain')\n", - "extreme_past_pct.units = '%'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 3: Calculate the differences" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Calculating the difference in rain on extreme wet days\n", - "\n", - "extreme_pct_difference = extreme_present_pct - extreme_past_pct \n", - "extreme_pct_difference.rename('Difference in % of rain from extreme events')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 4: Plot the percentages and difference " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# and finally plot the historic, recent and percentile difference plots next to each other\n", - "fig = plt.figure(figsize=(20, 6))\n", - "fig.suptitle('95th percentile of precipitation (1851-1880) vs present (1981-2010)', fontsize=16)\n", - "ax1 = fig.add_subplot(1, 3, 1, projection=ccrs.PlateCarree())\n", - "qplt.pcolormesh(extreme_past_pct)\n", - "ax1.coastlines()\n", - "ax1 = fig.add_subplot(1, 3, 2, projection=ccrs.PlateCarree())\n", - "qplt.pcolormesh(extreme_present_pct)\n", - "ax1.coastlines()\n", - "ax1 = fig.add_subplot(1, 3, 3, projection=ccrs.PlateCarree())\n", - "qplt.pcolormesh(extreme_pct_difference)\n", - "ax1.coastlines()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Summary
    \n", - " In this session we learned how:
    \n", - "
      \n", - "
    • to calculate extreme values and percentages\n", - "
    • to calcuate basic extreme value indices \n", - "
    \n", - "\n", - "
    \n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cssp37", - "language": "python", - "name": "cssp37" - }, - "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.7.8" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/notebooks/CSSP_20CRDS_Tutorials/tutorial_1_data_access.ipynb b/notebooks/CSSP_20CRDS_Tutorials/tutorial_1_data_access.ipynb deleted file mode 100644 index a2a65c8..0000000 --- a/notebooks/CSSP_20CRDS_Tutorials/tutorial_1_data_access.ipynb +++ /dev/null @@ -1,1054 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "# Tutorial 1: Accessing and exploring CSSP China 20CR datasets\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Learning Objectives:\n", - "\n", - "1. How to load data into Xarrays format\n", - "2. How to convert the data xarrays into iris cube format\n", - "3. How to perform basic cube operations " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Contents\n", - "\n", - "1. [Use Xarray to access monthly data](#access_zarr) \n", - "2. [Retrieve single (or list of) variables](#get_vars)\n", - "3. [Convert datasets to iris cube](#to_iris)\n", - "4. [Explore cube attributes and coordinates](#explore_iris)\n", - "5. [Exercises](#exercise)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Prerequisites
    \n", - "- Basic programming skills in python
    \n", - "- Familiarity with python libraries Numpy and Matplotlib
    \n", - "- Basic understanding of climate data
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1. Use Xarray to access monthly data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.1 Import libraries.\n", - "Import the necessary libraries. Current datasets are in zarr format, we need zarr and xarray libraries to access the data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import xarray as xr\n", - "import zarr\n", - "from scripts.xarray_iris_coord_system import XarrayIrisCoordSystem as xics\n", - "xi = xics()\n", - "xr.set_options(display_style='text') # Work around for AML bug that won't display HTML output." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.2 Set up authentication for the Azure blob store\n", - "\n", - "The data for this course is held online in an Azure Blob Storage Service. To access this we use a SAS (shared access signature). You should have been given the credentials for this service before the course, but if not please ask your instructor. We use the getpass module here to avoid putting the token into the public domain. Run the cell below and in the box enter your SAS and press return. This will store the password in the variable SAS." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import getpass\n", - "# SAS WITHOUT leading '?'\n", - "SAS = getpass.getpass()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We now use the Zarr library to connect to this storage. This is a little like opening a file on a local file system but works without downloading the data. This makes use of the Azure Blob Storage service. The zarr.ABStore method returns a zarr.storage.ABSStore object which we can now use to access the Zarr data in the same way we would use a local file. If you have a Zarr file on a local file system you could skip this step and instead just use the path to the Zarr data below when opening the dataset." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "store = zarr.ABSStore(container='metoffice-20cr-ds', prefix='monthly/', account_name=\"metdatasa\", blob_service_kwargs={\"sas_token\":SAS})\n", - "type(store)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.3 Read monthly data\n", - "A Dataset consists of coordinates and data variables. Let's use the xarray's **open_zarr()** method to read all our zarr data into a dataset object and display it's metadata" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# use the open_zarr() method to read in the whole dataset metadata\n", - "dataset = xr.open_zarr(store)\n", - "# print out the metadata\n", - "dataset" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: The dataset lists coordinates and data variables.
    \n", - "Note:If you get an error \"resource not found\", you have probably entered your SAS incorrectly. Please check and try again.\n", - " \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "We can also access and print list of all the variables in our dataset" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# display all the variables in our dataset\n", - "dataset.data_vars" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2. Retrieve single (or list of) variables" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 2.1 Read mean air temperature at 2 m \n", - "Access and print just a single variable i.e minumum air temperature at 2m\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: The DataArrays in our dataset can be accessed either as attributes or indexed by name\n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Access the variable by indexing it with its name\n", - "t2m_mean = dataset['air_temperature_mean']\n", - "# print the metadata\n", - "t2m_mean" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Access the variable like an attribute\n", - "t2m_mean = dataset.air_temperature_mean\n", - "# print the metadata\n", - "t2m_mean" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 2.2 Read list of variables \n", - "We can also create a smaller dataset containing a subset of our variables" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# creating a list containing a subset of our variables \n", - "varlist = ['relative_humidity_mean',\n", - " 'relative_humidity_at_pressure_mean',\n", - " 'specific_humidity',\n", - " 'surface_temperature'\n", - " ]\n", - "\n", - "# extracting the list of variables from dataset\n", - "mini_ds = dataset[varlist]\n", - "\n", - "# print the metadata\n", - "mini_ds" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Task:
      \n", - "
    • Access \"cloud_area_fraction\" using both index and attribute method in the cell below and save it in varaible named **caf**
    • \n", - "
    • Create a dataset **pres_ds** containing all the pressure variables, (hint: use for loop)
    • \n", - "
    \n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Retrieve \"cloud_area_fraction\"\n", - "# write your code here ..." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Retrieve all the pressure variables\n", - "# write your code here ... " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 3. Convert datasets to iris cube" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 3.1 Convert a variable to an Iris Cube\n", - "We now convert the minimum air temperature variable that we accessed in section 2.1 into iris cube. This can be done simply using the method **DataArray.to_iris()**.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Use the method to_iris() to convert the xarray data array into an iris cube\n", - "cube_t2m_mean = t2m_mean.to_iris()\n", - "cube_t2m_mean" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Task 3.2 Convert whole Dataset to an Iris Cubelist\n", - "Instead of converting all variables one by one into iris cube one by one, we can convert the whole dataset (or a subset of dataset) into an iris cubelist" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: This is not as simple as done for single variable above but it is straightforward with the dataset.apply() method, obviousely will take a bit longer to complete!\n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# first import the Iris library\n", - "import iris" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# create an empty list to hold the iris cubes\n", - "cubelist = iris.cube.CubeList([])\n", - "\n", - "# use the DataSet.apply() to convert the dataset to Iris Cublelist\n", - "# the apply method loops over each variable in the dataset and runs the\n", - "# supplied function on it \n", - "# the variable da is a single variable from the dataset. \n", - "# this variable is converted to a cube and appended to the empty\n", - "# cubelist we made above\n", - "dataset.apply(lambda da: cubelist.append(xi.to_iris(da)))\n", - "\n", - "# print out the cubelist\n", - "cubelist" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Note: By clicking on any variable above, you can see its dimension coordinates and matadata\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Task:
      \n", - "
    • convert caf variable into iris cube **caf_cube**
    • \n", - "
    • create a cube list containing pressure variables only
    • \n", - "
    • Can you note the difference between cube and cubelist?
    • \n", - "
    \n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "## convert clf into iris cube\n", - "# write your code here ..." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "## convert pressure dataset into iris cube list\n", - "# write your code here ..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 4. Explore cube attributes and coordinates" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 4.1 Accessing cube from cubelist\n", - "Now that we have our variables in cubelist we can extract any varaible using the variable name. For instance the following code indices for **precipitation_flux** variable." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# lets load and print the Precipitation Flux variable\n", - "precipitation_cube = cubelist.extract_strict('precipitation_flux')\n", - "precipitation_cube" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: We can see that we have time, grid_latitude and grig_longitude dimensions, and a cell method of mean: time (1 hour) which means that the cube contains monthly mean Precipitation Flux data.\n", - "
    \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 4.2 Cube attributes\n", - "We can explore the cube information further" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we can print its shape\n", - "precipitation_cube.shape" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we can print its dimensions\n", - "precipitation_cube.ndim" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we can print all of the data values (takes a bit of time as it is a large dataset!)\n", - "precipitation_cube.data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Or we can take a slice of the data using indexing\n", - "precipitation_cube.data[10,1,:]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# We can also print the maximum, minimum and mean value in data\n", - "print('Maximum value: ', precipitation_cube.data.max())\n", - "print('Minimum value: ', precipitation_cube.data.min())\n", - "print('Mean value: ', precipitation_cube.data.mean())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we can print cube's name\n", - "precipitation_cube.name()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we can print the unit of data\n", - "precipitation_cube.units" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we can also print cube's general attributes\n", - "precipitation_cube.attributes" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 4.3 Rename the cube\n", - "Rename the precipitation_flux cube" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: The name, standard_name, long_name and to an extent var_name are all attributes to describe the phenomenon that the cube represents.\n", - " \n", - "standard_name is restricted to be a CF standard name (see the CF standard name table). \n", - "\n", - "If there is not a suitable CF standard name, cube.standard_name is set to None and the long_name is used instead. \n", - "long_name is less restrictive and can be set to be any string.\n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(precipitation_cube.standard_name)\n", - "print(precipitation_cube.long_name)\n", - "print(precipitation_cube.var_name)\n", - "print(precipitation_cube.name())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# changing the cube name to 'pflx' using \"rename\" method\n", - "precipitation_cube.rename(\"pflx\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(precipitation_cube.standard_name)\n", - "print(precipitation_cube.long_name)\n", - "print(precipitation_cube.var_name)\n", - "print(precipitation_cube.name())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We see that standard_name and var_name are not set to be a non CF standard name, they are changed to None and long_name is renamed as pflx instead. The cube.name() method first tries standard_name, then ‘long_name’, then ‘var_name’, then the STASH attribute before falling back to the value of default (which itself defaults to ‘unknown’).\n", - "\n", - "We can also rename the specific name of the cube. Suppose if we only want to change standard_name." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "precipitation_cube.standard_name = 'precipitation_flux'" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(precipitation_cube.standard_name)\n", - "print(precipitation_cube.long_name)\n", - "print(precipitation_cube.var_name)\n", - "print(precipitation_cube.name())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Similarly, we can change long_name, var_name, and name without using rename method" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 4.3 Change the cube units\n", - "Change precipitation_cube units from kg m-2 s-1 to kg m-2 day-1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: The units attribute on a cube tells us the units of the numbers held in the data array. To convert to 'kg m-2 day-1', we could just multiply the raw data by 86400 seconds, but a clearer way is to use the convert_units() method with the name of the units we want to convert the data into. It will automatically update the data array.\n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# inspect the current unit and maximum data value\n", - "print(precipitation_cube.units)\n", - "print(precipitation_cube.data.max())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# convert the units to 'mm day-1' using convert_units method\n", - "precipitation_cube.convert_units('kg m-2 day-1')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# inspect the current unit and maximum data value after the conversion \n", - "print(precipitation_cube.units)\n", - "print(precipitation_cube.data.max())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 4.4 Add or remove the attributes\n", - "In section 4.2 we see how to access the cube attributes. In this section we will try to add or remove the attributes \n", - "\n", - "Let's try to add new attribute to the precipitation_flux. \n", - "We want to keep the information of original units of the cube. Best way is to add this information in the attribute.\n", - "Define the new attribute as a key value pair and we can add the attribute using **update** method." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# defining new attribute\n", - "new_attr = {'original_units':'kg m-2 s-1'}" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# List the attibutes\n", - "precipitation_cube.attributes" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# add new attribute using .update() method\n", - "precipitation_cube.attributes.update(new_attr)\n", - "\n", - "# now printing the attributes list to see if new attribute has updated\n", - "precipitation_cube.attributes" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "So, we got 'original_units' in attributes list. \n", - "\n", - "We can also delete any specific attribute. For example, in our precipitation_cube attributes list, we do not need 'source' and we can think of deleting it. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "del precipitation_cube.attributes['source']\n", - "precipitation_cube.attributes" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 4.5 Accessing cube coordinates\n", - "Access cube's coordinates and explore coordinates attribute" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: \n", - "
      \n", - "
    • Cubes need coordinate information to help us describe the underlying phenomenon. Typically a cube's coordinates are accessed with the coords or coord methods. The latter must return exactly one coordinate for the given parameter filters, where the former returns a list of matching coordinates.
    • \n", - "
    • The coordinate interface is very similar to that of a cube. The attributes that exist on both cubes and coordinates are: standard_name, long_name, var_name, units, attributes and shape.
    • \n", - "
    • Coordinate does not have data, instead it has points and bounds (bounds may be None), so we can access the actual point data
    • \n", - "
    \n", - "\n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# let's print out all cube's coordinates\n", - "print([coord.name() for coord in precipitation_cube.coords()])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# let's access the 'grid_latitude' coordinate and print out the last 10 values\n", - "grid_latitude = precipitation_cube.coord('grid_latitude')\n", - "grid_latitude[:10]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# print the maximum and minimum value of 'grid_latitude' coordinate\n", - "print(grid_latitude.points.max())\n", - "print(grid_latitude.points.min())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Task:
      \n", - "
    • Inspect the following attributes of caf_cube you created in previous task
    • \n", - "
        \n", - "
      • name (standard_name)
      • \n", - "
      • dimensions (ndim)
      • \n", - "
      • units
      • \n", - "
      • mean of data
      • \n", - "
      \n", - "
    • Print all the coordinates of caf_cube, (hint: use for loop)
    • \n", - "
    • Explore attributes of \"grid_latitude\"
    • \n", - "
        \n", - "
      • name (standard_name)
      • \n", - "
      • shape
      • \n", - "
      • units
      • \n", - "
      \n", - " \n", - " \n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "## Inspect attributes \n", - "# write your code here .." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "## Inspect coordinates\n", - "# write your code here .." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 5. Exercise\n", - "\n", - "In this exercise we will explore the variables and attributes of monthly data." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 1: Load hourly data\n", - "Load monthly data into xarrays and display all variables\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# write your code here .." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 2: Convert to iris cublist\n", - "Convert the dataset into iris cublist and display the cubelist\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# write your code here .." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 3: Extract variable\n", - "Extract **x_wind** variable from cubelist and display the cube" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# write your code here .." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 4: Explore cube attributes \n", - "Using the Iris cube in previous excercise explore its attributes as follow:\n", - "- print out the dimensions\n", - "- print out its shape\n", - "- print out its coordinates\n", - "- print out the maximum and minimum values of latitude and longitude\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# write your code here .." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# write your code here .." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# write your code here .." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# write your code here .." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 5: Change units and add the original units to attributes list \n", - "\n", - "- change the units of x_wind to km/hr\n", - "- add the original units to the attributes list\n", - "- print out the attributes to see if new attribtue has added successfully\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# write your code here .." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# write your code here .." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# write your code here .." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Summary
    \n", - " In this session we learned how:
    \n", - "
      \n", - "
    • to load data from a zarr database into xarray dataset and explore its metadata.
    • \n", - "
    • to convert xarray dataset into iris cube and explore its metadata
    • \n", - "
    • to further explore iris cube's attributes through simple operations
    • \n", - "
    \n", - "\n", - "
    \n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cssp37", - "language": "python", - "name": "cssp37" - }, - "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.7.8" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/notebooks/CSSP_20CRDS_Tutorials/tutorial_2_data_preparation.ipynb b/notebooks/CSSP_20CRDS_Tutorials/tutorial_2_data_preparation.ipynb deleted file mode 100644 index a3e32d4..0000000 --- a/notebooks/CSSP_20CRDS_Tutorials/tutorial_2_data_preparation.ipynb +++ /dev/null @@ -1,1128 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "# Tutorial 2: Data Preparation and visualisation\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Learning Objectives:\n", - "\n", - "In this session we will learn: \n", - "1. How to perform further cube operations\n", - "2. How to prepare data for analysis\n", - "4. How to visualise data " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Contents\n", - "\n", - "1. [Constraint and cube extraction](#extract)\n", - "2. [Basic cube calculations](#calc)\n", - "3. [Time series and spatial plots](#plots)\n", - "4. [Saving the cube](#save)\n", - "5. [Exercises](#exercise)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Prerequisites
    \n", - "- Basic programming skills in python
    \n", - "- Familiarity with python libraries Iris, Numpy and Matplotlib
    \n", - "- Basic understanding of climate data
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1. Constraint and cube extraction" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.1 Import libraries.\n", - "Import the necessary libraries. Current datasets are in zarr format, we need zarr and xarray libraries to access the data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import xarray as xr\n", - "import zarr\n", - "import iris\n", - "import os\n", - "from scripts.xarray_iris_coord_system import XarrayIrisCoordSystem as xics\n", - "xi = xics()\n", - "xr.set_options(display_style='text') # Work around for AML bug that won't display HTML output." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.2 Set up authentication for the Azure blob store\n", - "\n", - "The data for this course is held online in an Azure Blob Storage Service. To access this we use a SAS (shared access signature). You should have been given the credentials for this service before the course, but if not please ask your instructor. We use the getpass module here to avoid putting the token into the public domain. Run the cell below and in the box enter your SAS and press return. This will store the password in the variable SAS." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import getpass\n", - "# SAS WITHOUT leading '?'\n", - "SAS = getpass.getpass()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "store = zarr.ABSStore(container='metoffice-20cr-ds', prefix='monthly/', account_name=\"metdatasa\", blob_service_kwargs={\"sas_token\":SAS})\n", - "type(store)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.3 Read monthly data\n", - "A Dataset consists of coordinates and data variables. Let's use the xarray's **open_zarr()** method to read all our zarr data into a dataset object and display it's metadata" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# use the open_zarr() method to read in the whole dataset metadata\n", - "dataset = xr.open_zarr(store)\n", - "# print out the metadata\n", - "dataset" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Convert dataset into iris cubelist" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# create an empty list to hold the iris cubes\n", - "cubelist = iris.cube.CubeList([])\n", - "# use the DataSet.apply() to convert the dataset to Iris Cublelist\n", - "dataset.apply(lambda da: cubelist.append(xi.to_iris(da)))\n", - "# print out the cubelist\n", - "cubelist" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The cubelist printed above holds all of the data from the Zarr file in a list. To see more detail on each of the cubes in the list click on it. That shows a table with information about the name and units of the cube, its shape and coordinates.\n", - "\n", - "We will see in the next section how to obtain a single cube for use in our analysis and visualisation." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.4 Indexing the cube\n", - "**AIM:** Extract the ***cloud_area_fraction*** data and index it by a subset of latitudes and longitudes values" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "
    \n", - "Note: Cubes can be indexed in a similar manner to that of NumPy arrays. The result of indexing a cube is always a copy of the cube.
    \n", - " \n", - "For more information on cube indexing in numpy see Indexing in the numpy documentation\n", - " \n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# extract the variale from cubelist\n", - "caf = cubelist.extract_strict('cloud_area_fraction')\n", - "caf" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# subsetting the lat/lon values by indexing the first 10 values\n", - "subset_caf = caf[..., :10, :10]\n", - "subset_caf" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# subseting the cube with 50th to 99th lat/lon values at time index 10\n", - "subset_caf = caf[10, 50:100, 50:100]\n", - "subset_caf" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: The extract above returns a 2 dimensional cube with latitude/longitude at a single time. Note that time is now a scalar (a single time: 1851-11-16 00:00:00)\n", - " \n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Extracting first 10 elements from time dimension\n", - "subset_caf = caf[:10]\n", - "subset_caf" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.5 Time constraint\n", - "**AIM:** Use constraint and extract methods to subset a cube or cubelist.\n", - "\n", - "The monthly data ranges from 1850 to 2000. In some cases we might not need all the time series and we might only be interested in 50 years 1950 - 2000.\n", - "In such cases, we can extract cube creating a time constraint. \n", - "Let's extract \"air_pressure_at_sea_level\" cube, extract the cube containing data from 1950 to 2000 using time constraint." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: We've already seen above the extract_strict method to extract specific cube from cubelist. We can also apply constraints to a single cube (or a CubeList) using the respective constraint and extract methods.\n", - " \n", - "Iris's constraint mechanism provides a powerful way to filter a subset of data from a larger collection. The Constraint constructor takes arbitrary keywords to constrain coordinate values.\n", - " \n", - "extract_strict returns a single cube while extract methods returns a cubelist. If you use extract_strict and more or less than 1 cube matches then it is an error. \n", - " \n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Extracting air pressure at sea level cube from cublist \n", - "air_pres = cubelist.extract_strict('air_pressure_at_sea_level')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Extracting from year 1950 to 2000\n", - "start_time = 1950\n", - "end_time = 2000\n", - "time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", - "subcube = air_pres.extract(time_constraint)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To check if we have got the right cube, we can print start data and end date of subcube" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "tcoord = subcube.coord('time')\n", - "units = tcoord.units\n", - "tdata = [units.num2date(point) for point in tcoord.points]\n", - "print('Start time: ',tdata[0])\n", - "print('End time: ',tdata[-1])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: It is common to want to build a constraint for time.\n", - "This can be achieved by comparing cells containing datetimes\n", - "\n", - "There are a few different approaches for producing time constraints in Iris. We focus here on one approach for constraining on time in Iris.\n", - "\n", - "This approach allows us to access individual components of cell datetime objects and run comparisons on those.\n", - " \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Similar to constraining years, we can also constrain months and days\n", - "\n", - "Consider a case where we want to get only a few months, like March, April and May, from our subcube" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# extracting month june, july and august from the list of years\n", - "month_constraint = iris.Constraint(time=lambda cell: cell.point.month in (3,4,5))\n", - "subcube.extract(month_constraint)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.6 Extract region.\n", - "\n", - "To make your analysis faster and easier, you can extract a smaller part of the model domain. In these examples we will work with Shanghai, but you can choose any region you want. \n", - "\n", - "Note: The original model data is on a rotated pole grid system, as shown in the diagrams below. The x and y coordinates are not true latitude and longitude so to extract a latitude-longitude box, we use the *extract_rot_cube()* function to do this. It works by first calculating the true latitude and longitue of each grid cell and uses these to select which are in the area of interest." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# let's first print the values of lat/lon before extracting\n", - "print('latitude: [', air_pres.coord('grid_latitude').points.min(), ', ', air_pres.coord('grid_latitude').points.max(), ']')\n", - "print('longitude: [', air_pres.coord('grid_longitude').points.min(), ', ', air_pres.coord('grid_longitude').points.max(), ']')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's try to extract Shanghai region using **extract_rot_cube**.\n", - "\n", - "**extract_rot_cube** takes the latitude and longitude of the region of interest and returns a smaller cube with the extracted region of rotated pole coordinates. \n", - "\n", - "First define the lat lon of Shanghai region:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "min_lat=29.0\n", - "max_lat=32.0\n", - "min_lon=118.0\n", - "max_lon=123.0" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# load extract_rot_cube from catnip\n", - "from catnip.preparation import extract_rot_cube\n", - "ext_cube = extract_rot_cube(air_pres, min_lat, min_lon, max_lat, max_lon)\n", - "ext_cube" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we can see that the min/max boundaries now changed\n", - "print('latitude: [', ext_cube.coord('grid_latitude').points.min(), ', ', ext_cube.coord('grid_latitude').points.max(), ']')\n", - "print('longitude: [', ext_cube.coord('grid_longitude').points.min(), ', ', ext_cube.coord('grid_longitude').points.max(), ']')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.7 Constraint on cell methods and attributes\n", - "\n", - "In our cubelist, we can see that we have four cubes named air_temperature: Minimum, Maximum and two Means (one with pressure level).\n", - "Let's try to extract air temperature and see what we get.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "air_temp = cubelist.extract('air_temperature')\n", - "air_temp" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In order to get only one cube i.e. the time mean at the surface and not on the pressure levels, we need to constrain using the cell method. A [cell_method](https://cfconventions.org/Data/cf-conventions/cf-conventions-1.7/build/ch07s03.html) is a piece of metadata which describes additional characteristics of a field. Let try to create a constraint and use it to extract the desired cube." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# constrain for the cube that does not have 'pressure' in its coordinate list\n", - "cube_cons_surf = iris.Constraint(cube_func=lambda c: 'pressure' not in [coord.name() for coord in c.coords()])\n", - "# also constrain to be only mean temperature \n", - "cube_cons_mean = iris.Constraint(cube_func=lambda c: (len(c.cell_methods) > 0) and (c.cell_methods[0].method == 'mean'))\n", - "# now apply the above constrains\n", - "air_temp_mean = air_temp.extract_strict(cube_cons_surf & cube_cons_mean)\n", - "air_temp_mean " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we got desired cube. Now, if we look into minimum and maximum cubes, that does not contains cell method, instead, information lies in their respective attributes. \n", - "\n", - "We can extract, for example minimum cube, by constraining the attributes." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "min_cons = iris.Constraint(cube_func=lambda c: ('ukmo__process_flags' in c.attributes) and (c.attributes['ukmo__process_flags'][0].split(' ')[0] == 'Minimum'))\n", - "air_temp_min = air_temp.extract_strict(min_cons)\n", - "air_temp_min " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Task:
      \n", - "
    • Extract from cubelist relative humidity cube: year: 1900-2000, months: May-September Cell method: Mean (4 hours) \n", - "\n", - " \n", - "
    \n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Extract relative humidity cube\n", - "# write your code here .." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2. Basic Calculations" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 2.1 Calculating mean, max, min\n", - "In this section we will use **iris.analysis** method to calculate basic mean, min and max values. But before we do this we need to understand two important concepts/techniques that are used in the analysis code to follow:\n", - "1. When we calculate area averages, we need to be able to calculate the area of each grid box. and for this we need to know the boundaries of each grid box. If the longitude and latitude bounds are not defined in the cube we can guess the bounds based on the coordinates point values and that is what the *guess.bounds()* function does in the code below.\n", - "2. Once we have our longitude and latitude boundaries we can use the *iris.analysis.cartography.area_weights* to compute the data as a weighted mean of all grid-boxes. The *area_weights()* function returns an array of area weights, with the same dimensions as the cube where a larger cell has more weight in the average than a smaller one.\n", - "\n", - "Now let's extract the *surface_temperature* and calculate mean over the whole region. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# extract surface_temerature\n", - "sft = cubelist.extract_strict('surface_temperature')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Using the **collapsed** and **analysis** methods over grid_latitude and grid_longitude, we can get the timeseries of mean over the whole domain." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import iris.analysis.cartography\n", - "\n", - "#Since grid_latitude and grid_longitude were both point coordinates we must guess bound positions for them in order to calculate the area of the grid boxes\n", - "sft.coord('grid_latitude').guess_bounds()\n", - "sft.coord('grid_longitude').guess_bounds()\n", - "\n", - "grid_areas = iris.analysis.cartography.area_weights(sft)\n", - "\n", - "# calculating mean using area_weights method\n", - "sft_mean = sft.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN, weights=grid_areas)\n", - "sft_mean" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: The above cube has reduced to only one dimension i.e. \"time\"\n", - "\n", - " \n", - "
    iris.analysis provides a range of statistical methods, see [iris.analysis dcumentation](https://scitools.org.uk/iris/docs/v1.9.0/html/iris/iris/analysis.html)\n", - " \n", - "
    Collapse method can be applied to one, more or all the dimensions.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 2.2 Basic arithmetic operations\n", - "\n", - "Basic arithmetic operations like addition, subtraction, multiplication, square root, power etc. can be performed on iris cube.\n", - "\n", - "Let's calculate 10m windspeed using **x_wind** and **y_wind** cubes.\n", - "\n", - "In our cubelist, we have two variables with same cell method. We can constraint using coordinates information.\n", - "\n", - "To calculate 10m windspeed we need data which is not on pressure levels." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# extract x_wind and y_wind\n", - "xcons = iris.Constraint(cube_func=lambda c: c.standard_name == 'x_wind' and ('pressure' not in [coord.name() for coord in c.coords()]))\n", - "ycons = iris.Constraint(cube_func=lambda c: c.standard_name == 'y_wind' and ('pressure' not in [coord.name() for coord in c.coords()]))\n", - "\n", - "u = cubelist.extract_strict(xcons)\n", - "v = cubelist.extract_strict(ycons)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's create a windspeed cube by copying the u cube first" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "windspeed = u.copy()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Calculate windspeed:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "windspeed.data = np.sqrt(u.data**2 + v.data**2)\n", - "windspeed" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We see that cube name is \"x_wind\", that is becuase we copied the u_cube. We can rename it to \"windspeed\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "windspeed.rename(\"wind speed\")\n", - "windspeed" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: When performing arithmetic calculation, consider the units, name and other metadata information. \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 3. Time series and spatial plots" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 3.1 Time series plots\n", - "Using iris quick plot to create time series plots. Let's load the necessary libraries first.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we first need to load libraries for plotting \n", - "import iris.plot as iplt\n", - "import iris.quickplot as qplt\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's plot the timeseries of mean surface temeprature over Shanghai region from 1950 - 2000" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# loading mean air temperature \n", - "sft = cubelist.extract_strict('surface_temperature')\n", - "sft.coord_system()\n", - "sft" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Shanghai region coordinates \n", - "min_lat=29.0\n", - "max_lat=32.0\n", - "min_lon=118.0\n", - "max_lon=123.0\n", - "# load extract_rot_cube from catnip\n", - "from catnip.preparation import extract_rot_cube\n", - "sft_shangai = extract_rot_cube(sft, min_lat, min_lon, max_lat, max_lon)\n", - "sft_shangai" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Now constrain over time\n", - "start_time = 1950\n", - "end_time = 2000\n", - "time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", - "sft_tim = sft_shangai.extract(time_constraint)\n", - "sft_tim" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# collapse the longitude and latitude and calculate mean over the time period\n", - "timeseries = sft_tim.collapsed(['grid_latitude','grid_longitude'], iris.analysis.MEAN)\n", - "timeseries" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Lets plot the timeseries using a standard matplotlib library.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# ploting with matplotlib \n", - "plt.plot(timeseries.data)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We have got the time series values. Now we can plot them using the [**iris quickplot**](https://scitools.org.uk/iris/docs/latest/iris/iris/quickplot.html?highlight=quickplot).[what does this add?]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# plotting with the quickplot \n", - "qplt.plot(timeseries)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: iris.quickplot adds extra automatic labelling: axes are labelled with a coordinate name and units, and the plot title is taken from the cube name. On the other hand using matplotlib.plot we need to add labels and title manually. \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 3.2 Contour plots\n", - "Using iris quick plot to create contour plots\n", - "\n", - "Let's plot the average surface temperature from 1900 to 2000 over Shangai region.\n", - "\n", - "We can collapse 'time' dimension os sft_tim cube to get the spatial mean " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "spatial_mean = sft_tim.collapsed(['time'], iris.analysis.MEAN)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now that we have the mean values we can make a spatial contour plot using the iris quickplot contourf method" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# plot the surface temperature contour at the first timestep \n", - "qplt.contourf(spatial_mean)\n", - "# add some coastlines for context\n", - "plt.gca().coastlines()\n", - "# set the figure size\n", - "plt.gcf().set_size_inches(8,12)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: iris.quickplot also adds the colorbar\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Task:
      \n", - "
    • Plot time series of maximum air temperature from 1900 to 2000 of only summer season (June, July and August)
    • \n", - "
    • Plot contour plot of the maximum air temperature from 1900 to 2000 of only summer season (June, July and August)
    • \n", - "
    \n", - "
    \n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# time series plot\n", - "# write your code here .." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# contour plot\n", - "# write your code here .." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 4. Saving the cube" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 4.1 Save the cube in zarr store\n", - "We can save our cube in zarr store to be used later. \n", - "\n", - "For this purpose, we first need to convert cube into xarray and then save it into zarr store.\n", - "\n", - "Let's save 'spatial_mean' cube from the above section." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# converting cube back to xarray\n", - "sft_mean = xr.DataArray.from_iris(spatial_mean)\n", - "\n", - "# rename the xarray\n", - "sft_mean.rename('surface_temperature_mean')\n", - "\n", - "# checking the chunk size of the xarray\n", - "sft_mean.chunks" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# convert the xarray into dataset\n", - "sft_mean_ds = sft_mean.to_dataset()\n", - "\n", - "# path to where store the zarr data\n", - "zarr_store = f\"{os.environ['HOME']}/zstore\"\n", - "\n", - "# store the dataset to specfied path as zarr data store\n", - "sft_mean_ds.to_zarr(zarr_store, consolidated=True, mode='w')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 5. Exercises" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this exercise we will analyse the mean precipitation rate from 1950 - 2010 over the Shanghai region" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 1: Load monthly data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# write your code here ... " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 2: Extract precipitation_flux" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# write your code here ..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 3: calculate mean" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# write your code here ..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 4: Plot timeseries" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# write your code here ..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 5: Spatial plot over Shanghai" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# write your code here ..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "
    \n", - "Summary
    \n", - " In this session we learned how:
    \n", - "
      \n", - "
    • to prepre sube for analysis
    • \n", - "
    • to perform basic arithmatic operation
    • \n", - "
    • to plot timeseries and contours
    • \n", - "
    • to save data in zarr format
    • \n", - "
    \n", - "\n", - "
    \n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cssp37", - "language": "python", - "name": "cssp37" - }, - "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.7.8" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/notebooks/CSSP_20CRDS_Tutorials/tutorial_3_basic_analysis.ipynb b/notebooks/CSSP_20CRDS_Tutorials/tutorial_3_basic_analysis.ipynb deleted file mode 100644 index de8a6d0..0000000 --- a/notebooks/CSSP_20CRDS_Tutorials/tutorial_3_basic_analysis.ipynb +++ /dev/null @@ -1,1301 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "# Tutorial 3: Basic data analysis\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Learning Objectives:\n", - "\n", - "In this session we will learn: \n", - "1. to calculate and visualise annual and monthly means\n", - "2. to calculate and visualise seasonal means\n", - "3. to calculate mean differences (anomalies)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Contents\n", - "\n", - "1. [Calculate annual and monthly mean](#annual)\n", - "2. [Calculate seasonal means](#season)\n", - "3. [Calculating differences (anomalies)](#percent)\n", - "4. [Exercises](#exercise)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Prerequisites
    \n", - "- Basic programming skills in python
    \n", - "- Familiarity with python libraries Iris, Numpy and Matplotlib
    \n", - "- Basic understanding of climate data
    \n", - "- Tutorials 1 and 2\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1. Calculating annual and monthly mean\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1.1 Import libraries \n", - "Import the necessary libraries. Current datasets are in zarr format, we need zarr and xarray libraries to access the data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import xarray as xr\n", - "import zarr\n", - "import iris\n", - "import os\n", - "from catnip.preparation import extract_rot_cube, add_bounds\n", - "from scripts.xarray_iris_coord_system import XarrayIrisCoordSystem as xics\n", - "xi = xics()\n", - "xr.set_options(display_style='text') # Work around for AML bug that won't display HTML output." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.2 Set up authentication for the Azure blob store\n", - "\n", - "The data for this course is held online in an Azure Blob Storage Service. To access this we use a SAS (shared access signature). You should have been given the credentials for this service before the course, but if not please ask your instructor. We use the getpass module here to avoid putting the token into the public domain. Run the cell below and in the box enter your SAS and press return. This will store the password in the variable SAS." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import getpass\n", - "# SAS WITHOUT leading '?'\n", - "SAS = getpass.getpass()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We now use the Zarr library to connect to this storage. This is a little like opening a file on a local file system but works without downloading the data. This makes use of the Azure Blob Storage service. The zarr.ABStore method returns a zarr.storage.ABSStore object which we can now use to access the Zarr data in the same way we would use a local file. If you have a Zarr file on a local file system you could skip this step and instead just use the path to the Zarr data below when opening the dataset." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "store = zarr.ABSStore(container='metoffice-20cr-ds', prefix='monthly/', account_name=\"metdatasa\", blob_service_kwargs={\"sas_token\":SAS})\n", - "type(store)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.3 Read monthly data\n", - "A Dataset consists of coordinates and data variables. Let's use the xarray's **open_zarr()** method to read all our zarr data into a dataset object and display it's metadata." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# use the open_zarr() method to read in the whole dataset metadata\n", - "dataset = xr.open_zarr(store)\n", - "# print out the metadata\n", - "dataset" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Convert dataset into iris cubelist" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# create an empty list to hold the iris cubes\n", - "cubelist = iris.cube.CubeList([])\n", - "\n", - "# use the DataSet.apply() to convert the dataset to Iris Cublelist\n", - "dataset.apply(lambda da: cubelist.append(xi.to_iris(da)))\n", - "\n", - "# print out the cubelist.\n", - "cubelist" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.4 Calculating annual mean, maximum and minimum over an area\n", - "\n", - "Here we calculate annual mean, maximum and minimum air_temperature over the Shanghai region from 1981 to 2010. \n", - "\n", - "We will first need to extract the required variables, extract the Shanghai region and constrain by time period. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# extract air_temperature\n", - "air_temp = cubelist.extract('air_temperature')\n", - "\n", - "# extracting maximum air temperature\n", - "cons = iris.Constraint(cube_func=lambda c: ('ukmo__process_flags' in c.attributes) and (c.attributes['ukmo__process_flags'][0].split(' ')[0] == 'Maximum'))\n", - "air_temp_max = air_temp.extract_strict(cons)\n", - "\n", - "# extracting mainimum air temperature\n", - "cons = iris.Constraint(cube_func=lambda c: ('ukmo__process_flags' in c.attributes) and (c.attributes['ukmo__process_flags'][0].split(' ')[0] == 'Minimum'))\n", - "air_temp_min = air_temp.extract_strict(cons)\n", - "\n", - "# extracting mean air temperature\n", - "cons = iris.Constraint(cube_func=lambda c: (len(c.cell_methods) > 0) and (c.cell_methods[0].method == 'mean') and c.cell_methods[0].intervals[0] == '1 hour')\n", - "air_temp_mean = air_temp.extract_strict(cons)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# defining Shangai region coords\n", - "min_lat=29.0\n", - "max_lat=32.0\n", - "min_lon=118.0\n", - "max_lon=123.0\n", - "\n", - "\n", - "# extract data for the the Shanghai region using extract_rot_cube() function\n", - "max_cube = extract_rot_cube(air_temp_max, min_lat, min_lon, max_lat, max_lon)\n", - "min_cube = extract_rot_cube(air_temp_min, min_lat, min_lon, max_lat, max_lon)\n", - "mean_cube = extract_rot_cube(air_temp_mean, min_lat, min_lon, max_lat, max_lon)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# print out the mean cube\n", - "mean_cube" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# define start and end year for our time constraint\n", - "start_time = 1981\n", - "end_time = 2010\n", - "\n", - "# define the time constraint\n", - "cons = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", - "\n", - "# load the data into cubes applying the time constraint\n", - "max_cube = max_cube.extract(cons)\n", - "min_cube = min_cube.extract(cons)\n", - "mean_cube = mean_cube.extract(cons)\n", - "\n", - "# printing out the mean cube to see the change in the shape of time dimension\n", - "mean_cube" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note:The CATNIP library function preparation.add_time_coord_cats adds a range of numeric coordinate categorisations to the cube. For more details see the documentation\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We have got required cubes. Now we can add categorical coordinates to such as *year* to the time dimension in our cubes using the CATNIP **preparation.add_time_coord_cats** function." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# load CATNIP's add_time_coord_cats method\n", - "from catnip.preparation import add_time_coord_cats\n", - "\n", - "# Add other dimension coordinates\n", - "max_cube = add_time_coord_cats(max_cube)\n", - "min_cube = add_time_coord_cats(min_cube)\n", - "mean_cube = add_time_coord_cats(mean_cube)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Print the *max_cube* and inspect the categorical coordinates that have been added to the time coordinate of our cube." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# printing the max_cube. Note the addtional coordinates under the Auxiliary coordinates\n", - "max_cube" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can see that **add_time_coord_cats** has added a few auxiliary coordinates including the *year* coordinate to the *time* dimension.\n", - "\n", - "Now we can calculate maximum, minimum and mean values over the *year* coordinate using **aggregated_by** method. This will give us a single value for each year at every grid cell (30 time points in total)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Calculate yearly max, min and mean values\n", - "yearly_max = max_cube.aggregated_by(['year'], iris.analysis.MAX)\n", - "yearly_min = min_cube.aggregated_by(['year'], iris.analysis.MIN)\n", - "yearly_mean = mean_cube.aggregated_by(['year'], iris.analysis.MEAN)\n", - "\n", - "# printing the yearly_mean\n", - "yearly_mean" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we have the mean, maximum and minimum at every grid point, we can find the maximum, minimum and mean of all grid boxes to give us a timeseries which represents the aveage etc over all grid boxes in our region of interest." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Collapse longitude and latitude to get a timeseries\n", - "yearly_max = yearly_max.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MAX)\n", - "yearly_min = yearly_min.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MIN)\n", - "yearly_mean = yearly_mean.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN)\n", - "\n", - "# The resulting cube will be time series only\n", - "yearly_mean" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Print the *year* coordinate of max cube to see if we have the correct years for our constraint time period." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(yearly_max.coord('year').points)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.5 Calculating mean annual cycle\n", - "\n", - "We can calculate the mean annual cycle for precipitation_flux data over the Shanghai region for 1981-2010 (30 years) by averaging together each month(so we average all January data to get the mean for January)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# extract the precipitation_flux data into an iris cube from the cubelist\n", - "pflx = cubelist.extract_strict('precipitation_flux')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "min_lat=29.0\n", - "max_lat=32.0\n", - "min_lon=118.0\n", - "max_lon=123.0\n", - "\n", - "# extract data for the the Shanghai region using extract_rot_cube() function\n", - "pflx_ext = extract_rot_cube(pflx, min_lat, min_lon, max_lat, max_lon)\n", - "pflx_ext" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next extracting time constraint" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Extracting time constraint\n", - "start_time = 1981\n", - "end_time = 2010\n", - "time_cons = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", - "subcube = pflx_ext.extract(time_cons)\n", - "subcube" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# remove auxiliary coordinates, added by extract_rot_cube but cause unecessary warnings later\n", - "subcube.remove_coord(\"latitude\")\n", - "subcube.remove_coord(\"longitude\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "we can use the **add_time_coord_cats** method and add categorical coordinates such as *month* to the *time* dimension to our cube." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# add the time categorical coordinate to cube\n", - "subcube = add_time_coord_cats(subcube)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Create mean annual cycle\n", - "monthly_mean = subcube.aggregated_by(['month_number'], iris.analysis.MEAN)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "monthly_mean = add_bounds(monthly_mean, ['grid_latitude','grid_longitude'])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can calculate the area weight using **iris.analysis.cartography.area_weights** so that we weight the average to account for the fact that the areas of grid cells are variable." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import iris.analysis.cartography\n", - "#calculate the area weight\n", - "grid_areas = iris.analysis.cartography.area_weights(monthly_mean)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Calculate area averaged monthly mean rainfall\n", - "monthly_mean = monthly_mean.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN, weights=grid_areas)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.6 Visualising yearly and monthly means\n", - "\n", - "Let's now visualise yearly mean, max, min data for the air temperature and monthly mean data for the precipitation_flux." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we first need to load libraries for plotting \n", - "import iris.plot as iplt\n", - "import iris.quickplot as qplt\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Visualise yearly max, min and mean data for *air_temperature*." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# plot the timeseries for yearly max, min and mean data\n", - "ax1 = qplt.plot(yearly_max, label = 'Max Temp')\n", - "ax2 = qplt.plot(yearly_min, label = 'Min Temp')\n", - "ax3 = qplt.plot(yearly_mean, label = 'Mean Temp')\n", - "plt.legend(bbox_to_anchor=(1.18, 0.78))\n", - "plt.grid()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's visualise monthly precipitation mean over the thirty years (1980-2010)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "qplt.plot(monthly_mean.coord('month_number'), monthly_mean,color='seagreen')\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Task:
      \n", - "
    • Calculate and visualise the monthly mean over Tibetan region from 1981 to 2010. Create the monthly mean with month names
    • \n", - "
    • Coordinates of Tibetan region: Latitude = [26 36], Longitude = [77 104]
    • \n", - "
    \n", - "
    \n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# time series plot\n", - "# write your code here .." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2. Calculating seasonal means" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 2.1 Calculating seasonal means: djf, mam, jja and son\n", - "\n", - "Calculate mean wind speed and wind direction from 1981 to 2010 for different seasons over the entire domain.\n", - "\n", - "First we need to calculate wind speed and wind direction. In previous tutorial, we calculated the wind speed using hard coded simple arithmetic operations. In this tutorial, we will use catnip's **windspeed** and **wind_direction** methods.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# define constraints for x_wind and y_wind data\n", - "xcons = iris.Constraint(cube_func=lambda c: c.standard_name == 'x_wind' and ('pressure' not in [coord.name() for coord in c.coords()]))\n", - "ycons = iris.Constraint(cube_func=lambda c: c.standard_name == 'y_wind' and ('pressure' not in [coord.name() for coord in c.coords()]))\n", - "\n", - "# apply the constraint and load the x_wind and y_wind data\n", - "u = cubelist.extract_strict(xcons)\n", - "v = cubelist.extract_strict(ycons)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# define time constraint\n", - "start_time = 1981\n", - "end_time = 2010\n", - "cons = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", - "u = u.extract(cons)\n", - "v = v.extract(cons)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can now import and use catnip's **windspeed** and **wind_direction** methods" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# import catnip methods\n", - "from catnip.analysis import windspeed\n", - "from catnip.analysis import wind_direction" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# calculate windspeed and wind direction\n", - "wind_speed_cube = windspeed(u,v)\n", - "wind_direction_cube = wind_direction(u,v)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Add coordinates and extract data for different seasons" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from catnip.preparation import add_time_coord_cats\n", - "wind_speed_cube = add_time_coord_cats(wind_speed_cube)\n", - "wind_direction_cube = add_time_coord_cats(wind_direction_cube)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Extract the windspeed data for all four seasons\n", - "wndspd_djf = wind_speed_cube.extract(iris.Constraint(season='djf'))\n", - "wndspd_mam = wind_speed_cube.extract(iris.Constraint(season='mam'))\n", - "wndspd_jja = wind_speed_cube.extract(iris.Constraint(season='jja'))\n", - "wndspd_son = wind_speed_cube.extract(iris.Constraint(season='son'))\n", - "\n", - "# Extract the wind direction data for the all four season \n", - "wnddir_djf = wind_direction_cube.extract(iris.Constraint(season='djf'))\n", - "wnddir_mam = wind_direction_cube.extract(iris.Constraint(season='mam'))\n", - "wnddir_jja = wind_direction_cube.extract(iris.Constraint(season='jja'))\n", - "wnddir_son = wind_direction_cube.extract(iris.Constraint(season='son'))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# lets print out wnddir_son cube to see its chape\n", - "wnddir_son" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Calculate seasonal means" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# calculate the windspeed mean over the seasons\n", - "wspd_djf_mean = wndspd_djf.aggregated_by(['season'], iris.analysis.MEAN)\n", - "wspd_mam_mean = wndspd_mam.aggregated_by(['season'], iris.analysis.MEAN)\n", - "wspd_jja_mean = wndspd_jja.aggregated_by(['season'], iris.analysis.MEAN)\n", - "wspd_son_mean = wndspd_son.aggregated_by(['season'], iris.analysis.MEAN)\n", - "\n", - "# calculate the wind direction mean over the seasons\n", - "wndir_djf_mean = wnddir_djf.aggregated_by(['season'], iris.analysis.MEAN)\n", - "wndir_mam_mean = wnddir_mam.aggregated_by(['season'], iris.analysis.MEAN)\n", - "wndir_jja_mean = wnddir_jja.aggregated_by(['season'], iris.analysis.MEAN)\n", - "wndir_son_mean = wnddir_son.aggregated_by(['season'], iris.analysis.MEAN)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# lets print out wndir_son_mean cube to see its chape\n", - "wndir_son_mean" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can now visualise seasonal means" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we first need to load libraries for plotting \n", - "import iris.plot as iplt\n", - "import iris.quickplot as qplt\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# list of seasonal cubes to loop through\n", - "seasonal_cubes = [wspd_djf_mean, wspd_mam_mean, wspd_jja_mean, wspd_son_mean]\n", - "\n", - "# here we create a list of mean cubes and we will run for loop over it.\n", - "\n", - "# set a figure big enough to hold the subplots\n", - "plt.figure(figsize=(10, 10))\n", - "\n", - "# loop through the seaonal cube list and plot the data\n", - "# len functions returns the length of the list. \n", - "for i in range(len(seasonal_cubes)): \n", - " \n", - " plt.subplot(2, 2, i+1)\n", - " # above line will create the 2 rows and 2 cols of subplots and i indicates the position of subplot. \n", - " # i starts from 0, that is why we increment 1 in it. \n", - " # plot the windspeed at the first timestep \n", - " qplt.contourf(seasonal_cubes[i][0,:,:])\n", - " # add some coastlines for context\n", - " plt.gca().coastlines() \n", - " # get the season name from the coordinate\n", - " season = seasonal_cubes[i].coord('season').points[0]\n", - " # add the name as plot's title\n", - " plt.title('Season: '+ season)\n", - " plt.tight_layout()\n", - " \n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can also plot in any other project. Python cartopy library provide us the range of option of ploting in different projection. See the list of option in [cartopy documentation](https://scitools.org.uk/cartopy/docs/latest/crs/projections.html). Lets try the above plot with **PlateCarree** projection." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import cartopy.crs as ccrs\n", - "# list of seasonal cubes to loop through\n", - "seasonal_cubes = [wspd_djf_mean, wspd_mam_mean, wspd_jja_mean, wspd_son_mean]\n", - "\n", - "# set a figure big enough to hold the subplots\n", - "plt.figure(figsize=(10, 10))\n", - "\n", - "# loop through the seaonal cube list and plot the data\n", - "for i in range(len(seasonal_cubes)): \n", - " \n", - " plt.subplot(2, 2, i+1, projection=ccrs.PlateCarree())\n", - " # plot the windspeed at the first timestep \n", - " qplt.contourf(seasonal_cubes[i][0,:,:])\n", - " # add some coastlines for context\n", - " plt.gca().coastlines() \n", - " # get the season name from the coordinate\n", - " season = seasonal_cubes[i].coord('season').points[0]\n", - " # add the name as plot's title\n", - " plt.title('Season: '+ season)\n", - " plt.tight_layout()\n", - " \n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Task:
      \n", - "
    • Calculate and visualise the seasonal mean of surface temperature over Tibatan region from 1981 to 2010.
    • \n", - "
    • Coordinates of Tibetan region: Latitude = [26 36], Longitude = [77 104]
    • \n", - "
    \n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Calculate seasonal means\n", - "# write your code here .." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Visualising seasonal means\n", - "# write your code here .." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 3. Calculating differences" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 3.1 mean surface temperature diffference in winter season (dec, jan, feb)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can find the difference of mean surface temperature between the past(1851-1880) and recent(1981-2010) 30 years periods.\n", - "\n", - "First, we need to extract out desired data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# extract air_temperature\n", - "sft = cubelist.extract_strict('surface_temperature')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# constraints: two 30 years periods - past and presnet\n", - "past_cons = iris.Constraint(time=lambda cell: 1851 <= cell.point.year <= 1880)\n", - "present_cons = iris.Constraint(time=lambda cell: 1981 <= cell.point.year <= 2010)\n", - "past = sft.extract(past_cons)\n", - "present = sft.extract(present_cons)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# load catnip's add_time_coord_cats method\n", - "from catnip.preparation import add_time_coord_cats\n", - "\n", - "# Add other dimension coordinates\n", - "past = add_time_coord_cats(past)\n", - "present = add_time_coord_cats(present)\n", - "\n", - "# Extract the winter season \n", - "past_djf = past.extract(iris.Constraint(season='djf'))\n", - "present_djf = present.extract(iris.Constraint(season='djf'))\n", - "\n", - "# extract data for Shanghai region\n", - "past_djf = extract_rot_cube(past_djf, min_lat, min_lon, max_lat, max_lon)\n", - "present_djf = extract_rot_cube(present_djf, min_lat, min_lon, max_lat, max_lon)\n", - "\n", - "# calculate 30 year mean of winter season\n", - "past_djf = past_djf.aggregated_by(['season'], iris.analysis.MEAN)\n", - "present_djf = present_djf.aggregated_by(['season'], iris.analysis.MEAN)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We have now got our cubes for different climatological periods. We now calcuate the difference by subtracting the past data form present using **iris.analysis.math.subtract** method." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "djf_diff = iris.analysis.maths.subtract(present_djf, past_djf)\n", - "djf_diff.rename('surface temperature difference: Winter')\n", - "past_djf.rename('surface temperature past climate: Winter 1851-1880 ')\n", - "present_djf.rename('surface temperature present climate: Winter 1981-2010 ')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# add bounds to the cubes \n", - "past_djf = add_bounds(past_djf, ['grid_latitude','grid_longitude'])\n", - "present_djf = add_bounds(present_djf, ['grid_latitude','grid_longitude'])\n", - "djf_diff = add_bounds(djf_diff, ['grid_latitude','grid_longitude'])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "
    \n", - "Note: iris.analysis.math provides a range of mathematical and statistical operations. See the documentation for more information\n", - "\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can now visualise the difference" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# list of our djf cubes and diff cube to loop through\n", - "seasonal_cubes = [present_djf, past_djf, djf_diff]\n", - "plt.figure(figsize=(15, 10))\n", - "# loop through the seaonal cube list and plot the data\n", - "for i in range(len(seasonal_cubes)):\n", - " plt.subplot(2, 2, i+1)\n", - " # plot the windspeed at the first timestep \n", - " if i==2:\n", - " qplt.pcolormesh(seasonal_cubes[i][0,:,:],cmap=plt.cm.get_cmap('Reds'),vmin=0, vmax=2)\n", - " else:\n", - " qplt.pcolormesh(seasonal_cubes[i][0,:,:],vmin=277.5, vmax=289)\n", - " \n", - " # add some coastlines for context\n", - " plt.gca().coastlines() \n", - " # get the season name from the coordinate\n", - " season = seasonal_cubes[i].coord('season').points[0]\n", - " # add the name as plot's title\n", - " plt.title(seasonal_cubes[i].name())\n", - " \n", - " \n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 3.2 Percentage difference in winter precipitaition " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can also calculate the percentage difference. \n", - "\n", - "Let's calculate the change in mean precipitation from a past 30 year period (1851-1880) to the most recent 30 years (1981-2010)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# extract precipitation flux\n", - "pflx = cubelist.extract_strict('precipitation_flux')\n", - "\n", - "# extract the time contraints \n", - "past_cons = iris.Constraint(time=lambda cell: 1851 <= cell.point.year <= 1880)\n", - "present_cons = iris.Constraint(time=lambda cell: 1981 <= cell.point.year <= 2010)\n", - "past = pflx.extract(past_cons)\n", - "present = pflx.extract(present_cons)\n", - "\n", - "# Add other dimension coordinates\n", - "past = add_time_coord_cats(past)\n", - "present = add_time_coord_cats(present)\n", - "\n", - "# Extract the precipitation data for the winter season \n", - "past_djf = past.extract(iris.Constraint(season='djf'))\n", - "present_djf = present.extract(iris.Constraint(season='djf'))\n", - "\n", - "# extract data for Shanghai region\n", - "past_djf = extract_rot_cube(past_djf, min_lat, min_lon, max_lat, max_lon)\n", - "present_djf = extract_rot_cube(present_djf, min_lat, min_lon, max_lat, max_lon)\n", - "\n", - "# calculate the means \n", - "past_djf = past_djf.aggregated_by(['season'], iris.analysis.MEAN)\n", - "present_djf = present_djf.aggregated_by(['season'], iris.analysis.MEAN)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can now calculate the difference using **subtract** function" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "djf_diff = iris.analysis.maths.subtract(present_djf, past_djf)\n", - "djf_diff.rename('precipitation flux difference: Winter')\n", - "past_djf.rename('precipitation flux past climate: Winter 1851-1880 ')\n", - "present_djf.rename('precipitation flux present climate: Winter 1981-2010 ')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# add bounds to the cubes \n", - "past_djf = add_bounds(past_djf, ['grid_latitude','grid_longitude'])\n", - "present_djf = add_bounds(present_djf, ['grid_latitude','grid_longitude'])\n", - "djf_diff = add_bounds(djf_diff, ['grid_latitude','grid_longitude'])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To calcuate the percentage difference, we can use **analysis.maths.multiply** and **iris.analysis.maths.divide** to calculate percentage change" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Find the percentage change\n", - "pcent_change = iris.analysis.maths.multiply(iris.analysis.maths.divide(djf_diff, past_djf), 100)\n", - "\n", - "# remember to change the title and units to reflect the data processing\n", - "pcent_change.rename('precipitation flux percent difference')\n", - "pcent_change.units = '%'" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# using iris plot for better colour saturation!\n", - "import iris.plot as iplt\n", - "\n", - "# list of our winter cubes and the diff cube to loop through for plotting\n", - "seasonal_cubes = [present_djf, past_djf, pcent_change]\n", - "plt.figure(figsize=(15, 10))\n", - "# loop through the seaonal cube list and plot the data\n", - "for i in range(len(seasonal_cubes)):\n", - " plt.subplot(2, 2, i+1)\n", - " # plot the windspeed at the first timestep \n", - " if i==2:\n", - " qplt.pcolormesh(seasonal_cubes[i][0,:,:],cmap=plt.cm.get_cmap('RdBu'))\n", - " else:\n", - " qplt.pcolormesh(seasonal_cubes[i][0,:,:])\n", - " \n", - " # add some coastlines for context\n", - " plt.gca().coastlines() \n", - " # get the season name from the coordinate\n", - " season = seasonal_cubes[i].coord('season').points[0]\n", - " # add the name as plot's title\n", - " plt.title(seasonal_cubes[i].name())\n", - " \n", - " \n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Task:
      \n", - "
    • Calculate mean surface temperature difference over Tibetan region from past 30 years (1851-1880) to present 30 years (1981-2010).\n", - "
    • Coordinates of Tibetan region: Latitude = [26 36], Longitude = [77 104]
    • \n", - "
    \n", - "
    \n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Write your code here ..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 4. Exercises" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this exercise we will analyse the mean air temperature from past 30 years (1851-1880) to present 30 years (1981-2010), over the Shanghai region, in all four seasons. Visualize past, present and difference in a row." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 1: Load monthly data and constraint time and region" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Write your code here ..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Excercise 2: Calculate seasonal mean" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Write your code here ..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Excercise 3: Visualise the results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Write your code here ..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Summary
    \n", - " In this session we learned how:
    \n", - "
      \n", - "
    • to calculate yearly and monthly means
    • \n", - "
    • to calculate seasonal means and differences
    • \n", - "
    • to visualize the results
    • \n", - "
    \n", - "\n", - "
    \n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cssp37", - "language": "python", - "name": "cssp37" - }, - "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.7.8" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/notebooks/CSSP_20CRDS_Tutorials/tutorial_4_advance_analysis.ipynb b/notebooks/CSSP_20CRDS_Tutorials/tutorial_4_advance_analysis.ipynb deleted file mode 100644 index de359d4..0000000 --- a/notebooks/CSSP_20CRDS_Tutorials/tutorial_4_advance_analysis.ipynb +++ /dev/null @@ -1,779 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "# Tutorial 4: Advanced data analysis\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Learning Objectives:\n", - "\n", - "In this session we will learn: \n", - "1. to calculate frequency of wet days\n", - "2. to calculate percentiles\n", - "3. how to calculate some useful climate extremes statistics" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Contents\n", - "\n", - "1. [Frequency of wet days](#freq)\n", - "2. [Percentiles](#percent)\n", - "3. [Investigating extremes](#extremes)\n", - "4. [Exercises](#exercise)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Prerequisites
    \n", - "- Basic programming skills in python
    \n", - "- Familiarity with python libraries Iris, Numpy and Matplotlib
    \n", - "- Basic understanding of climate data
    \n", - "- Tutorial 1, 2 and 3\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1. Frequency of wet days\n", - "### 1.1 Import libraries\n", - "Import the necessary libraries. Current datasets are in zarr format, we need zarr and xarray libraries to access the data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import xarray as xr\n", - "import zarr\n", - "import iris\n", - "import os\n", - "from iris.analysis import Aggregator\n", - "import dask\n", - "dask.config.set(scheduler=dask.get)\n", - "import dask.array as da\n", - "import iris.quickplot as qplt\n", - "import iris.plot as iplt\n", - "import cartopy.crs as ccrs\n", - "import cartopy.feature as cfeature\n", - "import matplotlib.pyplot as plt\n", - "from catnip.preparation import extract_rot_cube, add_bounds\n", - "from scripts.xarray_iris_coord_system import XarrayIrisCoordSystem as xics\n", - "xi = xics()\n", - "xr.set_options(display_style='text') # Work around for AML bug that won't display HTML output." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Prerequisites
    \n", - "- Basic programming skills in python
    \n", - "- Familiarity with python libraries Iris, Numpy and Matplotlib
    \n", - "- Basic understanding of climate data
    \n", - "- Tutorials 1, 2 and 3\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.2 Set up authentication for the Azure blob store\n", - "\n", - "The data for this course is held online in an Azure Blob Storage Service. To access this we use a SAS (shared access signature). You should have been given the credentials for this service before the course, but if not please ask your instructor. We use the getpass module here to avoid putting the token into the public domain. Run the cell below and in the box enter your SAS and press return. This will store the password in the variable SAS." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import getpass\n", - "# SAS WITHOUT leading '?'\n", - "SAS = getpass.getpass()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We now use the Zarr library to connect to this storage. This is a little like opening a file on a local file system but works without downloading the data. This makes use of the Azure Blob Storage service. The zarr.ABStore method returns a zarr.storage.ABSStore object which we can now use to access the Zarr data in the same way we would use a local file. If you have a Zarr file on a local file system you could skip this step and instead just use the path to the Zarr data below when opening the dataset." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "store = zarr.ABSStore(container='metoffice-20cr-ds', prefix='daily/', account_name=\"metdatasa\", blob_service_kwargs={\"sas_token\":SAS})\n", - "type(store)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.3 Read daily data\n", - "A Dataset consists of coordinates and data variables. Let's use the xarray's **open_zarr()** method to read all our zarr data into a dataset object and display it's metadata" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# use the open_zarr() method to read in the whole dataset metadata\n", - "dataset = xr.open_zarr(store)\n", - "# print out the metadata\n", - "dataset" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Convert the dataset into an iris cubelist." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from xarray_iris_coord_system import XarrayIrisCoordSystem as xics\n", - "xi = xics()\n", - "# create an empty list to hold the iris cubes\n", - "cubelist = iris.cube.CubeList([])\n", - "\n", - "# use the DataSet.apply() to convert the dataset to Iris Cublelist\n", - "dataset.apply(lambda da: cubelist.append(xi.to_iris(da)))\n", - "\n", - "# print out the cubelist.\n", - "cubelist" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Note: The following sections demonstrate analysis of moderate extremes. The basis of climate extremes analysis is a common set of standard extreme climate indices, defined by the World Climate Research Programme Expert Team on Climate Change Detection and Indices (ETCCDI)\n", - " \n", - "
    There are 27 climate extremes indices, nicely summarised by the Climdex website.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.4 Calculate number of wet days ($\\mathrm{pr} \\geq 1 mm \\;day^{-1}$)\n", - "\n", - "In this section we'll be looking at wet days, a threshold measure giving the count of days when $\\mathrm{pr} \\geq 1 mm \\;day^{-1}$, and R95p, the 95th percentile of precipitation on wet days ($\\mathrm{pr} \\geq 1 mm \\;day^{-1}$) in the 1851-1900 period over the Shanghai region." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Extract the 'precipitation_flux' cube\n", - "pflx = cubelist.extract_strict('precipitation_flux')\n", - "# To avoid warnings when collapsing coordinates and also when plotting, add bounds to all coordinates\n", - "pflx = add_bounds(pflx,['time', 'grid_latitude', 'grid_longitude'])\n", - "# convert units to mm/day (equivalent to 'kg m-2 day-1')\n", - "pflx.convert_units('kg m-2 day-1')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Applying the time and region constraint" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# define time constraint and extract 1851-1900 period\n", - "start_time = 1851\n", - "end_time = 1900\n", - "\n", - "# define the time constraint\n", - "time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", - "\n", - "# laod the data into cubes applying the time constraint\n", - "pflx = pflx.extract(time_constraint)\n", - "\n", - "# extract Shangai region and constain with time\n", - "\n", - "# defining Shangai region coords\n", - "min_lat=29.0\n", - "max_lat=32.0\n", - "min_lon=118.0\n", - "max_lon=123.0\n", - "\n", - "# extract data for the the Shanghai region using extract_rot_cube() function\n", - "pflx = extract_rot_cube(pflx, min_lat, min_lon, max_lat, max_lon)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# now use the iris COUNT aggregator to count the number of days with > 1mm precip\n", - "wetdays = pflx.collapsed('time', iris.analysis.COUNT, function=lambda values: values > 1)\n", - "wetdays.rename('number of wet days (>=1mm/day)')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Find wet days as a percentage of total days\n", - "total_days = len(pflx.coord('time').points)\n", - "pcent_wetdays = (wetdays / total_days) * 100\n", - "\n", - "# renaming the cube name and units\n", - "pcent_wetdays.rename('percentage of wet days (>=1mm/day)')\n", - "pcent_wetdays.units = '%'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, we can plot the number and percententage of wet days" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "fig = plt.figure(figsize=(12, 6))\n", - "fig.suptitle('Number of wet days (1851-1900)', fontsize=16)\n", - "ax1 = fig.add_subplot(1, 2, 1, projection=ccrs.PlateCarree())\n", - "qplt.pcolormesh(wetdays)\n", - "ax1.coastlines()\n", - "ax1 = fig.add_subplot(1, 2, 2, projection=ccrs.PlateCarree())\n", - "qplt.pcolormesh(pcent_wetdays)\n", - "ax1.coastlines()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Task:
      \n", - "
    • Calculate and visualise the percentage difference of wet days from past (1851-1880) to recent (1981-2010) 30 years period.\n", - "
    \n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Write your code here .." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Write your code here .." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2. Percentiles" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 2.1 Calculating 95th percentile of precipitation\n", - "\n", - "In this section we will calculate the extreme precipitation i.e. 95th percentile of rainfall on wet days over Shanghai region from 1981-2010. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Extract the 'precipitation_flux' cube\n", - "pflx = cubelist.extract_strict('precipitation_flux')\n", - "\n", - "# change the units to kg m-2 d-1\n", - "pflx.convert_units('kg m-2 d-1')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# define time constraint and extract 1851-1900 period\n", - "start_time = 1981\n", - "end_time = 2010\n", - "\n", - "# define the time constraint\n", - "cons = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", - "\n", - "# laod the data into cubes applying the time constraint\n", - "pflx = pflx.extract(cons)\n", - "\n", - "# extract Shangai region and constain with time\n", - "\n", - "# defining Shangai region coords\n", - "min_lat=29.0\n", - "max_lat=32.0\n", - "min_lon=118.0\n", - "max_lon=123.0\n", - "\n", - "# extract data for the the Shanghai region using extract_rot_cube() function\n", - "pflx = extract_rot_cube(pflx, min_lat, min_lon, max_lat, max_lon)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# make a copy of the cube, mask where daily rainfall < 1 so that only wet days\n", - "# are included in the calculation\n", - "pflx_wet = pflx.copy()\n", - "pflx_wet.data = np.ma.masked_less(pflx_wet.data, 1.0)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we can use the *iris.analysis.PERCENTILE* method to calculate the percentile." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "pflx_pc95 = pflx_wet.collapsed('time', iris.analysis.PERCENTILE, percent=95.)\n", - "pflx_pc95.rename('R95p of daily rainfall')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "fig = plt.figure(figsize=(12, 6))\n", - "fig.suptitle('Extreme rainfall', fontsize=16)\n", - "qplt.pcolormesh(pflx_pc95)\n", - "plt.gca().coastlines()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 3. Investigate extremes" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 3.1 Calculate the extreme index TX90P" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Calculate the frequency of warm days in the present (extreme index TX90P), i.e. the number of days which exceed the 90th percentile temperatures in the baseline. Then calculate the numbers of days as a percentage." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# first extract the air_temperature at 1.5m cubes from the cubelist\n", - "air_temp = cubelist.extract('air_temperature' & iris.AttributeConstraint(Height='1.5 m'))\n", - "\n", - "# constraint for the maximum temperature \n", - "max_temp_cons = iris.Constraint(cube_func=lambda c: (len(c.cell_methods) > 0) and \n", - " (c.cell_methods[0].method == 'maximum'))\n", - "\n", - "# define time constraint and extract 1851-1900 period (the baseline)\n", - "start_time = 1851\n", - "end_time = 1900\n", - "\n", - "# define the time constraint\n", - "time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", - "\n", - "# applying the pressure, maximum temperature and time constraints getting a single cube\n", - "max_temp = air_temp.extract_strict(max_temp_cons & time_constraint)\n", - "\n", - "# defining Shangai region coords\n", - "min_lat=29.0\n", - "max_lat=32.0\n", - "min_lon=118.0\n", - "max_lon=123.0\n", - "\n", - "# extract data for the the Shanghai region using extract_rot_cube() function\n", - "max_temp = extract_rot_cube(max_temp, min_lat, min_lon, max_lat, max_lon)\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "max_temp_pc90 = max_temp.collapsed('time', iris.analysis.PERCENTILE, percent=90.)\n", - "max_temp_pc90.rename('R90p of daily maximum temperature')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# extract a single cube of maximum air_temperature at 1.5m cube from the cubelist\n", - "max_temp = cubelist.extract_strict('air_temperature' & iris.AttributeConstraint(Height='1.5 m') &\n", - " max_temp_cons)\n", - "# extract data for the the Shanghai region using extract_rot_cube() function\n", - "max_temp = extract_rot_cube(max_temp, min_lat, min_lon, max_lat, max_lon)\n", - "\n", - "# Now extract present day\n", - "start_time = 1981\n", - "end_time = 2010\n", - "\n", - "time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", - "max_temp = max_temp.extract(time_constraint)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we need to calculate the number of warm days, we do so by counting all the data points that are greater than 90th percentile of the baseline period within the last 30 years. We can use numpy method **np.where** which return 1 where max_temp is greater then max_temp_pc90 and returns 0 otherwise. \n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# make new cube to hold the counts\n", - "nwarmdays = max_temp_pc90.copy()\n", - "\n", - "# Use broadcasting to identify all cells where daily temperatures in the future exceed the 95th percentile\n", - "temp_gt_pc90 = np.where(max_temp.data >= max_temp_pc90.data, 1, 0)\n", - "\n", - "# using np.ma.sum to sum the number of warm days above the 90th percentile\n", - "nwarmdays.data = np.ma.sum(temp_gt_pc90, axis=0)\n", - "\n", - "# the sum above removes the mask - reinstate it with \n", - "nwarmdays.data.mask = max_temp_pc90.data.mask\n", - "nwarmdays.units = '1'\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "qplt.pcolormesh(nwarmdays)\n", - "plt.gca().coastlines() \n", - "plt.show()\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Calculate percentage of warmest days by using **iris.analysis.maths**" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ndays = max_temp.shape[0]\n", - "# calculating percentage \n", - "nwd_pcent = iris.analysis.maths.divide(iris.analysis.maths.multiply(nwarmdays, 100), ndays)\n", - "nwd_pcent.units=\"%\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Ploting the percentage of warm days" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "qplt.pcolormesh(nwd_pcent)\n", - "plt.title('Percentage of warm days')\n", - "plt.gca().coastlines() \n", - "plt.tight_layout()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Task:
      \n", - "
    • Calculate and plot the past (1851-1880) and present (1981-2010) 90th percentile of maximum temperature and the difference between them.\n", - "
    \n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Enter your code here .." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Enter your code here .." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 4. Exercises\n", - "\n", - "In this exercise we will calculate the percentage of total precipitation from 1981-2010 which falls on very wet days (where a very wet day is one on which daily rainfall exceeds the 95th percentile of the baseline) over Shanghai region.\n", - "\n", - "Further we also calculate the percentage of very wet days in the past (1851-1880) and see the difference by plotting the difference of heavy rainfall in the past and present." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 1: calculate the percentage of total precipitation from 1981-2010 on very wet days (=> 95th Percentile)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# write your code here ..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 2: calculate the percentage of total precipitation from 1951-1880 on very wet days (=> 95th Percentile)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# write your code here ..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 3: Calculate the difference " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# write your code here ..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 4: Plot the percentages and difference " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# write your code here ..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "___" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Summary
    \n", - " In this session we learned how:
    \n", - "
      \n", - "
    • to calculate extreme values and percentages\n", - "
    • to calcuate basic extreme value indices \n", - "
    \n", - "\n", - "
    \n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cssp37", - "language": "python", - "name": "cssp37" - }, - "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.7.8" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/notebooks/CSSP_20CRDS_Tutorials/variableslist.pdf b/notebooks/CSSP_20CRDS_Tutorials/variableslist.pdf deleted file mode 100755 index 6a36809ea90a1eda78de3fb8e8be7035612f8fe0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 103839 zcmb@s1yo$i)-{R*mmnc{Xx!aBxVyVH?lf+}gA*KrhT!h*1PK9xySuyFYjW=W?>Xa> z_rEb74RqD6S~^!XthqP2qNq4MGXp0IB6%J73k8uGzyz>2wn9PV<6~6yZ~!uj7=esz z?9CY!jm&}002c7FGNY`KojDcIj$T5T8o;Oma&j>NsX76H%J%jk05jX4EpkRq)>3w6 z_Fy%yL!c=DybUNIz$ga<8JU800@#?i{_Iq@1iAs86rF%(KqsJ`3D^i56Zh+ifB*_2 z(9ZOaH?Ma8;np8_7)9(|?7$`&Wh_mdbpU@X>jC~Q$ND!pAs3K^y%Uw3k&%t1i8UQS z+r`+((g_@ah!fBVWNB|FY6JpOiSn>8u`n?)v#>I=voJGr(=stpg1^DrOUN`%* z9|)eYLU2H^|JyCF!~cIM`+H7a)AV0*3C0(kebB!ERt7rTyEuWd0K+Hd4w6s-fl~t> zOQ>)FI9{;goKm5iv!sDpJM$pVN_vMbuzMZc6g1*#Dh^pg;5mfYH0#gmJkLjS2Z$r25L`;ZfqTfx(D1}3~O@2D-6F2Au(*hP%kxlu;6QC$lkP+>Br$NZFsoiJE& zmZbUeiV|$yaSjFFo}Oi(1rD%?KKnE= zu}rL4aCOg<1Xe1W_ciytJViC?F|>DRGAus>f)j2ru{DN*-*G>}kq7rd%Vut@VRJ%I ze?o}0j-m6_W$@KGnz5hU|6Pjoa_sp;A7;udBEv9 zRkpG__1@qZ@(ki6d}?XF)DAQKKDCC16{bT`l_$P?x6~n44PA*Qpt^YV*Lv4`RDlrh z8GtG+ngYD2Nk?Y69J=|^lv(U0_O!%%7xnll{{s$2RcZ!~juq1(9GQ951=m!f-?j}C>a#Uiw|Vx)EDS@w%n8&p3=flv zTh#O3`d%2g&(*CzqYCoWx}%;o_SDaXUDqE8^z0a9jUIY=-|Z#)>8*}>OOo}sYdb}j zR{w0?e8-`VAbfZ4EeA-f2r(r`v|9JpO0GIMCYMx;G^Oq2T1rY+wxm8gHOcqlD${cY zxOk>j`m%Rt^CF%~x^r}qUCaa`{>+`Yrp+&e_Az>{58bYGQ5O0FFKZqiU&%sY&Iq+y zicsR-1W#sUpi9BU(4f-v@Hsinx
    Q(NE+S$gzZWUlc+SAsi1Q7Asy;z^J-hYC+@ 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%0Ajb&e$dFir2#QZnufj6RL1BHO+9NWipvO>YG}DL~ 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�(mFh=4evW7gJ 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 AmH+?% diff --git a/notebooks/awsutils/README-AWS.md b/notebooks/awsutils/README-AWS.md deleted file mode 100644 index 01f6e4a..0000000 --- a/notebooks/awsutils/README-AWS.md +++ /dev/null @@ -1,129 +0,0 @@ - -## AWS - -### Create an EC2 instance - -* Select Eu-west2 (London) region from the top right of navigation bar -* Click on Launch instance -* Choose Amazon Linux 2 AMI (HVM) kARNEL 5.10 64-bit (- X86) machine, click select -* Choose t2.2xlarge and click next: configure instance details -* Choose subnet default eu-west-2c -* In IAM role choose existing trainings-ec2-dev role and click next: storage -* 8 gb is fine, click next: add tags -* Add following tags - * Name: [Unique Instance name] - * Tenable: FA - * ServiceOwner: [firstname.lastname] - * ServiceCode: PABCLT -* add securitygroup, select an existing security group: IAStrainings-ec2-mo -* Review and Launch and then select launch -* It will prompt to set a key pair (to allow ssh). create a new key and download it. - -It will create the instance. To see the running instance goto instances and instacne state will be "Running" - -### SSH instance on VDI - - -* Save the key (.pem) to .ssh and set the permission: chmod 0400 ~/.ssh/your_key.pem -* Open ~/.ssh/config and add following: - -``` -Host ec2-*.eu-west-2.compute.amazonaws.com - IdentityFile ~/.ssh/your_key.pem - User ec2-user - -``` - -* Find the public IPv4 DNS and ssh in using it ssh ec2-.eu-west-2.compute.amazonaws.com, public IPv4 DNS can be found in instance detail on AWS. Click on your instance and it will open the details. - -* Remember to shutdown the instance when not using it. It will save the cost. -### create s3 bucket - -* goto s3 service and press "create bucket" -* name the bucket -* set region to EU (London) eu-west-2 -* add tags: - * Name: [name of bucket or any unique name] - * ServiceOwner: [your-name] - * ServiceCode: PABCLT - * Tenable: FA -* click on "create bucket" - -### Key configurations - - -The above script run only when config files contains latest keys. In order to update the keys: - -* go to AB climate training dev --> Administrator access --> command line or programmatic access -* Copy keys in "Option 1: Set AWS environment variables" -* In VDI, paste (/replace existing) these keys in ~/.aws/config -* add [default] in first line -* Copy keys in "Option 2: Add a profile to your AWS credentials file" -* In VDI, Paste the keys in credentials file: ~/.aws/credentials (remove the first copied line, looks somethings like: [198477955030_AdministratorAccess]) -* add [default] in first line - -The config and credentials file should look like (with own keys): - -``` -[default] -export AWS_ACCESS_KEY_ID="ASIAS4NRVH7LD2RRGSFB" -export AWS_SECRET_ACCESS_KEY="rpI/dxzQWhCul8ZHd18n1VW1FWjc0LxoKeGO50oM" -export AWS_SESSION_TOKEN="IQoJb3JpZ2luX2VjEGkaCWV1LXdlc3QtMiJH" -``` - -### Loading data on s3 bucket from VDI (using boto3) - -to upload the file(s) on S3 use: /aws-scripts/s3_file_upload.py -to upload the directory(s) on S3 use: /aws-scripts/s3_bulk_data_upload.py - -### AWS Elastic container repository - -Following instructions are for creating image repo on ECR and uploading container image - -* ssh to the previously created EC2 instance, make an empty Git repo: - -``` -sudo yum install -y git -git init -``` -* On VDI, run the following command to push the PyPrecis repo containing the docker file to the EC2 instance: -``` -git push :~ -``` - -* Now checkout the branch on EC2: git checkout [branch-name] -* Install docker and start docker service - -``` -sudo amazon-linux-extras install docker -sudo service docker start -``` - -* build docker image: - -``` -sudo docker build . -``` - -* goto AWS ECR console and "create repository", make it private and name it - -* Once created, press "push commands" - -* copy the command and run it on EC2 instance, it will push the container image on record. if get "permission denied" error, please add "sudo" before "docker" in the command. - - - -### AWS Sagemaker: Run notebook using custom kernel -The instructions below follow the following tutorial: -https://aws.amazon.com/blogs/machine-learning/bringing-your-own-custom-container-image-to-amazon-sagemaker-studio-notebooks/ - -* goto Sagemaker and "open sagemaker domain" -* add user - * Name and and select Amazonsagemaker-executionrole (dafult one) - -* Once user is created, goto "attach image" -* Select "New Image" and add image URI (copy from image repo) -* Give new image name, display name, sagmaker-executionrole and add tags and attach the image -* add kernel name and display name (both can be same) -* Now, launch app -> Studio and it will open the Notebook dashboard. -* Select python notebook and add your custom named Kernel diff --git a/notebooks/awsutils/fetch_s3_file.py b/notebooks/awsutils/fetch_s3_file.py deleted file mode 100644 index bb57852..0000000 --- a/notebooks/awsutils/fetch_s3_file.py +++ /dev/null @@ -1,111 +0,0 @@ - -import io -import os -import boto3 -from urllib.parse import urlparse -from fnmatch import fnmatch -from shutil import copyfile - - -def _fetch_s3_file(s3_uri, save_to): - - bucket_name, key = _split_s3_uri(s3_uri) - print(f"Fetching s3 object {key} from bucket {bucket_name}") - - client = boto3.client("s3") - obj = client.get_object( - Bucket=bucket_name, - Key=key, - ) - with io.FileIO(save_to, "w") as f: - for i in obj["Body"]: - f.write(i) - - -def _save_s3_file(s3_uri, out_filename, file_to_save="/tmp/tmp"): - bucket, folder = _split_s3_uri(s3_uri) - out_filepath = os.path.join(folder, out_filename) - print(f"Save s3 object {out_filepath} to bucket {bucket}") - client = boto3.client("s3") - client.upload_file( - Filename=file_to_save, - Bucket=bucket, - Key=out_filepath - ) - - -def _split_s3_uri(s3_uri): - parsed_uri = urlparse(s3_uri) - return parsed_uri.netloc, parsed_uri.path[1:] - - -def find_matching_s3_keys(in_fileglob): - - bucket_name, file_and_folder_name = _split_s3_uri(in_fileglob) - folder_name = os.path.split(file_and_folder_name)[0] - all_key_responses = _get_all_files_in_s3_folder(bucket_name, folder_name) - matching_keys = [] - for key in [k["Key"] for k in all_key_responses]: - if fnmatch(key, file_and_folder_name): - matching_keys.append(key) - return matching_keys - - -def _get_all_files_in_s3_folder(bucket_name, folder_name): - client = boto3.client("s3") - response = client.list_objects_v2( - Bucket=bucket_name, - Prefix=folder_name, - ) - all_key_responses = [] - if "Contents" in response: - all_key_responses = response["Contents"] - while response["IsTruncated"]: - continuation_token = response["NextContinuationToken"] - response = client.list_objects_v2( - Bucket=bucket_name, - Prefix=folder_name, - ContinuationToken=continuation_token, - ) - if "Contents" in response: - all_key_responses += response["Contents"] - return all_key_responses - - -def copy_s3_files(in_fileglob, out_folder): - ''' - This function copy files from s3 bucket to local directory. - args - --- - in_fileglob: s3 uri of flies (wild card can be used) - out_folder: local path where data will be stored - ''' - matching_keys = find_matching_s3_keys(in_fileglob) - in_bucket_name = _split_s3_uri(in_fileglob)[0] - out_scheme = urlparse(out_folder).scheme - for key in matching_keys: - new_filename = os.path.split(key)[1] - temp_filename = os.path.join("/tmp", new_filename) - in_s3_uri = os.path.join(f"s3://{in_bucket_name}", key) - _fetch_s3_file(in_s3_uri, temp_filename) - if out_scheme == "s3": - _save_s3_file( - out_folder, - new_filename, - temp_filename, - ) - else: - copyfile( - temp_filename, os.path.join(out_folder, new_filename) - ) - os.remove(temp_filename) - - -def main(): - in_fileglob = 's3://ias-pyprecis/data/cmip5/*.nc' - out_folder = '/home/h01/zmaalick/myprojs/PyPRECIS/aws-scripts' - copy_s3_files(in_fileglob, out_folder) - - -if __name__ == "__main__": - main() diff --git a/notebooks/awsutils/main.py b/notebooks/awsutils/main.py deleted file mode 100644 index 8ea37ba..0000000 --- a/notebooks/awsutils/main.py +++ /dev/null @@ -1,42 +0,0 @@ -from fetch_s3_file import copy_s3_files, find_matching_s3_keys -import iris -import os - - - - -def load_data(inpath): - - if inpath.startswith('s3'): - keys = find_matching_s3_keys(inpath) - s3dir = get_directory(inpath) - temp_path = '/tmp' - for key in keys: - file = key.split('/')[-1] - if os.path.exists(os.path.join(temp_path,file)) == 0: - copy_s3_files(os.path.join(s3dir,key), temp_path) - else: - print(key, ' already exist') - - files = inpath.split('/')[-1] - data = iris.load(os.path.join(temp_path,files)) - return data - - -def get_directory(inpath): - path = inpath.split('/') - dirpath='s3://' - for p in path[2:-1]: - dirpath = os.path.join(dirpath,p) - return dirpath - - - -def main(): - inpath = 's3://ias-pyprecis/data/sample_data.nc' - data = load_data(inpath) - print(data) - - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/notebooks/awsutils/s3_bulk_data_upload.py b/notebooks/awsutils/s3_bulk_data_upload.py deleted file mode 100644 index 50d8bec..0000000 --- a/notebooks/awsutils/s3_bulk_data_upload.py +++ /dev/null @@ -1,26 +0,0 @@ -import os -from tqdm import tqdm -import boto3 - - -def upload_folder_to_s3(s3_client, s3bucket, input_dir, s3_path): - # This method uploads the directory (also subdirectories) to S3. - # You can also specify the s3 bucket directory where to store data - pbar = tqdm(os.walk(input_dir)) - for path, subdirs, files in pbar: - for file in files: - dest_path = path.replace(input_dir, "").replace(os.sep, '/') - s3_file = f'{s3_path}/{dest_path}/{file}'.replace('//', '/') - local_file = os.path.join(path, file) - s3_client.upload_file(local_file, s3bucket, s3_file) - pbar.set_description(f'Uploaded {local_file} to {s3_file}') - print(f"Successfully uploaded {input_dir} to S3 {s3_path}") - - -def main(): - s3_client = boto3.client('s3') - upload_folder_to_s3(s3_client, 'ias-pyprecis', '/data/users/fris/s3_uploads/pp', 'data/pp') - - -if __name__ == "__main__": - main() diff --git a/notebooks/awsutils/s3_files_upload.py b/notebooks/awsutils/s3_files_upload.py deleted file mode 100644 index 5d82ffe..0000000 --- a/notebooks/awsutils/s3_files_upload.py +++ /dev/null @@ -1,43 +0,0 @@ -# this script load data on aws s3 bucket -import botocore -import boto3 -import logging -import os -import glob - - -def upload_file(file_name, bucket, object_name=None): - """Upload a file to an S3 bucket - - :param file_name: File to upload - :param bucket: Bucket to upload to - :param object_name: S3 object name. If not specified then file_name is used - :return: True if file was uploaded, else False - """ - - # If S3 object_name was not specified, use file_name - if object_name is None: - object_name = os.path.basename(file_name) - - # Upload the file - s3_client = boto3.client('s3') - try: - s3_client.upload_file(file_name, bucket, object_name) - except botocore.exceptions.ClientError as e: - logging.error(e) - return False - return True - - -def main(): - bucket = "ias-pyprecis" - - file_path = "*.txt" - files = glob.glob(file_path) - - for file in files: - upload_file(file, bucket, object_name=None) - - -if __name__ == "__main__": - main() diff --git a/notebooks/img/AR5_extreme_indices.png b/notebooks/img/AR5_extreme_indices.png deleted file mode 100644 index b69dfd4ee2ea00f1119ee22010263ae884643d9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 195544 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 WCd2ObFnc^l!BCP@m3<>^{Nz7ZpQ$1M diff --git a/notebooks/img/Iris7_1_trim_100.png b/notebooks/img/Iris7_1_trim_100.png deleted file mode 100644 index b9267ced2cb18461cb5e3dcbcbab47e2b41e7e5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10899 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 diff --git a/notebooks/img/MO_MASTER_black_mono_for_light_backg_RBG.png b/notebooks/img/MO_MASTER_black_mono_for_light_backg_RBG.png deleted file mode 100755 index 7960368821e1cb377b274891770c62b69b431c92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25991 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 Bhi3o) diff --git a/notebooks/img/python-logo-master-v3-TM.png b/notebooks/img/python-logo-master-v3-TM.png deleted file mode 100644 index 71f942075dda7fb0b25cb28bfe6555e4ccbbe6dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83564 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 diff --git a/notebooks/img/python_and_iris.png b/notebooks/img/python_and_iris.png deleted file mode 100644 index 052e3bd185cfb052543150ace07ad3d712ad9d3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16912 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 diff --git a/notebooks/img/two_runids.jpg b/notebooks/img/two_runids.jpg deleted file mode 100644 index c2e5ba40622eca181d495fca59b1e685ada49f29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75890 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 TIzwOnw~g7qYSO^@W8{ATXkk~j diff --git a/notebooks/makedata.ipynb b/notebooks/makedata.ipynb deleted file mode 100755 index 51abdd8..0000000 --- a/notebooks/makedata.ipynb +++ /dev/null @@ -1,236 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import glob\n", - "import os\n", - "import iris\n", - "from iris.time import PartialDateTime\n", - "from iris.experimental.equalise_cubes import equalise_attributes\n", - "\n", - "DATADIR = '/project/ciid/projects/PRECIS/worksheets/data_v2/EAS-22/'\n", - "# write outputs to own directory so that can be checked before upload under ciid\n", - "OUTDIR = f'{os.getenv(\"SCRATCH\")}/cordex_inputs/'\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Make data for worksheet 4" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Prep future data (2041-2060) from ESGF CORDEX files\n", - "# Note this assumes that only want to process the REMO2015 data.\n", - "\n", - "shortnames = {'MOHC-HadGEM2-ES':'hadgem2-es', 'MPI-M-MPI-ESM-LR':'mpi-esm-lr'}\n", - "\n", - "# Make future 2021-2050 data\n", - "future_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=2041) \n", - " <= cell.point <= PartialDateTime(year=2060))\n", - "for gcmid in ['MOHC-HadGEM2-ES', 'MPI-M-MPI-ESM-LR']:\n", - "\n", - " # set a short name consistent with what used in the exercises [would it be better to use full names?]\n", - " shortgcm = shortnames[gcmid]\n", - " for var in ['pr', 'tas']:\n", - "\n", - " # find all the files to consolidate \n", - " flist = glob.glob(DATADIR + f'{var}_*_{gcmid}_rcp85_*_GERICS-REMO2015_*_mon_*.nc')\n", - " print (f'input files: {flist}')\n", - "\n", - " # merge the cubes\n", - " datacubes = iris.load(flist, future_time_constraint)\n", - " equalise_attributes(datacubes)\n", - " cube = datacubes.concatenate_cube()\n", - " \n", - " if cube.name() == 'air_temperature':\n", - " cube.convert_units('celsius')\n", - " outpath = os.path.join(OUTDIR, 'future', shortgcm + '.mon.2041_2060.GERICS-REMO2015.tm.C.nc')\n", - " iris.save(cube, outpath)\n", - " if cube.name() == 'precipitation_flux':\n", - " cube.convert_units('kg m-2 day-1')\n", - " cube.units = 'mm day-1'\n", - " outpath = os.path.join(OUTDIR, 'future', shortgcm + '.mon.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", - " iris.save(cube, outpath)\n", - " print(f'saved file: {outpath}')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Prep baseline data (1986-2005) from \n", - "historical_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", - " <= cell.point <= PartialDateTime(year=2005))\n", - "for gcmid in ['MOHC-HadGEM2-ES', 'MPI-M-MPI-ESM-LR']:\n", - "\n", - " # set a short name consistent with what used in the exercises [would it be better to use full names?]\n", - " shortgcm = shortnames[gcmid]\n", - " for var in ['pr', 'tas']:\n", - "\n", - " # find all the files to consolidate \n", - " flist = glob.glob(DATADIR + f'{var}_*_{gcmid}_historical_*_GERICS-REMO2015_*_mon_*.nc')\n", - " flist = glob.glob(DATADIR + f'{var}_*_{gcmid}_historical_*_GERICS-REMO2015_*_mon_*.nc')\n", - " print (f'input files: {flist}')\n", - "\n", - " # merge the cubes\n", - " datacubes = iris.load(flist, historical_time_constraint)\n", - " equalise_attributes(datacubes)\n", - " cube = datacubes.concatenate_cube()\n", - " \n", - " if cube.name() == 'air_temperature':\n", - " cube.convert_units('celsius')\n", - " outpath = os.path.join(OUTDIR, 'historical', shortgcm + '.mon.1986_2005.GERICS-REMO2015.tm.C.nc')\n", - " iris.save(cube, outpath)\n", - " if cube.name() == 'precipitation_flux':\n", - " cube.convert_units('kg m-2 day-1')\n", - " cube.units = 'mm day-1'\n", - " outpath = os.path.join(OUTDIR, 'historical', shortgcm + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", - " iris.save(cube, outpath)\n", - " print(f'saved file: {outpath}')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Make data for Worksheet 5" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The files needed are daily precipitation, with the two periods (historical and future) consolidated into a single file\n", - "\n", - "Note that these datasets should be saved with compression to reduce their file size. If for some reason this needs to be done during a PRECIS course, it is quicker to save them without compression using `iris.save(cube, outfile)` but the filesize is significantly larger.\n", - "\n", - "Unlike the previous PRECIS data, the memory requirements of this code are modest (probably due to the lack of rim removal meaning the data remains lazy). It does take several minutes (~5) to run each example." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Prep future data (2041-2060) from CORDEX files\n", - "\n", - "shortnames = {'MOHC-HadGEM2-ES':'hadgem2-es', 'MPI-M-MPI-ESM-LR':'mpi-esm-lr'}\n", - "\n", - "# Make future 2041-2060 data\n", - "future_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=2041) \n", - " <= cell.point <= PartialDateTime(year=2060))\n", - "for gcmid in ['MOHC-HadGEM2-ES', 'MPI-M-MPI-ESM-LR']:\n", - "\n", - " # set a short name consistent with what used in the exercises [would it be better to use full names?]\n", - " shortgcm = shortnames[gcmid]\n", - "\n", - " # find all the files \n", - " flist = glob.glob(DATADIR + f'pr_EAS-22_{gcmid}_rcp85_*_GERICS-REMO2015_*_day_*.nc')\n", - " print (f'input files: {flist}')\n", - " \n", - " # load using time constraint above\n", - " datacubes = iris.load(flist, future_time_constraint)\n", - "\n", - " # merge the cubes\n", - " equalise_attributes(datacubes)\n", - " cube = datacubes.concatenate_cube()\n", - " \n", - " if cube.name() == 'air_temperature':\n", - " cube.convert_units('celsius')\n", - " outpath = os.path.join(OUTDIR, 'future', shortgcm + '.day.2041_2060.GERICS-REMO2015.tm.C.nc')\n", - " iris.save(cube, outpath, least_significant_digit=3, \n", - " complevel=4, zlib=True)\n", - " if cube.name() == 'precipitation_flux':\n", - " cube.convert_units('kg m-2 day-1')\n", - " cube.units = 'mm day-1'\n", - " outpath = os.path.join(OUTDIR, 'future', shortgcm + '.day.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", - " iris.save(cube, outpath, least_significant_digit=3, \n", - " complevel=4, zlib=True)\n", - " print(f'saved file: {outpath}')\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Prep baseline data (1986-2006) from CORDEX files\n", - "historical_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", - " <= cell.point <= PartialDateTime(year=2005))\n", - "# Make baseline data\n", - "for gcmid in ['MOHC-HadGEM2-ES', 'MPI-M-MPI-ESM-LR']:\n", - "\n", - " # set a short name consistent with what used in the exercises [would it be better to use full names?]\n", - " shortgcm = shortnames[gcmid]\n", - "\n", - " # find all the files \n", - " flist = glob.glob(DATADIR + f'pr_EAS-22_{gcmid}_historical_*_GERICS-REMO2015_*_day_*.nc')\n", - " print (f'input files: {flist}')\n", - " \n", - " # load using time constraint above\n", - " datacubes = iris.load(flist, historical_time_constraint)\n", - "\n", - " # merge the cubes\n", - " equalise_attributes(datacubes)\n", - " cube = datacubes.concatenate_cube()\n", - " \n", - " if cube.name() == 'air_temperature':\n", - " cube.convert_units('celsius')\n", - " outpath = os.path.join(OUTDIR, 'historical', shortgcm + '.day.1986_2005.GERICS-REMO2015.tm.C.nc')\n", - " iris.save(cube, outpath, least_significant_digit=3, \n", - " complevel=4, zlib=True)\n", - " if cube.name() == 'precipitation_flux':\n", - " cube.convert_units('kg m-2 day-1')\n", - " cube.units = 'mm day-1'\n", - " outpath = os.path.join(OUTDIR, 'historical', shortgcm + '.day.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", - " iris.save(cube, outpath, least_significant_digit=3, \n", - " complevel=4, zlib=True)\n", - " print(f'saved file: {outpath}')\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "pyprecis-environment", - "language": "python", - "name": "pyprecis-environment" - }, - "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.6.10" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/notebooks/py_makedata.sh b/notebooks/py_makedata.sh deleted file mode 100644 index fb1c1c6..0000000 --- a/notebooks/py_makedata.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -l -#SBATCH --qos=normal -#SBATCH --mem=100G -#SBATCH --ntasks=8 -#SBATCH --time=00-06:00:00 -module load scitools -python3 -u /project/ciid/projects/PRECIS/worksheets/data/pp/wks5dataprep.py diff --git a/notebooks/utils.py b/notebooks/utils.py deleted file mode 100644 index 10b4615..0000000 --- a/notebooks/utils.py +++ /dev/null @@ -1,162 +0,0 @@ - -import io -import os -import boto3 -from urllib.parse import urlparse -from fnmatch import fnmatch -from shutil import copyfile -import iris - - -def _fetch_s3_file(s3_uri, save_to): - - bucket_name, key = _split_s3_uri(s3_uri) - # print(f"Fetching s3 object {key} from bucket {bucket_name}") - - client = boto3.client("s3") - obj = client.get_object( - Bucket=bucket_name, - Key=key, - ) - with io.FileIO(save_to, "w") as f: - for i in obj["Body"]: - f.write(i) - - -def _save_s3_file(s3_uri, out_filename, file_to_save="/tmp/tmp"): - bucket, folder = _split_s3_uri(s3_uri) - out_filepath = os.path.join(folder, out_filename) - # print(f"Save s3 object {out_filepath} to bucket {bucket}") - client = boto3.client("s3") - client.upload_file( - Filename=file_to_save, - Bucket=bucket, - Key=out_filepath - ) - - -def _split_s3_uri(s3_uri): - parsed_uri = urlparse(s3_uri) - return parsed_uri.netloc, parsed_uri.path[1:] - - -def find_matching_s3_keys(in_fileglob): - - bucket_name, file_and_folder_name = _split_s3_uri(in_fileglob) - folder_name = os.path.split(file_and_folder_name)[0] - all_key_responses = _get_all_files_in_s3_folder(bucket_name, folder_name) - matching_keys = [] - for key in [k["Key"] for k in all_key_responses]: - if fnmatch(key, file_and_folder_name): - matching_keys.append(key) - return matching_keys - - -def _get_all_files_in_s3_folder(bucket_name, folder_name): - client = boto3.client("s3") - response = client.list_objects_v2( - Bucket=bucket_name, - Prefix=folder_name, - ) - all_key_responses = [] - if "Contents" in response: - all_key_responses = response["Contents"] - while response["IsTruncated"]: - continuation_token = response["NextContinuationToken"] - response = client.list_objects_v2( - Bucket=bucket_name, - Prefix=folder_name, - ContinuationToken=continuation_token, - ) - if "Contents" in response: - all_key_responses += response["Contents"] - return all_key_responses - - -def copy_s3_files(in_fileglob, out_folder): - ''' - This function copy files from s3 bucket to local directory. - args - --- - in_fileglob: s3 uri of flies (wild card can be used) - out_folder: local path where data will be stored - ''' - if os.path.isdir(out_folder) == 0: - mode = 0o777 - os.makedirs(out_folder, mode, exist_ok = False) - matching_keys = find_matching_s3_keys(in_fileglob) - in_bucket_name = _split_s3_uri(in_fileglob)[0] - out_scheme = urlparse(out_folder).scheme - for key in matching_keys: - new_filename = os.path.split(key)[1] - temp_filename = os.path.join("/tmp", new_filename) - in_s3_uri = os.path.join("s3://{}".format(in_bucket_name), key) - _fetch_s3_file(in_s3_uri, temp_filename) - if out_scheme == "s3": - _save_s3_file( - out_folder, - new_filename, - temp_filename, - ) - else: - copyfile( - temp_filename, os.path.join(out_folder, new_filename) - ) - os.remove(temp_filename) - - -def load_data(inpath): - ''' - This methods copy the data from s3 bucket and load the data as iris cubelist. - Data is stored in data/ directory. - - input: file(s) path on s3 bucket - output: iris cubelist - ''' - if inpath.startswith('s3'): - keys = find_matching_s3_keys(inpath) - s3dir = _get_directory(inpath) - temp_path = 'data/' - if os.path.exists(temp_path) == 0: - os.mkdir(temp_path) - - for key in keys: - file = key.split('/')[-1] - if os.path.exists(os.path.join(temp_path, file)) == 0: - copy_s3_files(os.path.join(s3dir, file), temp_path) - else: - print(key, ' already exist') - files = inpath.split('/')[-1] - data = iris.load(os.path.join(temp_path, files)) - - return data - - -def _get_directory(inpath): - path = inpath.split('/') - dirpath = 's3://' - for p in path[2:-1]: - dirpath = os.path.join(dirpath, p) - return dirpath - - -def flush_data(path): - ''' - It delete the data from compute node. - - Input: file(s) path - ''' - import glob - files = glob.glob(path) - for file in files: - os.remove(file) - - -def main(): - in_fileglob = 's3://ias-pyprecis/data/cmip5/.nc' - out_folder = '/home/h01/zmaalick/myprojs/PyPRECIS/aws-scripts' - copy_s3_files(in_fileglob, out_folder) - - -if __name__ == "__main__": - main() diff --git a/notebooks/worksheet1.ipynb b/notebooks/worksheet1.ipynb deleted file mode 100755 index 8f08b0b..0000000 --- a/notebooks/worksheet1.ipynb +++ /dev/null @@ -1,864 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Worksheet 1: File locations and pre-processing\n", - "The exercises in this worksheet demonstrate some of the tools available for data analysis, and how to prepare CORDEX output for analysis (pre-processing). This can be time consuming for large amounts of data, so in this worksheet a small subset of data is used to easily demonstrate the steps involved. \n", - "\n", - "[CORDEX data](https://cordex.org/data-access/how-to-access-the-data/) is in [NetCDF](https://www.unidata.ucar.edu/software/netcdf/) format (a standard format in climate science) so that it can be used in post processing packages such as Python and the Python library [Iris](http://scitools.org.uk/iris/docs/latest/index.html)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "By the end of this worksheet you should be able to:
    \n", - "- Identify and list the names of CORDEX output data in netCDF format using standard Linux commands.
    \n", - "- Use basic Iris commands to load data files, and view Iris cubes.
    \n", - "- Use Iris commands to merge netCDF files\n", - "- Take a subset of the data based on a date range\n", - "- Save the output as NetCDF files.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: In the boxes where there is code or where you are asked to type code, click in the box, then press Ctrl + Enter to run the code.
    \n", - "Note: An percentage sign % is needed to run some commands on the shell. It is noted where this is needed.
    \n", - "Note: A hash # denotes a comment; anything written after this character does not affect the command being run.
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Contents\n", - "### [1.1: Data locations and file names](#1.1) \n", - "### [1.2: Getting started with Python and Iris](#1.2)\n", - "### [1.3: Merge Problems](#1.3)\n", - "### [1.4 Extracting data within a specific time range](#1.4)\n", - "### [1.5: Saving data to a new file](#1.5)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "## 1.1 Data locations and file names\n", - "The datasets used within these worksheets are already linked to the notebook in order to provide quick and easy access for the purpose of this training. However the commands learned in this worksheet provide useful context for future work in a linux and unix scripting environment." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**a)** Firstly, find out what location you are currently in by using the **`pwd`** command; **`pwd`** stands for **print working directory**.\n", - "\n", - "In the cell below type **`%pwd`** on a new line and then press Ctrl + Enter.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Type %pwd below and press 'ctrl' + 'enter'\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**b)** List the contents of this directory; **`ls`** stands for **list** and using the **`-l`** option gives a longer listing with more information, such as file size and modification date. \n", - "\n", - "In the cell below type **`%ls`** on a separate line then press Ctrl + Enter." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Type %ls and press 'ctrl' + 'enter'.\n", - "\n", - "\n", - "# Type %ls -l and press 'ctrl' + 'enter'.\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: What is the difference between ls and ls -l? What extra information do you see? Which file was edited most recently?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer:
    \n", - "*...Double click here to type your answer...*\n", - "\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**c)** To avoid conflicts of data when running locally, we will take a copy of the source files used in the training (this is not needed if running on the cloud, we instead download from an S3 bucket). Run the command in the following cell. It might take a few minutes to complete." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import subprocess\n", - "subprocess.run(['rsync', '-r', '/project/ciid/projects/PRECIS/worksheets/data_v2', '.'])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If the command works correctly you should see the message:\n", - "\n", - "`CompletedProcess(args=['rsync', '-r', '/project/ciid/projects/PRECIS/worksheets/data_v2', '.'], returncode=0)`\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**d)** Move to the directory (i.e. folder) called `data_v2/EAS-22`. This directory contains CORDEX data for the East Asia Domain.\n", - "\n", - "**Hint:** The `cd` command stands for _change directory_\n", - "\n", - "Type your command(s) below and press Ctrl + Enter.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Type your %cd [directory-path] command below and press 'ctrl' + 'enter'.\n", - "\n", - "\n", - "# List the contents of this directory, using a previous command.\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**d)** There are a lot of files in this directory! The file names contain information on the simulated date of the data they contain - you'll learn more about the naming convention for CORDEX data in another presention.\n", - "\n", - "For now, list only the files containing monthly temperature data using the following command:\n", - "\n", - "Type **`%ls tas*mon*`** in the code block below." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Type %ls tas*mon* and press 'ctrl' + 'enter'.\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: The asterisk character * (also known as glob) matches any string within the filename\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**e)** This still returns too many files to comfortably count manually. **`wc`** stands for **word count**; combining this command with **`ls`** allows us to count the number of items in that directory. \n", - "\n", - "In the cell below type **`%ls tas*mon* | wc -l`** then press Ctrl + Enter." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Type %ls *mon* | wc -l command below and press 'ctrl' + 'enter'\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: How many nc files are in this directory, in total?\n", - "
    How many of these nc files contain the string 'historical'; relating to the historical climate simulation? What command do you need to use to find this out?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer: \n", - "
    *Total number of nc files: \n", - "
    Number of historical nc files:\n", - "
    Command used to find number of historical nc files:*\n", - "\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**f)** To list all the files containing monthly data from a period starting 202101, we use the code **`*mon_202101-??????.nc`**\n", - "\n", - "Type below **`%ls *mon_202101-??????.nc`**" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Type %ls *mon_202101-??????.nc and press 'ctrl' + 'enter'.\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: The question mark character ? matches any single character\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**g)** Now move up one level in the directory tree and list the directories.\n", - "\n", - "Type `cd ..` to move up one level in the directory tree and press Ctrl + Enter to execute the command" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Type %cd .. and press 'ctrl' + 'enter'.\n", - "\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: Which directory are you in now? What else can you see in this directory?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer:
    \n", - "*...Double click here to type your answer...*\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "***\n", - "\n", - "## 1.2 Getting started with Python and Iris\n", - "

    \"python

    \n", - "\n", - "\n", - "Python is a general purpose programming language. Python supports modules and packages, which encourages program modularity and code reuse. \n", - "\n", - "\n", - "We also use the Python library [Iris](http://scitools.org.uk/iris/docs/v2.4.0/index.html), which is written in Python and is maintained by the Met Office. Iris seeks to provide a powerful, easy to use, and community-driven Python library for analysing and visualising meteorological and oceanographic data sets.\n", - "\n", - "The top level object in Iris is called a cube. A cube contains data and metadata about a phenomenon (i.e. air_temperature). Iris handles several different types of file formats, loading them into Iris cubes.\n", - "\n", - "\n", - "For a brief introduction to Iris and the cube formatting please read this Introduction page here: \n", - "\n", - "http://scitools.org.uk/iris/docs/v2.4.0/userguide/iris_cubes.html\n", - "\n", - "For future reference please refer to the Iris website:\n", - "\n", - "http://scitools.org.uk/iris/docs/v2.4.0/index.html\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**a)** First, run the code-block below to **load** a file into Iris and **print** its metadata structure.
    \n", - "\n", - "To run the code, click in the box below and press Ctrl + Enter." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%cd /home/h03/fris/code/PyPRECIS/notebooks/data_v2" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "# import the necessary modules\n", - "import iris\n", - "import glob\n", - "import os\n", - "\n", - "# this is needed so that the plots are generated inline with the code instead of a separate window\n", - "%matplotlib inline \n", - "\n", - "# provide the path of your sample data\n", - "sample_data = 'EAS-22/sample_data.nc'\n", - "\n", - "# Constraint the reading to a single variable and load it into an Iris cube\n", - "cube = iris.load_cube(sample_data)\n", - "\n", - "# Print the Iris cube\n", - "print(cube)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: Can you explain how our sample data we printed above relates to this picture?\n", - "\"diagram
    \n", - "\n", - "- Is our data above a 3D or a 2D cube?
    \n", - "- What are the cube dimensions?
    \n", - "- How many grid boxes is the latitudinal range divided into?
    \n", - "- What meteorological variable does this cube represent?
    \n", - "- What unit is used for this variable?
    \n", - "
    \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Double click here to type your answer::\n", - "
    *Is this cube 3D or 2D? \n", - "
    What are the cube dimensions? \n", - "
    How many grid boxes is the latitudinal range divided into? \n", - "
    What meteorological variable does this cube represent? \n", - "
    What unit is used for this variable?* \n", - "\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**b)** Now **plot** the data for the selected variable:
    \n", - "\n", - "To run the code, click in the box below and press Ctrl + Enter." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import matplotlib.pyplot as plt\n", - "import iris.quickplot as qplt\n", - "\n", - "plt.figure(figsize=(12,12)) # Set the figure size\n", - "\n", - "# find the edges of grid cells (Aka the boounds)\n", - "cube.coord('grid_latitude').guess_bounds()\n", - "cube.coord('grid_longitude').guess_bounds()\n", - "\n", - "qplt.pcolormesh(cube) # Plot the cube\n", - "plt.title(cube.name()) # Add plot title\n", - "plt.clim(0, 5e-4) # Set colour bar range\n", - "plt.show() # Show the plot" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Sense check the data plotted: \n", - "\n", - "* Can you make out sections of the East Asian coastline? \n", - "* How about the scale? \n", - "\n", - "As we progress through these workbooks, we'll learn how to process the data into more intuitive units and mask / add country boundaries, so it's easier to understand the information.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 1.3 Merge problems\n", - "\n", - "**a)** When using data, we want a single cube for all fields with the same standard name and sequential timesteps. `iris.load` will return as few cubes as possible, by collecting cubes from multiple files together. However, on some occasions this merge process does not give a single cube when we would expect it to. \n", - "\n", - "This section demonstrates how to deal with cases like this and make a single cube for these data." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "You can read more about iris loading behaviour here.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As an example we will load some temperature data from the [East Asia Domain](https://cordex.org/domains/region-7-east-asia/) at 25 km resolution" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# these variables form part of the standard CORDEX filename convention\n", - "domain = \"EAS-22\"\n", - "rcm = \"GERICS-REMO2015\"\n", - "experiment = \"historical\"\n", - "gcm = \"NCC-NorESM1-M\"\n", - "variable = \"tas\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's find out which of the files match the pattern above." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "root_dir = \"./\"\n", - "\n", - "path_dir = root_dir+domain+\"/\"\n", - "file_name = variable+\"*\"+gcm+\"*\"+experiment+\"*\"+rcm+\"*\"\n", - "file_list = glob.glob(path_dir+file_name)\n", - "\n", - "# Complete the print statement to see which East Asian files match the specified criteria\n", - "print()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "How many files were returned? \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Double click here to type your answer:**\n", - "\n", - "How many files were returned? " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**b)** If we try and force Iris to load a single cube we get an error:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "cube = iris.load_cube(file_list)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The important part of this error is the following message: \n", - " \n", - " ConstraintMismatchError: failed to merge into a single cube.\n", - " cube.attributes values differ for keys: 'history', 'creation_date', 'tracking_id'\n", - " \n", - "Instead we will load this data with `iris.load()` and then look more closely at the data, before we fix the issues." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "cubes = iris.load(file_list)\n", - "print(cubes)\n", - "print()\n", - "for cube in cubes:\n", - " print(cube.attributes['creation_date'], cube.attributes['tracking_id'])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Question:\n", - "\n", - "- How many cubes are in the cube list you loaded?
    \n", - "- Are they all the same size in space?
    \n", - "- Do they have the same number of timesteps? Why do you think this is? (Hint: look again at the filenames we are loading)\n", - "- What are the differences in the attributes and do you think this is important when analysing your data?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer:\n", - "
    *How many cubes are in the cube list you loaded?\n", - "
    Are they all the same size in space?\n", - "
    Do they have the same number of timesteps? Why do you think this is? (Hint: look again at the filenames we are loading)\n", - "
    What are the differences in the attributes?\n", - "
    Do you think these differences are important when analysing your data?* \n", - "\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**c)** Now let's solve this problem so we can get a single cube. We will do this using the [equalise_attributes](https://scitools.org.uk/iris/docs/v2.4.0/iris/iris/experimental/equalise_cubes.html) function from Iris." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from iris.experimental.equalise_cubes import equalise_attributes\n", - "\n", - "equalise_attributes(cubes)\n", - "\n", - "# now print the attributes of each cube\n", - "for cube in cubes:\n", - " print(list(cube.attributes.keys()))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "\n", - "The equalise_attributes function has removed the metadata which is inconsistent between the cubes. \n", - "\n", - "Question:\n", - " - Why might it be a bad idea to apply this function without looking at the data first?\n", - "\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Type your answer::\n", - "
    *Why might it be a bad idea to apply this function without looking at the data first?*" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The following loop is an alternative method to eliminate the mismatching attributes\n", - "\n", - " for i, icube in enumerate(cube):\n", - " del cube[i].attributes['creation_date']\n", - " del cube[i].attributes['tracking_id']\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**d)** We can now merge the data into a single cube." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "cube = cubes.concatenate_cube()\n", - "print(cube)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "
  • Now that we have combined multiple files into a single cube, what is the cube's shape? \n", - "
  • How does this compare with the cube_list created in 1.2e? \n", - "
  • Based on all the information you've gained about the data so far, what time period do you expect the data in this cube to span?\n", - "
  • " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Type your answers here**\n", - "* Now that we have combined multiple files into a single cube, what is the cube's shape? \n", - "* How does this compare with the cube_list created in 1.2e? \n", - "* Based on all the information you've gained about the data so far, what time period do you expect the data in this cube to span?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 1.4 Extracting data within a specific time range\n", - "\n", - "**a)** This is a lot of data, and so for now, we will cut this down to include December 1989 to November 1991 inclusive using a time constraint. Edit the code below to specify the missing end date.\n", - "(**Hint:** specify the adjacent months BEFORE and AFTER the time period you wish to keep.)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from iris.time import PartialDateTime\n", - "\n", - "print('original cube first and last dates')\n", - "print(cube.coord(\"time\")[0])\n", - "print(cube.coord(\"time\")[-1])\n", - "\n", - "time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1989,month=11) \n", - " < cell.point < PartialDateTime(year=YYYY,month=MM))\n", - "sub_cube = cube.extract(time_constraint)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**b)** Check the first and last timesteps in your constrained cube are correct:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print()\n", - "print('new cube first and last dates')\n", - "print(sub_cube.coord(\"time\")[0])\n", - "print(sub_cube.coord(\"time\")[-1])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 1.5 Save data to a new file\n", - "\n", - "**a)** We will now save this data to a new file.\n", - "\n", - "Take note of the file names. Well chosen filenames can help you keep track of the contents of your files. We suggest developing a consistent syntax based on the filename patterns of the CORDEX data." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "out_file_name = f'{variable}_{domain}_{gcm}_{experiment}_r1ip1_{rcm}_v2_mon_198912-199111.nc'\n", - "\n", - "save_location = root_dir + 'cordex_training/'\n", - "\n", - "%mkdir {save_location}\n", - "\n", - "print('saving file to: ' + save_location + out_file_name)\n", - "iris.save(sub_cube, save_location + out_file_name)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note:\n", - "As we progress through these worksheets, keep a note of how we update the file names when making further changes to the data.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "b) Question: Use the cd and ls commands to check the NetCDF directory that you have been creating new files in.
    \n", - "\n", - "- Confirm the names of the new files you have been creating.
    \n", - "- What is the size of the concatenated file (containing December 1979 to November 1989 data)?\n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# use %cd and %ls to list the contents of your new directory containing NetCDF files:\n", - "\n", - "\n", - "# use %ls -lh to compare the size of the original files and final netcdf file you saved\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer:
    \n", - "*Size of the file written out at the end:*" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "
    \n", - "This completes worksheet 1.
    You have created pre-processed files (metdata fixed, concenated over time, extracted data in a specific time range and saved in NetCDF format).
    \n", - "In worksheet 2, you will begin to analyse these files.\n", - "
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "

    \"python

    \n", - "
    © Crown Copyright 2022, Met Office
    " - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "pyprecis-environment", - "language": "python", - "name": "pyprecis-environment" - }, - "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.6.10" - }, - "widgets": { - "state": {}, - "version": "1.1.2" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/notebooks/worksheet2.ipynb b/notebooks/worksheet2.ipynb deleted file mode 100755 index 21a8572..0000000 --- a/notebooks/worksheet2.ipynb +++ /dev/null @@ -1,772 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Worksheet 2: Using the Python Iris library for analysis and visualisation\n", - "\n", - "In this worksheet, sample CORDEX output over Southeast Asia is compared with observations for validation purposes. Validating model results by comparing with observed data is an essential step - this is the measure by which we can assess the quality of the model and it informs appropriate uses of the data.\n", - "\n", - "\n", - "Here, we validate CORDEX output driven by two different GCMs (HadGEM2-ES and MPI-ESM-LR) created with the REMO2015 Regional Climate Model. Using data from both experiments will give us two representations of present day climate and two possible climate scenarios. For more details on multimodel approaches, refer to the workshop lecture on climate model ensembles.\n", - "\n", - "The following exercises provide examples of how analysis can be undertaken as part of a model validation. The methods shown are not necessarily the only way to proceed and are intended to demonstrate the use of Iris in model validation, and provide a starting point for your own analyses." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "By the end of this worksheet you should be able to:
    \n", - "- Apply basic statistical operations to Iris cubes.
    \n", - "- Plot information from Iris cubes.
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Contents\n", - "### [2.1: Inspecting the data](#2.1) \n", - "### [2.2: Converting units](#2.2)\n", - "### [2.3: Climatological mean calculation](#2.3)\n", - "### [2.4: IRIS quick plotting and visualising data](#2.4)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Preamble\n", - "Run the code preamble below to import the necessary libraries for this worksheet.\n", - "\n", - "To run the code, click in the box below and press Ctrl + Enter." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Code preamble - these libraries will be used in this worksheet.\n", - "# This code block needs to be re-run every time you restart this worksheet!\n", - "%matplotlib inline\n", - "import os\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import matplotlib.cm as cm\n", - "import matplotlib.dates as mdates\n", - "import calendar\n", - "import iris\n", - "import iris.coord_categorisation\n", - "import iris.quickplot as qplt\n", - "from iris.experimental.equalise_cubes import equalise_attributes\n", - "from iris.time import PartialDateTime\n", - "import cartopy.crs as ccrs\n", - "from mpl_toolkits.axes_grid1 import AxesGrid\n", - "from cartopy.mpl.geoaxes import GeoAxes\n", - "from utils import copy_s3_files, flush_data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "# 2.1 Inspecting the data\n", - "\n", - "The datasets used here contain daily and monthly data from two REMO2015 runs carried out over Southeast Asia, one driven by HadGEM2-ES and the other driven by MPI-ESM-LR. The observations used for comparison are from the CHIRPS gridded observational data set (https://chc.ucsb.edu/data/chirps).\n", - "\n", - "Remember, in Iris, data are read into an object called a **cube**. A single cube describes only one variable; it is not possible for a cube to contain both temperature and rainfall, for example. A cube always has a name, a unit and an n-dimensional data array to represent the cube’s data. Additionally, the cube contains collections of coordinates. Coordinate types can include spatial information (latitude, longitude, altitude), a time dimension, or other information, e.g., an ensemble number.\n", - "\n", - "

    \"Example

    \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__a) Load the NetCDF file for the HadGEM2-ES and MPI-ESM-LR model data and the CHIRPS rainfall observation data and print the cube output__\n", - "\n", - "A cube has coordinates (e.g. time, longitude, latitude, model levels) which can be accessed with Python commands. In the following exercise we find the latitude and longitude covered by the CHIRPS data. This can be done either by printing the latitude and longitude coordinates (`.points`), noting the first and last values in the array, or in the case of the CHIRPS data, printing the cube and looking through the attributes. A similar example can be found in the [Iris documentation](https://scitools.org.uk/iris/docs/v2.4.0/userguide/navigating_a_cube.html#accessing-coordinates-on-the-cube). \n", - "\n", - "Before running the code, take a look at it line-by-line to understand what steps are being taken. Then click in the box and press ctrl + enter to run the code." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we first need to download APHRODITE data\n", - "copy_s3_files('s3://ias-pyprecis/data/APHRODITE/*.nc', 'data/APHRODITE/')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Provide the names of the directories where the netCDF model files are stored\n", - "DATADIR = 'data_v2/'\n", - "\n", - "# Load and concatenate the HadGEM2-ES model cube data\n", - "infile = os.path.join(DATADIR, 'EAS-22/pr_EAS-22_MOHC-HadGEM2-ES_historical_r1i1p1_GERICS-REMO2015_v1_mon_*.nc')\n", - "cubes = iris.load(infile)\n", - "equalise_attributes(cubes)\n", - "hadgem2 = cubes.concatenate_cube()\n", - "\n", - "# Load and concatenate the MPI-ESM-LR model cube data\n", - "infile = os.path.join(DATADIR, 'EAS-22/pr_EAS-22_MPI-M-MPI-ESM-LR_historical_r1i1p1_GERICS-REMO2015_v1_mon_*.nc')\n", - "cubes = iris.load(infile)\n", - "equalise_attributes(cubes)\n", - "mpiesm = cubes.concatenate_cube()\n", - "\n", - "# finally load the CHIRPS data and print the cube \n", - "infile = os.path.join(DATADIR, 'CHIRPS', 'chirps-v2.0.monthly.global.1981_2018.nc')\n", - "chirpsData = iris.load_cube(infile)\n", - "print(chirpsData)\n", - "\n", - "# print the first and last latitude points\n", - "print(chirpsData.coord('latitude').points[0], chirpsData.coord('latitude').points[-1])\n", - "# print the first and last longitude points\n", - "print(chirpsData.coord('longitude').points[0], chirpsData.coord('longitude').points[-1])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - " Question: How many years of data does the CHIRPS dataset contain? What longitudes and latitudes are covered by the CHIRPS data?\n", - "
    \n", - "\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer:*(Double click here to fill in the answers)*
    \n", - "\n", - "Number of years:\n", - "\n", - "Latitude and longitude covered: \n", - "

    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__b) Extract a subset of the data within a cube__\n", - "\n", - "Data extraction is an important function in Iris. The extraction of a subset of data is called **slicing**. For example, it could be necessary to extract data over all latitude and longitude grid points on the first time step. For more information around subsetting cubes please read the [Iris documentation on slicing](https://scitools.org.uk/iris/docs/v2.4.0/userguide/subsetting_a_cube.html#cube-indexing).\n", - "\n", - "__Using the HadGEM2-ES data, the example below shows how to subset a cube for the first and last timesteps. This method will be used later for plotting data from a cube.__ \n", - "\n", - "Work through the example below line by line then click in the box and press Ctrl + Enter to run the code.\n", - "\n", - "First, print the HadGEM2-ES cube, containing all the time steps:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Use the print() command to display a summary of the HadGEM2-ES cube\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: What dimensions does this cube have?
    \n", - " t = number of timesteps
    \n", - " y = number of latitude steps
    \n", - " x = number of longitude steps
    \n", - " Write your answer in the form `[ t, y, x ]`\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer: *(Double click here to fill in the answers)*
    \n", - "HadGEM2-ES dimensions: [ t, y, x]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: When indexing a cube dimension, you either can specify a single coordinate, e.g. 0 is the first (zeroth) item, -1 is the last item, or you can use : to include all items.
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Display the cube's **first** timestep and check the associated `time` value:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Use the print() funiction with slicing notation\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Display the cube's **last** timestep and check the associated `time` value:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Use the print() function with slicing notation\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For the analysis here, we will use data from 1986 to 2005 inclusive as used in the AR5 WG1 atlas. To do this we will use the same approach as in Worksheet 1 by using time constraints" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", - " <= cell.point <= PartialDateTime(year=2005))\n", - "hadgem2 = hadgem2.extract(time_constraint)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now apply the same time constraint to the mpiesm data to restrict to the same period" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "mpiesm = mpiesm.extract(time_constraint)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 2.2 Converting units\n", - "\n", - "__c) Convert the precipitation units from kg/m2/s (equivalent to mm/s) to mm/day__\n", - "\n", - "To convert to mm/day, we could just multiply the raw data (in mm/s) by 86400 seconds, but a clearer way is to use the __`.convert_units()`__ method with the name of the units we want to convert the data into.\n", - "\n", - "Let's do this for the __HadGEM2-ES__ historical data first and break down the steps as follows:\n", - "\n", - "* Print the units and summary statistic about the data\n", - "* Convert the unit and print the information again\n", - "* Rename the `.units` value in the cube and save it as a new netCDF file" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(hadgem2)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# print the unit\n", - "print('The current unit for data is: {}'.format(hadgem2.units))\n", - "# print the summary statistic (maximum monthly precipitation)\n", - "maxpr = np.max(hadgem2.data)\n", - "print('This is an example rainfall rate (kg m-2 s-1) prior to conversion: {:f}'.format(maxpr))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Convert units to kg m-2 day-1 (same as multiplying by 86400 seconds)\n", - "hadgem2.convert_units('kg m-2 day-1')\n", - "# Print cube.units to view new units for precipitation\n", - "print(f'The new rainfall units are: {hadgem2.units}')\n", - "maxpr = np.max(hadgem2.data)\n", - "# print the summary statistic (maximum monthly precipitation) after the unit conversion\n", - "print(f'This is the same rainfall rate but now in (kg m-2 day-1): {maxpr:f}')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Rename the new cube units for consistency, then save the converted cube:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Rename cube units\n", - "hadgem2.units = 'mm day-1'\n", - "\n", - "# Save the new cube as a new netCDF file\n", - "OUTDIR = 'data_v2/EAS-22'\n", - "\n", - "# Check to see if this directory exists, if not create it\n", - "if not os.path.isdir(OUTDIR):\n", - " # Make directory\n", - " os.mkdir(OUTDIR)\n", - " # Set directory permissions \n", - " os.chmod(OUTDIR, 0o776)\n", - "\n", - "outfile = os.path.join(OUTDIR, 'hadgem2-es.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", - "iris.save(hadgem2, outfile)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Complete the following code block to repeat the same procedure for MPI-ESM-LR:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Print the current MPI-ESM-LR cube units\n", - "\n", - "\n", - "# convert units to kg m-2 day-1\n", - "\n", - "\n", - "# Rename the units to mm day-1. Recall that 1 kg m-2 is equivalent to 1 mm of rain\n", - "\n", - "\n", - "# Save the new cube as a new netCDF file using the `outfile` filename we've provided below!\n", - "outfile = os.path.join(OUTDIR, 'mpi-esm-lr.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 2.3 Climatological seasonal mean calculation\n", - "\n", - "__d) Calculate the 1986-2005 seasonal mean precipitation__ field for October-December (OND) from both the HadGEM2-ES and MPI-ESM-LR driven runs.\n", - "\n", - "Work through the example below line by line then click in the box and press ctrl + enter to run the code." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Set up directory for the climatology\n", - "CLIMDIR = 'data_v2/EAS-22/climatology'\n", - "\n", - "# Check to see if this directory exists, if not create it\n", - "if not os.path.isdir(CLIMDIR):\n", - " # Make directory\n", - " os.mkdir(CLIMDIR)\n", - " # Set directory permissions \n", - " os.chmod(CLIMDIR, 0o776)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "# Loop through two model runs\n", - "for gcmid in ['hadgem2-es', 'mpi-esm-lr']:\n", - " infile = os.path.join(OUTDIR, gcmid + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", - "\n", - " # Load the data\n", - " data = iris.load_cube(infile)\n", - "\n", - " # In order to calculate OND mean, we use the command below to add a season membership coordinate.\n", - " # The seasons can be any sequence of months, identified by the first letters of the names of the months.\n", - " # Here, we define two seasons, jfmamjjas (the months we are not interested in) and ond (October, November and\n", - " # December); the months we do want.\n", - " iris.coord_categorisation.add_season(data, 'time', name='seasons', seasons=('jfmamjjas','ond'))\n", - "\n", - " # This command extracts data for the OND season using a constraint\n", - " data_ond = data.extract(iris.Constraint(seasons='ond'))\n", - "\n", - " # The cube 'data_ond' contains data from October-December for all years. \n", - " # The command below calculates the mean over all years.\n", - " seasonal_mean = data_ond.aggregated_by(['seasons'], iris.analysis.MEAN)\n", - " \n", - " # Save the OND seasonal mean as a netCDF\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.1986_2005.pr.mmday-1.nc')\n", - " iris.save(seasonal_mean, outfile)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: What dimensions does this cube have now?
    \n", - " t = number of timesteps
    \n", - " y = number of latitude steps
    \n", - " x = number of longitude steps
    \n", - " Write your answer in the form `[ t, y, x ]`
    \n", - " Compare your answer to the answer you found in (b). Which dimensions have changed?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer: *(Double click here to fill in the answers)*
    \n", - "Seasonal mean dimensions: [ t, y, x]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__e) Calculate the 1986-2005 seasonal mean for OND from the CHIRPS observation data__\n", - "\n", - "CHIRPS is a daily high resolution (0.05 degree) data set for 1981 to almost the present day. See https://chc.ucsb.edu/data/chirps for more information.\n", - "\n", - "Follow step d) and complete the code yourself. The file name to load is: `chirps-v2.0.monthly.global.1981_2018.nc`. We've given you the infile and outfile names to make sure you load and save it in the right place for later!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we first need to download APHRODITE data\n", - "copy_s3_files('s3://ias-pyprecis/data/climatology/*.nc', 'data/climatology/')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Directory names where data is read from and stored to\n", - "infile = os.path.join(DATADIR, 'CHIRPS', 'chirps-v2.0.monthly.global.1981_2018.nc')\n", - "\n", - "# Load the CHIRPS data, only for the period 1986-2005 \n", - "chirps = iris.load_cube(infile, constraint=time_constraint)\n", - "\n", - "# convert the units to mm day^-1 \n", - "chirps.convert_units('mm day-1')\n", - "\n", - "# In order to calculate OND mean, we need to a add season membership coordinate\n", - "iris.coord_categorisation.add_season(chirps, 'time', name='seasons', seasons=('jfmamjjas','ond'))\n", - "\n", - "# Then constrain the cube just for the OND season\n", - "chirps_ond = chirps.extract(iris.Constraint(seasons='ond'))\n", - "\n", - "# Now calculate the climatological mean for this season\n", - "seasonal_mean = chirps_ond.aggregated_by(['seasons'], iris.analysis.MEAN)\n", - "\n", - "# save the seasonal mean cube as a NetCDF file\n", - "outfile = os.path.join(CLIMDIR, 'chirps.OND.mean.1986_2005.pr.mmday-1.nc')\n", - "iris.save(seasonal_mean, outfile)\n", - "\n", - "# print the CHIRPS seasonal mean cube\n", - "print(seasonal_mean)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: How would you calculate the standard deviation of mean rainfall? How about annual maximum rainfall?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer: Write the line of code required to calculate CHIRPS's (a) standard deviation and (b) annual maximum rainfall in the code block below.
    \n", - "Hint: How could you adapt chirps_ond.aggregated_by(['seasons'], iris.analysis.MEAN) from above? You can refer to the [Iris documentation](https://scitools.org.uk/iris/docs/v2.4.0/iris/iris/analysis.html) if needed." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# From chirps, calculate: \n", - "# (a) chirps_std \n", - "\n", - "\n", - "# (b) chirps_max\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 2.4 IRIS quick plotting and visualising data\n", - "\n", - "Now we will plot the output to take a first look at what climatological winter precipitation (1986-2005 OND seasonal mean) looks like for each dataset. This section provides an initial introduction to visualising data quickly using iris, for further reading and instructions please visit: https://scitools.org.uk/iris/docs/v2.4.0/userguide/plotting_a_cube.html\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**f) Plot and compare** the climatological winter preciptation over South East Asia for three datasets." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Question: Work through the code block below line by line. Think about what you expect the plot setup to look like:
    \n", - "\n", - "* Which lines of code specify the layout of sub-plots?
    \n", - "* Will the plots have a common colour scale or separate ones?
    \n", - "* What are the maximum and minimum precipitation values that will be displayed?
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Think about your answers, then click in the box and press ctrl + enter to run the code and create the plots." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# load hadgem2-es model data\n", - "infile = os.path.join(CLIMDIR, 'hadgem2-es.OND.mean.1986_2005.pr.mmday-1.nc')\n", - "hadgem_cube = iris.load_cube(infile)\n", - "\n", - "# load mpi-esm model data\n", - "infile = os.path.join(CLIMDIR, 'mpi-esm-lr.OND.mean.1986_2005.pr.mmday-1.nc')\n", - "mpi_cube = iris.load_cube(infile)\n", - "\n", - "# load CHIRPS data\n", - "infile = os.path.join(CLIMDIR, 'chirps.OND.mean.1986_2005.pr.mmday-1.nc')\n", - "obs_cube = iris.load_cube(infile)\n", - "\n", - "# Do some plotting!\n", - "# Create a figure of the size 12x10 inches\n", - "plt.figure(figsize=(12, 10))\n", - "\n", - "plt.subplot(1, 3, 1) # Create a new subplot for the model data; 1 row x 3 columns, 1st plot\n", - "levels = range(0, 22, 2) # Define the contour levels for all plots\n", - "\n", - "# Note this is where cube slicing is needed as you can only plot 2-coordinate\n", - "# dimensions with qplt.contourf, so here we have selected time[0] as there is only\n", - "# one timestep (the baseline 1986-2005 mean)\n", - "qplt.contourf(hadgem_cube[0], levels=levels, cmap=cm.RdBu, extend='max')\n", - " \n", - "\n", - "plt.title('HadGEM2-ES model') # plots a title for the plot\n", - "ax = plt.gca() # gca function that returns the current axes\n", - "ax.coastlines() # adds coastlines defined by the axes of the plot\n", - "\n", - "plt.subplot(1, 3, 2) # Create a new subplot for the model data; 1 row x 3 columns, 2nd plot\n", - "qplt.contourf(mpi_cube[0], levels=levels, cmap=cm.RdBu, extend='max')\n", - "\n", - "plt.title('MPI-ESM-LR model') # plots a title for the plot\n", - "ax = plt.gca() # gca function that returns the current axes\n", - "ax.coastlines() # adds coastlines defined by the axes of the plot\n", - "\n", - "plt.subplot(1, 3, 3) # Create a new subplot for the observed data 1 row x 3 columns, 3rd plot\n", - " # This plot will be centred and below the two model plots\n", - "qplt.contourf(obs_cube[0], levels=levels, cmap=cm.RdBu, extend='max')\n", - "\n", - "plt.title('CHIRPS obs') # plots a title for the plot\n", - "ax = plt.gca() # gca function that returns the current axes\n", - "ax.coastlines() # adds coastlines defined by the axes of the plot\n", - "ax.set_extent((65.0, 155.0, 0.0, 40.0))\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: \n", - "
    What are the differences between the following plots for HadGEM2-ES, MPI-ESM and CHIRPS? Note the colour bars. \n", - "
    Where are the largest daily rainfall rates distributed?\n", - "
    Why do you think this is happening?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer: *(Double click here to fill in the answers)*
    \n", - "\n", - "What differences do you see between the three plots?\n", - "\n", - "\n", - "Location of greatest rainfall\n", - "
    *HadGEM2-ES*: \n", - "
    *MPI-ESM*: \n", - "
    *CHIRPS*:\n", - "\n", - "\n", - "What is happening and why?\n", - "\n", - "\n", - "How could comparison be made easier?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "
    \n", - "This completes worksheet 2.
    You have covered converting units, created seasonal means and visualised your results.
    \n", - "In worksheet 3, you will start to consider more advanced analysis, extract regional means, look at annule cycles, work with ensemble data and produce difference plots.\n", - "
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "

    \"python

    \n", - "
    © Crown Copyright 2022, Met Office
    " - ] - } - ], - "metadata": { - "instance_type": "ml.t3.medium", - "kernelspec": { - "display_name": "pyprecis-environment", - "language": "python", - "name": "pyprecis-environment" - }, - "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.6.10" - }, - "widgets": { - "state": {}, - "version": "1.1.2" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/notebooks/worksheet3.ipynb b/notebooks/worksheet3.ipynb deleted file mode 100755 index 3919b84..0000000 --- a/notebooks/worksheet3.ipynb +++ /dev/null @@ -1,1054 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Worksheet 3: Comparing models and observations for the historical period\n", - "\n", - "In the last worksheet we started to undertake basic data analysis and visulisation in python using Iris. This worksheet picks-up where we left off and introduces us to more advanced data analysis. This worksheet ends with an extended exercise to start you thinking about coding more independently." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "By the end of this worksheet you should be able to:
    \n", - "- Extract specific regions of interest from large datasets
    \n", - "- Apply more advanced statistical operations to multi-annual data.
    \n", - "- Produce your own data processing workflow.
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Contents\n", - "### [3.1: Region extraction](#3.1)\n", - "### [3.2: Mean annual cycle calculation](#3.2)\n", - "### [3.3: Comparing models and observations](#3.3)\n", - "### [3.4: Climatological mean and annual cycle for an ensemble](#3.4)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Preamble\n", - "Run the code preamble below to import the necessary libraries for this worksheet.\n", - "\n", - "To run the code, click in the box below and press Ctrl + Enter." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Code preamble - these libraries will be used in this worksheet.\n", - "# This code block needs to be re-run every time you restart this worksheet!\n", - "%matplotlib inline\n", - "import os\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import matplotlib.cm as cm\n", - "import matplotlib.dates as mdates\n", - "import calendar\n", - "import iris\n", - "import iris.coord_categorisation\n", - "import iris.quickplot as qplt\n", - "import cartopy.crs as ccrs\n", - "from mpl_toolkits.axes_grid1 import AxesGrid\n", - "from cartopy.mpl.geoaxes import GeoAxes\n", - "from utils import copy_s3_files, flush_data\n", - "\n", - "\n", - "# Provide the names of the directories where the netCDF model files are stored\n", - "DATADIR = 'data_v2/'\n", - "\n", - "# CHIRPS dir\n", - "CHIRPSDIR = os.path.join(DATADIR, 'CHIRPS/')\n", - "\n", - "# Directory name where processed data is stored \n", - "HISTDIR = 'data_v2/EAS-22/historical'\n", - "\n", - "# Directory name where climtology data is stored \n", - "CLIMDIR = 'data_v2/EAS-22/climatology'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 3.1 Region extraction \n", - "\n", - "If you have an area or region you want to focus on, you can extract data for the region of interest. This example works through how to constrain your cube by latitude and longitude.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**a) Extract the area** around Bangkok for each of the three datasets, by specifiying latitude and longitude coordinates" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: Sort these jumbled values into the correct latitude and longitude extent for Bangkok, then enter them into the code block below so that they can be used to extract CHIRPS precipitation data over the city. \n", - "
    14.5\n", - "
    99.5\n", - "
    100.5\n", - "
    13.5\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Solution:**" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Enter the ordered latitude and longitude coordinates for Bangkok here:\n", - "# lon=( , ) # longitude (East - West extent)\n", - "# lat=( , ) # latuitude (South - North extent)\n", - "lon =\n", - "lat =" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Run the code block below to extract the specified lat, lon coordinates from the **CHIRPS** dataset:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# load CHIRPS data\n", - "obs_cube = iris.load_cube(CHIRPSDIR + 'chirps-v2.0.monthly.global.1981_2018.nc')\n", - "\n", - "# Note that the CHIRPS data are on a regular grid (unlike the model data) so real latitudes and longitudes are\n", - "# used to define the region around KL (more on this in section 2.6)\n", - "obs_cube_BK = obs_cube.intersection(latitude=lat, longitude=lon)\n", - "\n", - "# save the constrained cube to directory\n", - "outfile = os.path.join(CHIRPSDIR, 'chirps.mon.1981_2018.BK.nc')\n", - "iris.save(obs_cube_BK, outfile)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: Recall that CORDEX uses a rotated pole grid for these simulations, so coordinates in the rotated pole frame of reference are required to correctly extract Bangkok from the model data.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__b) Extract the area around Bangkok for HadGEM2-ES and MPI-ESM__ driven simulations. To do this we must specify the **rotated latitude and longitude coordinates**. \n", - "\n", - "To convert the true Bangkok coordinates onto the rotated pole frame of reference, we need know the latitude and longitude of the pole in our rotated pole coordinate system. We can find this from the model cube:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Load the HadGEM2-ES model cube data as need grid information from it\n", - "infile = os.path.join(HISTDIR, 'hadgem2-es.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", - "hadgem2_cube = iris.load_cube(infile)\n", - "\n", - "pole_lat = hadgem2_cube.coord_system().grid_north_pole_latitude\n", - "pole_lon = hadgem2_cube.coord_system().grid_north_pole_longitude\n", - "print(f'Pole Latitude: {pole_lat}')\n", - "print(f'Pole Longitude: {pole_lon}')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Iris includes a function to help us convert between coordinates in a rotated and non-rotated coordinate frame. We can use this to convert our non-rotated Bangkok coordinates:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "lon=np.array([99.5, 100.5])\n", - "lat=np.array([13.5, 14.5])\n", - "rotated_lons, rotated_lats = iris.analysis.cartography.rotate_pole(lon, lat, pole_lon, pole_lat)\n", - "print(f'Rotated Longitudes: {rotated_lons[0]:.2f}, {rotated_lons[1]:.2f}')\n", - "print(f'Rotated Latitudes: {rotated_lats[0]:.2f}, {rotated_lats[1]:.2f}')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we can run the code below to constrain the HadGEM2-ES and MPI-ESM data to Bangkok in rotated pole coordinates: " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Constrain the cube area over Bangkok (BK).\n", - "# CORDEX EAS-22 uses a rotated grid, so the co-ordinates required are different to real world coordinates.\n", - "\n", - "for gcm in ['hadgem2-es', 'mpi-esm-lr']:\n", - " # Directory name where data are read from and stored to\n", - " infile = os.path.join(HISTDIR, gcm + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", - " \n", - " # Load the baseline precipitation data using the BK_constraint - the command below\n", - " # loads the data into a cube constrained by the area chosen\n", - " data = iris.load_cube(infile)\n", - "\n", - " # All grid cells whose longitudes and latitudes lie within the limits shown will be selected.\n", - " data_BK = data.intersection(grid_longitude=rotated_lons,\n", - " grid_latitude=rotated_lats)\n", - "\n", - " # save the constrained cube\n", - " outfile = os.path.join(CLIMDIR, gcm + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.BK.nc')\n", - " iris.save(data_BK, outfile)\n", - " print(f'Saved: {outfile}')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: How many grid cells are in the newly constrained Bangkok file?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Answer:**\n", - "*Write your answer here...*" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 3.2 Mean annual cycle calculation\n", - "\n", - "Average over a given area (e.g Bangkok) to calculate multi-annual monthly mean values. \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**c) We now calculate monthly mean fields** for 1986-2005 for each of the twelve months for the Bangkok area." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: To accurately find averages over latitudinal areas, we must account for changes in the \n", - " distance between lines of latitude. These changes make the areas of grid boxes smaller as we move towards the\n", - " model pole. Iris provides a tool to help us do this: iris.analysis.cartography.area_weights(). Find out more in the Iris documentation here\n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for gcm in ['hadgem2-es', 'mpi-esm-lr']:\n", - " # Set up the path to the data\n", - " infile = os.path.join(CLIMDIR, gcm + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.BK.nc')\n", - "\n", - " # Load the data extracted around Bangkok created in previous step\n", - " data = iris.load_cube(infile)\n", - "\n", - " # Add monthly coord categorisation to the time dimension coordinate\n", - " iris.coord_categorisation.add_month_number(data, 'time', name='month_number')\n", - "\n", - " # Calculate monthly mean values\n", - " monthly_mean = data.aggregated_by(['month_number'], iris.analysis.MEAN)\n", - " \n", - " # due to a limitation in Iris remove the 2D 'True' lat and lon coords\n", - " monthly_mean.remove_coord('longitude')\n", - " monthly_mean.remove_coord('latitude')\n", - "\n", - " # Find latitude weights\n", - " monthly_mean.coord('grid_longitude').guess_bounds()\n", - " monthly_mean.coord('grid_latitude').guess_bounds()\n", - " grid_areas = iris.analysis.cartography.area_weights(monthly_mean)\n", - " # Calculate area averaged monthly mean rainfall\n", - " monthly_mean = monthly_mean.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN, \n", - " weights=grid_areas)\n", - "\n", - " # Save the area averaged monthly mean data\n", - " outfile = os.path.join(CLIMDIR, gcm + '.mon.mean.1986_2005.pr.mmday-1.BK.nc')\n", - " iris.save(monthly_mean, outfile)\n", - " print('Saved: {}'.format(outfile))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**d) Plot the BK area averaged monthly mean precipitation** amount in mm/day for the HadGEM2-ES and MPI-ESM driven runs." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for gcm in ['hadgem2-es', 'mpi-esm-lr']:\n", - " # Load the model cube\n", - " inpath = os.path.join(CLIMDIR, gcm + '.mon.mean.1986_2005.pr.mmday-1.BK.nc')\n", - " print(inpath)\n", - " cube = iris.load_cube(inpath) \n", - " # Quick line plot for each cube \n", - " qplt.plot(cube.coord('month_number'), cube)\n", - " plt.title('BK area averaged ' + gcm + '\\n monthly average of daily rainfall')\n", - " ax = plt.gca()\n", - " ax.xaxis.set_label_text('Month Number')\n", - " ax.set_xlim(0.5, 12.5)\n", - " ax.set_ylim(0, 16)\n", - " plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: Considering the plots of HadGEM2-ES and MPI-ESM-LR data, note down their approximate values in mm day-1 for the following features: \n", - "\n", - "- Which month experiences the most rainfall? (also note the amount)\n", - "- If a second rainfall peak exists in another season, note the month and amount\n", - "- Which month experiences the least rainfall? (also note the amount)\n", - "\n", - "What comparisons can be made about these two datasets?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer:
    \n", - " \n", - "HadGEM2-ES\n", - "- Most rainfall: *month, amount*\n", - "- Secondary peak of rainfall: *month, amount*\n", - "- Least rainfall: *month, amount*\n", - "\n", - "MPI-ESM-LR\n", - "- Most rainfall: *month, amount*\n", - "- Secondary peak of rainfall: *month, amount*\n", - "- Least rainfall: *month, amount*\n", - "\n", - "How comparable are these datasets? How are they different?
    \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**e) Find the multi-annual monthly means (1986-2005) over the BK area for CHIRPS observations** by following the same methodology as above in step d). As before we've given you the input and output files names." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Load the BK extracted data created in previous step\n", - "infile = os.path.join(CHIRPSDIR, 'chirps.mon.1986_2005.BK.nc')\n", - "\n", - "\n", - "# Add monthly coord categorisation to the time dim coordinate\n", - "\n", - "\n", - "# Now calculate monthly means\n", - "\n", - "\n", - "# and change units to mm/day from mm/month\n", - "\n", - "\n", - "# create the area averaged monthly mean of daily rainfall\n", - "\n", - "# Save output\n", - "outfile = os.path.join(CLIMDIR, 'chirps.mon.mean.1986_2005.mmday-1.nc')\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: Plot the CHIRPS observations, compare with the HadGEM2-ES and MPI-ESM-LR driven REMO2015 runs. What are the differences between the observations and models; in which months are the differences greatest?\n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Complete your plotting script here\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer:
    \n", - "*Write your findings here...*\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 3.3 Comparing models and observations\n", - "\n", - "In Section 2.4 we saw how to plot model output on individual maps, but in order to do a rigorous comparison, **spatial model and observation fields must be on the same grid.**\n", - "\n", - "**You should regrid to the coarsest resolution grid.** For the data used here, the observations have the coarsest resolution so we will regrid the model data onto the observation grid.\n", - "\n", - "Recall that the REMO2015 model data are on a grid known as a **Rotated Pole** coordinate system. The idea is that the \"real\" north pole in the Arctic is shifted such that the equator relative to our rotated pole then runs through the centre of the regional model domain." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**f) Regrid the multiannual OND mean model** fields onto the observations grid.\n", - "\n", - "Here we use the `regrid` method to regrid the target cube. Here we will use linear interpolation. First, load in the data.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# load HadGEM2-ES\n", - "infile = os.path.join(CLIMDIR, 'hadgem2-es.OND.mean.1986_2005.pr.mmday-1.nc')\n", - "hadgem2_model_cube = iris.load_cube(infile)\n", - "# load MPI-ESM-LR\n", - "infile = os.path.join(CLIMDIR, 'mpi-esm-lr.OND.mean.1986_2005.pr.mmday-1.nc')\n", - "mpi_model_cube = iris.load_cube(infile)\n", - "# load \n", - "infile = os.path.join(CLIMDIR, 'chirps.OND.mean.1986_2005.pr.mmday-1.nc')\n", - "obs_cube = iris.load_cube(infile)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Before we can regrid any data, both the model and observation datasets must have a **specified coordinate system**. \n", - "\n", - "In this case, CHIRPS's coordinate system is missing from the original netCDF file, but the observations are on a regular longitude-latitude grid so the correct coordinate system is [WGS84](https://epsg.io/32600/). \n", - "\n", - "In the code below, we define the WGS84 coordinate system and then apply it to the x- and y-axes (i.e. longitudes and latitudes) of the observations. \n", - "\n", - "The coordinate system used by the model (the rotated grid) is already defined.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "# Define WGS84 projection for obs data\n", - "wgs84 = iris.coord_systems.GeogCS(semi_major_axis=6378137.0, inverse_flattening=298.257223563)\n", - "\n", - "# Apply WGS84 to obs cube\n", - "obs_cube.coord(axis='x').coord_system = wgs84\n", - "obs_cube.coord(axis='y').coord_system = wgs84\n", - "\n", - "# Print out and compare the two coordinate systems\n", - "print(obs_cube.coord_system())\n", - "print(hadgem2_model_cube.coord_system())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The next few lines of code **regrid the model data from rotated pole to the regular grid used by the observations**. \n", - "\n", - "From the plots created in section 2.4, we know that the area covered by CHIRPS data is larger than the EAS-22 model domain. Hence, the **extrapolation mode** is set to `mask` so that any grid cells on the CHIRPS grid which do not overlap with model grid cells are masked `off`; otherwise, the model data would be interpolated and would produce misleading results.\n", - "\n", - "Note also that as CHIRPS is a near global data set, we take a subset of the data over our region of interest.\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Note: When working with data arrays masks can be extremely useful. Masks are an array of boolean values matching the shape of the data arrya, where a particular condition is met. These boolean arrays can then be used to hide or show parts of the dataset, given the value of the mask. You can see more examples of masks here \n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "lon = (60., 150.)\n", - "lat = (10., 50.)\n", - "\n", - "obs_cube_sub = obs_cube.intersection(latitude=lat, longitude=lon)\n", - "\n", - "# Regrid the climate model data onto CHIRPS grid\n", - "hadgem2_regrid = hadgem2_model_cube.regrid(obs_cube_sub, iris.analysis.Nearest(extrapolation_mode='mask'))\n", - "mpi_regrid = mpi_model_cube.regrid(obs_cube_sub, iris.analysis.Nearest(extrapolation_mode='mask'))\n", - "\n", - "# Save HadGEM2 output\n", - "outpath = os.path.join(CLIMDIR, 'hadgem2-es.OND.mean.1986_2005.pr.mmday-1.rg.nc')\n", - "iris.save(hadgem2_regrid, outpath)\n", - "print('Saved: {}'.format(outfile))\n", - "\n", - "# Save MPI-ESM output\n", - "outpath = os.path.join(CLIMDIR, 'mpi-esm-lr.OND.mean.1986_2005.pr.mmday-1.rg.nc')\n", - "iris.save(mpi_regrid, outpath)\n", - "print('Saved: {}'.format(outfile))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: Now that the cubes are all on the same grid, what differences do you see?
    Complete the code template below to help answer this question.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Hint:** You need to (i) load the NetCDF files, (ii) plot the CHIRPS and model data again (as in section 2.4) to compare them visually once again." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Directory name where data is read from\n", - "indir = os.path.join(DATADIR, 'EAS-22', 'climatology')\n", - "\n", - "# load HadGEM2-ES downscaled model data\n", - "\n", - "# load MPI-ESM-LR downscaled model data\n", - "\n", - "# load CHIRPS data and extract region\n", - "\n", - "# Do some plotting!\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Answer:**\n", - "\n", - "_Write your findings here..._" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**g) Find the difference between the model and the observation OND multiannual mean** fields and plot maps to view the differences\n", - "\n", - "To find differences, now that the model and observations are on the same grid we can simply subtract the model data from the observations. \n", - "\n", - "There is a subtract function within Iris but it cannot be used here. The model cubes contain extra coordinates which are not present in the obs cube; Iris requires all coordinates within the cubes to match exactly." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Make sure units are the same\n", - "obs_cube.units = hadgem2_regrid.units\n", - "\n", - "# Make recieving cube\n", - "hadgem2_obs_diff = obs_cube.copy()\n", - "mpi_obs_diff = obs_cube.copy()\n", - "\n", - "# Replace data with the differences\n", - "hadgem2_obs_diff.data = hadgem2_regrid.data - obs_cube.data\n", - "mpi_obs_diff.data = mpi_regrid.data - obs_cube.data\n", - "\n", - "# Plotting\n", - "plt.figure(figsize=(12, 10))\n", - "plt.subplot(1, 2, 1) # Create a new subplot for the first differences, 2 rows, 1 column, 1st plot\n", - "\n", - "# Only plot the region containing data. We use the intersection method to do this.\n", - "qplt.pcolormesh(hadgem2_obs_diff[0].intersection(longitude=(90, 135), latitude=(-20, 32)), \n", - " vmax=10, vmin=-10, \n", - " cmap=plt.get_cmap('RdBu')) # Note this is where cube slicing is needed as you can only plot 2-coordinate\n", - " # dimensions with qplt.contourf, so here we have selected time[0] as there is only\n", - " # one timestep (the baseline 1986-2005 mean)\n", - "\n", - "plt.title('HadGEM2-ES - obs') # plots a title for the plot\n", - "ax = plt.gca() # gca function that returns the current axes\n", - "ax.coastlines() # adds coastlines defined by the axes of the plot\n", - "\n", - "plt.subplot(1, 2, 2) # Create a new subplot for the model data 2 row, 2 columns, 2nd plot\n", - "qplt.pcolormesh(mpi_obs_diff[0].intersection(longitude=(90, 135), latitude=(-20, 32)),\n", - " vmax=10, vmin=-10,\n", - " cmap=plt.get_cmap('RdBu'))\n", - "\n", - "plt.title('MPI-ESM-LR - obs') # plots a title for the plot\n", - "ax = plt.gca() # gca function that returns the current axes\n", - "ax.coastlines() # adds coastlines defined by the axes of the plot\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Questions: We have now created difference plots; to more easily validate the model(s) directly against observations. \n", - " \n", - "- Why has the data over the oceans disappeared?\n", - "- Which of the two model datasets (HadGEM2-ES and MPI-ESM-LR) has the greatest wet bias? In which region? \n", - "- Are there any areas in HadGEM2-ES or MPI-ESM-LR with a strong dry bias? Roughly what is the extent of this bias (in mm/day)? \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answers\n", - "- The data over the oceans has disappeared because [...] \n", - "\n", - "- The greatest wet bias occus in model [...], in region [...] \n", - "\n", - "- A strong dry bias exists in model [...] in region [...] (roughly [...] mm/day drier than CHIRPS observations). \n", - "\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 3.4 Climatological mean and annual cycle for an ensemble\n", - "\n", - "So far data from two GCMs downscaled with the REMO2015 RCM have been analysed. In this section we will add data from an extra RCM (REGCM4) and an extra GCM giving 6 runs in total. We will also make use of the CRU observational data set. \n", - "\n", - "The CRU data are a monthly global land-only dataset (1901-present) at 0.5 degree resolution. Nine variables are available, including mean, min, max temperature and precipitation. For further details please see: https://crudata.uea.ac.uk/cru/data/hrg/ \n", - "\n", - "This gives us an ensemble of 6 GCM-RCM pairs:\n", - "\n", - "* RCM REMO2015 downscaling:\n", - " * HadGEM2-ES\n", - " * MPI-ESM-LR\n", - " * NorESM1-M\n", - "* RCM REGCM4-7 downscaling:\n", - " * HadGEM2-ES\n", - " * MPI-ESM-MR (note medium resolution not low resolution)\n", - " * NorESM1-M\n", - "\n", - "And observational datasets:\n", - "\n", - "* CHIRPS\n", - "* CRU\n", - "\n", - "Taking an ensemble approach allows us to account for a range of uncertainty in the model projections.\n", - "\n", - "Write a series of scripts to do the following:\n", - "\n", - "**h) Calculate the OND seasonal mean and annual cycle** (for the BK area) for 1.5m temperature and precipitation for CRU and CHIRPS observations\n", - "\n", - "**i) Calculate OND seasonal-mean and monthly-mean anomalies** for the BK area for the 4 additional models\n", - "\n", - "**j) Plot a series of figures** that shows 1) the monthly cycles of temperature and rainfall comparing the 6 models and the observations; and 2) the monthly differences between the models and observations" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we first need to download CRU and netcdf data\n", - "copy_s3_files('s3://ias-pyprecis/data/CRU/*.nc', 'data/CRU/')\n", - "copy_s3_files('s3://ias-pyprecis/data/netcdf/*.nc', 'data/netcdf/')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "'''\n", - "Here are some useful variables you might like to use in your scripts\n", - "'''\n", - "# Some helpful data locations\n", - "DATADIR = 'data_v2'\n", - "CHIRPSDIR = os.path.join(DATADIR, 'CHIRPS')\n", - "CRUDIR = os.path.join(DATADIR, 'CRU')\n", - "CLIMDIR = 'data_v2/EAS-22/climatology'\n", - "MODELDIR = os.path.join(DATADIR, 'cordex/EAS-22')\n", - "\n", - "# Some helpful model variables\n", - "GCMS = ['hadgem2-es', 'mpi-esm-lr']\n", - "RCMS = ['GERICS-REMO2015','ICTP-RegCM4-7']\n", - "\n", - "# Bangkok domains...\n", - "# ... in true lat-lon coordiates\n", - "lon=(99.5, 100.5)\n", - "lat=(13.5, 14.5)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "'''\n", - "h) Calculate the OND seasonal-mean and monthly-mean 1.5m temperature and precipitation \n", - "for the BK area, for CRU and CHIRPS observations\n", - "'''\n", - "# Load CHIRPS data\n", - "\n", - "# Load CRU data\n", - "\n", - "# Extract BK area\n", - "\n", - "# Add OND season catagorisation\n", - "\n", - "# Add monthly catagorisation\n", - "\n", - "# Extract season\n", - "\n", - "# Aggregate cubes\n", - "\n", - "# Find BK area average\n", - "\n", - "# Check and add cube metadata\n", - "\n", - "# Save cubes to CLIMDIR\n", - "# Remember to use the same naming convention we used earlier\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "'''\n", - "i) Calculate OND seasonal-mean and monthly-mean anomalies for the BK area \n", - "for the 4 additional models runs \n", - "'''\n", - "# Load ensemble members\n", - "# Remember you need to do this for both precipitation AND temperature\n", - "\n", - "# Regrid ensemble members onto observational grid\n", - "# Remember you need to check your model and obs cubes have the appropriate coordinate systems defined\n", - "\n", - "# Extract the BK area. Remember you are now working in true lat-lon coordinates!\n", - "\n", - "# Find OND and monthly means\n", - "\n", - "# Calculate model anomalies\n", - "# Remember temp anomaly = model - CRU data\n", - "# precip anomaly = model - CHIRPS data\n", - "\n", - "# Check cube metadata consistency and save\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - " Question: What difference would it make if we first extracted the BK area and then regrid the models?
    \n", - "Which order is best for preserving data integrity?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer:
    \n", - "\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Create four figures:\n", - " \n", - " i) the monthly cycle of temperature (model and observations) \n", - " ii) the monthly cycle of rainfall (model and observations)\n", - " iii) the monthly temperature anomaly for each model\n", - " iv) the monthly precipitation anomaly for each model" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "'''\n", - "Plot 1: The monthly cycle of temperature (model and observations)\n", - "'''\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "'''\n", - "Plot 2: The monthly cycle of precipitation (model and observations)\n", - "'''\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "'''\n", - "Plot 3: The monthly temperature anomaly for each model\n", - "'''\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "'''\n", - "Plot 4: The monthly precipitation anomaly for each model\n", - "'''\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - " Question: How could you summarise the ensemble variability amongst model members in a plot?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer:
    \n", - " " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Question: How does the monthly temperature and precipitation anomaly compare to the OND average?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer:
    \n", - " " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Question: What are the advantages and disadvantages of plotting spatial maps of temperature and rainfall variability over Bangkok?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer:
    \n", - "\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "
    \n", - "
    This completes worksheet 3.

    \n", - " You have used Python and Iris to validate the model's climatology (30 years of baseline data: 1986-2005) against observations, in order to analyse the model's capability of representing real-world trends.
    \n", - "To do so, you have:\n", - " \n", - "- calculated and plotted multiannual seasonal and monthly mean data,\n", - "- regridded rotated pole model data to a regular latitude-longitude grid,\n", - "- created difference plots to compare model data with observations, and \n", - "- written your own code to do all of these post-processing and analysis tasks with an multi-model ensemble!
    \n", - "\n", - "In worksheet 4, you will consider future model projections and their changes with respect to the baseline period (calculated in this worksheet).\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "

    \"python

    \n", - "
    © Crown Copyright 2022, Met Office
    " - ] - } - ], - "metadata": { - "instance_type": "ml.t3.medium", - "kernelspec": { - "display_name": "pyprecis-environment", - "language": "python", - "name": "pyprecis-environment" - }, - "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.6.10" - }, - "widgets": { - "state": {}, - "version": "1.1.2" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/notebooks/worksheet4.ipynb b/notebooks/worksheet4.ipynb deleted file mode 100755 index 64f072e..0000000 --- a/notebooks/worksheet4.ipynb +++ /dev/null @@ -1,629 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Worksheet 4: Creating future climate scenarios and analysing climate change\n", - "\n", - "The following exercises demonstrate basic methods for analysing changes in climate, using two CORDEX-Core experiments (REMO2015 driven by HadGEM2-ES and MPI-ESM-LR) As with worksheets 2 & 3, these are examples of some of the many types of analyses that can be performed using Python and Iris." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "By the end of this worksheet you should be able to:
    \n", - "\n", - "- Calculate difference and percentage differences across cubes
    \n", - "- Plot cubes using different plotting methods and with an appropriate colour scale
    \n", - "- Create time series anomalies of precipitation and tempeature
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: As in Worksheet 2, the data used here has been processed in the same way as in Worksheet 1. The whole period has been concatenated into a single file to avoid issues with loading multiple files.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Contents\n", - "### [4.1: Calculate future OND mean precipitation](#4.1) \n", - "### [4.2: Find OND anomalies](#4.2)\n", - "### [4.3: Plot precipitation and temperature](#4.3)\n", - "### [4.4: Future time series](#4.4)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Preamble" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Code preamble - these libraries will be used in this worksheet.\n", - "# This code block needs to be re-run every time you restart this worksheet!\n", - "%matplotlib inline \n", - "import os\n", - "import iris\n", - "import iris.coord_categorisation\n", - "from iris.experimental.equalise_cubes import equalise_attributes\n", - "import iris.quickplot as qplt\n", - "import iris.plot as iplt\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "import numpy.ma as ma\n", - "\n", - "# Some helpful data locations\n", - "DATADIR = 'data_v2/EAS-22/'\n", - "CLIMDIR = os.path.join(DATADIR, 'climatology')\n", - "HISTDIR = os.path.join(DATADIR, 'historical')\n", - "FUTRDIR = os.path.join(DATADIR, 'future')\n", - "GCMIDS = ['hadgem2-es', 'mpi-esm-lr']" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 4.1 Calculate future OND mean precipitation\n", - "**a)** First, we **calculate future OND (October, November, December) mean precipitation** for the period 2041-2060 for the HadGEM2-ES driven REMO2015 simulation and the MPI-ESM-driven simulation :" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for gcmid in GCMIDS:\n", - " infile = os.path.join(FUTRDIR, gcmid + '.mon.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", - " data = iris.load_cube(infile)\n", - "\n", - " # in order to calculate OND mean, we divide the months into two seasons: \n", - " # one for OND and a second for the remaining months\n", - " iris.coord_categorisation.add_season(data, 'time', name='seasons', seasons=('jfmamjjas','ond'))\n", - "\n", - " # Extract the data for the OND season only\n", - " data_ond = data.extract(iris.Constraint(seasons='ond'))\n", - "\n", - " # Now calculate the mean over the OND season\n", - " ond_mean = data_ond.aggregated_by(['seasons'], iris.analysis.MEAN)\n", - "\n", - " # save the OND mean as a netCDF\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", - " iris.save(ond_mean, outfile)\n", - " print('Saved: {}'.format(outfile))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: Within the loop, we have created two cubes: a seasonal OND constrained cube data_ond, and a seasonal mean cube ond_mean. Inspect the cube metadata. What are the differences? \n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Use this code block to inspect the two cubes\n", - "# e.g. print(cube)\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer
    \n", - " *Type your answer here...*" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Note: Remember, the loop has created and saved two cubes, one for each downscaled GCM.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 4.2 Find OND anomalies\n", - "**b)** Next, we **subtract the baseline (1986-2005) mean from the future (2041-2060) mean** for OND to get the change in precipitation (or **anomaly**) from both simulations. The changes are also converted to percentages:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for gcmid in GCMIDS:\n", - " # Load the baseline cube\n", - " infile = os.path.join(CLIMDIR, gcmid + '.OND.mean.1986_2005.pr.mmday-1.nc')\n", - " OND_baseline = iris.load_cube(infile)\n", - " # Set the correct units\n", - " OND_baseline.units = \"mm day-1\"\n", - " # Load the future cube\n", - " infile = os.path.join(CLIMDIR, gcmid + '.OND.mean.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", - " OND_future = iris.load_cube(infile)\n", - " # Subtract the baseline cube from the future cube\n", - " diff = iris.analysis.maths.subtract(OND_future, OND_baseline)\n", - " # rename the cube to reflect the data processing\n", - " diff.rename('precipitation flux difference')\n", - " # Save the resulting cube\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.diff.GERICS-REMO2015.pr.mmday-1.nc')\n", - " iris.save(diff, outfile)\n", - " print('Saved {}'.format(outfile))\n", - " # Find the percentage change\n", - " pcent_change = iris.analysis.maths.multiply(iris.analysis.maths.divide(diff, OND_baseline), 100)\n", - " # remember to change the title and units to reflect the data processing\n", - " pcent_change.rename('precipitation flux percent difference')\n", - " pcent_change.units = '%'\n", - " # And save this too\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.diffperc.GERICS-REMO2015.pr.mmday-1.nc')\n", - " iris.save(pcent_change, outfile)\n", - " print('Saved {}'.format(outfile))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**c)** Now, repeat the calculations yourself for **temperature**. \n", - "\n", - "First, we calculate the **OND mean** temperatures. \n", - "\n", - "**Fill in the missing commands in the code block below**:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# HINT: Your filenames should have the format: \n", - "# gcmid + '.OND.mean.' + time_periods[period] + '.GERICS-REMO2015.tm.C.nc'\n", - "time_periods = {'historical':'1986_2005', 'future':'2041_2060'}\n", - "\n", - "for gcmid in GCMIDS:\n", - " for period in time_periods.keys():\n", - " # Load the data:\n", - "\n", - " # In order to calculate OND mean, add a season coordinate, separating OND from the other months:\n", - "\n", - " # Extract the data for the OND season only:\n", - " \n", - " # Now calculate the mean over the OND season:\n", - "\n", - " # save the OND mean as a netCDF ('outfile' specifies the output file name for your OND mean cube):\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.' + time_periods[period] + '.GERICS-REMO2015.tm.C.nc')\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**d)** Next, we **calculate the difference** between the baseline and future periods." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for gcmid in GCMIDS:\n", - " # Load files:\n", - " baselinefile = os.path.join(CLIMDIR, gcmid + '.OND.mean.1986_2005.GERICS-REMO2015.tm.C.nc')\n", - " futurefile = os.path.join(CLIMDIR, gcmid + '.OND.mean.2041_2060.GERICS-REMO2015.tm.C.nc')\n", - " OND_baseline = iris.load_cube(baselinefile)\n", - " OND_future = iris.load_cube(futurefile)\n", - " \n", - " # Calculate 'future mean' minus 'baseline mean':\n", - " diff = iris.analysis.maths.subtract(OND_future, OND_baseline)\n", - " diff.rename('surface temperature difference')\n", - " \n", - " # Save\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.diff.GERICS-REMO2015.tm.C.nc')\n", - " iris.save(diff, outfile)\n", - " print('Saved: {}'.format(outfile))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 4.3 Plot precipitation and temperature\n", - "\n", - "**e)** **Plot changes** to precipitation (in %) and temperature (in deg.C)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Create a figure of the size 12x12 inches\n", - "plt.figure(figsize=(12, 12))\n", - "\n", - "# Read in the percentage changes in precipitation\n", - "for n, gcmid in enumerate(GCMIDS):\n", - " prpath = os.path.join(CLIMDIR, gcmid + '.OND.mean.diffperc.GERICS-REMO2015.pr.mmday-1.nc')\n", - " tmpath = os.path.join(CLIMDIR, gcmid + '.OND.mean.diff.GERICS-REMO2015.tm.C.nc')\n", - " pcent_change = iris.load_cube(prpath)\n", - " degc_change = iris.load_cube(tmpath)\n", - "\n", - " # Remove extra time dimension using an iris utility \n", - " pcent_change = iris.util.squeeze(pcent_change)\n", - " degc_change = iris.util.squeeze(degc_change)\n", - " \n", - " plot_num = n*2 + 1\n", - " plt.subplot(2, 2, plot_num) # Create a new subplot with 2 rows, 2 columns, 1st plot\n", - " qplt.pcolormesh(pcent_change, vmax=30, vmin=-30, cmap='BrBG')\n", - " plt.title(gcmid + ' precipitation change (%)')\n", - " ax = plt.gca() # gca function that returns the current axes\n", - " ax.coastlines() # adds coastlines defined by the axes of the plot\n", - "\n", - " plt.subplot(2, 2, plot_num+1)\n", - " qplt.pcolormesh(degc_change, vmax=2.5, vmin=0, cmap='Reds')\n", - " plt.title(gcmid + ' temperature change ($\\degree$C)')\n", - " ax = plt.gca()\n", - " ax.coastlines()\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: How would you use a discrete contoured colour map to show changes in precipitation and temperature?
    \n", - " Modify the code above to use qplt.pcontourf(). Remember to choose appropriate contours.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Question: The plots show projected changes in precipitation and temperature using two models; what are the common features between the two model projections? \n", - " \n", - "What differences exist between the two model projections? Which is hotter, wetter, how does the spatial distribution differ? \n", - " \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer:
    \n", - "*Type your answers here...*" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 4.4 Future time series\n", - "\n", - "**f)** Calculate and then plot a 2041-2060 monthly **time series of precipitation anomalies** for land\n", - "points only, relative to the 1986-2005 baseline monthly mean. Do this for both the downscaled HadGEM2-ES and MPI-ESM-LR \n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Read in the land-sea mask. \n", - "# The cube data array has a land fraction associated with it which we'll use to mask out ocean points.\n", - "land_fraction_file = 'sftlf_EAS-22_MOHC-HadGEM2-ES_historical_r0i0p0_GERICS-REMO2015_v1_fx_r0i0p0.nc'\n", - "land_fraction = iris.load_cube(DATADIR + land_fraction_file)\n", - "\n", - "# convert this to a binary (i.e. 1 or 0 mask)\n", - "land_sea_mask = land_fraction.copy()\n", - "land_sea_mask.data = np.where(land_sea_mask.data < 50, 0, 1)\n", - "land_sea_mask.name = 'land_binary_mask'\n", - "# apply a mask to the cube \n", - "land_sea_mask = iris.util.mask_cube(land_sea_mask, land_sea_mask.data < 0.5)\n", - "\n", - "\n", - "for gcmid in GCMIDS:\n", - " # Read in original data for baseline and future\n", - " baselinepath = os.path.join(HISTDIR, gcmid + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", - " futurepath = os.path.join(FUTRDIR, gcmid + '.mon.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", - " baseline = iris.load_cube(baselinepath)\n", - " future = iris.load_cube(futurepath)\n", - " \n", - " # Apply land mask\n", - " baseline.data = ma.array(baseline.data, mask=baseline.data*land_sea_mask.data.mask[np.newaxis, :,:])\n", - " future.data = ma.array(future.data, mask=future.data*land_sea_mask.data.mask[np.newaxis, :,:])\n", - "\n", - " # the code to calculate area weights requires a single longitude and latitude coordindate - \n", - " # remove the 2D \"true\" lat and lon\n", - " baseline.remove_coord('longitude')\n", - " baseline.remove_coord('latitude')\n", - " future.remove_coord('longitude')\n", - " future.remove_coord('latitude')\n", - " \n", - " # Guess bounds\n", - " for cube in [baseline, future]:\n", - " for coord in ['grid_longitude', 'grid_latitude']:\n", - " cube.coord(coord).guess_bounds()\n", - " \n", - " # Calculate mean values over land points\n", - " baseline_land = baseline.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN,\n", - " weights = iris.analysis.cartography.area_weights(baseline))\n", - " future_land = future.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN,\n", - " weights = iris.analysis.cartography.area_weights(future))\n", - "\n", - " # Save future & baseline area averaged monthly data (time series)\n", - " baselineout = os.path.join(CLIMDIR, gcmid + '.mon.1986_2005.series.GERICS-REMO2015.pr.mmday-1.nc')\n", - " futureout = os.path.join(CLIMDIR, gcmid + '.mon.2041_2060.series.GERICS-REMO2015.pr.mmday-1.nc')\n", - " iris.save(baseline_land, baselineout)\n", - " iris.save(future_land, futureout)\n", - "\n", - " # Subtract baseline from future\n", - " diff = future_land.copy()\n", - " diff.data = future_land.data - baseline_land.data.mean()\n", - " diff.rename('future anomaly relative to mean historical precipitation')\n", - "\n", - " # Save the area averaged monthly future anomalies (time series)\n", - " outpath = os.path.join(CLIMDIR, gcmid + '.mon.2041_2060.anom.series.GERICS-REMO2015.pr.mmday-1.nc')\n", - " iris.save(diff, outpath)\n", - " print('Saved: {}'.format(outpath))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - " Question: Why do we only want to produce a time series for changes over land?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Answer:**\n", - "\n", - "_Type your answer here..._" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**g)** **Plot the precipitation anomalies** of HadGEM2-ES and MPI-ESM-LR downscaled" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "# Read in the monthly series\n", - "hadgem2es = iris.load_cube(CLIMDIR + '/hadgem2-es.mon.2041_2060.anom.series.GERICS-REMO2015.pr.mmday-1.nc')\n", - "mpiesm = iris.load_cube(CLIMDIR + '/mpi-esm-lr.mon.2041_2060.anom.series.GERICS-REMO2015.pr.mmday-1.nc')\n", - "time = hadgem2es.coord('time')\n", - "\n", - "# Plot the two model time series' on the same figure\n", - "plt.figure(figsize=(16,5))\n", - "iplt.plot(time, hadgem2es, label = 'HadGEM2-ES')\n", - "iplt.plot(time, mpiesm, label = 'MPI-ESM-LR')\n", - "plt.legend()\n", - "plt.suptitle('2041-2060 Precipitation anomaly (relative to 1986-2005)')\n", - "plt.ylabel(f'Precipitation change ({hadgem2es.units}')\n", - "plt.xlabel('Years')\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**h) Produce and plot a montly time series of temperature data** relative to the 1986-2005 baseline. As for (f) and (g) produce time series for HadGEM2-ES and MPI-ESM-LR driven runs.\n", - "\n", - "**Fill in the missing commands in the code blocks below**:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# HINT: The temperature data has filenames with the pattern:\n", - "# gcmid + '.mon.1986_2005.GERICS-REMO2015.tm.C.nc' or gcmid + '.mon.2041_2060.GERICS-REMO2015.tm.C.nc'\n", - "\n", - "# Loop over GCMIDS\n", - "\n", - "\n", - "# Read in original data for baseline and future\n", - "\n", - "# Apply land mask\n", - "\n", - "# remove the 2D \"true\" lat and lon\n", - "\n", - "# Guess bounds\n", - "\n", - "# Calculate mean values over land points\n", - "\n", - "# Save future & baseline area averaged monthly data (time series)\n", - "\n", - "# Subtract baseline from future\n", - "\n", - "# Save the data, make sure you follow the file naming convention!\n", - "\n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Do some plotting...\n", - "# Read in the monthly series\n", - "\n", - "\n", - "# Plot the two model time series' on the same figure\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: Write a short summary of these two graphs. Include:\n", - " \n", - "- A description of what each plot shows\n", - "- The differences between the two models\n", - "- A consideration of the ways the climate in East Asia might be different in the future\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Answer:**\n", - "\n", - "_Type your answer here..._" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - " Question: Conside the plots we produced in Section 4.3. What additional time series analysis could you do to support your consideration of future changes to climate in the question above?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "
    This completes worksheet 4.

    \n", - " You have used Iris to investigate differences between historical and future changes in model output by comparing 20 years of baseline data (1986-2005) against a future period (20241-2060).
    \n", - "To do so, you have:\n", - " \n", - "- calculated and plotted seasonal mean changes in temperature and precipitation\n", - "- masked out ocean data to focus on changes over land\n", - "- calculated anomalies by comparing future data to the historical mean period\n", - "- plotted time series of both temperature and precipitation anomalies over land for two different models
    \n", - "\n", - "In worksheet 5, you will investigate climate extremes by investigating threshold and extreme climate indicies.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "

    \"python

    \n", - "
    © Crown Copyright 2022, Met Office
    " - ] - } - ], - "metadata": { - "instance_type": "ml.t3.medium", - "kernelspec": { - "display_name": "pyprecis-environment", - "language": "python", - "name": "pyprecis-environment" - }, - "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.6.10" - }, - "widgets": { - "state": {}, - "version": "1.1.2" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/notebooks/worksheet5.ipynb b/notebooks/worksheet5.ipynb deleted file mode 100755 index 4a6d417..0000000 --- a/notebooks/worksheet5.ipynb +++ /dev/null @@ -1,853 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Worksheet 5: Thresholds and climate extremes\n", - "The following exercises demonstrate analysis of moderate extremes in climate simulated in CORDEX. As with the other worksheets, these are just examples of some of the analysis that you might perform using packages such as Python and and the python Library IRIS.\n", - "\n", - "The basis of climate extremes analysis is a common set of standard extreme climate indices, defined by the World Climate Research Programme [Expert Team on Climate Change Detection and Indices (ETCCDI)](https://www.wcrp-climate.org/etccdi).\n", - "\n", - "There are 27 climate extremes indices, nicely summarised by the [Climdex](https://www.climdex.org/learn/indices/) website. You can read more about them in the frame below..." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from IPython.display import IFrame\n", - "IFrame('https://www.climdex.org/learn/indices/', width=950, height=350)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this worksheet we'll be looking at wet days, a threshold measure giving the count of days when $\\mathrm{pr} \\geq 1 mm \\;day^{-1}$, and **R95p**, the 95th percentile of precipitation on wet days ($\\mathrm{pr} \\geq 1 mm \\;day^{-1}$) in the 1986-2005 period." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "By the end of this worksheet you should be able to:
    \n", - "- Have an appreciation for working with daily model data
    \n", - "- Understand how to calculate some useful climate extremes statistics
    \n", - "- Be aware of some coding stratagies for dealing with large data sets
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Contents\n", - "### [5.1: Frequency of Wet days](#5.1) \n", - "### [5.2: Calculating percentiles](#5.2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Preamble" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Code preamble - these libraries will be used in this worksheet.\n", - "# This code block needs to be re-run every time you restart this worksheet!\n", - "%matplotlib inline \n", - "import os\n", - "import iris\n", - "import iris.coord_categorisation\n", - "import iris.quickplot as qplt\n", - "import iris.plot as iplt\n", - "from iris.time import PartialDateTime\n", - "import cartopy.crs as ccrs\n", - "import cartopy.feature as cfeature\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "import dask\n", - "dask.config.set(scheduler=dask.get)\n", - "import dask.array as da\n", - "from iris.analysis import Aggregator\n", - "\n", - "# Some helpful data locations\n", - "DATADIR = 'data_v2/EAS-22'\n", - "CLIMDIR = os.path.join(DATADIR, 'climatology')\n", - "HISTDIR = os.path.join(DATADIR, 'historical')\n", - "FUTRDIR = os.path.join(DATADIR, 'future')\n", - "CHIRPSDIR = os.path.join('data_v2', 'CHIRPS')\n", - "GCMIDS = ['hadgem2-es', 'mpi-esm-lr']\n", - "TIME_PERIODS = {'historical':'1986_2005', 'future':'2041_2060'}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - " Question: Thinking about climate extremes, what model averaging period should we be using for our data analysis? Why?
    \n", - " How do we identify this model avergaing period in the model output filenames?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer:
    \n", - "*Type your answer here...*" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 5.1 Frequency of wet days\n", - "\n", - "**a)** Start by finding the frequency of wet days using daily data for both _HadGEM2-ES_ and _MPI-ESM-LR_ driven runs. Calculate the number of days in both the baseline and future periods which are wet days - **a wet day is defined as having precipitation >=1 mm/day**. Then calculate the percentage of wet days.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# For each day: is rainfall >= 1? True/False\n", - "# Sum over all days to get number of wet days at each grid point\n", - "# Do for both model simulations and time periods\n", - "# Then calcuate the percentage of wet days.\n", - "\n", - "# Define a new aggregator to help count non-zero days\n", - "# (This uses a dask array to reduce memory load)\n", - "# To learn more about custom aggregators see\n", - "# https://scitools.org.uk/iris/docs/v2.4.0/examples/General/custom_aggregation.html#general-custom-aggregation \n", - "\n", - "count_nonzero = Aggregator('count', None,\n", - " units_func=lambda units: 1,\n", - " lazy_func=da.count_nonzero)\n", - "\n", - "for gcmid in GCMIDS:\n", - " for period in TIME_PERIODS.keys():\n", - " # Get path to daily data\n", - " infile = os.path.join(DATADIR, period, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.pr.*.nc')\n", - " data = iris.load_cube(infile)\n", - " # Select only wet days using our custom aggregator\n", - " model_wetdays = data.collapsed('time', count_nonzero)\n", - " model_wetdays.rename(f'{gcmid} number of wet days (>=1mm/day) {TIME_PERIODS[period]}')\n", - " # Save the file\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.wetday.nc')\n", - " iris.save(model_wetdays, outfile)\n", - " print(f'Saved: {outfile}')\n", - " \n", - " # Find wet days as a percentage of total days\n", - " total_days = len(data.coord('time').points) \n", - " model_pcent_wetdays = (model_wetdays / total_days) * 100\n", - " # Add metadata\n", - " model_pcent_wetdays.rename(f'{gcmid} percentage of wet days (>=1mm/day) {TIME_PERIODS[period]}')\n", - " model_pcent_wetdays.units = '%'\n", - "\n", - " # Save the file\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.wetday.pcent.nc')\n", - " iris.save(model_pcent_wetdays, outfile)\n", - " print('Saved: {}'.format(outfile))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "**b) Calculate numbers of wet days and percentage of wet days from the _CHIRPS_ observations**. \n", - "\n", - "Climate Hazards Group InfraRed Precipitation with Station data ([CHIRPS](https://chc.ucsb.edu/data/chirps)) is a 35+ year quasi-global rainfall data set. Spanning 50°S-50°N (and all longitudes) and ranging from 1981 to near-present, CHIRPS incorporates climatology, 0.05° resolution satellite imagery, and in-situ station data to create gridded rainfall time series for trend analysis and seasonal drought monitoring. \n", - "\n", - "We'll use CHIRPS as our observational data from which to compare our CORDEX model data.\n", - "\n", - "**Fill in the missing code** to calculate the observed wet days: " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Load CHIRPS daily precipitation data, but only period of interest\n", - "historical_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", - " <= cell.point <= PartialDateTime(year=2005))\n", - "\n", - "infile = os.path.join(CHIRPSDIR, 'chirps-v2.0_pr_day_1981-2018_p25.nc')\n", - "\n", - "# Find number of wet days\n", - "\n", - "# Save wet days cube\n", - "outfile = os.path.join(CLIMDIR, 'chirps.wetday.nc')\n", - "\n", - "# Find number of days in dataset (number_chirps_days)\n", - "\n", - "# Find wet days as percent of all chirps days \n", - "\n", - "# Save \n", - "outfile = os.path.join(CLIMDIR, 'chirps.wetday.pcent.nc')\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - " Question: Are there any additional considerations that have to be made with daily data?
    \n", - " From a coding perspective, how does working with daily data compare to working with monthly data?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer
    \n", - "*Type your answer here...*" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Plotting" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**c)** **Plot** the modelled and observed **numbers of wet days** from 1986-2005. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Plot modelled and observed numbers of wet days for a common baseline period.\n", - "# Create a figure of the size desired\n", - "fig = plt.figure(figsize=(16, 4))\n", - "fig.suptitle('Number of wet days (1986-2005)', fontsize=16)\n", - "\n", - "# Set common limits for each subplot\n", - "cbar_lims=(0,number_chirps_days)\n", - "easia_domain = [70,160,10,50]\n", - "\n", - "# Load and plot the models' wet day count\n", - "for n, gcmid in enumerate(GCMIDS):\n", - " infile = os.path.join(CLIMDIR, gcmid + '.day.1986_2005.GERICS-REMO2015.wetday.nc')\n", - " nwetdays = iris.load_cube(infile)\n", - " ax1 = fig.add_subplot(1, 3, n+1, projection=ccrs.PlateCarree())\n", - " qplt.pcolormesh(nwetdays, vmin=cbar_lims[0], vmax=cbar_lims[1])\n", - " plt.title(gcmid)\n", - " ax1.coastlines() # adds coastlines defined by the axes of the plot\n", - " ax1.set_extent(easia_domain, crs=ccrs.PlateCarree())\n", - "\n", - "# Load and plot CHIRPS wet day count\n", - "infile = os.path.join(CLIMDIR, 'chirps.wetday.nc')\n", - "obs_nwetdays = iris.load_cube(infile)\n", - "fig.add_subplot(1, 3, 3, projection=ccrs.PlateCarree())\n", - "qplt.pcolormesh(obs_nwetdays, vmin=cbar_lims[0], vmax=cbar_lims[1])\n", - "plt.title('Observations (CHIRPS)')\n", - "ax = plt.gca() # gca function that returns the current axes\n", - "ax.coastlines()\n", - "ax.set_extent(easia_domain, crs=ccrs.PlateCarree())\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question: Which of the following steps are required in order to calculate the model bias (the difference between CORDEX model output and observed data)?
    \n", - " \n", - "* Regrid data onto a common grid, to the finer (higher) resolution
    \n", - "* Regrid data onto a common grid, to the coarser (lower) resolution
    \n", - "* Convert CODREX data to a regular lat-lon grid if the simulation used a rotated pole
    \n", - "* Ensure the units are comparable (e.g not comparing K with C)
    \n", - " \n", - "Which of these steps are required when __comparing output for different time periods from the same model simulation__ (e.g. _future - baseline_ difference calculations)? \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer
    \n", - "Steps required to calculate the model bias:
    \n", - "* *type your answer here...*
    \n", - "\n", - "Steps required when comparing output from the same simulation:
    \n", - "* *type your answer here...*
    \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**d)** Calculate the **difference in modelled future and baseline** wet day frequency and also the **difference in modelled baseline and observation** wet day frequency." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Load percentage of wet days data for the CHIRPS observations\n", - "infile = os.path.join(CLIMDIR, 'chirps.wetday.pcent.nc')\n", - "obs = iris.load_cube(infile)\n", - "# Add coordinate system information to facilitate regridding later\n", - "wgs84_cs = iris.coord_systems.GeogCS(6371229.0) \n", - "obs.coord('latitude').coord_system = wgs84_cs \n", - "obs.coord('longitude').coord_system = wgs84_cs\n", - "\n", - "# constrain the observations to a smaller domain \n", - "obs_sub = obs.intersection(longitude=(70, 160), latitude=(10, 50))\n", - "\n", - "\n", - "# The observed rainfall data have been created using surface rain gauges, and so are only available\n", - "# over land points. Define a mask to remove sea points. The mask is True for masked points.\n", - "mask = np.where(obs.data > 0.0, False, True)\n", - "\n", - "# Redefine the obs data array as a masked array.\n", - "obs.data = np.ma.array(obs.data, mask=mask)\n", - "\n", - "# Define regridding method\n", - "scheme = iris.analysis.Linear(extrapolation_mode='mask')\n", - "\n", - "for gcmid in GCMIDS:\n", - " infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.wetday.pcent.nc')\n", - " model_baseline = iris.load_cube(infile)\n", - " infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['future'] + '.GERICS-REMO2015.wetday.pcent.nc')\n", - " model_future = iris.load_cube(infile)\n", - " # In order to compare the modelled and observed numbers of wet days,\n", - " # the model data needs to be regridded to the CHIRPS grid\n", - " model_baseline_rg = model_baseline.regrid(obs_sub, scheme)\n", - " model_future_rg = model_future.regrid(obs_sub, scheme)\n", - "\n", - " # Find the difference between futue and baseline models\n", - " diff_model = model_future_rg - model_baseline_rg\n", - " diff_model.rename('{} change in number of wet days (>=1mm/day) 2041-2060 vs 1986-2005 ')\n", - " # Save the file\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.GERICS-REMO2015.wetday.pcent.diff.nc')\n", - " iris.save(diff_model, outfile)\n", - " print('Saved {}'.format(outfile))\n", - "\n", - " # Subtract the observed percentages of wet days from the modelled percentages\n", - " diff_mod_obs = model_baseline_rg - obs_sub\n", - " diff_mod_obs.rename(f'{gcmid} number of wet days (>=1mm/day) bias compared to CHIRPS')\n", - " # Save the file\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.GERICS-REMO2015.wetday.pcent.bias.nc')\n", - " iris.save(diff_mod_obs, outfile)\n", - " print(f'Saved {outfile}')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: A cube can be easily constrained to a given domain using the cube.intersection method. More information on this (and other) Iris cube functionality can be found in the Iris Documentation online.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**e)** **Plot the percentage change and model bias for wet day frequency**. \n", - "\n", - "**First**, run the code block below to produce a series of plots showing the model bias and future precipitation change for _cahpa_ and _cahpb_ simulations.
    \n", - "\n", - "As the model domain is smaller than the observations domain, you will see that the data is plotted on a domain which is larger than necessary. \n", - "\n", - "**Next, read the Iris documentation** to learn how to use the `cube.intersection` method, then **add the necessary code** below, to constrain the plots to the model domain.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Create a figure of the size 12x12 inches\n", - "plt.figure(figsize=(12, 12))\n", - "\n", - "\n", - "# Load the model's future percentage change in wet days (future - baseline)\n", - "for n, gcmid in enumerate(GCMIDS):\n", - " infile = os.path.join(CLIMDIR, gcmid + '.GERICS-REMO2015.wetday.pcent.diff.nc')\n", - " pcent_change = iris.load_cube(infile)\n", - " \n", - " # Add in a line of code to constrain the model domain to these coordinates: \n", - " # longitude=(70, 160)\n", - " # latitude=(10, 50)\n", - " pcent_change_subset = \n", - " \n", - " # plot percentage changes on first row\n", - " plt.subplot(2, 2, n+1)\n", - " qplt.pcolormesh(pcent_change_subset, \n", - " vmax=10, vmin=-10, cmap='BrBG')\n", - " plt.title(gcmid + ' future-historical \\n precipitation change (%)')\n", - " ax = plt.gca()\n", - " ax.coastlines()\n", - "\n", - " \n", - "# Load the percentage bias (differences in precipitation between the models and obs)\n", - "for n, gcmid in enumerate(GCMIDS):\n", - " infile = os.path.join(CLIMDIR, gcmid + '.GERICS-REMO2015.wetday.pcent.bias.nc')\n", - " pcent_bias = iris.load_cube(infile)\n", - " \n", - " # Add in a line of code to constrain the model domain to these lat-lon coordinates: \n", - " # longitude=(70, 160)\n", - " # latitude=(10, 50)\n", - " pcent_bias_subset = \n", - " \n", - " # plot bias on the second row\n", - " plt.subplot(2, 2, n+3)\n", - " qplt.pcolormesh(pcent_bias_subset, \n", - " vmax=20, vmin=-20, cmap='BrBG')\n", - " plt.title(gcmid + ' model-observations \\n precipitation difference (%)')\n", - " ax = plt.gca()\n", - " ax.coastlines()\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - " Question:
    \n", - "\n", - "* Which simulation (HadGEM2-ES or MPI-ESM-LR) has better agreement with observations for wet day frequency?
    \n", - "* What is the magnitude and location of any notable wet or dry biases for each simulation during the baseline period?
    \n", - "* Summarise the projected change in wet day frequency over South-East Asia for both simulations.
    \n", - "* Given any wet/dry biases in each simulation's baseline period, what adjustments might we make to our summary of projected change from HadGEM2-ES or MPI-ESM-LR? \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Answers:**\n", - "\n", - "Which simulation has better agreement with observations?\n", - " \n", - "* \n", - "\n", - " \n", - "Magnitude and location of any notable wet or dry biases:\n", - "\n", - "* HadGEM2-ES driven run: \n", - "* MPI-ESM-LR driven run: \n", - "\n", - "Summarise the projected change in wet day frequency:\n", - "\n", - "* HadGEM2-ES driven run: \n", - "* MPI-ESM-LR driven run: \n", - "\n", - "Adjustments in light of model bias:\n", - "\n", - "* HadGEM2-ES driven run: \n", - "* MPI-ESM-LR driven run: \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## 5.2. Calculating percentiles\n", - "\n", - "**f)** Calculate in mm/day the baseline (1986-2005) and future (2041-2060) **95th percentile of precipitation**. Do this for HadGEM2-ES, MPI-ESM-LE driven runs and also for CHIRPS baseline.\n", - "\n", - "This introduces some new processing challenges: **the size of the daily future data set is (probably) too large to load into memory**. Sometimes Iris can handle this for us (see [Iris and Lazy Data](https://scitools.org.uk/iris/docs/v2.4.0/userguide/real_and_lazy_data.html)), but in this case we need to manually **'chunk' the data to load and process smaller sections**. This way Iris only loads a section of the data at a time and keeps within the memory limits imposed by this computer." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Specify the number of chunks for the lat and lon dimensions\n", - "# This will give us 3 x 3 = 9 cubes\n", - "steps = (3, 3) \n", - "\n", - "# Define a helper function to extract our cube chunks\n", - "def chunks(cube, x, y):\n", - " \"\"\"Yield successive x-y sized chunks from cube\"\"\"\n", - " for i in range(0, cube.coord(axis='x').shape[0], x):\n", - " for j in range(0, cube.coord(axis='y').shape[0], y):\n", - " yield cube[:, j:j + y, i:i + x]\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now process the data:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Loop over job ID and time period\n", - "for gcmid in GCMIDS:\n", - " for period in TIME_PERIODS.keys():\n", - " infile = os.path.join(DATADIR, period, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.pr.mmday-1.nc')\n", - " model_precip = iris.load_cube(infile)\n", - " # if cube has both latitude (2d true latitude) and grid_latitude, then\n", - " # coord(axis='y') does not work, so remove unused 'latitude' and 'longitude'\n", - " model_precip.remove_coord('latitude')\n", - " model_precip.remove_coord('longitude')\n", - " \n", - " # Calculate lat-lon chunks in terms of their index\n", - " lat_chunk = int(model_precip.coord(axis='y').shape[0] / steps[0])\n", - " lon_chunk = int(model_precip.coord(axis='x').shape[0] / steps[1])\n", - " # Make list of cubes\n", - " subcubes = list(chunks(model_precip, lon_chunk, lat_chunk))\n", - " # Loop through subcubes\n", - " model_pc95 = iris.cube.CubeList()\n", - " for cube in subcubes:\n", - " model_pc95.append(cube.collapsed('time', iris.analysis.PERCENTILE, percent=95.))\n", - " # Concatenate the cube list back into one cube\n", - " model_pc95 = model_pc95.concatenate_cube()\n", - " # Give cube a helpful name\n", - " model_pc95.rename(f'R95p of {gcmid} daily rainfall {TIME_PERIODS[period]}')\n", - " # Save output\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.day.pc95.' + TIME_PERIODS[period] + '.GERICS-REMO2015.pr.mmday-1.nc')\n", - " iris.save(model_pc95, outfile)\n", - " print(f'Saved: {outfile}')\n", - " # Tidy up memory\n", - " del model_precip, model_pc95" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - " Question: Why can we only 'chunk' in the lat-lon dimensions? Why can't we 'chunk' the time dimension?\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer
    \n", - "Type your answer here..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now do the same for the CHIRPS data. First we take a subset of the CHIRPS data to make the code run quicker - constraining the data in time to the same period as the RCM data above and in space to a similar area to the EAS-22 domain (62-185 degrees longitude, -2 to 50 degree latitude)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "historical_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", - " <= cell.point <= PartialDateTime(year=2005))\n", - "# now load CHIRPS daily data\n", - "infile = os.path.join(CHIRPSDIR, 'chirps-v2.0_pr_day_1981-2018_p25.nc')\n", - "obs_precip = iris.load_cube(infile, historical_time_constraint)\n", - "obs_precip = obs_precip.intersection(longitude=(62, 185), latitude=(-2, 50))\n", - "\n", - "\n", - "# save this to disk \n", - "subsetfile = os.path.join(CHIRPSDIR, 'chirps-v2.0_pr_day_1986-2005_p25_eastasia.nc')\n", - "iris.save(obs_precip, subsetfile)\n", - "\n", - "# save memory\n", - "del obs_precip\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Repeat the percentile calculation for the CHIRPS data\n", - "\n", - "# load subset of CHRIRPS in \n", - "obs_precip = iris.load_cube(subsetfile)\n", - "\n", - "# Calculate lat-lon chunks in terms of their index\n", - "lat_chunk = int(obs_precip.coord(axis='y').shape[0] / steps[0])\n", - "lon_chunk = int(obs_precip.coord(axis='x').shape[0] / steps[1])\n", - "\n", - "# Make list of cubes\n", - "subcubes = list(chunks(obs_precip, lon_chunk, lat_chunk))\n", - "# Loop through subcubes\n", - "obs_pc95 = iris.cube.CubeList()\n", - "for cube in subcubes:\n", - " cube.data = np.ma.filled(cube.data, np.nan)\n", - " obs_pc95.append(cube.collapsed('time', iris.analysis.PERCENTILE, percent=95.))\n", - " print(f'Done {len(obs_pc95)} chunks')\n", - "\n", - "# Concatenate the cube list back into one cube\n", - "obs_pc95 = obs_pc95.concatenate_cube()\n", - "\n", - "# Redefine the data array of pc95 as a masked array. \n", - "obs_pc95.data = np.ma.masked_where(np.isnan(obs_pc95.data), obs_pc95.data)\n", - "outfile = os.path.join(CLIMDIR, 'chirps.pc95.1986_2005.mmday-1.nc')\n", - "iris.save(obs_pc95, outfile)\n", - "print(f'Saved: {outfile}')\n", - "\n", - "# Tidy up memory\n", - "del obs_precip, obs_pc95" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "**g)** **Calculate the change in extreme precipitation** _(the difference between the future and baseline 95th percentiles of precipitation)_ **and the associated model bias** _(the difference between the baseline and CHIRPS 95th percentiles of precipitation)._\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Define WGS84 coordinate system\n", - "wgs84 = iris.coord_systems.GeogCS(semi_major_axis=6378137.0, inverse_flattening=298.257223563)\n", - "\n", - "# Load CHIRPS data\n", - "infile = os.path.join(CLIMDIR, 'chirps.pc95.1986_2005.mmday-1.nc')\n", - "obs_cube = iris.load_cube(infile)\n", - "obs_cube.coord('latitude').coord_system = wgs84 \n", - "obs_cube.coord('longitude').coord_system = wgs84\n", - "\n", - "# constrain the observations to a smaller domain \n", - "obs_cube = obs_cube.intersection(longitude=(70, 160), latitude=(10, 50))\n", - "\n", - "\n", - "# Define regridding method\n", - "scheme = iris.analysis.Linear(extrapolation_mode='mask')\n", - "\n", - "for gcmid in GCMIDS:\n", - " # First, calculate the difference between the modelled future and baseline 95th percentiles\n", - " infile = os.path.join(CLIMDIR, gcmid + '.day.pc95.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", - " print(infile)\n", - " model_base = iris.load_cube(infile)\n", - " infile = os.path.join(CLIMDIR, gcmid + '.day.pc95.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", - " model_fut = iris.load_cube(infile)\n", - " diff = iris.analysis.maths.subtract(model_fut, model_base)\n", - " diff.rename(f'{gcmid} change in R95p (future - historical)')\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.day.pc95.diff.GERICS-REMO2015.pr.mmday-1.nc')\n", - " iris.save(diff, outfile)\n", - " print('Saved: {}'.format(outfile))\n", - "\n", - " # Next, calculate the differences between the modelled baseline and observed 95th percentiles\n", - " # Remember, to compare the model and observations, the model data need to be regridded.\n", - " model_base_rg = model_base.regrid(obs_cube, scheme)\n", - " bias = obs_cube.copy()\n", - " bias.data = model_base_rg.data - obs_cube.data\n", - " bias.rename(f'{gcmid} bias in R95p (model - obs)')\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.day.pc95.bias.GERICS-REMO2015.pr.mmday-1.nc')\n", - " iris.save(bias, outfile)\n", - " print(f'Saved: {outfile}')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**h)** **Plot the differences in the 95th percentiles** between the models and observations, and the future changes in the 95th percentiles of precipitation from both models.\n", - "\n", - "**Complete the code block to plot the figures...**" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "Note: You will probably find it useful to consult the matpltlib documentation to help you produce your plots. In this case, take a look at the plt.subplot() docs to help you arrange your plots: plt.subplot().\n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# HINT: The filenames have the following pattern: gcmid + '.day.pc95.bias.pr.mmday-1.nc'\n", - "# Create a figure of the size 12x12 inches\n", - "plt.figure(figsize=(12, 12))\n", - "\n", - "for n, gcmid in enumerate(GCMIDS):\n", - " # HINT: Use the `n` variable to help arrange you plots using: plt.subplot()\n", - " # Use the matplotlib documention to help you! \n", - "\n", - " # Load and plot the model bias (model - obs)\n", - "\n", - " # Load and plot the percentage change in precipitation between future and baseline\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - " Question:
    \n", - "\n", - "* Where do we see the greatest changes in extreme precipitation for each simulation?
    \n", - "* Comment on each model's ability to reprent observed extremes in precipitation at the 95th percentile.
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Answer:**\n", - "\n", - "Greatest changes:\n", - "\n", - "* HadGEM2-ES driven run: \n", - "* MPI-ESM-LR driven run: \n", - "\n", - "Abilty to represent observed extremes:\n", - "\n", - "* HadGEM2-ES driven run: \n", - "* MPI-ESM-LR driven run: \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "
    \n", - "This completes worksheet 5.
    You have calculated and compared climate indices for future and baseline rainfall. You have also learned an effective method for working with large quantities of daily data.
    \n", - "In the final worksheet you will combine all the techniques learned to this point, through writing your own code to post-process and analyse CORDEX simulations of extreme temperature over East Asia. \n", - "
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "

    \"python

    \n", - "
    © Crown Copyright 2022, Met Office
    " - ] - } - ], - "metadata": { - "instance_type": "ml.t3.medium", - "kernelspec": { - "display_name": "pyprecis-environment", - "language": "python", - "name": "pyprecis-environment" - }, - "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.6.10" - }, - "widgets": { - "state": {}, - "version": "1.1.2" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/notebooks/worksheet6.ipynb b/notebooks/worksheet6.ipynb deleted file mode 100755 index a2bab3c..0000000 --- a/notebooks/worksheet6.ipynb +++ /dev/null @@ -1,258 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Worksheet 6: Investigating Extremes" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This final worksheet is a chance for you to put together all the techniques you have learned in the previous worksheets.\n", - "\n", - "Working with the same datasets, write some code to undertake an analysis of temperature extremes over our East Asia domain.\n", - "\n", - "You have the following datasets available to you:\n", - "\n", - "**CORDEX data** (REMO2015 dowscaling _HadGEM2-ES_ and _MPI-EMS-LR_)\n", - " * Maximum daily temperature\n", - " * Minimum daily temperature\n", - " * Mean daily temperature\n", - " * Daily precipitation flux\n", - " * Monthly mean preciptation and temperature data as used in previous worksheets\n", - "\n", - "**Observations**\n", - " * CHIRPS rainfall data\n", - " * CRU temperature data\n", - " \n", - "**Extremes indicies**
    \n", - "The full list of 27 core extreme indices are listed on the [CLIMDEX website](https://www.climdex.org/learn/indices/), or look at the summary table take from the IPCC AR5 report below. We suggest you look at one of the following:\n", - "\n", - " * Number of tropical nights (*TR*): $\\mathrm{TN}_{ij} > 20^{\\circ}C$\n", - " * Percentage of days when max temperature is > 90th percentile (*TX90p*): $\\mathrm{TX}_{ij} > \\mathrm{TX}_{in}90$\n", - " * Monthly maximum 1-day precipitation (*Rx1day*): $\\mathrm{Rx1day}_j = max (\\mathrm{RR}_{ij})$\n", - "\n", - "Speak to your instructor if you would like to look at alternative indicies.\n", - "\n", - "

    \"AR5

    \n", - "\n", - "**Table 1:** Definitions of extreme temperature and precipitation indices used in IPCC Assessment Report 5 (after Zhang et al., 2011). The most common units are shown but these may be shown as normalized or relative depending on application in different chapters. Figure, Tables and Section numbers refer to the IPCC AR5 report [here](https://www.ipcc.ch/report/ar5/wg1/)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "By the end of this worksheet you should be able to:
    \n", - "\n", - "- Build a coding workflow to undertake extremes analysis
    \n", - "- Understand the different stages of post-processing
    \n", - "- Have an appreciation of data storage and file naming issues.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Preamble" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Code preamble - these libraries will be used in this worksheet.\n", - "# This code block needs to be re-run every time you restart this worksheet!\n", - "%matplotlib inline \n", - "import os\n", - "import iris\n", - "import iris.coord_categorisation\n", - "import iris.quickplot as qplt\n", - "import iris.plot as iplt\n", - "import cartopy.crs as ccrs\n", - "import cartopy.feature as cfeature\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "import dask\n", - "dask.config.set(get=dask.get)\n", - "import dask.array as da\n", - "from iris.analysis import Aggregator\n", - "\n", - "# Some helpful data locations\n", - - "DATADIR = 'data_v2/EAS-22'\n", - - "PPDIR = os.path.join(DATADIR, 'pp')\n", - "CLIMDIR = os.path.join(DATADIR, 'climatology')\n", - "HISTDIR = os.path.join(DATADIR, 'historical')\n", - "FUTRDIR = os.path.join(DATADIR, 'future')\n", - "APHRODIR = os.path.join(DATADIR, 'APHRODITE')\n", - "CRUDIR = os.path.join(DATADIR, 'CRU')\n", - "GCMIDS = ['hadgem2-es', 'mpi-esm']\n", - "TIME_PERIODS = {'historical':'1986-2005', 'future':'2041_2060'}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Step 1: Process raw CORDEX netCDF files" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Remember to:\n", - " * Select the raw data with the correct variable\n", - " * Remove incompatible attributes\n", - " * Concatenate into a single netCDF file\n", - " * Save the netCDF file so you can access it later" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "'''\n", - "Step 1: Process the raw pp files\n", - "'''\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Step 2: Calculate the extreme index\n", - "\n", - "Remember to:\n", - " * Consider which observational data set to use for comparison\n", - " * Calculate the index for both the model data you prepared in step 1, but also the observed data\n", - " * Calculate the index for present and future model periods\n", - " * Save your index data sets as a netCDF file with appropriate metadata" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "'''\n", - "Step 2: Calculate the extreme index\n", - "'''\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Step 3: Plot some results\n", - "\n", - "Remember to:\n", - " * Think about plotting absolute values, differences, or scaled differences. Which one communicates your message best?\n", - " * Choose an appropriate colour scale" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "'''\n", - "Step 3: Plot some results\n", - "'''\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "
    \n", - "Question:
    \n", - "Which extreme index did you chose to analyse?
    \n", - "Summarise the results of your analysis of this extreme index.
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Answer
    \n", - "_Summarise the results of your extremes analysis here..._" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "
    \n", - "This completes worksheet 6.
    \n", - "You have independently converted raw CORDEX output into files ready for analysis and used them to undertake scientific verification and analysis of a commonly recognised extreme index. \n", - " \n", - "These will be the same steps required to post-process and analyse CORDEX simulations over your region of interest, so keep hold of these worksheets to refer back to in the future. \n", - "
    \n", - "
    \n", - "\n", - "_Useful resources for future work is available online:_
    \n", - "* [IRIS Documentation](https://scitools.org.uk/iris/docs/v2.4.0/userguide/index.html) is the first port of call for IRIS usage.
    \n", - "* [Stack Overflow - Python](https://stackoverflow.com/questions/tagged/python) provides solutions for common Python queries.
    \n", - "* [Stack Overflow - Iris](https://stackoverflow.com/questions/tagged/python-iris) is a forum for queries about Iris.
    \n", - "\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "

    \"python

    \n", - "
    © Crown Copyright 2022, Met Office
    " - ] - } - ], - "metadata": { - "instance_type": "ml.t3.medium", - "kernelspec": { - - "display_name": "pyprecis-environment", - "language": "python", - "name": "pyprecis-environment" - - }, - "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.6.10" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/notebooks/worksheet6example.ipynb b/notebooks/worksheet6example.ipynb deleted file mode 100755 index 639a7df..0000000 --- a/notebooks/worksheet6example.ipynb +++ /dev/null @@ -1,392 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Worksheet 6 example code\n", - "\n", - "## Example 1 Frequency of warm days (TX90P) in the future\n", - "\n", - "Calculate the baseline (1986-2005) 90th percentile of maximum temperature. Then calculate the frequency of warm days in the future (2041-2060). Do this for HadGEM2-ES and MPI-ESM-LR." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Code preamble - these libraries will be used in this worksheet.\n", - "# This code block needs to be re-run every time you restart this worksheet!\n", - "%matplotlib inline \n", - "import os\n", - "import iris\n", - "import iris.coord_categorisation\n", - "import iris.quickplot as qplt\n", - "import iris.plot as iplt\n", - "from iris.experimental.equalise_cubes import equalise_attributes\n", - "import cartopy.crs as ccrs\n", - "import cartopy.feature as cfeature\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "from iris.analysis import Aggregator\n", - "\n", - "# Some helpful data locations\n", - "DATADIR = 'data_v2'\n", - "CHIRPSDIR = os.path.join(DATADIR, 'CHIRPS')\n", - "CRUDIR = os.path.join(DATADIR, 'CRU')\n", - "CLIMDIR = os.path.join(DATADIR, 'EAS-22', 'climatology/')\n", - "MODELDIR = os.path.join(DATADIR, 'EAS-22/')\n", - "GCMIDS = ['hadgem2-es', 'mpi-esm-lr']\n", - "GCM_FULL = {'hadgem2-es':'MOHC-HadGEM2-ES' , 'mpi-esm-lr':'MPI-M-MPI-ESM-LR'}\n", - "TIME_PERIODS = {'historical':'1986_2005', 'rcp85':'2041_2060'}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First calculate the 90th percentile of tsmax in the baseline and future periods for both set of downscaled GCMs." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Define a helper function to extract our cube chunks\n", - "def chunks(cube, x=200, y=200):\n", - " \"\"\"\n", - " Yield successive x-y sized chunks from cube,\n", - " works for 3D Time-Lat-Lon\n", - " \n", - " Args:\n", - " cube (Iris cube): input cube to be chunked\n", - " x: size of chunks in x direction\n", - " y: size of chunk in y direction\n", - " \"\"\"\n", - " coord_names = [coord.name() for coord in cube.coords()]\n", - " if 'grid_latitude' in coord_names and 'latitude' in coord_names:\n", - " cube.remove_coord('latitude')\n", - " if 'grid_longitude' in coord_names and 'longitude' in coord_names:\n", - " cube.remove_coord('longitude')\n", - " \n", - " for i in range(0, cube.coord(axis='x').shape[0], x):\n", - " for j in range(0, cube.coord(axis='y').shape[0], y):\n", - " yield cube[:, j:j + y, i:i + x]\n", - "\n", - " \n", - "def chunks_2d(cube, x=200, y=200):\n", - " coord_names = [coord.name() for coord in cube.coords()]\n", - " if 'grid_latitude' in coord_names and 'latitude' in coord_names:\n", - " cube.remove_coord('latitude')\n", - " if 'grid_longitude' in coord_names and 'longitude' in coord_names:\n", - " cube.remove_coord('longitude')\n", - " \n", - " for i in range(0, cube.coord(axis='x').shape[0], x):\n", - " for j in range(0, cube.coord(axis='y').shape[0], y):\n", - " yield cube[j:j + y, i:i + x]\n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for gcmid in GCMIDS:\n", - " for period in TIME_PERIODS.keys():\n", - " filename = f'tasmax_EAS-22_{GCM_FULL[gcmid]}_{period}_*GERICS-REMO2015*_*_day_*.nc'\n", - " model_tasmax = iris.load(MODELDIR + filename)\n", - " # solve merge issues\n", - " equalise_attributes(model_tasmax)\n", - " model_tasmax = model_tasmax.concatenate_cube()\n", - "\n", - " # 90th percentile calculation\n", - " model_pc90 = iris.cube.CubeList()\n", - " for model_data in chunks(model_tasmax):\n", - " model_pc90_chk = model_data.collapsed('time', iris.analysis.PERCENTILE, percent=90.0)\n", - " model_pc90.append(model_pc90_chk)\n", - " model_pc90 =model_pc90.concatenate_cube()\n", - "\n", - " # save to file\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.tasmax.90pc.nc')\n", - " print(f'saving to file: {outfile}')\n", - " iris.save(model_pc90, outfile)\n", - " " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Calculate the frequency of warm days in the future (extreme index TX90P), i.e. the number of days which exceed the 90th percentile temperatures in the baseline. Then calculate the numbers of days as a percentage.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for gcmid in GCMIDS:\n", - " \n", - " # load daily data for future \n", - " filename = f'tasmax_EAS-22_{GCM_FULL[gcmid]}_rcp85_*GERICS-REMO2015*_*_day_*.nc'\n", - " future_tasmax = iris.load(MODELDIR + filename)\n", - "\n", - " # solve merge issues\n", - " equalise_attributes(future_tasmax)\n", - " future_tasmax = future_tasmax.concatenate_cube() \n", - " ndays = len(future_tasmax.coord('time').points)\n", - " \n", - " infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.tasmax.90pc.nc')\n", - " print(infile)\n", - " hist_90pc = iris.load_cube(infile)\n", - " \n", - " \n", - " # need to do next operation chunking data, also chunk 90th percentile \n", - " nwarmdays_future = iris.cube.CubeList() \n", - " for chunk_ft_tasmax, chunk_hist_90pc in zip(chunks(future_tasmax), chunks_2d(hist_90pc)):\n", - "\n", - " # Use np.where to identify all cells where daily temperatures \n", - " # in the future exceed the 90th percentile\n", - " assert(chunk_ft_tasmax.coord('grid_longitude') == chunk_hist_90pc.coord('grid_longitude'))\n", - " assert(chunk_ft_tasmax.coord('grid_latitude') == chunk_hist_90pc.coord('grid_latitude'))\n", - " temp_gt_chunk = np.where(chunk_ft_tasmax.data >= chunk_hist_90pc.data, 1, 0)\n", - " \n", - " # use the 90th percentile cube as a template to copy warm days data into \n", - " nwarmdays_future_chunk = chunk_hist_90pc.copy()\n", - " nwarmdays_future_chunk.data = np.ma.sum(temp_gt_chunk.data, axis=0)\n", - " nwarmdays_future.append(nwarmdays_future_chunk)\n", - " \n", - " nwarmdays_future = nwarmdays_future.concatenate_cube()\n", - "\n", - " # the sum above removes the mask - reinstate it with \n", - " nwarmdays_future.data.mask = hist_90pc.data.mask\n", - " nwarmdays_future.units = '1'\n", - " nwarmdays_future.rename('days > 90th %ile of baseline ')\n", - " \n", - " print (\"Saving numbers of warm days in the future from \" + gcmid)\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.tasmax.nwarmdays.nc')\n", - " iris.save(nwarmdays_future, outfile)\n", - " \n", - " # calculate percentage of days (see below)\n", - " nwarm_pc = nwarmdays_future/ndays*100.\n", - " nwarm_pc.units = '%'\n", - " nwarm_pc.rename('percentage of days T > 90th %ile of baseline ')\n", - " \n", - " # save percentage\n", - " print (\"Saving precentage of warm days in the future from \" + gcmid)\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.tasmax.nwarmpc.nc') \n", - " iris.save(nwarm_pc, outfile)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plot the numbers of warm days in the future and the percentage of warm days." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plt.figure(figsize=(12, 12))\n", - "\n", - "for i, gcmid in enumerate(GCMIDS):\n", - " \n", - " infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.tasmax.nwarmdays.nc')\n", - " nwarmdays = iris.load_cube(infile)\n", - " infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.tasmax.nwarmpc.nc') \n", - " nwd_pcent = iris.load_cube(infile)\n", - "\n", - " plotnum = 1 + 2*i\n", - " plt.subplot(2, 2, plotnum)\n", - " qplt.pcolormesh(nwarmdays, vmin=0, vmax=10000)\n", - " plt.title(gcmid + ': Number of warm days')\n", - " plt.gca().coastlines()\n", - " plt.subplot(2, 2, plotnum+1)\n", - " qplt.pcolormesh(nwd_pcent, vmin=0, vmax=30)\n", - " plt.title(gcmid + ': Percentage of warm days')\n", - " plt.gca().coastlines()\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Example 2. Percentage of total precipitation which falls on very wet days\n", - "\n", - "Calculate the percentage of total precipitation which falls on very wet days in the future over Thailand\n", - "(where a very wet day is one on which daily rainfall exceeds the 95th percentile of the baseline).\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First find the 95th percentile of rainfall during baseline" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for gcmid in GCMIDS:\n", - " filename = f'pr_EAS-22_{GCM_FULL[gcmid]}_historical_*GERICS-REMO2015*_*_day_*.nc'\n", - " model_pr = iris.load(MODELDIR + filename)\n", - " # solve merge issues\n", - " equalise_attributes(model_pr)\n", - " model_pr = model_pr.concatenate_cube()\n", - "\n", - " # 95th percentile calculation\n", - " model_pc95 = iris.cube.CubeList()\n", - " for model_data in chunks(model_pr):\n", - " model_pc95_chk = model_data.collapsed('time', iris.analysis.PERCENTILE, percent=95.0)\n", - " model_pc95.append(model_pc95_chk)\n", - " model_pc95 = model_pc95.concatenate_cube()\n", - "\n", - " # save to file\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.pr.95pc.nc')\n", - " print(f'saving to file: {outfile}')\n", - " iris.save(model_pc95, outfile)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Coordinates of a box around Thailand\n", - "thai_lons = np.array([98.0, 98.0, 105.0, 105.0])\n", - "thai_lats = np.array([10.0, 21.0, 10.0, 21.0])\n", - "\n", - "# Load a cube on the rotated grid\n", - "gcmid = 'hadgem2-es'\n", - "infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.pr.95pc.nc')\n", - "rotg = iris.load_cube(infile)\n", - "rcs = rotg.coord('grid_latitude').coord_system\n", - "\n", - "# Get the rotated pole coordinates\n", - "pole_lat = rcs.grid_north_pole_latitude\n", - "pole_lon = rcs.grid_north_pole_longitude\n", - "\n", - "# Convert the coordinates of a box around Thailand from real coordinates to rotated polar coordinates\n", - "grid_lons, grid_lats = iris.analysis.cartography.rotate_pole(thai_lons, thai_lats, pole_lon, pole_lat)\n", - "\n", - "# Find the max / min of the lons / lats on the rotated grid. They will be used to extract the data around Malaysia\n", - "# N.B. The conversion to float is needed, as numpy data are of type float64 by default. If the coordinate limits\n", - "# are passed as float64, they are interpreted as a list of two floats and the program will stop with an error:\n", - "# ValueError: setting an array element with a sequence.\n", - "lon_0 = float(min(grid_lons))\n", - "lon_1 = float(max(grid_lons))\n", - "lat_0 = float(min(grid_lats))\n", - "lat_1 = float(max(grid_lats))\n", - "\n", - "# Set up constraints on the rotated grid for Thailand\n", - "lon_con = iris.Constraint(grid_longitude = lambda cell: lon_0 <= cell <= lon_1)\n", - "lat_con = iris.Constraint(grid_latitude = lambda cell: lat_0 <= cell <= lat_1)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "# loop over GCMs\n", - "for i, gcmid in enumerate(GCMIDS):\n", - " # load the RCP 8.5 daily precip data\n", - " file_f = f'pr_EAS-22_{GCM_FULL[gcmid]}*_rcp85_*_GERICS-REMO2015*_*_day_*.nc'\n", - "# precip = iris.load_cube(data_path + file_f, lon_con).intersection(grid_latitude = (-14.767, -5,623))\n", - " precip = iris.load(MODELDIR + file_f, lat_con & lon_con)\n", - " # solve merge issues\n", - " equalise_attributes(precip)\n", - " precip = precip.concatenate_cube()\n", - " \n", - " \n", - " # load the historical 95th percentile\n", - " file_f = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.pr.95pc.nc')\n", - " precip_pc95 = iris.load_cube(file_f, lat_con & lon_con)\n", - " \n", - "# Use broadcasting to identify all cells in precip where p95 is exceeded\n", - " pre_gt_pc95 = np.where(precip.data > precip_pc95.data, precip.data, 0.0)\n", - " pre_p95 = np.sum(pre_gt_pc95, axis=0)\n", - " pre_tot = precip.collapsed('time', iris.analysis.SUM)\n", - " pre_tot.data = np.divide(pre_p95, pre_tot.data, out=np.zeros_like(pre_tot.data), where = pre_tot.data != 0)\n", - " pre_tot = iris.analysis.maths.multiply(pre_tot, 100)\n", - " file_out = gcmid + '.R95pTOT.future.GERICS-REMO2015.nc'\n", - " iris.save(pre_tot, CLIMDIR + file_out)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plot the percentages of heavy rainfall in the future." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plt.figure(figsize=(12, 6))\n", - "\n", - "for i, gcmid in enumerate(GCMIDS):\n", - " filename = gcmid + '.R95pTOT.future.GERICS-REMO2015.nc'\n", - " pcent_heavy_rain = iris.load_cube(CLIMDIR + filename)\n", - " plotnum = 1 + i\n", - " plt.subplot(1, 2, plotnum)\n", - " qplt.pcolormesh(pcent_heavy_rain, vmin=0, vmax=100)\n", - " plt.title(gcmid + ': Percentage of heavy rain \\n over Thailand in the future')\n", - " plt.gca().coastlines()\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "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.6.10" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/notebooks/worksheet_solutions.ipynb b/notebooks/worksheet_solutions.ipynb deleted file mode 100755 index a643be1..0000000 --- a/notebooks/worksheet_solutions.ipynb +++ /dev/null @@ -1,461 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Worksheet Solutions" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2.2c\n", - "\n", - "Complete the following code block to repeat the same procedure for MPI-ESM-LR:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Print the current MPI-ESM-LR cube units\n", - "print(f'The current unit for data is: {mpiesm.units}')\n", - "\n", - "# convert units to kg m-2 day-1\n", - "mpiesm.convert_units('kg m-2 day-1')\n", - "\n", - "\n", - "# Rename the units to mm day-1. Recall that 1 kg m-2 is equivalent to 1 mm of rain\n", - "mpiesm.units = 'mm day-1'\n", - "\n", - "# Save the new cube as a new netCDF file using the `outfile` filename we've provided below!\n", - "outfile = os.path.join(OUTDIR, 'mpi-esm-lr.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", - "\n", - "iris.save(mpiesm, outfile)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2.3e\n", - "\n", - "Answer: Write the line of code required to calculate CHIRPS's (a) standard deviation and (b) annual maximum rainfall in the code block below.
    \n", - "Hint: How could you adapt chirps_ond.aggregated_by(['seasons'], iris.analysis.MEAN) from above? You can refer to the [Iris documentation](https://scitools.org.uk/iris/docs/v2.4.0/iris/iris/analysis.html) if needed." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# From chirps, calculate: \n", - "# (a) chirps_std \n", - "chirps_std = chirps_ond.aggregated_by(['seasons'], iris.analysis.STD_DEV) \n", - "\n", - "# (b) chirps_max\n", - "chirps_std = chirps.collapsed('time', iris.analysis.MAX) \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 3.1a" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Enter the ordered latitude and longitude coordinates for Kuala Lumpur here:\n", - "# lon=( , ) # longitude (East - West extent)\n", - "# lat=( , ) # latuitude (South - North extent)\n", - "lon = (99.5, 100.5)\n", - "lat = (13.5, 14.5)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 3.2e part 1\n", - "\n", - "e) Find the multi-annual monthly means (1986-2005) over the BK area for CHIRPS observations by following the same methodology as above in step d). As before we've given you the input and output files names.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Load the BK extracted data created in previous step\n", - "infile = os.path.join(CHIRPSDIR, 'chirps.mon.1986_2005.BK.nc')\n", - "data = iris.load_cube(infile)\n", - "\n", - "# Add monthly coord categorisation to the time dim coordinate\n", - "iris.coord_categorisation.add_month_number(data, 'time', name='month_number')\n", - "\n", - "# Now calculate monthly means\n", - "monthly_mean = data.aggregated_by(['month_number'], iris.analysis.MEAN)\n", - "\n", - "# and change units to mm/day\n", - "monthly_mean.convert_units('mm day-1')\n", - "\n", - "# create the area averaged monthly mean of daily rainfall\n", - "# Find latitude weights\n", - "monthly_mean.coord('longitude').guess_bounds()\n", - "monthly_mean.coord('latitude').guess_bounds()\n", - "grid_areas = iris.analysis.cartography.area_weights(monthly_mean)\n", - "# Calculate area averaged monthly mean rainfall\n", - "monthly_mean = monthly_mean.collapsed(['longitude', 'latitude'], iris.analysis.MEAN, \n", - " weights=grid_areas)\n", - "\n", - "\n", - "# Save output\n", - "outfile = os.path.join(CLIMDIR, 'chirps.mon.mean.1986_2005.mmday-1.nc')\n", - "iris.save(monthly_mean, outfile)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 3.2e part 2\n", - " Plot the CHIRPS observations, compare with the HadGEM2-ES and MPI-ESM-LR driven REMO2015 runs." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Load the CHIRPS cube\n", - "inpath = os.path.join(CLIMDIR, 'chirps.mon.mean.1986_2005.mmday-1.nc')\n", - "cube = iris.load_cube(inpath) \n", - "\n", - "# Quick line plot for cube \n", - "qplt.plot(cube.coord('month_number'), cube)\n", - "plt.title('BK area averaged ' + gcm + '\\n monthly average of daily rainfall')\n", - "ax = plt.gca()\n", - "ax.xaxis.set_label_text('Month Number')\n", - "ax.set_xlim(0.5, 12.5)\n", - "ax.set_ylim(0, 16)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 3.3f\n", - "Question: Now that the cubes are all on the same grid, what differences do you see?
    Complete the code template below to help answer this question." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Directory name where data is read from\n", - "indir = os.path.join(DATADIR, 'EAS-22', 'climatology')\n", - "\n", - "# load HadGEM2-ES downscaled model data\n", - "hadgem2 = iris.load_cube(f'{indir}/hadgem2-es.OND.mean.1986_2005.pr.mmday-1.rg.nc')\n", - "\n", - "# load MPI-ESM-LR downscaled model data\n", - "mpiesm = iris.load_cube(f'{indir}/mpi-esm-lr.OND.mean.1986_2005.pr.mmday-1.rg.nc')\n", - "\n", - "# load CHIRPS data and extract region\n", - "chirps = iris.load_cube(f'{indir}/chirps.OND.mean.1986_2005.pr.mmday-1.nc')\n", - "chirps = chirps.intersection(latitude=lat, longitude=lon)\n", - "\n", - "# Do some plotting!\n", - "plt.figure(figsize=(12, 10))\n", - "plt.subplot(1,3,1)\n", - "qplt.pcolormesh(hadgem2[0], vmin=0., vmax=8.)\n", - "plt.title('HadGEM2-ES')\n", - "plt.gca().coastlines()\n", - "plt.subplot(1,3,2)\n", - "qplt.pcolormesh(mpiesm[0], vmin=0., vmax=8.)\n", - "plt.title('MPI-ESM-LR')\n", - "plt.gca().coastlines()\n", - "plt.subplot(1,3,3)\n", - "qplt.pcolormesh(chirps[0], vmin=0., vmax=8.)\n", - "plt.title('CHIRPS')\n", - "plt.gca().coastlines()\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 4.2c\n", - "\n", - "Now, repeat the calculations yourself for **temperature**. \n", - "\n", - "First, we calculate the **OND mean** temperatures. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for gcmid in GCMIDS:\n", - " infile = os.path.join(FUTRDIR, gcmid + '.mon.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", - " data = iris.load_cube(infile)\n", - "\n", - " # in order to calculate OND mean, we divide the months into two seasons: \n", - " # one for OND and a second for the remaining months\n", - " iris.coord_categorisation.add_season(data, 'time', name='seasons', seasons=('jfmamjjas','ond'))\n", - "\n", - " # Extract the data for the OND season only\n", - " data_ond = data.extract(iris.Constraint(seasons='ond'))\n", - "\n", - " # Now calculate the mean over the OND season\n", - " ond_mean = data_ond.aggregated_by(['seasons'], iris.analysis.MEAN)\n", - "\n", - " # save the OND mean as a netCDF\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", - " iris.save(ond_mean, outfile)\n", - " print('Saved: {}'.format(outfile))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 4.4h\n", - "Produce and plot a montly time series of temperature data** relative to the 1986-2005 baseline. As for (f) and (g) produce time series for HadGEM2-ES and MPI-ESM-LR driven runs." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Read in the land-sea mask. \n", - "# The cube data array has a land fraction associated with it which we'll use to mask out ocean points.\n", - "land_fraction_file = 'sftlf_EAS-22_MOHC-HadGEM2-ES_historical_r0i0p0_GERICS-REMO2015_v1_fx_r0i0p0.nc'\n", - "land_fraction = iris.load_cube(DATADIR + land_fraction_file)\n", - "\n", - "# convert this to a binary (i.e. 1 or 0 mask)\n", - "land_sea_mask = land_fraction.copy()\n", - "land_sea_mask.data = np.where(land_sea_mask.data < 50, 0, 1)\n", - "land_sea_mask.name = 'land_binary_mask'\n", - "# apply a mask to the cube \n", - "land_sea_mask = iris.util.mask_cube(land_sea_mask, land_sea_mask.data < 0.5)\n", - "\n", - "\n", - "# Loop over GCMIDS\n", - "for gcmid in GCMIDS:\n", - " # Read in original data for baseline and future\n", - " baselinepath = os.path.join(HISTDIR, gcmid + '.mon.1986_2005.GERICS-REMO2015.tm.C.nc')\n", - " futurepath = os.path.join(FUTRDIR, gcmid + '.mon.2041_2060.GERICS-REMO2015.tm.C.nc')\n", - " baseline = iris.load_cube(baselinepath)\n", - " future = iris.load_cube(futurepath)\n", - " \n", - " # Apply land mask\n", - " baseline.data = ma.array(baseline.data, mask=baseline.data*land_sea_mask.data.mask[np.newaxis, :,:])\n", - " future.data = ma.array(future.data, mask=future.data*land_sea_mask.data.mask[np.newaxis, :,:])\n", - "\n", - " # remove the 2D \"true\" lat and lon\n", - " baseline.remove_coord('longitude')\n", - " baseline.remove_coord('latitude')\n", - " future.remove_coord('longitude')\n", - " future.remove_coord('latitude')\n", - " \n", - " # Guess bounds\n", - " for cube in [baseline, future]:\n", - " for coord in ['grid_longitude', 'grid_latitude']:\n", - " cube.coord(coord).guess_bounds()\n", - " \n", - " # Calculate mean values over land points\n", - " baseline_land = baseline.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN,\n", - " weights = iris.analysis.cartography.area_weights(baseline))\n", - " future_land = future.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN,\n", - " weights = iris.analysis.cartography.area_weights(future))\n", - "\n", - " # Save future & baseline area averaged monthly data (time series)\n", - " baselineout = os.path.join(CLIMDIR, gcmid + '.mon.1986_2005.series.GERICS-REMO2015.tm.C.nc')\n", - " futureout = os.path.join(CLIMDIR, gcmid + '.mon.2041_2060.series.GERICS-REMO2015.tm.C.nc')\n", - " iris.save(baseline_land, baselineout)\n", - " iris.save(future_land, futureout)\n", - "\n", - " # Subtract baseline from future\n", - " diff = future_land.copy()\n", - " diff.data = future_land.data - baseline_land.data.mean()\n", - " diff.rename('future anomaly relative to mean historical precipitation')\n", - "\n", - " # Save the area averaged monthly future anomalies (time series)\n", - " outpath = os.path.join(CLIMDIR, gcmid + '.mon.2041_2060.anom.series.GERICS-REMO2015.tm.C.nc')\n", - " iris.save(diff, outpath)\n", - " print('Saved: {}'.format(outpath)) \n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Read in the monthly series\n", - "hadgem2es = iris.load_cube(CLIMDIR + '/hadgem2-es.mon.2041_2060.anom.series.GERICS-REMO2015.tm.C.nc')\n", - "mpiesm = iris.load_cube(CLIMDIR + '/mpi-esm-lr.mon.2041_2060.anom.series.GERICS-REMO2015.tm.C.nc')\n", - "time = hadgem2es.coord('time')\n", - "\n", - "# Plot the two model time series' on the same figure\n", - "plt.figure(figsize=(16,5))\n", - "iplt.plot(time, hadgem2es, label = 'HadGEM2-ES')\n", - "iplt.plot(time, mpiesm, label = 'MPI-ESM-LR')\n", - "plt.legend()\n", - "plt.suptitle('2041-2060 Temperature anomaly (relative to 1986-2005)')\n", - "plt.ylabel(f'Temperature change ({hadgem2es.units}')\n", - "plt.xlabel('Years')\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 5.1b\n", - "\n", - "We'll use CHIRPS as our observational data from which to compare our CORDEX model data.\n", - "\n", - "**Fill in the missing code** to calculate the observed wet days: " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Load CHIRPS daily precipitation data, but only period of interest\n", - "historical_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", - " <= cell.point <= PartialDateTime(year=2005))\n", - "\n", - "infile = os.path.join(CHIRPSDIR, 'chirps-v2.0_pr_day_1981-2018_p25.nc')\n", - "obs = iris.load_cube(infile, historical_time_constraint)#, 'daily precipitation analysis interpolated onto 0.25deg grids [mm/day]')\n", - "\n", - "# Find number of wet days\n", - "chirps_wetdays = obs.collapsed('time', count_nonzero)\n", - "chirps_wetdays.rename(f'CHIRPS number of wet days (>=1mm/day)')\n", - "\n", - "# Save wet days cube\n", - "outfile = os.path.join(CLIMDIR, 'chirps.wetday.nc')\n", - "iris.save(chirps_wetdays, outfile)\n", - "\n", - "# Find number of days in dataset (number_chirps_days)\n", - "number_chirps_days = len(obs.coord('time').points)\n", - "\n", - "\n", - "# Find wet days as percent of all chirps days \n", - "chirps_pcent_wetdays = (chirps_wetdays / number_chirps_days) * 100\n", - "chirps_pcent_wetdays.rename(f'CHIRPS percent of wet days (>=1mm/day)')\n", - "chirps_pcent_wetdays.units='%'\n", - "\n", - "# Save \n", - "outfile = os.path.join(CLIMDIR, 'chirps.wetday.pcent.nc')\n", - "iris.save(chirps_pcent_wetdays, outfile)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 5.1e" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - " # Add in a line of code to constrain the model domain to these coordinates: \n", - " # longitude=(70, 160)\n", - " # latitude=(10, 50)\n", - " pcent_change_subset = pcent_change.intersection(longitude=(70, 160), latitude=(10, 50))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 5.2h\n", - "**Plot the differences in the 95th percentiles** between the models and observations, and the future changes in the 95th percentiles of precipitation from both models.\n", - "\n", - "**Complete the code block to plot the figures...**" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Create a figure of the size 12x12 inches\n", - "plt.figure(figsize=(12, 12))\n", - "\n", - "for n, gcmid in enumerate(GCMIDS):\n", - " # HINT: Use the `n` variable to help arrange you plots using: plt.subplot()\n", - " # Use the matplotlib documention to help you! \n", - "\n", - " # Load and plot the model bias (model - obs)\n", - " infile = os.path.join(CLIMDIR, gcmid + '.day.pc95.bias.GERICS-REMO2015.pr.mmday-1.nc')\n", - " bias = iris.load_cube(infile)\n", - " plt.subplot(2,2,2*n+1)\n", - " qplt.pcolormesh(bias)\n", - " plt.gca().coastlines()\n", - "\n", - "\n", - " # Load and plot the percentage change in precipitation between future and baseline\n", - " infile = os.path.join(CLIMDIR, gcmid + '.day.pc95.diff.GERICS-REMO2015.pr.mmday-1.nc')\n", - " pc_change = iris.load_cube(infile)\n", - " plt.subplot(2,2,2*n+2)\n", - " qplt.pcolormesh(pc_change)\n", - " plt.gca().coastlines()\n", - "\n", - "plt.show()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "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.6.10" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/pyprecis-environment.lock b/pyprecis-environment.lock deleted file mode 100644 index 506ecef..0000000 --- a/pyprecis-environment.lock +++ /dev/null @@ -1,217 +0,0 @@ -# This file may be used to create an environment using: -# $ conda create --name --file -# platform: linux-64 -@EXPLICIT -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/ca-certificates-2021.10.8-ha878542_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/ld_impl_linux-64-2.36.1-hea4e1c9_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libgfortran4-7.5.0-h14aa051_19.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libstdcxx-ng-11.2.0-he4da1e4_12.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/llvm-openmp-12.0.1-h4bd325d_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pandoc-2.17.1.1-ha770c72_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/_openmp_mutex-4.5-1_llvm.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libgfortran-ng-7.5.0-h14aa051_19.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libgcc-ng-11.2.0-h1d223b6_12.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/c-ares-1.18.1-h7f98852_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/expat-2.4.4-h9c3ff4c_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/fftw-3.3.8-nompi_hfc0cae8_1114.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/geos-3.9.1-h9c3ff4c_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/icu-64.2-he1b5a44_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/jbig-2.1-h7f98852_2003.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/jpeg-9e-h7f98852_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/lerc-3.0-h9c3ff4c_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libaec-1.0.6-h9c3ff4c_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libdeflate-1.8-h7f98852_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libev-4.33-h516909a_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libffi-3.2.1-he1b5a44_1007.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libiconv-1.16-h516909a_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libmo_unpack-3.1.2-hf484d3e_1001.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libopenblas-0.3.10-pthreads_hb3c22a3_5.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libsodium-1.0.18-h36c2ea0_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libwebp-base-1.2.2-h7f98852_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libzlib-1.2.11-h36c2ea0_1013.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/ncurses-6.3-h9c3ff4c_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/openssl-1.1.1n-h166bdaf_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/ossuuid-1.6.2-hf484d3e_1000.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libice-1.0.10-h7f98852_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libxau-1.0.9-h7f98852_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-xextproto-7.3.0-h7f98852_1002.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xxhash-0.8.0-h7f98852_3.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xz-5.2.5-h516909a_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/gettext-0.19.8.1-hf34092f_1004.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/jasper-1.900.1-h07fcdf6_1006.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libblas-3.8.0-17_openblas.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libxcb-1.13-h7f98852_1004.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/readline-8.1-h46c0cb4_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/udunits2-2.2.27.27-hc3e0081_3.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libsm-1.2.3-hd9c2040_1000.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/zeromq-4.3.4-h9c3ff4c_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/zlib-1.2.11-h36c2ea0_1013.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/zstd-1.5.2-ha95c52a_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/hdf4-4.2.15-h10796ff_3.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libcblas-3.8.0-17_openblas.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libglib-2.66.3-hbe7bbb4_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/liblapack-3.8.0-17_openblas.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libnghttp2-1.46.0-h812cca2_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libssh2-1.10.0-ha56f1ee_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libtiff-4.3.0-h6f004c6_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libxml2-2.9.10-hee79883_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/sqlite-3.37.0-h9cd32fc_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/tk-8.6.11-h27826a3_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libx11-1.7.2-h7f98852_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/gsl-2.6-he838d99_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/krb5-1.19.2-hcc1bbae_3.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/liblapacke-3.8.0-17_openblas.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/python-3.6.10-h8356626_1011_cpython.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libxext-1.3.4-h7f98852_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libxt-1.2.1-h7f98852_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/backports-1.0-py_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/blas-2.17-openblas.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/click-7.1.2-pyh9f0ad1d_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/cloudpickle-2.0.0-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/colorama-0.4.4-pyh9f0ad1d_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/entrypoints-0.3-pyhd8ed1ab_1003.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/fontconfig-2.13.1-hba837de_1005.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/fsspec-2022.1.0-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/glib-2.66.3-h58526e2_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/heapdict-1.0.1-py_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/jmespath-0.10.0-pyh9f0ad1d_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libcurl-7.81.0-h2574ce0_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/locket-0.2.0-py_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/nest-asyncio-1.5.4-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/olefile-0.46-pyh9f0ad1d_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/parso-0.7.1-pyh9f0ad1d_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/prometheus_client-0.13.1-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pyke-1.1.1-pyhd8ed1ab_1004.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pyparsing-3.0.7-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pyshp-2.1.3-pyh44b312d_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/python_abi-3.6-2_cp36m.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pytz-2021.3-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/send2trash-1.8.0-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/sip-4.19.8-py36hf484d3e_1000.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/tblib-1.7.0-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/testpath-0.5.0-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/toolz-0.11.2-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/typing_extensions-4.0.1-pyha770c72_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libxmu-1.1.3-h7f98852_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libxpm-3.5.13-h7f98852_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/zipp-3.6.0-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/antlr-python-runtime-4.7.2-py36h5fab9bb_1002.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/certifi-2021.5.30-py36h5fab9bb_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/cffi-1.14.4-py36h211aa47_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/curl-7.81.0-h2574ce0_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/cytoolz-0.11.0-py36h8f6f2f9_3.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/dbus-1.13.6-hfdff14a_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/gstreamer-1.14.5-h36ae1b5_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/hdf5-1.10.6-nompi_h7c3c948_1111.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/importlib-metadata-4.8.1-py36h5fab9bb_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/jedi-0.17.2-py36h5fab9bb_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/kiwisolver-1.3.1-py36h605e78d_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/markupsafe-2.0.1-py36h8f6f2f9_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/mistune-0.8.4-py36h8f6f2f9_1004.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/msgpack-python-1.0.2-py36h605e78d_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/numpy-base-1.17.4-py36h2f8d375_0.conda -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/partd-1.2.0-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pexpect-4.8.0-pyh9f0ad1d_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pillow-8.3.2-py36h676a545_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/proj-7.2.0-h277dcde_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/psutil-5.8.0-py36h8f6f2f9_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pyrsistent-0.17.3-py36h8f6f2f9_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pysocks-1.7.1-py36h5fab9bb_3.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/python-xxhash-2.0.2-py36h8f6f2f9_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pyyaml-5.4.1-py36h8f6f2f9_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pyzmq-22.3.0-py36h7068817_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/setuptools-58.0.4-py36h5fab9bb_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/tornado-6.1-py36h8f6f2f9_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/tqdm-4.64.0-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/traitlets-4.3.3-pyhd8ed1ab_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/typing-extensions-4.0.1-hd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libxaw-1.0.14-h7f98852_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/zict-2.0.0-py_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/backports.functools_lru_cache-1.6.4-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/bleach-4.1.0-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/brotlipy-0.7.0-py36h8f6f2f9_1001.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/cryptography-35.0.0-py36hb60f036_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/dask-core-2.11.0-py_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/gst-plugins-base-1.14.5-h0935bb2_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/immutables-0.16-py36h8f6f2f9_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/jinja2-3.0.3-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/jsonschema-4.1.2-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/jupyter_core-4.6.3-py36h5fab9bb_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libnetcdf-4.7.4-nompi_h56d31a8_107.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/numpy-1.17.4-py36hd5be1e1_0.conda -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pip-21.3.1-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pygments-2.11.2-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/terminado-0.12.1-py36h5fab9bb_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/bokeh-2.3.3-py36h5fab9bb_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/cftime-1.4.1-py36h92226af_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/contextvars-2.4-py_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/eccodes-2.19.1-hea64003_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/jupyter_client-6.1.7-py_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/jupyterlab_pygments-0.1.2-pyh9f0ad1d_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/matplotlib-base-3.1.3-py36h250f245_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/mo_pack-0.2.0-py36h92226af_1005.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/nbformat-5.1.3-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/ncview-2.1.7-hb1f9ec4_5.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/netcdf-fortran-4.5.3-nompi_hfef6a68_101.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pandas-1.1.5-py36h284efc9_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pyopenssl-22.0.0-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/qt-5.9.7-h0c104cb_3.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/scipy-1.5.3-py36h976291a_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/shapely-1.7.1-py36h93b233e_4.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/tempest-remap-2.0.5-h1b20e2d_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/wcwidth-0.2.5-pyh9f0ad1d_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/cartopy-0.18.0-py36h104b3a8_13.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/cdo-1.9.9-h04f682f_14.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/cf-units-2.1.4-py36h92226af_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/distributed-2.30.1-py36h5fab9bb_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/esmf-8.0.1-nompi_hcaa3220_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/nbclient-0.5.9-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/nc-time-axis-1.2.0-pyhd8ed1ab_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/netcdf4-1.5.6-nompi_py36hc29086f_100.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/prompt-toolkit-3.0.26-pyha770c72_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pyqt-5.9.2-py36hcca6a23_4.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/urllib3-1.26.8-pyhd8ed1ab_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/botocore-1.24.21-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/dask-2.11.0-py_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/ipython-7.16.1-py36he448a4c_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/matplotlib-3.1.3-py36_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/nbconvert-6.0.7-py36h5fab9bb_3.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/nco-4.9.9-h1e74faa_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/ipykernel-5.5.5-py36hcb3619a_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/iris-2.4.0-py36h5fab9bb_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/s3transfer-0.5.1-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/boto3-1.21.21-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/notebook-5.7.8-py36_1.tar.bz2 From 9eabd4dba674ae5b8bddf4209f94b198a9085e0b Mon Sep 17 00:00:00 2001 From: Nick Savage Date: Fri, 22 Apr 2022 08:32:27 +0100 Subject: [PATCH 03/23] Gitignore issue fixed --- .gitignore | 6 + CONTRIBUTING.ipynb | 253 +++ CONTRIBUTING.md | 70 + LICENCE | 29 + README.md | 77 + dockerfile | 23 + environment.yml | 20 + notebooks/AFR-22/data_afr22 | 1 + notebooks/AFR-22/img | 1 + notebooks/AFR-22/makedata.ipynb | 236 +++ notebooks/AFR-22/worksheet1.ipynb | 864 +++++++++ notebooks/AFR-22/worksheet2.ipynb | 772 ++++++++ notebooks/AFR-22/worksheet3.ipynb | 1054 +++++++++++ notebooks/AFR-22/worksheet4.ipynb | 629 +++++++ notebooks/AFR-22/worksheet5.ipynb | 853 +++++++++ notebooks/AFR-22/worksheet6.ipynb | 258 +++ notebooks/AFR-22/worksheet6example.ipynb | 392 +++++ notebooks/AFR-22/worksheet_solutions.ipynb | 461 +++++ .../CSSP_20CRDS_Tutorials/Introduction.ipynb | 245 +++ .../images/global_airtemp_cp.png | Bin 0 -> 150651 bytes .../images/global_airtemp_ts.png | Bin 0 -> 6278 bytes .../CSSP_20CRDS_Tutorials/images/jupyter.png | Bin 0 -> 37078 bytes .../CSSP_20CRDS_Tutorials/images/region.PNG | Bin 0 -> 101249 bytes .../images/rotated_pole_1.png | Bin 0 -> 794319 bytes .../images/rotated_pole_2.png | Bin 0 -> 436316 bytes .../scripts/cssp37-env-nobuilds.yml | 194 ++ .../scripts/xarray_iris_coord_system.py | 85 + .../solution_tutorial_1_data_access.ipynb | 1075 ++++++++++++ ...solution_tutorial_2_data_preparation.ipynb | 1285 ++++++++++++++ .../solution_tutorial_3_basic_analysis.ipynb | 1561 +++++++++++++++++ ...solution_tutorial_4_advance_analysis.ipynb | 1201 +++++++++++++ .../tutorial_1_data_access.ipynb | 1054 +++++++++++ .../tutorial_2_data_preparation.ipynb | 1128 ++++++++++++ .../tutorial_3_basic_analysis.ipynb | 1301 ++++++++++++++ .../tutorial_4_advance_analysis.ipynb | 779 ++++++++ .../CSSP_20CRDS_Tutorials/variableslist.pdf | Bin 0 -> 103839 bytes notebooks/awsutils/README-AWS.md | 129 ++ notebooks/awsutils/fetch_s3_file.py | 111 ++ notebooks/awsutils/main.py | 42 + notebooks/awsutils/s3_bulk_data_upload.py | 26 + notebooks/awsutils/s3_files_upload.py | 43 + notebooks/data_v2 | 1 + notebooks/img/AR5_extreme_indices.png | Bin 0 -> 195544 bytes notebooks/img/Iris7_1_trim_100.png | Bin 0 -> 10899 bytes ..._MASTER_black_mono_for_light_backg_RBG.png | Bin 0 -> 25991 bytes notebooks/img/multi_array_to_cube.png | Bin 0 -> 36118 bytes notebooks/img/python-logo-master-v3-TM.png | Bin 0 -> 83564 bytes notebooks/img/python_and_iris.png | Bin 0 -> 16912 bytes notebooks/img/two_runids.jpg | Bin 0 -> 75890 bytes notebooks/makedata.ipynb | 236 +++ notebooks/py_makedata.sh | 7 + notebooks/utils.py | 162 ++ notebooks/worksheet1.ipynb | 864 +++++++++ notebooks/worksheet2.ipynb | 772 ++++++++ notebooks/worksheet3.ipynb | 1054 +++++++++++ notebooks/worksheet4.ipynb | 629 +++++++ notebooks/worksheet5.ipynb | 853 +++++++++ notebooks/worksheet6.ipynb | 258 +++ notebooks/worksheet6example.ipynb | 392 +++++ notebooks/worksheet_solutions.ipynb | 461 +++++ pyprecis-environment.lock | 217 +++ 61 files changed, 22164 insertions(+) create mode 100644 .gitignore create mode 100644 CONTRIBUTING.ipynb create mode 100644 CONTRIBUTING.md create mode 100644 LICENCE create mode 100644 README.md create mode 100644 dockerfile create mode 100644 environment.yml create mode 120000 notebooks/AFR-22/data_afr22 create mode 120000 notebooks/AFR-22/img create mode 100755 notebooks/AFR-22/makedata.ipynb create mode 100755 notebooks/AFR-22/worksheet1.ipynb create mode 100755 notebooks/AFR-22/worksheet2.ipynb create mode 100755 notebooks/AFR-22/worksheet3.ipynb create mode 100755 notebooks/AFR-22/worksheet4.ipynb create mode 100755 notebooks/AFR-22/worksheet5.ipynb create mode 100755 notebooks/AFR-22/worksheet6.ipynb create mode 100755 notebooks/AFR-22/worksheet6example.ipynb create mode 100755 notebooks/AFR-22/worksheet_solutions.ipynb create mode 100644 notebooks/CSSP_20CRDS_Tutorials/Introduction.ipynb create mode 100644 notebooks/CSSP_20CRDS_Tutorials/images/global_airtemp_cp.png create mode 100644 notebooks/CSSP_20CRDS_Tutorials/images/global_airtemp_ts.png create mode 100644 notebooks/CSSP_20CRDS_Tutorials/images/jupyter.png create mode 100644 notebooks/CSSP_20CRDS_Tutorials/images/region.PNG create mode 100755 notebooks/CSSP_20CRDS_Tutorials/images/rotated_pole_1.png create mode 100755 notebooks/CSSP_20CRDS_Tutorials/images/rotated_pole_2.png create mode 100644 notebooks/CSSP_20CRDS_Tutorials/scripts/cssp37-env-nobuilds.yml create mode 100644 notebooks/CSSP_20CRDS_Tutorials/scripts/xarray_iris_coord_system.py create mode 100644 notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_1_data_access.ipynb create mode 100644 notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_2_data_preparation.ipynb create mode 100644 notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_3_basic_analysis.ipynb create mode 100644 notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_4_advance_analysis.ipynb create mode 100644 notebooks/CSSP_20CRDS_Tutorials/tutorial_1_data_access.ipynb create mode 100644 notebooks/CSSP_20CRDS_Tutorials/tutorial_2_data_preparation.ipynb create mode 100644 notebooks/CSSP_20CRDS_Tutorials/tutorial_3_basic_analysis.ipynb create mode 100644 notebooks/CSSP_20CRDS_Tutorials/tutorial_4_advance_analysis.ipynb create mode 100755 notebooks/CSSP_20CRDS_Tutorials/variableslist.pdf create mode 100644 notebooks/awsutils/README-AWS.md create mode 100644 notebooks/awsutils/fetch_s3_file.py create mode 100644 notebooks/awsutils/main.py create mode 100644 notebooks/awsutils/s3_bulk_data_upload.py create mode 100644 notebooks/awsutils/s3_files_upload.py create mode 120000 notebooks/data_v2 create mode 100644 notebooks/img/AR5_extreme_indices.png create mode 100644 notebooks/img/Iris7_1_trim_100.png create mode 100755 notebooks/img/MO_MASTER_black_mono_for_light_backg_RBG.png create mode 100644 notebooks/img/multi_array_to_cube.png create mode 100644 notebooks/img/python-logo-master-v3-TM.png create mode 100644 notebooks/img/python_and_iris.png create mode 100644 notebooks/img/two_runids.jpg create mode 100755 notebooks/makedata.ipynb create mode 100644 notebooks/py_makedata.sh create mode 100644 notebooks/utils.py create mode 100755 notebooks/worksheet1.ipynb create mode 100755 notebooks/worksheet2.ipynb create mode 100755 notebooks/worksheet3.ipynb create mode 100755 notebooks/worksheet4.ipynb create mode 100755 notebooks/worksheet5.ipynb create mode 100755 notebooks/worksheet6.ipynb create mode 100755 notebooks/worksheet6example.ipynb create mode 100755 notebooks/worksheet_solutions.ipynb create mode 100644 pyprecis-environment.lock diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bb6957c --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +.ipynb_checkpoints/ +notebooks/.ipynb_checkpoints/ +/data/stash_select +notebooks/data_v2/ +notebooks/AFR-22/data_afr22/ +*.pyc diff --git a/CONTRIBUTING.ipynb b/CONTRIBUTING.ipynb new file mode 100644 index 0000000..8de44ad --- /dev/null +++ b/CONTRIBUTING.ipynb @@ -0,0 +1,253 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# PyPRECIS Notebook Style Guide\n", + "\n", + "Thanks for showing the enthusiasm to help develop the PyPRECIS notebooks. Please use this style guide as a reference when creating or modifying content...\n", + "\n", + "## Worksheet Title\n", + "\n", + "All worksheets should start with a title formatted as a level 1 heading:\n", + "\n", + "```md\n", + "# Worksheet ?: All Worksheets Should Have a Clear Title\n", + "```\n", + "\n", + "Worksheet titles should be followed with a short description of the worksheet.\n", + "\n", + "## Learning Aims\n", + "\n", + "This followed by a list of 3 to 4 learning aims for the worksheet. We use the HTML `div class=\"alert alert-block alert-warning\"` to colour this is a nice way:\n", + "\n", + "```md\n", + "
    \n", + "By the end of this worksheet you should be able to:
    \n", + "- Identify and list the names of PRECIS output data in PP format using standard Linux commands.
    \n", + "- Use basic Iris commands to load data files, and view Iris cubes.
    \n", + "- Use Iris commands to remove the model rim, select data variables and save the output as NetCDF files.\n", + "
    \n", + "```\n", + "\n", + "When rendered, it looks like this:\n", + "\n", + "
    \n", + "By the end of this worksheet you should be able to:
    \n", + "- Identify and list the names of PRECIS output data in PP format using standard Linux commands.
    \n", + "- Use basic Iris commands to load data files, and view Iris cubes.
    \n", + "- Use Iris commands to remove the model rim, select data variables and save the output as NetCDF files.\n", + "
    \n", + "\n", + "Remember to start each learning aim with a verb. Keep them short and to the point. If you have more than 3 to 4 learning aims, consider whether there is too much content in the workbook.\n", + "\n", + "## Notes\n", + "\n", + "You may wish to use a Note box to draw the learners attention to particular actions or points to note. Note boxes are created using `div class=\"alert alert-block alert-info\"`\n", + "\n", + "```md\n", + "
    \n", + "Note: In the boxes where there is code or where you are asked to type code, click in the box, then press Ctrl + Enter to run the code.
    \n", + "Note: An percentage sign % is needed to run some commands on the shell. It is noted where this is needed.
    \n", + "Note: A hash # denotes a comment; anything written after this character does not affect the command being run.
    \n", + "
    \n", + "```\n", + "\n", + "Which looks like:\n", + "\n", + "
    \n", + "Note: In the boxes where there is code or where you are asked to type code, click in the box, then press Ctrl + Enter to run the code.
    \n", + "Note: An percentage sign % is needed to run some commands on the shell. It is noted where this is needed.
    \n", + "Note: A hash # denotes a comment; anything written after this character does not affect the command being run.
    \n", + "
    \n", + "\n", + "## Contents\n", + "\n", + "Immediately following the Learning Aims (or Note box if used) add a list of contents.\n", + "\n", + "```md\n", + "## Contents\n", + "### [1.1: Data locations and file names](#1.1) \n", + "### ...additional headings\n", + "```\n", + "\n", + "Items in the contents list are formatted as level 3 headings. Note the `[Link Name](Link location)` syntax. Each subsequent heading in the notebook needs to have a `id` tag associated with it for the links to work. These are formatted like this:\n", + "\n", + "```md\n", + "\n", + "## 1.1 Data locations and file names\n", + "```\n", + "\n", + "Remember that the `id` string must match the link location otherwise the link won't work. Remember to update both the link title numbering and the link id numbering if you are reordering content.\n", + "\n", + "## Section Headings\n", + "\n", + "To help users navigate round the document use section headings to break the content into sections. As detailed above, each section heading needs to have an `id` tag associated with it to build the Contents links.\n", + "\n", + "If you want to further subdivide each section, use bold letters with a parentheses:\n", + "\n", + "```md\n", + "**a)** Ordinary section text continues...\n", + "```\n", + "\n", + "## General Formatting\n", + "\n", + "Use links to point learners to additional learning resources. These follow the standard markdown style: `[Link text](Link location)`, eg.\n", + "\n", + "```md\n", + "[Iris](http://scitools.org.uk/iris/docs/latest/index.html)\n", + "```\n", + "\n", + "gives\n", + "\n", + "[Iris](http://scitools.org.uk/iris/docs/latest/index.html)\n", + "\n", + "Format key commands using bold back-ticks: \n", + "\n", + "```md\n", + "**`cd`**\n", + "```\n", + "\n", + "Where certain keyboard combinations are necessary to execute commands, use the `` html formatting.\n", + "\n", + "\n", + "```md\n", + "Ctrl + Enter\n", + "```\n", + "\n", + "which gives:\n", + "\n", + "Ctrl + Enter\n", + "\n", + "Code blocks are entered in new notebook cells, with the `Code` style. Remember, all python should be **Python 3**." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# This is a code block\n", + "# Make sure you include comments with your code to help explain what you are doing\n", + "\n", + "# Leave space if you want learners to complete portions of code\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: Remember you can use additional Note blocks at any time to highlight important points!\n", + "
    \n", + "\n", + "If you want to add pictures, place image files in the `/notebooks/img` folder. Use html image formatting tags to control the position of the image in the rendered notebook cell:\n", + "\n", + "```md\n", + "

    \"python

    \n", + "```\n", + "\n", + "gives\n", + "\n", + "

    \"python

    \n", + "\n", + "Images can also be places in Note and Question blocks in the same manner. See Worksheet 1 for an example.\n", + "\n", + "## Questions\n", + "\n", + "Asking questions is a key part of the learning process. Questions blocks use the `div class=\"alert alert-block alert-success\"` style, and should be visually separated from the main text using horizontal rules above and below the question section:\n", + "\n", + "```md\n", + "---\n", + "
    \n", + "Question: How many pp files are in this directory, in total?\n", + "
    How many of these pp files contain the string 'sep'; relating to September? What command do you need to use to find this out?\n", + "
    \n", + "\n", + "Answer: \n", + "
    *Total number of pp files: \n", + "
    Number of September pp files:\n", + "
    Command used to find number of september pp files:*\n", + "\n", + "---\n", + "```\n", + "\n", + "This renders as:\n", + "\n", + "---\n", + "
    \n", + "Question: How many pp files are in this directory, in total?\n", + "
    How many of these pp files contain the string 'sep'; relating to September? What command do you need to use to find this out?\n", + "
    \n", + "\n", + "Answer: \n", + "
    *Total number of pp files: \n", + "
    Number of September pp files:\n", + "
    Command used to find number of september pp files:*\n", + "\n", + "---\n", + "\n", + "Make sure to put your _answer_ section in a different notebook cell from the _question_ section to avoid learners accidently editing the question blocks. Questions may also include code blocks. Remember to use a horizonal rule `---` to show where the question section starts and stops.\n", + "\n", + "## Worksheet footer\n", + "\n", + "At the end of the worksheet, summarise the content using a `div class=\"alert alert-block alert-warning\"`\n", + "\n", + "```md\n", + "
    \n", + "
    \n", + "This completes worksheet 1.
    You have created pre-processed files (rim removed, individual variables, concenated over time, in NetCDF format).
    \n", + "In worksheet 2, you will begin to analyse these files.\n", + "
    \n", + "
    \n", + "```\n", + "\n", + "
    \n", + "
    \n", + "This completes worksheet 1.
    You have created pre-processed files (rim removed, individual variables, concenated over time, in NetCDF format).
    \n", + "In worksheet 2, you will begin to analyse these files.\n", + "
    \n", + "
    \n", + "\n", + "Finally, a copyright statement and the Met Office logo should be added to all notebooks:\n", + "\n", + "```md\n", + "

    \"python

    \n", + "
    © Crown Copyright 2019, Met Office
    \n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    \"Met

    \n", + "
    © Crown Copyright 2019, Met Office
    " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..403075e --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,70 @@ +# Contributing Guidelines + +You'd like to help? Great! :tada: + +[Clone your own local copy](https://help.github.com/en/articles/cloning-a-repository) of this repositry run the following in your terminal: + +```shell +git clone git@github.com:MetOffice/PyPRECIS.git +``` + +Consider [creating a conda environment](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html) from the PyPRECIS dependencies specified in the `environment.yml` file: +```shell +conda env create -f environment.yml +``` +Remember to activate your new environment: +```shell +conda activate pyprecis-environment +``` + +:exclamation: *Note: As of v1.0 we are unable to provison the model data necessary for reproducing the full PyPRECIS learning environment via github due to it's large file size. Contact the PRECIS team for more information.* + +## Before you start... +Read through the current issues to see what you can help with. If you have your own ideas for improvements, please start a new issue so we can track and discuss your improvement. You must create a new branch for any changes you make. + +**Please take note of the following guidelines when contributing to the PyPRECIS repository.** + +* Please do **not** make changes to `main` or `develop` branches. The `main` branch is reserved for files and code that has been fully tested and reviewed. Only the core PyPRECIS developers can push to the `main` and `develop` branches. + +* The `develop` branch contains the latest holistic version of the `PyPRECIS` repository. Please branch off `develop` to fix a particular issue or add a new feature. +* Please use the following tokens at the start of a new branch name to help sign-post and group branches: + +Name | Description +---- | ----------- +new | Branch adding new code/files that don't exist in the repo +fix | Branch modifying code/files that already exist in the repo. +junk | Throwaway branch created to experiment + +* Git can pattern match branches to to give you an overview of all (e.g. fix) branches: + ```shell + git branch --list "fix/*" + ``` +* Use a forward slash to separate the token from the branch name. For example: +``` +new/Wks10 +fix/Wks2_units +``` +* When you think your branch is ready to be merged into `develop`, open a new pull request. + +## Signposting +* **Issues** are tracked and discussed under the Issues tab. Please use issues to disucss proposed changes or capture improvements needed to work towards the next milestone. Issues or improvements that contribute to the next milestone to be captured in thr Wiki tab. +* **Pull requests** show branches that are currently under review. New pull requests are created in reponse to branch fixes identified and recorded in the Issues tab. +* **Wiki** is used for summarising update aims for future versions of the notebooks, and to record speculative improvements that cannot be action in the current milestone. + + + +Other more general points to note: + +* **Avoid long descriptive names.** Long branch names can be very helpful when you are looking at a list of branches but it can get in the way when looking at decorated one-line logs as the branch names can eat up most of the single line and abbreviate the visible part of the log. +* **Do not use bare numbers.** Do not use use bare numbers (or hex numbers) as part of your branch naming scheme. + +## CONTRIBUTING.ipynb +The `CONTRIBUTING.ipyn` file contains the worksheet style guide. Please consult this for information on formatting the new and ammended worksheets in a consistent style. + +**If in doubt, please contact the PRECIS team (precis@metoffice.gov.uk) if you +have questions.** + +
    +Met Office
    +© British Crown Copyright 2018 - 2022, Met Office +
    diff --git a/LICENCE b/LICENCE new file mode 100644 index 0000000..9dfda08 --- /dev/null +++ b/LICENCE @@ -0,0 +1,29 @@ +BSD 3-Clause Licence + +Copyright (c) 2020, Met Office +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..66495ab --- /dev/null +++ b/README.md @@ -0,0 +1,77 @@ +# PyPRECIS + +

    +PyPRECIS is the python based training environment for Met Office PRECIS training courses. +

    + +

    + + + + Latest version + + Commits since last release +Release date +Repo size +GitHub +

    +
    + + + +## Overview +PyPRECIS is principally designed as a learning tool to faciliate processing of regional climate model (RCM) output. It is desgined to be used in conjunction with taught workshops in an instructor led environment. The name PyPRECIS is a refefence to the initial version of these notebooks which were designed for analysis of data from the PRECIS model but the training is now designed to be more general. + +PyPRECIS is built on [Jupyter Notebooks](https://jupyter.org/), with data processing performed in python, making use of [Iris](https://scitools.org.uk/iris/docs/latest/). + +The data analysed in the first set of notebooks is from the CORDEX-Core simulations which provide an ensemble of high-resolution (at least 25 km) regional climate change information. Further information about CORDEX-Core can be found on the [CORDEX website](https://cordex.org/experiment-guidelines/cordex-core/cordex-core-simulations/). There is also a [Special issue of Climate Dynamics](https://link.springer.com/journal/382/volumes-and-issues/57-5) which gives more information about this data. There are also a set of notebooks which analyse the 20CR-DS data set covering China. + +## Contents +The teaching elements of PyPRECIS are contained in the `notebooks` directory. The core primary worksheets are: + +Worksheet | Aims +:----: | ----------- +[1](notebooks/worksheet1.ipynb) |
  • Identify and list the names of CORDEX output data in netCDF format using standard Linux commands.
  • Use basic Iris commands to load data files, and view Iris cubes.
  • Use Iris commands to merge netCDF files - Take a subset of the data based on a date range - Save the output as NetCDF files.
  • +[2](notebooks/worksheet2.ipynb) |
  • Apply basic statistical operations to Iris cubes
  • Plot information from Iris cubes
  • +[3](notebooks/worksheet3.ipynb) |
  • Extract specific regions of interested from large datasets
  • Apply more advanced statistical operations to multi-annual data
  • Produce your own data processing workflow
  • +[4](notebooks/worksheet4.ipynb) |
  • Calculate difference and percentage differences across cubes
  • Plot cubes using different plotting methods and with an appropriate colour scale
  • Create time series anomalies of precipitation and tempeature
  • +[5](notebooks/worksheet5.ipynb) |
  • Have an appreciation for working with daily model data
  • Understand how to calculate some useful climate extremes statistics
  • Be aware of some coding stratagies for dealing with large data sets
  • +[6](notebooks/worksheet6.ipynb) | An extended coding exercise designed to allow you to put everything you've learned into practise + +Additional tutorials specific to the CSSP 20th Century reanalysis dataset: + +Worksheet | Aims +:----: | ----------- +[CSSP 1](notebooks/CSSP_20CRDS_Tutorials/Introduction.ipynb) |
  • How to use a cloud based platform to analyse the 20CR-DS dataset
  • Setting up a python environment
  • +[CSSP 2](notebooks/CSSP_20CRDS_Tutorials/tutorial_1_data_access.ipynb) |
  • How to load data into Xarrays format
  • How to convert the data xarrays into iris cube format
  • How to perform basic cube operations
  • +[CSSP 3](notebooks/CSSP_20CRDS_Tutorials/tutorial_3_basic_analysis.ipynb) |
  • Calculate and visualise annual and monthly means
  • Calculate and visualise seasonal means
  • Calculate mean differences (anomalies)
  • +[CSSP 4](notebooks/CSSP_20CRDS_Tutorials/tutorial_4_advance_analysis.ipynb) |
  • Calculate frequency of wet days
  • Calculate percentiles
  • Calculate some useful climate extremes statistics
  • + +Three additional worksheets are available for use by workshop instructors: + +* `makedata.ipynb`: Provides scripts for preparing raw model output for use in notebook exercises. +* `worksheet_solutions.ipyn`: Solutions to worksheet exercices. +* `worksheet6example.ipynb`: Example code for Worksheet 6. + +## Data +For information on how to access the CORDEX-Core data used in these worksheets, see: [CORDEX: How to access the data](https://cordex.org/data-access/how-to-access-the-data/). Most CORDEX data is available for unrestricted use but some is provided for non commercial use only. Before you download any CORDEX data you must ensure you are aware of the Terms of Use for the data you are accessing. + +Data relating to the **CSSP 20CRDS** tutorials is held online in an Azure Blob Storage Service. To access this data user will need a valid shared access signature (SAS) token. The data is in [Zarr](https://zarr.readthedocs.io/en/stable/) format and the total volume is ~2TB. The data is in hourly, 3 hourly, 6 hourly, daily and monthly frequencies stored seperatrely under the `metoffice-20cr-ds` container on MS-Azure. Monthly data only is also via [Zenodo](https://zenodo.org/record/2558135). + + + +## Contributing +Information on how to contribute can be found in the [Contributing guide](CONTRIBUTING.md). +Please also consult the `CONTRIBUTING.ipynb` for information on formatting the worksheets in Jupyter Notebooks. **Note** that we do not currently make use of Jupyter Lab as it doesn't currently support the types of html formatting we use in Jupyter Notebooks. + +## Licence +PyPRECIS is licenced under BSD 3-clause licence for use outside of the Met Office. + +
    +Met Office
    +© British Crown Copyright 2018 - 2022, Met Office +
    diff --git a/dockerfile b/dockerfile new file mode 100644 index 0000000..931cd9e --- /dev/null +++ b/dockerfile @@ -0,0 +1,23 @@ +FROM continuumio/miniconda3 + +RUN apt-get update + +# Set working directory for the project +WORKDIR /app + +SHELL ["/bin/bash", "--login", "-c"] + +RUN apt-get install -y git + +# Create Conda environment from the YAML file +COPY environment.yml . +RUN pip install --upgrade pip + +RUN conda env create -f environment.yml + +RUN conda init bash +RUN conda activate pyprecis-environment + +RUN pip install ipykernel && \ + python -m ipykernel install --name pyprecis-training + diff --git a/environment.yml b/environment.yml new file mode 100644 index 0000000..43fb8fa --- /dev/null +++ b/environment.yml @@ -0,0 +1,20 @@ +name: pyprecis-environment +channels: + - conda-forge +dependencies: + - python=3.6.10 + - iris=2.4.0 + - numpy=1.17.4 + - matplotlib=3.1.3 + - nc-time-axis=1.2.0 + - jupyter_client=6.1.7 + - jupyter_core=4.6.3 + - dask=2.11.0 + - notebook=5.7.8 + - mo_pack=0.2.0 + - boto3 + - botocore + - tqdm + - cdo + - nco + - ncview diff --git a/notebooks/AFR-22/data_afr22 b/notebooks/AFR-22/data_afr22 new file mode 120000 index 0000000..94ac274 --- /dev/null +++ b/notebooks/AFR-22/data_afr22 @@ -0,0 +1 @@ +/data/users/fris/data_afr22/ \ No newline at end of file diff --git a/notebooks/AFR-22/img b/notebooks/AFR-22/img new file mode 120000 index 0000000..6ffc6ca --- /dev/null +++ b/notebooks/AFR-22/img @@ -0,0 +1 @@ +../img \ No newline at end of file diff --git a/notebooks/AFR-22/makedata.ipynb b/notebooks/AFR-22/makedata.ipynb new file mode 100755 index 0000000..51abdd8 --- /dev/null +++ b/notebooks/AFR-22/makedata.ipynb @@ -0,0 +1,236 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import glob\n", + "import os\n", + "import iris\n", + "from iris.time import PartialDateTime\n", + "from iris.experimental.equalise_cubes import equalise_attributes\n", + "\n", + "DATADIR = '/project/ciid/projects/PRECIS/worksheets/data_v2/EAS-22/'\n", + "# write outputs to own directory so that can be checked before upload under ciid\n", + "OUTDIR = f'{os.getenv(\"SCRATCH\")}/cordex_inputs/'\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Make data for worksheet 4" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Prep future data (2041-2060) from ESGF CORDEX files\n", + "# Note this assumes that only want to process the REMO2015 data.\n", + "\n", + "shortnames = {'MOHC-HadGEM2-ES':'hadgem2-es', 'MPI-M-MPI-ESM-LR':'mpi-esm-lr'}\n", + "\n", + "# Make future 2021-2050 data\n", + "future_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=2041) \n", + " <= cell.point <= PartialDateTime(year=2060))\n", + "for gcmid in ['MOHC-HadGEM2-ES', 'MPI-M-MPI-ESM-LR']:\n", + "\n", + " # set a short name consistent with what used in the exercises [would it be better to use full names?]\n", + " shortgcm = shortnames[gcmid]\n", + " for var in ['pr', 'tas']:\n", + "\n", + " # find all the files to consolidate \n", + " flist = glob.glob(DATADIR + f'{var}_*_{gcmid}_rcp85_*_GERICS-REMO2015_*_mon_*.nc')\n", + " print (f'input files: {flist}')\n", + "\n", + " # merge the cubes\n", + " datacubes = iris.load(flist, future_time_constraint)\n", + " equalise_attributes(datacubes)\n", + " cube = datacubes.concatenate_cube()\n", + " \n", + " if cube.name() == 'air_temperature':\n", + " cube.convert_units('celsius')\n", + " outpath = os.path.join(OUTDIR, 'future', shortgcm + '.mon.2041_2060.GERICS-REMO2015.tm.C.nc')\n", + " iris.save(cube, outpath)\n", + " if cube.name() == 'precipitation_flux':\n", + " cube.convert_units('kg m-2 day-1')\n", + " cube.units = 'mm day-1'\n", + " outpath = os.path.join(OUTDIR, 'future', shortgcm + '.mon.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(cube, outpath)\n", + " print(f'saved file: {outpath}')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Prep baseline data (1986-2005) from \n", + "historical_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", + " <= cell.point <= PartialDateTime(year=2005))\n", + "for gcmid in ['MOHC-HadGEM2-ES', 'MPI-M-MPI-ESM-LR']:\n", + "\n", + " # set a short name consistent with what used in the exercises [would it be better to use full names?]\n", + " shortgcm = shortnames[gcmid]\n", + " for var in ['pr', 'tas']:\n", + "\n", + " # find all the files to consolidate \n", + " flist = glob.glob(DATADIR + f'{var}_*_{gcmid}_historical_*_GERICS-REMO2015_*_mon_*.nc')\n", + " flist = glob.glob(DATADIR + f'{var}_*_{gcmid}_historical_*_GERICS-REMO2015_*_mon_*.nc')\n", + " print (f'input files: {flist}')\n", + "\n", + " # merge the cubes\n", + " datacubes = iris.load(flist, historical_time_constraint)\n", + " equalise_attributes(datacubes)\n", + " cube = datacubes.concatenate_cube()\n", + " \n", + " if cube.name() == 'air_temperature':\n", + " cube.convert_units('celsius')\n", + " outpath = os.path.join(OUTDIR, 'historical', shortgcm + '.mon.1986_2005.GERICS-REMO2015.tm.C.nc')\n", + " iris.save(cube, outpath)\n", + " if cube.name() == 'precipitation_flux':\n", + " cube.convert_units('kg m-2 day-1')\n", + " cube.units = 'mm day-1'\n", + " outpath = os.path.join(OUTDIR, 'historical', shortgcm + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(cube, outpath)\n", + " print(f'saved file: {outpath}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Make data for Worksheet 5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The files needed are daily precipitation, with the two periods (historical and future) consolidated into a single file\n", + "\n", + "Note that these datasets should be saved with compression to reduce their file size. If for some reason this needs to be done during a PRECIS course, it is quicker to save them without compression using `iris.save(cube, outfile)` but the filesize is significantly larger.\n", + "\n", + "Unlike the previous PRECIS data, the memory requirements of this code are modest (probably due to the lack of rim removal meaning the data remains lazy). It does take several minutes (~5) to run each example." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Prep future data (2041-2060) from CORDEX files\n", + "\n", + "shortnames = {'MOHC-HadGEM2-ES':'hadgem2-es', 'MPI-M-MPI-ESM-LR':'mpi-esm-lr'}\n", + "\n", + "# Make future 2041-2060 data\n", + "future_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=2041) \n", + " <= cell.point <= PartialDateTime(year=2060))\n", + "for gcmid in ['MOHC-HadGEM2-ES', 'MPI-M-MPI-ESM-LR']:\n", + "\n", + " # set a short name consistent with what used in the exercises [would it be better to use full names?]\n", + " shortgcm = shortnames[gcmid]\n", + "\n", + " # find all the files \n", + " flist = glob.glob(DATADIR + f'pr_EAS-22_{gcmid}_rcp85_*_GERICS-REMO2015_*_day_*.nc')\n", + " print (f'input files: {flist}')\n", + " \n", + " # load using time constraint above\n", + " datacubes = iris.load(flist, future_time_constraint)\n", + "\n", + " # merge the cubes\n", + " equalise_attributes(datacubes)\n", + " cube = datacubes.concatenate_cube()\n", + " \n", + " if cube.name() == 'air_temperature':\n", + " cube.convert_units('celsius')\n", + " outpath = os.path.join(OUTDIR, 'future', shortgcm + '.day.2041_2060.GERICS-REMO2015.tm.C.nc')\n", + " iris.save(cube, outpath, least_significant_digit=3, \n", + " complevel=4, zlib=True)\n", + " if cube.name() == 'precipitation_flux':\n", + " cube.convert_units('kg m-2 day-1')\n", + " cube.units = 'mm day-1'\n", + " outpath = os.path.join(OUTDIR, 'future', shortgcm + '.day.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(cube, outpath, least_significant_digit=3, \n", + " complevel=4, zlib=True)\n", + " print(f'saved file: {outpath}')\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Prep baseline data (1986-2006) from CORDEX files\n", + "historical_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", + " <= cell.point <= PartialDateTime(year=2005))\n", + "# Make baseline data\n", + "for gcmid in ['MOHC-HadGEM2-ES', 'MPI-M-MPI-ESM-LR']:\n", + "\n", + " # set a short name consistent with what used in the exercises [would it be better to use full names?]\n", + " shortgcm = shortnames[gcmid]\n", + "\n", + " # find all the files \n", + " flist = glob.glob(DATADIR + f'pr_EAS-22_{gcmid}_historical_*_GERICS-REMO2015_*_day_*.nc')\n", + " print (f'input files: {flist}')\n", + " \n", + " # load using time constraint above\n", + " datacubes = iris.load(flist, historical_time_constraint)\n", + "\n", + " # merge the cubes\n", + " equalise_attributes(datacubes)\n", + " cube = datacubes.concatenate_cube()\n", + " \n", + " if cube.name() == 'air_temperature':\n", + " cube.convert_units('celsius')\n", + " outpath = os.path.join(OUTDIR, 'historical', shortgcm + '.day.1986_2005.GERICS-REMO2015.tm.C.nc')\n", + " iris.save(cube, outpath, least_significant_digit=3, \n", + " complevel=4, zlib=True)\n", + " if cube.name() == 'precipitation_flux':\n", + " cube.convert_units('kg m-2 day-1')\n", + " cube.units = 'mm day-1'\n", + " outpath = os.path.join(OUTDIR, 'historical', shortgcm + '.day.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(cube, outpath, least_significant_digit=3, \n", + " complevel=4, zlib=True)\n", + " print(f'saved file: {outpath}')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "pyprecis-environment", + "language": "python", + "name": "pyprecis-environment" + }, + "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.6.10" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebooks/AFR-22/worksheet1.ipynb b/notebooks/AFR-22/worksheet1.ipynb new file mode 100755 index 0000000..8f08b0b --- /dev/null +++ b/notebooks/AFR-22/worksheet1.ipynb @@ -0,0 +1,864 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Worksheet 1: File locations and pre-processing\n", + "The exercises in this worksheet demonstrate some of the tools available for data analysis, and how to prepare CORDEX output for analysis (pre-processing). This can be time consuming for large amounts of data, so in this worksheet a small subset of data is used to easily demonstrate the steps involved. \n", + "\n", + "[CORDEX data](https://cordex.org/data-access/how-to-access-the-data/) is in [NetCDF](https://www.unidata.ucar.edu/software/netcdf/) format (a standard format in climate science) so that it can be used in post processing packages such as Python and the Python library [Iris](http://scitools.org.uk/iris/docs/latest/index.html)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "By the end of this worksheet you should be able to:
    \n", + "- Identify and list the names of CORDEX output data in netCDF format using standard Linux commands.
    \n", + "- Use basic Iris commands to load data files, and view Iris cubes.
    \n", + "- Use Iris commands to merge netCDF files\n", + "- Take a subset of the data based on a date range\n", + "- Save the output as NetCDF files.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: In the boxes where there is code or where you are asked to type code, click in the box, then press Ctrl + Enter to run the code.
    \n", + "Note: An percentage sign % is needed to run some commands on the shell. It is noted where this is needed.
    \n", + "Note: A hash # denotes a comment; anything written after this character does not affect the command being run.
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contents\n", + "### [1.1: Data locations and file names](#1.1) \n", + "### [1.2: Getting started with Python and Iris](#1.2)\n", + "### [1.3: Merge Problems](#1.3)\n", + "### [1.4 Extracting data within a specific time range](#1.4)\n", + "### [1.5: Saving data to a new file](#1.5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 1.1 Data locations and file names\n", + "The datasets used within these worksheets are already linked to the notebook in order to provide quick and easy access for the purpose of this training. However the commands learned in this worksheet provide useful context for future work in a linux and unix scripting environment." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**a)** Firstly, find out what location you are currently in by using the **`pwd`** command; **`pwd`** stands for **print working directory**.\n", + "\n", + "In the cell below type **`%pwd`** on a new line and then press Ctrl + Enter.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Type %pwd below and press 'ctrl' + 'enter'\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**b)** List the contents of this directory; **`ls`** stands for **list** and using the **`-l`** option gives a longer listing with more information, such as file size and modification date. \n", + "\n", + "In the cell below type **`%ls`** on a separate line then press Ctrl + Enter." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Type %ls and press 'ctrl' + 'enter'.\n", + "\n", + "\n", + "# Type %ls -l and press 'ctrl' + 'enter'.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: What is the difference between ls and ls -l? What extra information do you see? Which file was edited most recently?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + "*...Double click here to type your answer...*\n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**c)** To avoid conflicts of data when running locally, we will take a copy of the source files used in the training (this is not needed if running on the cloud, we instead download from an S3 bucket). Run the command in the following cell. It might take a few minutes to complete." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import subprocess\n", + "subprocess.run(['rsync', '-r', '/project/ciid/projects/PRECIS/worksheets/data_v2', '.'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If the command works correctly you should see the message:\n", + "\n", + "`CompletedProcess(args=['rsync', '-r', '/project/ciid/projects/PRECIS/worksheets/data_v2', '.'], returncode=0)`\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**d)** Move to the directory (i.e. folder) called `data_v2/EAS-22`. This directory contains CORDEX data for the East Asia Domain.\n", + "\n", + "**Hint:** The `cd` command stands for _change directory_\n", + "\n", + "Type your command(s) below and press Ctrl + Enter.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Type your %cd [directory-path] command below and press 'ctrl' + 'enter'.\n", + "\n", + "\n", + "# List the contents of this directory, using a previous command.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**d)** There are a lot of files in this directory! The file names contain information on the simulated date of the data they contain - you'll learn more about the naming convention for CORDEX data in another presention.\n", + "\n", + "For now, list only the files containing monthly temperature data using the following command:\n", + "\n", + "Type **`%ls tas*mon*`** in the code block below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Type %ls tas*mon* and press 'ctrl' + 'enter'.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: The asterisk character * (also known as glob) matches any string within the filename\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**e)** This still returns too many files to comfortably count manually. **`wc`** stands for **word count**; combining this command with **`ls`** allows us to count the number of items in that directory. \n", + "\n", + "In the cell below type **`%ls tas*mon* | wc -l`** then press Ctrl + Enter." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Type %ls *mon* | wc -l command below and press 'ctrl' + 'enter'\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: How many nc files are in this directory, in total?\n", + "
    How many of these nc files contain the string 'historical'; relating to the historical climate simulation? What command do you need to use to find this out?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer: \n", + "
    *Total number of nc files: \n", + "
    Number of historical nc files:\n", + "
    Command used to find number of historical nc files:*\n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**f)** To list all the files containing monthly data from a period starting 202101, we use the code **`*mon_202101-??????.nc`**\n", + "\n", + "Type below **`%ls *mon_202101-??????.nc`**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Type %ls *mon_202101-??????.nc and press 'ctrl' + 'enter'.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: The question mark character ? matches any single character\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**g)** Now move up one level in the directory tree and list the directories.\n", + "\n", + "Type `cd ..` to move up one level in the directory tree and press Ctrl + Enter to execute the command" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Type %cd .. and press 'ctrl' + 'enter'.\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: Which directory are you in now? What else can you see in this directory?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + "*...Double click here to type your answer...*\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "***\n", + "\n", + "## 1.2 Getting started with Python and Iris\n", + "

    \"python

    \n", + "\n", + "\n", + "Python is a general purpose programming language. Python supports modules and packages, which encourages program modularity and code reuse. \n", + "\n", + "\n", + "We also use the Python library [Iris](http://scitools.org.uk/iris/docs/v2.4.0/index.html), which is written in Python and is maintained by the Met Office. Iris seeks to provide a powerful, easy to use, and community-driven Python library for analysing and visualising meteorological and oceanographic data sets.\n", + "\n", + "The top level object in Iris is called a cube. A cube contains data and metadata about a phenomenon (i.e. air_temperature). Iris handles several different types of file formats, loading them into Iris cubes.\n", + "\n", + "\n", + "For a brief introduction to Iris and the cube formatting please read this Introduction page here: \n", + "\n", + "http://scitools.org.uk/iris/docs/v2.4.0/userguide/iris_cubes.html\n", + "\n", + "For future reference please refer to the Iris website:\n", + "\n", + "http://scitools.org.uk/iris/docs/v2.4.0/index.html\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**a)** First, run the code-block below to **load** a file into Iris and **print** its metadata structure.
    \n", + "\n", + "To run the code, click in the box below and press Ctrl + Enter." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%cd /home/h03/fris/code/PyPRECIS/notebooks/data_v2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "# import the necessary modules\n", + "import iris\n", + "import glob\n", + "import os\n", + "\n", + "# this is needed so that the plots are generated inline with the code instead of a separate window\n", + "%matplotlib inline \n", + "\n", + "# provide the path of your sample data\n", + "sample_data = 'EAS-22/sample_data.nc'\n", + "\n", + "# Constraint the reading to a single variable and load it into an Iris cube\n", + "cube = iris.load_cube(sample_data)\n", + "\n", + "# Print the Iris cube\n", + "print(cube)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: Can you explain how our sample data we printed above relates to this picture?\n", + "\"diagram
    \n", + "\n", + "- Is our data above a 3D or a 2D cube?
    \n", + "- What are the cube dimensions?
    \n", + "- How many grid boxes is the latitudinal range divided into?
    \n", + "- What meteorological variable does this cube represent?
    \n", + "- What unit is used for this variable?
    \n", + "
    \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Double click here to type your answer::\n", + "
    *Is this cube 3D or 2D? \n", + "
    What are the cube dimensions? \n", + "
    How many grid boxes is the latitudinal range divided into? \n", + "
    What meteorological variable does this cube represent? \n", + "
    What unit is used for this variable?* \n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**b)** Now **plot** the data for the selected variable:
    \n", + "\n", + "To run the code, click in the box below and press Ctrl + Enter." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import iris.quickplot as qplt\n", + "\n", + "plt.figure(figsize=(12,12)) # Set the figure size\n", + "\n", + "# find the edges of grid cells (Aka the boounds)\n", + "cube.coord('grid_latitude').guess_bounds()\n", + "cube.coord('grid_longitude').guess_bounds()\n", + "\n", + "qplt.pcolormesh(cube) # Plot the cube\n", + "plt.title(cube.name()) # Add plot title\n", + "plt.clim(0, 5e-4) # Set colour bar range\n", + "plt.show() # Show the plot" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Sense check the data plotted: \n", + "\n", + "* Can you make out sections of the East Asian coastline? \n", + "* How about the scale? \n", + "\n", + "As we progress through these workbooks, we'll learn how to process the data into more intuitive units and mask / add country boundaries, so it's easier to understand the information.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 1.3 Merge problems\n", + "\n", + "**a)** When using data, we want a single cube for all fields with the same standard name and sequential timesteps. `iris.load` will return as few cubes as possible, by collecting cubes from multiple files together. However, on some occasions this merge process does not give a single cube when we would expect it to. \n", + "\n", + "This section demonstrates how to deal with cases like this and make a single cube for these data." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "You can read more about iris loading behaviour here.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As an example we will load some temperature data from the [East Asia Domain](https://cordex.org/domains/region-7-east-asia/) at 25 km resolution" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# these variables form part of the standard CORDEX filename convention\n", + "domain = \"EAS-22\"\n", + "rcm = \"GERICS-REMO2015\"\n", + "experiment = \"historical\"\n", + "gcm = \"NCC-NorESM1-M\"\n", + "variable = \"tas\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's find out which of the files match the pattern above." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "root_dir = \"./\"\n", + "\n", + "path_dir = root_dir+domain+\"/\"\n", + "file_name = variable+\"*\"+gcm+\"*\"+experiment+\"*\"+rcm+\"*\"\n", + "file_list = glob.glob(path_dir+file_name)\n", + "\n", + "# Complete the print statement to see which East Asian files match the specified criteria\n", + "print()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "How many files were returned? \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Double click here to type your answer:**\n", + "\n", + "How many files were returned? " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**b)** If we try and force Iris to load a single cube we get an error:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cube = iris.load_cube(file_list)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The important part of this error is the following message: \n", + " \n", + " ConstraintMismatchError: failed to merge into a single cube.\n", + " cube.attributes values differ for keys: 'history', 'creation_date', 'tracking_id'\n", + " \n", + "Instead we will load this data with `iris.load()` and then look more closely at the data, before we fix the issues." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cubes = iris.load(file_list)\n", + "print(cubes)\n", + "print()\n", + "for cube in cubes:\n", + " print(cube.attributes['creation_date'], cube.attributes['tracking_id'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Question:\n", + "\n", + "- How many cubes are in the cube list you loaded?
    \n", + "- Are they all the same size in space?
    \n", + "- Do they have the same number of timesteps? Why do you think this is? (Hint: look again at the filenames we are loading)\n", + "- What are the differences in the attributes and do you think this is important when analysing your data?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:\n", + "
    *How many cubes are in the cube list you loaded?\n", + "
    Are they all the same size in space?\n", + "
    Do they have the same number of timesteps? Why do you think this is? (Hint: look again at the filenames we are loading)\n", + "
    What are the differences in the attributes?\n", + "
    Do you think these differences are important when analysing your data?* \n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**c)** Now let's solve this problem so we can get a single cube. We will do this using the [equalise_attributes](https://scitools.org.uk/iris/docs/v2.4.0/iris/iris/experimental/equalise_cubes.html) function from Iris." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from iris.experimental.equalise_cubes import equalise_attributes\n", + "\n", + "equalise_attributes(cubes)\n", + "\n", + "# now print the attributes of each cube\n", + "for cube in cubes:\n", + " print(list(cube.attributes.keys()))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "\n", + "The equalise_attributes function has removed the metadata which is inconsistent between the cubes. \n", + "\n", + "Question:\n", + " - Why might it be a bad idea to apply this function without looking at the data first?\n", + "\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Type your answer::\n", + "
    *Why might it be a bad idea to apply this function without looking at the data first?*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following loop is an alternative method to eliminate the mismatching attributes\n", + "\n", + " for i, icube in enumerate(cube):\n", + " del cube[i].attributes['creation_date']\n", + " del cube[i].attributes['tracking_id']\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**d)** We can now merge the data into a single cube." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cube = cubes.concatenate_cube()\n", + "print(cube)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
  • Now that we have combined multiple files into a single cube, what is the cube's shape? \n", + "
  • How does this compare with the cube_list created in 1.2e? \n", + "
  • Based on all the information you've gained about the data so far, what time period do you expect the data in this cube to span?\n", + "
  • " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Type your answers here**\n", + "* Now that we have combined multiple files into a single cube, what is the cube's shape? \n", + "* How does this compare with the cube_list created in 1.2e? \n", + "* Based on all the information you've gained about the data so far, what time period do you expect the data in this cube to span?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 1.4 Extracting data within a specific time range\n", + "\n", + "**a)** This is a lot of data, and so for now, we will cut this down to include December 1989 to November 1991 inclusive using a time constraint. Edit the code below to specify the missing end date.\n", + "(**Hint:** specify the adjacent months BEFORE and AFTER the time period you wish to keep.)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from iris.time import PartialDateTime\n", + "\n", + "print('original cube first and last dates')\n", + "print(cube.coord(\"time\")[0])\n", + "print(cube.coord(\"time\")[-1])\n", + "\n", + "time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1989,month=11) \n", + " < cell.point < PartialDateTime(year=YYYY,month=MM))\n", + "sub_cube = cube.extract(time_constraint)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**b)** Check the first and last timesteps in your constrained cube are correct:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print()\n", + "print('new cube first and last dates')\n", + "print(sub_cube.coord(\"time\")[0])\n", + "print(sub_cube.coord(\"time\")[-1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 1.5 Save data to a new file\n", + "\n", + "**a)** We will now save this data to a new file.\n", + "\n", + "Take note of the file names. Well chosen filenames can help you keep track of the contents of your files. We suggest developing a consistent syntax based on the filename patterns of the CORDEX data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "out_file_name = f'{variable}_{domain}_{gcm}_{experiment}_r1ip1_{rcm}_v2_mon_198912-199111.nc'\n", + "\n", + "save_location = root_dir + 'cordex_training/'\n", + "\n", + "%mkdir {save_location}\n", + "\n", + "print('saving file to: ' + save_location + out_file_name)\n", + "iris.save(sub_cube, save_location + out_file_name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note:\n", + "As we progress through these worksheets, keep a note of how we update the file names when making further changes to the data.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "b) Question: Use the cd and ls commands to check the NetCDF directory that you have been creating new files in.
    \n", + "\n", + "- Confirm the names of the new files you have been creating.
    \n", + "- What is the size of the concatenated file (containing December 1979 to November 1989 data)?\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# use %cd and %ls to list the contents of your new directory containing NetCDF files:\n", + "\n", + "\n", + "# use %ls -lh to compare the size of the original files and final netcdf file you saved\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + "*Size of the file written out at the end:*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "This completes worksheet 1.
    You have created pre-processed files (metdata fixed, concenated over time, extracted data in a specific time range and saved in NetCDF format).
    \n", + "In worksheet 2, you will begin to analyse these files.\n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    \"python

    \n", + "
    © Crown Copyright 2022, Met Office
    " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "pyprecis-environment", + "language": "python", + "name": "pyprecis-environment" + }, + "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.6.10" + }, + "widgets": { + "state": {}, + "version": "1.1.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebooks/AFR-22/worksheet2.ipynb b/notebooks/AFR-22/worksheet2.ipynb new file mode 100755 index 0000000..21a8572 --- /dev/null +++ b/notebooks/AFR-22/worksheet2.ipynb @@ -0,0 +1,772 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Worksheet 2: Using the Python Iris library for analysis and visualisation\n", + "\n", + "In this worksheet, sample CORDEX output over Southeast Asia is compared with observations for validation purposes. Validating model results by comparing with observed data is an essential step - this is the measure by which we can assess the quality of the model and it informs appropriate uses of the data.\n", + "\n", + "\n", + "Here, we validate CORDEX output driven by two different GCMs (HadGEM2-ES and MPI-ESM-LR) created with the REMO2015 Regional Climate Model. Using data from both experiments will give us two representations of present day climate and two possible climate scenarios. For more details on multimodel approaches, refer to the workshop lecture on climate model ensembles.\n", + "\n", + "The following exercises provide examples of how analysis can be undertaken as part of a model validation. The methods shown are not necessarily the only way to proceed and are intended to demonstrate the use of Iris in model validation, and provide a starting point for your own analyses." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "By the end of this worksheet you should be able to:
    \n", + "- Apply basic statistical operations to Iris cubes.
    \n", + "- Plot information from Iris cubes.
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contents\n", + "### [2.1: Inspecting the data](#2.1) \n", + "### [2.2: Converting units](#2.2)\n", + "### [2.3: Climatological mean calculation](#2.3)\n", + "### [2.4: IRIS quick plotting and visualising data](#2.4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Preamble\n", + "Run the code preamble below to import the necessary libraries for this worksheet.\n", + "\n", + "To run the code, click in the box below and press Ctrl + Enter." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Code preamble - these libraries will be used in this worksheet.\n", + "# This code block needs to be re-run every time you restart this worksheet!\n", + "%matplotlib inline\n", + "import os\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.cm as cm\n", + "import matplotlib.dates as mdates\n", + "import calendar\n", + "import iris\n", + "import iris.coord_categorisation\n", + "import iris.quickplot as qplt\n", + "from iris.experimental.equalise_cubes import equalise_attributes\n", + "from iris.time import PartialDateTime\n", + "import cartopy.crs as ccrs\n", + "from mpl_toolkits.axes_grid1 import AxesGrid\n", + "from cartopy.mpl.geoaxes import GeoAxes\n", + "from utils import copy_s3_files, flush_data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "# 2.1 Inspecting the data\n", + "\n", + "The datasets used here contain daily and monthly data from two REMO2015 runs carried out over Southeast Asia, one driven by HadGEM2-ES and the other driven by MPI-ESM-LR. The observations used for comparison are from the CHIRPS gridded observational data set (https://chc.ucsb.edu/data/chirps).\n", + "\n", + "Remember, in Iris, data are read into an object called a **cube**. A single cube describes only one variable; it is not possible for a cube to contain both temperature and rainfall, for example. A cube always has a name, a unit and an n-dimensional data array to represent the cube’s data. Additionally, the cube contains collections of coordinates. Coordinate types can include spatial information (latitude, longitude, altitude), a time dimension, or other information, e.g., an ensemble number.\n", + "\n", + "

    \"Example

    \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__a) Load the NetCDF file for the HadGEM2-ES and MPI-ESM-LR model data and the CHIRPS rainfall observation data and print the cube output__\n", + "\n", + "A cube has coordinates (e.g. time, longitude, latitude, model levels) which can be accessed with Python commands. In the following exercise we find the latitude and longitude covered by the CHIRPS data. This can be done either by printing the latitude and longitude coordinates (`.points`), noting the first and last values in the array, or in the case of the CHIRPS data, printing the cube and looking through the attributes. A similar example can be found in the [Iris documentation](https://scitools.org.uk/iris/docs/v2.4.0/userguide/navigating_a_cube.html#accessing-coordinates-on-the-cube). \n", + "\n", + "Before running the code, take a look at it line-by-line to understand what steps are being taken. Then click in the box and press ctrl + enter to run the code." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we first need to download APHRODITE data\n", + "copy_s3_files('s3://ias-pyprecis/data/APHRODITE/*.nc', 'data/APHRODITE/')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Provide the names of the directories where the netCDF model files are stored\n", + "DATADIR = 'data_v2/'\n", + "\n", + "# Load and concatenate the HadGEM2-ES model cube data\n", + "infile = os.path.join(DATADIR, 'EAS-22/pr_EAS-22_MOHC-HadGEM2-ES_historical_r1i1p1_GERICS-REMO2015_v1_mon_*.nc')\n", + "cubes = iris.load(infile)\n", + "equalise_attributes(cubes)\n", + "hadgem2 = cubes.concatenate_cube()\n", + "\n", + "# Load and concatenate the MPI-ESM-LR model cube data\n", + "infile = os.path.join(DATADIR, 'EAS-22/pr_EAS-22_MPI-M-MPI-ESM-LR_historical_r1i1p1_GERICS-REMO2015_v1_mon_*.nc')\n", + "cubes = iris.load(infile)\n", + "equalise_attributes(cubes)\n", + "mpiesm = cubes.concatenate_cube()\n", + "\n", + "# finally load the CHIRPS data and print the cube \n", + "infile = os.path.join(DATADIR, 'CHIRPS', 'chirps-v2.0.monthly.global.1981_2018.nc')\n", + "chirpsData = iris.load_cube(infile)\n", + "print(chirpsData)\n", + "\n", + "# print the first and last latitude points\n", + "print(chirpsData.coord('latitude').points[0], chirpsData.coord('latitude').points[-1])\n", + "# print the first and last longitude points\n", + "print(chirpsData.coord('longitude').points[0], chirpsData.coord('longitude').points[-1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + " Question: How many years of data does the CHIRPS dataset contain? What longitudes and latitudes are covered by the CHIRPS data?\n", + "
    \n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:*(Double click here to fill in the answers)*
    \n", + "\n", + "Number of years:\n", + "\n", + "Latitude and longitude covered: \n", + "

    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__b) Extract a subset of the data within a cube__\n", + "\n", + "Data extraction is an important function in Iris. The extraction of a subset of data is called **slicing**. For example, it could be necessary to extract data over all latitude and longitude grid points on the first time step. For more information around subsetting cubes please read the [Iris documentation on slicing](https://scitools.org.uk/iris/docs/v2.4.0/userguide/subsetting_a_cube.html#cube-indexing).\n", + "\n", + "__Using the HadGEM2-ES data, the example below shows how to subset a cube for the first and last timesteps. This method will be used later for plotting data from a cube.__ \n", + "\n", + "Work through the example below line by line then click in the box and press Ctrl + Enter to run the code.\n", + "\n", + "First, print the HadGEM2-ES cube, containing all the time steps:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Use the print() command to display a summary of the HadGEM2-ES cube\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: What dimensions does this cube have?
    \n", + " t = number of timesteps
    \n", + " y = number of latitude steps
    \n", + " x = number of longitude steps
    \n", + " Write your answer in the form `[ t, y, x ]`\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer: *(Double click here to fill in the answers)*
    \n", + "HadGEM2-ES dimensions: [ t, y, x]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: When indexing a cube dimension, you either can specify a single coordinate, e.g. 0 is the first (zeroth) item, -1 is the last item, or you can use : to include all items.
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Display the cube's **first** timestep and check the associated `time` value:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Use the print() funiction with slicing notation\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Display the cube's **last** timestep and check the associated `time` value:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Use the print() function with slicing notation\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For the analysis here, we will use data from 1986 to 2005 inclusive as used in the AR5 WG1 atlas. To do this we will use the same approach as in Worksheet 1 by using time constraints" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", + " <= cell.point <= PartialDateTime(year=2005))\n", + "hadgem2 = hadgem2.extract(time_constraint)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now apply the same time constraint to the mpiesm data to restrict to the same period" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "mpiesm = mpiesm.extract(time_constraint)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 2.2 Converting units\n", + "\n", + "__c) Convert the precipitation units from kg/m2/s (equivalent to mm/s) to mm/day__\n", + "\n", + "To convert to mm/day, we could just multiply the raw data (in mm/s) by 86400 seconds, but a clearer way is to use the __`.convert_units()`__ method with the name of the units we want to convert the data into.\n", + "\n", + "Let's do this for the __HadGEM2-ES__ historical data first and break down the steps as follows:\n", + "\n", + "* Print the units and summary statistic about the data\n", + "* Convert the unit and print the information again\n", + "* Rename the `.units` value in the cube and save it as a new netCDF file" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(hadgem2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# print the unit\n", + "print('The current unit for data is: {}'.format(hadgem2.units))\n", + "# print the summary statistic (maximum monthly precipitation)\n", + "maxpr = np.max(hadgem2.data)\n", + "print('This is an example rainfall rate (kg m-2 s-1) prior to conversion: {:f}'.format(maxpr))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Convert units to kg m-2 day-1 (same as multiplying by 86400 seconds)\n", + "hadgem2.convert_units('kg m-2 day-1')\n", + "# Print cube.units to view new units for precipitation\n", + "print(f'The new rainfall units are: {hadgem2.units}')\n", + "maxpr = np.max(hadgem2.data)\n", + "# print the summary statistic (maximum monthly precipitation) after the unit conversion\n", + "print(f'This is the same rainfall rate but now in (kg m-2 day-1): {maxpr:f}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Rename the new cube units for consistency, then save the converted cube:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Rename cube units\n", + "hadgem2.units = 'mm day-1'\n", + "\n", + "# Save the new cube as a new netCDF file\n", + "OUTDIR = 'data_v2/EAS-22'\n", + "\n", + "# Check to see if this directory exists, if not create it\n", + "if not os.path.isdir(OUTDIR):\n", + " # Make directory\n", + " os.mkdir(OUTDIR)\n", + " # Set directory permissions \n", + " os.chmod(OUTDIR, 0o776)\n", + "\n", + "outfile = os.path.join(OUTDIR, 'hadgem2-es.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + "iris.save(hadgem2, outfile)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Complete the following code block to repeat the same procedure for MPI-ESM-LR:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Print the current MPI-ESM-LR cube units\n", + "\n", + "\n", + "# convert units to kg m-2 day-1\n", + "\n", + "\n", + "# Rename the units to mm day-1. Recall that 1 kg m-2 is equivalent to 1 mm of rain\n", + "\n", + "\n", + "# Save the new cube as a new netCDF file using the `outfile` filename we've provided below!\n", + "outfile = os.path.join(OUTDIR, 'mpi-esm-lr.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 2.3 Climatological seasonal mean calculation\n", + "\n", + "__d) Calculate the 1986-2005 seasonal mean precipitation__ field for October-December (OND) from both the HadGEM2-ES and MPI-ESM-LR driven runs.\n", + "\n", + "Work through the example below line by line then click in the box and press ctrl + enter to run the code." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Set up directory for the climatology\n", + "CLIMDIR = 'data_v2/EAS-22/climatology'\n", + "\n", + "# Check to see if this directory exists, if not create it\n", + "if not os.path.isdir(CLIMDIR):\n", + " # Make directory\n", + " os.mkdir(CLIMDIR)\n", + " # Set directory permissions \n", + " os.chmod(CLIMDIR, 0o776)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# Loop through two model runs\n", + "for gcmid in ['hadgem2-es', 'mpi-esm-lr']:\n", + " infile = os.path.join(OUTDIR, gcmid + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + "\n", + " # Load the data\n", + " data = iris.load_cube(infile)\n", + "\n", + " # In order to calculate OND mean, we use the command below to add a season membership coordinate.\n", + " # The seasons can be any sequence of months, identified by the first letters of the names of the months.\n", + " # Here, we define two seasons, jfmamjjas (the months we are not interested in) and ond (October, November and\n", + " # December); the months we do want.\n", + " iris.coord_categorisation.add_season(data, 'time', name='seasons', seasons=('jfmamjjas','ond'))\n", + "\n", + " # This command extracts data for the OND season using a constraint\n", + " data_ond = data.extract(iris.Constraint(seasons='ond'))\n", + "\n", + " # The cube 'data_ond' contains data from October-December for all years. \n", + " # The command below calculates the mean over all years.\n", + " seasonal_mean = data_ond.aggregated_by(['seasons'], iris.analysis.MEAN)\n", + " \n", + " # Save the OND seasonal mean as a netCDF\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.1986_2005.pr.mmday-1.nc')\n", + " iris.save(seasonal_mean, outfile)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: What dimensions does this cube have now?
    \n", + " t = number of timesteps
    \n", + " y = number of latitude steps
    \n", + " x = number of longitude steps
    \n", + " Write your answer in the form `[ t, y, x ]`
    \n", + " Compare your answer to the answer you found in (b). Which dimensions have changed?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer: *(Double click here to fill in the answers)*
    \n", + "Seasonal mean dimensions: [ t, y, x]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__e) Calculate the 1986-2005 seasonal mean for OND from the CHIRPS observation data__\n", + "\n", + "CHIRPS is a daily high resolution (0.05 degree) data set for 1981 to almost the present day. See https://chc.ucsb.edu/data/chirps for more information.\n", + "\n", + "Follow step d) and complete the code yourself. The file name to load is: `chirps-v2.0.monthly.global.1981_2018.nc`. We've given you the infile and outfile names to make sure you load and save it in the right place for later!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we first need to download APHRODITE data\n", + "copy_s3_files('s3://ias-pyprecis/data/climatology/*.nc', 'data/climatology/')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Directory names where data is read from and stored to\n", + "infile = os.path.join(DATADIR, 'CHIRPS', 'chirps-v2.0.monthly.global.1981_2018.nc')\n", + "\n", + "# Load the CHIRPS data, only for the period 1986-2005 \n", + "chirps = iris.load_cube(infile, constraint=time_constraint)\n", + "\n", + "# convert the units to mm day^-1 \n", + "chirps.convert_units('mm day-1')\n", + "\n", + "# In order to calculate OND mean, we need to a add season membership coordinate\n", + "iris.coord_categorisation.add_season(chirps, 'time', name='seasons', seasons=('jfmamjjas','ond'))\n", + "\n", + "# Then constrain the cube just for the OND season\n", + "chirps_ond = chirps.extract(iris.Constraint(seasons='ond'))\n", + "\n", + "# Now calculate the climatological mean for this season\n", + "seasonal_mean = chirps_ond.aggregated_by(['seasons'], iris.analysis.MEAN)\n", + "\n", + "# save the seasonal mean cube as a NetCDF file\n", + "outfile = os.path.join(CLIMDIR, 'chirps.OND.mean.1986_2005.pr.mmday-1.nc')\n", + "iris.save(seasonal_mean, outfile)\n", + "\n", + "# print the CHIRPS seasonal mean cube\n", + "print(seasonal_mean)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: How would you calculate the standard deviation of mean rainfall? How about annual maximum rainfall?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer: Write the line of code required to calculate CHIRPS's (a) standard deviation and (b) annual maximum rainfall in the code block below.
    \n", + "Hint: How could you adapt chirps_ond.aggregated_by(['seasons'], iris.analysis.MEAN) from above? You can refer to the [Iris documentation](https://scitools.org.uk/iris/docs/v2.4.0/iris/iris/analysis.html) if needed." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# From chirps, calculate: \n", + "# (a) chirps_std \n", + "\n", + "\n", + "# (b) chirps_max\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 2.4 IRIS quick plotting and visualising data\n", + "\n", + "Now we will plot the output to take a first look at what climatological winter precipitation (1986-2005 OND seasonal mean) looks like for each dataset. This section provides an initial introduction to visualising data quickly using iris, for further reading and instructions please visit: https://scitools.org.uk/iris/docs/v2.4.0/userguide/plotting_a_cube.html\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**f) Plot and compare** the climatological winter preciptation over South East Asia for three datasets." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Question: Work through the code block below line by line. Think about what you expect the plot setup to look like:
    \n", + "\n", + "* Which lines of code specify the layout of sub-plots?
    \n", + "* Will the plots have a common colour scale or separate ones?
    \n", + "* What are the maximum and minimum precipitation values that will be displayed?
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Think about your answers, then click in the box and press ctrl + enter to run the code and create the plots." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# load hadgem2-es model data\n", + "infile = os.path.join(CLIMDIR, 'hadgem2-es.OND.mean.1986_2005.pr.mmday-1.nc')\n", + "hadgem_cube = iris.load_cube(infile)\n", + "\n", + "# load mpi-esm model data\n", + "infile = os.path.join(CLIMDIR, 'mpi-esm-lr.OND.mean.1986_2005.pr.mmday-1.nc')\n", + "mpi_cube = iris.load_cube(infile)\n", + "\n", + "# load CHIRPS data\n", + "infile = os.path.join(CLIMDIR, 'chirps.OND.mean.1986_2005.pr.mmday-1.nc')\n", + "obs_cube = iris.load_cube(infile)\n", + "\n", + "# Do some plotting!\n", + "# Create a figure of the size 12x10 inches\n", + "plt.figure(figsize=(12, 10))\n", + "\n", + "plt.subplot(1, 3, 1) # Create a new subplot for the model data; 1 row x 3 columns, 1st plot\n", + "levels = range(0, 22, 2) # Define the contour levels for all plots\n", + "\n", + "# Note this is where cube slicing is needed as you can only plot 2-coordinate\n", + "# dimensions with qplt.contourf, so here we have selected time[0] as there is only\n", + "# one timestep (the baseline 1986-2005 mean)\n", + "qplt.contourf(hadgem_cube[0], levels=levels, cmap=cm.RdBu, extend='max')\n", + " \n", + "\n", + "plt.title('HadGEM2-ES model') # plots a title for the plot\n", + "ax = plt.gca() # gca function that returns the current axes\n", + "ax.coastlines() # adds coastlines defined by the axes of the plot\n", + "\n", + "plt.subplot(1, 3, 2) # Create a new subplot for the model data; 1 row x 3 columns, 2nd plot\n", + "qplt.contourf(mpi_cube[0], levels=levels, cmap=cm.RdBu, extend='max')\n", + "\n", + "plt.title('MPI-ESM-LR model') # plots a title for the plot\n", + "ax = plt.gca() # gca function that returns the current axes\n", + "ax.coastlines() # adds coastlines defined by the axes of the plot\n", + "\n", + "plt.subplot(1, 3, 3) # Create a new subplot for the observed data 1 row x 3 columns, 3rd plot\n", + " # This plot will be centred and below the two model plots\n", + "qplt.contourf(obs_cube[0], levels=levels, cmap=cm.RdBu, extend='max')\n", + "\n", + "plt.title('CHIRPS obs') # plots a title for the plot\n", + "ax = plt.gca() # gca function that returns the current axes\n", + "ax.coastlines() # adds coastlines defined by the axes of the plot\n", + "ax.set_extent((65.0, 155.0, 0.0, 40.0))\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: \n", + "
    What are the differences between the following plots for HadGEM2-ES, MPI-ESM and CHIRPS? Note the colour bars. \n", + "
    Where are the largest daily rainfall rates distributed?\n", + "
    Why do you think this is happening?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer: *(Double click here to fill in the answers)*
    \n", + "\n", + "What differences do you see between the three plots?\n", + "\n", + "\n", + "Location of greatest rainfall\n", + "
    *HadGEM2-ES*: \n", + "
    *MPI-ESM*: \n", + "
    *CHIRPS*:\n", + "\n", + "\n", + "What is happening and why?\n", + "\n", + "\n", + "How could comparison be made easier?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "This completes worksheet 2.
    You have covered converting units, created seasonal means and visualised your results.
    \n", + "In worksheet 3, you will start to consider more advanced analysis, extract regional means, look at annule cycles, work with ensemble data and produce difference plots.\n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    \"python

    \n", + "
    © Crown Copyright 2022, Met Office
    " + ] + } + ], + "metadata": { + "instance_type": "ml.t3.medium", + "kernelspec": { + "display_name": "pyprecis-environment", + "language": "python", + "name": "pyprecis-environment" + }, + "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.6.10" + }, + "widgets": { + "state": {}, + "version": "1.1.2" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/AFR-22/worksheet3.ipynb b/notebooks/AFR-22/worksheet3.ipynb new file mode 100755 index 0000000..3919b84 --- /dev/null +++ b/notebooks/AFR-22/worksheet3.ipynb @@ -0,0 +1,1054 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Worksheet 3: Comparing models and observations for the historical period\n", + "\n", + "In the last worksheet we started to undertake basic data analysis and visulisation in python using Iris. This worksheet picks-up where we left off and introduces us to more advanced data analysis. This worksheet ends with an extended exercise to start you thinking about coding more independently." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "By the end of this worksheet you should be able to:
    \n", + "- Extract specific regions of interest from large datasets
    \n", + "- Apply more advanced statistical operations to multi-annual data.
    \n", + "- Produce your own data processing workflow.
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contents\n", + "### [3.1: Region extraction](#3.1)\n", + "### [3.2: Mean annual cycle calculation](#3.2)\n", + "### [3.3: Comparing models and observations](#3.3)\n", + "### [3.4: Climatological mean and annual cycle for an ensemble](#3.4)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Preamble\n", + "Run the code preamble below to import the necessary libraries for this worksheet.\n", + "\n", + "To run the code, click in the box below and press Ctrl + Enter." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Code preamble - these libraries will be used in this worksheet.\n", + "# This code block needs to be re-run every time you restart this worksheet!\n", + "%matplotlib inline\n", + "import os\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.cm as cm\n", + "import matplotlib.dates as mdates\n", + "import calendar\n", + "import iris\n", + "import iris.coord_categorisation\n", + "import iris.quickplot as qplt\n", + "import cartopy.crs as ccrs\n", + "from mpl_toolkits.axes_grid1 import AxesGrid\n", + "from cartopy.mpl.geoaxes import GeoAxes\n", + "from utils import copy_s3_files, flush_data\n", + "\n", + "\n", + "# Provide the names of the directories where the netCDF model files are stored\n", + "DATADIR = 'data_v2/'\n", + "\n", + "# CHIRPS dir\n", + "CHIRPSDIR = os.path.join(DATADIR, 'CHIRPS/')\n", + "\n", + "# Directory name where processed data is stored \n", + "HISTDIR = 'data_v2/EAS-22/historical'\n", + "\n", + "# Directory name where climtology data is stored \n", + "CLIMDIR = 'data_v2/EAS-22/climatology'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 3.1 Region extraction \n", + "\n", + "If you have an area or region you want to focus on, you can extract data for the region of interest. This example works through how to constrain your cube by latitude and longitude.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**a) Extract the area** around Bangkok for each of the three datasets, by specifiying latitude and longitude coordinates" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: Sort these jumbled values into the correct latitude and longitude extent for Bangkok, then enter them into the code block below so that they can be used to extract CHIRPS precipitation data over the city. \n", + "
    14.5\n", + "
    99.5\n", + "
    100.5\n", + "
    13.5\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Solution:**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Enter the ordered latitude and longitude coordinates for Bangkok here:\n", + "# lon=( , ) # longitude (East - West extent)\n", + "# lat=( , ) # latuitude (South - North extent)\n", + "lon =\n", + "lat =" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Run the code block below to extract the specified lat, lon coordinates from the **CHIRPS** dataset:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# load CHIRPS data\n", + "obs_cube = iris.load_cube(CHIRPSDIR + 'chirps-v2.0.monthly.global.1981_2018.nc')\n", + "\n", + "# Note that the CHIRPS data are on a regular grid (unlike the model data) so real latitudes and longitudes are\n", + "# used to define the region around KL (more on this in section 2.6)\n", + "obs_cube_BK = obs_cube.intersection(latitude=lat, longitude=lon)\n", + "\n", + "# save the constrained cube to directory\n", + "outfile = os.path.join(CHIRPSDIR, 'chirps.mon.1981_2018.BK.nc')\n", + "iris.save(obs_cube_BK, outfile)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: Recall that CORDEX uses a rotated pole grid for these simulations, so coordinates in the rotated pole frame of reference are required to correctly extract Bangkok from the model data.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__b) Extract the area around Bangkok for HadGEM2-ES and MPI-ESM__ driven simulations. To do this we must specify the **rotated latitude and longitude coordinates**. \n", + "\n", + "To convert the true Bangkok coordinates onto the rotated pole frame of reference, we need know the latitude and longitude of the pole in our rotated pole coordinate system. We can find this from the model cube:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load the HadGEM2-ES model cube data as need grid information from it\n", + "infile = os.path.join(HISTDIR, 'hadgem2-es.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + "hadgem2_cube = iris.load_cube(infile)\n", + "\n", + "pole_lat = hadgem2_cube.coord_system().grid_north_pole_latitude\n", + "pole_lon = hadgem2_cube.coord_system().grid_north_pole_longitude\n", + "print(f'Pole Latitude: {pole_lat}')\n", + "print(f'Pole Longitude: {pole_lon}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Iris includes a function to help us convert between coordinates in a rotated and non-rotated coordinate frame. We can use this to convert our non-rotated Bangkok coordinates:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "lon=np.array([99.5, 100.5])\n", + "lat=np.array([13.5, 14.5])\n", + "rotated_lons, rotated_lats = iris.analysis.cartography.rotate_pole(lon, lat, pole_lon, pole_lat)\n", + "print(f'Rotated Longitudes: {rotated_lons[0]:.2f}, {rotated_lons[1]:.2f}')\n", + "print(f'Rotated Latitudes: {rotated_lats[0]:.2f}, {rotated_lats[1]:.2f}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can run the code below to constrain the HadGEM2-ES and MPI-ESM data to Bangkok in rotated pole coordinates: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Constrain the cube area over Bangkok (BK).\n", + "# CORDEX EAS-22 uses a rotated grid, so the co-ordinates required are different to real world coordinates.\n", + "\n", + "for gcm in ['hadgem2-es', 'mpi-esm-lr']:\n", + " # Directory name where data are read from and stored to\n", + " infile = os.path.join(HISTDIR, gcm + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + " \n", + " # Load the baseline precipitation data using the BK_constraint - the command below\n", + " # loads the data into a cube constrained by the area chosen\n", + " data = iris.load_cube(infile)\n", + "\n", + " # All grid cells whose longitudes and latitudes lie within the limits shown will be selected.\n", + " data_BK = data.intersection(grid_longitude=rotated_lons,\n", + " grid_latitude=rotated_lats)\n", + "\n", + " # save the constrained cube\n", + " outfile = os.path.join(CLIMDIR, gcm + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.BK.nc')\n", + " iris.save(data_BK, outfile)\n", + " print(f'Saved: {outfile}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: How many grid cells are in the newly constrained Bangkok file?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Answer:**\n", + "*Write your answer here...*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 3.2 Mean annual cycle calculation\n", + "\n", + "Average over a given area (e.g Bangkok) to calculate multi-annual monthly mean values. \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**c) We now calculate monthly mean fields** for 1986-2005 for each of the twelve months for the Bangkok area." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: To accurately find averages over latitudinal areas, we must account for changes in the \n", + " distance between lines of latitude. These changes make the areas of grid boxes smaller as we move towards the\n", + " model pole. Iris provides a tool to help us do this: iris.analysis.cartography.area_weights(). Find out more in the Iris documentation here\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for gcm in ['hadgem2-es', 'mpi-esm-lr']:\n", + " # Set up the path to the data\n", + " infile = os.path.join(CLIMDIR, gcm + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.BK.nc')\n", + "\n", + " # Load the data extracted around Bangkok created in previous step\n", + " data = iris.load_cube(infile)\n", + "\n", + " # Add monthly coord categorisation to the time dimension coordinate\n", + " iris.coord_categorisation.add_month_number(data, 'time', name='month_number')\n", + "\n", + " # Calculate monthly mean values\n", + " monthly_mean = data.aggregated_by(['month_number'], iris.analysis.MEAN)\n", + " \n", + " # due to a limitation in Iris remove the 2D 'True' lat and lon coords\n", + " monthly_mean.remove_coord('longitude')\n", + " monthly_mean.remove_coord('latitude')\n", + "\n", + " # Find latitude weights\n", + " monthly_mean.coord('grid_longitude').guess_bounds()\n", + " monthly_mean.coord('grid_latitude').guess_bounds()\n", + " grid_areas = iris.analysis.cartography.area_weights(monthly_mean)\n", + " # Calculate area averaged monthly mean rainfall\n", + " monthly_mean = monthly_mean.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN, \n", + " weights=grid_areas)\n", + "\n", + " # Save the area averaged monthly mean data\n", + " outfile = os.path.join(CLIMDIR, gcm + '.mon.mean.1986_2005.pr.mmday-1.BK.nc')\n", + " iris.save(monthly_mean, outfile)\n", + " print('Saved: {}'.format(outfile))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**d) Plot the BK area averaged monthly mean precipitation** amount in mm/day for the HadGEM2-ES and MPI-ESM driven runs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for gcm in ['hadgem2-es', 'mpi-esm-lr']:\n", + " # Load the model cube\n", + " inpath = os.path.join(CLIMDIR, gcm + '.mon.mean.1986_2005.pr.mmday-1.BK.nc')\n", + " print(inpath)\n", + " cube = iris.load_cube(inpath) \n", + " # Quick line plot for each cube \n", + " qplt.plot(cube.coord('month_number'), cube)\n", + " plt.title('BK area averaged ' + gcm + '\\n monthly average of daily rainfall')\n", + " ax = plt.gca()\n", + " ax.xaxis.set_label_text('Month Number')\n", + " ax.set_xlim(0.5, 12.5)\n", + " ax.set_ylim(0, 16)\n", + " plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: Considering the plots of HadGEM2-ES and MPI-ESM-LR data, note down their approximate values in mm day-1 for the following features: \n", + "\n", + "- Which month experiences the most rainfall? (also note the amount)\n", + "- If a second rainfall peak exists in another season, note the month and amount\n", + "- Which month experiences the least rainfall? (also note the amount)\n", + "\n", + "What comparisons can be made about these two datasets?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + " \n", + "HadGEM2-ES\n", + "- Most rainfall: *month, amount*\n", + "- Secondary peak of rainfall: *month, amount*\n", + "- Least rainfall: *month, amount*\n", + "\n", + "MPI-ESM-LR\n", + "- Most rainfall: *month, amount*\n", + "- Secondary peak of rainfall: *month, amount*\n", + "- Least rainfall: *month, amount*\n", + "\n", + "How comparable are these datasets? How are they different?
    \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**e) Find the multi-annual monthly means (1986-2005) over the BK area for CHIRPS observations** by following the same methodology as above in step d). As before we've given you the input and output files names." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load the BK extracted data created in previous step\n", + "infile = os.path.join(CHIRPSDIR, 'chirps.mon.1986_2005.BK.nc')\n", + "\n", + "\n", + "# Add monthly coord categorisation to the time dim coordinate\n", + "\n", + "\n", + "# Now calculate monthly means\n", + "\n", + "\n", + "# and change units to mm/day from mm/month\n", + "\n", + "\n", + "# create the area averaged monthly mean of daily rainfall\n", + "\n", + "# Save output\n", + "outfile = os.path.join(CLIMDIR, 'chirps.mon.mean.1986_2005.mmday-1.nc')\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: Plot the CHIRPS observations, compare with the HadGEM2-ES and MPI-ESM-LR driven REMO2015 runs. What are the differences between the observations and models; in which months are the differences greatest?\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Complete your plotting script here\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + "*Write your findings here...*\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 3.3 Comparing models and observations\n", + "\n", + "In Section 2.4 we saw how to plot model output on individual maps, but in order to do a rigorous comparison, **spatial model and observation fields must be on the same grid.**\n", + "\n", + "**You should regrid to the coarsest resolution grid.** For the data used here, the observations have the coarsest resolution so we will regrid the model data onto the observation grid.\n", + "\n", + "Recall that the REMO2015 model data are on a grid known as a **Rotated Pole** coordinate system. The idea is that the \"real\" north pole in the Arctic is shifted such that the equator relative to our rotated pole then runs through the centre of the regional model domain." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**f) Regrid the multiannual OND mean model** fields onto the observations grid.\n", + "\n", + "Here we use the `regrid` method to regrid the target cube. Here we will use linear interpolation. First, load in the data.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# load HadGEM2-ES\n", + "infile = os.path.join(CLIMDIR, 'hadgem2-es.OND.mean.1986_2005.pr.mmday-1.nc')\n", + "hadgem2_model_cube = iris.load_cube(infile)\n", + "# load MPI-ESM-LR\n", + "infile = os.path.join(CLIMDIR, 'mpi-esm-lr.OND.mean.1986_2005.pr.mmday-1.nc')\n", + "mpi_model_cube = iris.load_cube(infile)\n", + "# load \n", + "infile = os.path.join(CLIMDIR, 'chirps.OND.mean.1986_2005.pr.mmday-1.nc')\n", + "obs_cube = iris.load_cube(infile)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Before we can regrid any data, both the model and observation datasets must have a **specified coordinate system**. \n", + "\n", + "In this case, CHIRPS's coordinate system is missing from the original netCDF file, but the observations are on a regular longitude-latitude grid so the correct coordinate system is [WGS84](https://epsg.io/32600/). \n", + "\n", + "In the code below, we define the WGS84 coordinate system and then apply it to the x- and y-axes (i.e. longitudes and latitudes) of the observations. \n", + "\n", + "The coordinate system used by the model (the rotated grid) is already defined.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# Define WGS84 projection for obs data\n", + "wgs84 = iris.coord_systems.GeogCS(semi_major_axis=6378137.0, inverse_flattening=298.257223563)\n", + "\n", + "# Apply WGS84 to obs cube\n", + "obs_cube.coord(axis='x').coord_system = wgs84\n", + "obs_cube.coord(axis='y').coord_system = wgs84\n", + "\n", + "# Print out and compare the two coordinate systems\n", + "print(obs_cube.coord_system())\n", + "print(hadgem2_model_cube.coord_system())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The next few lines of code **regrid the model data from rotated pole to the regular grid used by the observations**. \n", + "\n", + "From the plots created in section 2.4, we know that the area covered by CHIRPS data is larger than the EAS-22 model domain. Hence, the **extrapolation mode** is set to `mask` so that any grid cells on the CHIRPS grid which do not overlap with model grid cells are masked `off`; otherwise, the model data would be interpolated and would produce misleading results.\n", + "\n", + "Note also that as CHIRPS is a near global data set, we take a subset of the data over our region of interest.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Note: When working with data arrays masks can be extremely useful. Masks are an array of boolean values matching the shape of the data arrya, where a particular condition is met. These boolean arrays can then be used to hide or show parts of the dataset, given the value of the mask. You can see more examples of masks here \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "lon = (60., 150.)\n", + "lat = (10., 50.)\n", + "\n", + "obs_cube_sub = obs_cube.intersection(latitude=lat, longitude=lon)\n", + "\n", + "# Regrid the climate model data onto CHIRPS grid\n", + "hadgem2_regrid = hadgem2_model_cube.regrid(obs_cube_sub, iris.analysis.Nearest(extrapolation_mode='mask'))\n", + "mpi_regrid = mpi_model_cube.regrid(obs_cube_sub, iris.analysis.Nearest(extrapolation_mode='mask'))\n", + "\n", + "# Save HadGEM2 output\n", + "outpath = os.path.join(CLIMDIR, 'hadgem2-es.OND.mean.1986_2005.pr.mmday-1.rg.nc')\n", + "iris.save(hadgem2_regrid, outpath)\n", + "print('Saved: {}'.format(outfile))\n", + "\n", + "# Save MPI-ESM output\n", + "outpath = os.path.join(CLIMDIR, 'mpi-esm-lr.OND.mean.1986_2005.pr.mmday-1.rg.nc')\n", + "iris.save(mpi_regrid, outpath)\n", + "print('Saved: {}'.format(outfile))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: Now that the cubes are all on the same grid, what differences do you see?
    Complete the code template below to help answer this question.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Hint:** You need to (i) load the NetCDF files, (ii) plot the CHIRPS and model data again (as in section 2.4) to compare them visually once again." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Directory name where data is read from\n", + "indir = os.path.join(DATADIR, 'EAS-22', 'climatology')\n", + "\n", + "# load HadGEM2-ES downscaled model data\n", + "\n", + "# load MPI-ESM-LR downscaled model data\n", + "\n", + "# load CHIRPS data and extract region\n", + "\n", + "# Do some plotting!\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Answer:**\n", + "\n", + "_Write your findings here..._" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**g) Find the difference between the model and the observation OND multiannual mean** fields and plot maps to view the differences\n", + "\n", + "To find differences, now that the model and observations are on the same grid we can simply subtract the model data from the observations. \n", + "\n", + "There is a subtract function within Iris but it cannot be used here. The model cubes contain extra coordinates which are not present in the obs cube; Iris requires all coordinates within the cubes to match exactly." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Make sure units are the same\n", + "obs_cube.units = hadgem2_regrid.units\n", + "\n", + "# Make recieving cube\n", + "hadgem2_obs_diff = obs_cube.copy()\n", + "mpi_obs_diff = obs_cube.copy()\n", + "\n", + "# Replace data with the differences\n", + "hadgem2_obs_diff.data = hadgem2_regrid.data - obs_cube.data\n", + "mpi_obs_diff.data = mpi_regrid.data - obs_cube.data\n", + "\n", + "# Plotting\n", + "plt.figure(figsize=(12, 10))\n", + "plt.subplot(1, 2, 1) # Create a new subplot for the first differences, 2 rows, 1 column, 1st plot\n", + "\n", + "# Only plot the region containing data. We use the intersection method to do this.\n", + "qplt.pcolormesh(hadgem2_obs_diff[0].intersection(longitude=(90, 135), latitude=(-20, 32)), \n", + " vmax=10, vmin=-10, \n", + " cmap=plt.get_cmap('RdBu')) # Note this is where cube slicing is needed as you can only plot 2-coordinate\n", + " # dimensions with qplt.contourf, so here we have selected time[0] as there is only\n", + " # one timestep (the baseline 1986-2005 mean)\n", + "\n", + "plt.title('HadGEM2-ES - obs') # plots a title for the plot\n", + "ax = plt.gca() # gca function that returns the current axes\n", + "ax.coastlines() # adds coastlines defined by the axes of the plot\n", + "\n", + "plt.subplot(1, 2, 2) # Create a new subplot for the model data 2 row, 2 columns, 2nd plot\n", + "qplt.pcolormesh(mpi_obs_diff[0].intersection(longitude=(90, 135), latitude=(-20, 32)),\n", + " vmax=10, vmin=-10,\n", + " cmap=plt.get_cmap('RdBu'))\n", + "\n", + "plt.title('MPI-ESM-LR - obs') # plots a title for the plot\n", + "ax = plt.gca() # gca function that returns the current axes\n", + "ax.coastlines() # adds coastlines defined by the axes of the plot\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Questions: We have now created difference plots; to more easily validate the model(s) directly against observations. \n", + " \n", + "- Why has the data over the oceans disappeared?\n", + "- Which of the two model datasets (HadGEM2-ES and MPI-ESM-LR) has the greatest wet bias? In which region? \n", + "- Are there any areas in HadGEM2-ES or MPI-ESM-LR with a strong dry bias? Roughly what is the extent of this bias (in mm/day)? \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answers\n", + "- The data over the oceans has disappeared because [...] \n", + "\n", + "- The greatest wet bias occus in model [...], in region [...] \n", + "\n", + "- A strong dry bias exists in model [...] in region [...] (roughly [...] mm/day drier than CHIRPS observations). \n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 3.4 Climatological mean and annual cycle for an ensemble\n", + "\n", + "So far data from two GCMs downscaled with the REMO2015 RCM have been analysed. In this section we will add data from an extra RCM (REGCM4) and an extra GCM giving 6 runs in total. We will also make use of the CRU observational data set. \n", + "\n", + "The CRU data are a monthly global land-only dataset (1901-present) at 0.5 degree resolution. Nine variables are available, including mean, min, max temperature and precipitation. For further details please see: https://crudata.uea.ac.uk/cru/data/hrg/ \n", + "\n", + "This gives us an ensemble of 6 GCM-RCM pairs:\n", + "\n", + "* RCM REMO2015 downscaling:\n", + " * HadGEM2-ES\n", + " * MPI-ESM-LR\n", + " * NorESM1-M\n", + "* RCM REGCM4-7 downscaling:\n", + " * HadGEM2-ES\n", + " * MPI-ESM-MR (note medium resolution not low resolution)\n", + " * NorESM1-M\n", + "\n", + "And observational datasets:\n", + "\n", + "* CHIRPS\n", + "* CRU\n", + "\n", + "Taking an ensemble approach allows us to account for a range of uncertainty in the model projections.\n", + "\n", + "Write a series of scripts to do the following:\n", + "\n", + "**h) Calculate the OND seasonal mean and annual cycle** (for the BK area) for 1.5m temperature and precipitation for CRU and CHIRPS observations\n", + "\n", + "**i) Calculate OND seasonal-mean and monthly-mean anomalies** for the BK area for the 4 additional models\n", + "\n", + "**j) Plot a series of figures** that shows 1) the monthly cycles of temperature and rainfall comparing the 6 models and the observations; and 2) the monthly differences between the models and observations" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we first need to download CRU and netcdf data\n", + "copy_s3_files('s3://ias-pyprecis/data/CRU/*.nc', 'data/CRU/')\n", + "copy_s3_files('s3://ias-pyprecis/data/netcdf/*.nc', 'data/netcdf/')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "Here are some useful variables you might like to use in your scripts\n", + "'''\n", + "# Some helpful data locations\n", + "DATADIR = 'data_v2'\n", + "CHIRPSDIR = os.path.join(DATADIR, 'CHIRPS')\n", + "CRUDIR = os.path.join(DATADIR, 'CRU')\n", + "CLIMDIR = 'data_v2/EAS-22/climatology'\n", + "MODELDIR = os.path.join(DATADIR, 'cordex/EAS-22')\n", + "\n", + "# Some helpful model variables\n", + "GCMS = ['hadgem2-es', 'mpi-esm-lr']\n", + "RCMS = ['GERICS-REMO2015','ICTP-RegCM4-7']\n", + "\n", + "# Bangkok domains...\n", + "# ... in true lat-lon coordiates\n", + "lon=(99.5, 100.5)\n", + "lat=(13.5, 14.5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "h) Calculate the OND seasonal-mean and monthly-mean 1.5m temperature and precipitation \n", + "for the BK area, for CRU and CHIRPS observations\n", + "'''\n", + "# Load CHIRPS data\n", + "\n", + "# Load CRU data\n", + "\n", + "# Extract BK area\n", + "\n", + "# Add OND season catagorisation\n", + "\n", + "# Add monthly catagorisation\n", + "\n", + "# Extract season\n", + "\n", + "# Aggregate cubes\n", + "\n", + "# Find BK area average\n", + "\n", + "# Check and add cube metadata\n", + "\n", + "# Save cubes to CLIMDIR\n", + "# Remember to use the same naming convention we used earlier\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "i) Calculate OND seasonal-mean and monthly-mean anomalies for the BK area \n", + "for the 4 additional models runs \n", + "'''\n", + "# Load ensemble members\n", + "# Remember you need to do this for both precipitation AND temperature\n", + "\n", + "# Regrid ensemble members onto observational grid\n", + "# Remember you need to check your model and obs cubes have the appropriate coordinate systems defined\n", + "\n", + "# Extract the BK area. Remember you are now working in true lat-lon coordinates!\n", + "\n", + "# Find OND and monthly means\n", + "\n", + "# Calculate model anomalies\n", + "# Remember temp anomaly = model - CRU data\n", + "# precip anomaly = model - CHIRPS data\n", + "\n", + "# Check cube metadata consistency and save\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + " Question: What difference would it make if we first extracted the BK area and then regrid the models?
    \n", + "Which order is best for preserving data integrity?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create four figures:\n", + " \n", + " i) the monthly cycle of temperature (model and observations) \n", + " ii) the monthly cycle of rainfall (model and observations)\n", + " iii) the monthly temperature anomaly for each model\n", + " iv) the monthly precipitation anomaly for each model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "Plot 1: The monthly cycle of temperature (model and observations)\n", + "'''\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "Plot 2: The monthly cycle of precipitation (model and observations)\n", + "'''\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "Plot 3: The monthly temperature anomaly for each model\n", + "'''\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "Plot 4: The monthly precipitation anomaly for each model\n", + "'''\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + " Question: How could you summarise the ensemble variability amongst model members in a plot?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Question: How does the monthly temperature and precipitation anomaly compare to the OND average?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Question: What are the advantages and disadvantages of plotting spatial maps of temperature and rainfall variability over Bangkok?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
    \n", + "
    This completes worksheet 3.

    \n", + " You have used Python and Iris to validate the model's climatology (30 years of baseline data: 1986-2005) against observations, in order to analyse the model's capability of representing real-world trends.
    \n", + "To do so, you have:\n", + " \n", + "- calculated and plotted multiannual seasonal and monthly mean data,\n", + "- regridded rotated pole model data to a regular latitude-longitude grid,\n", + "- created difference plots to compare model data with observations, and \n", + "- written your own code to do all of these post-processing and analysis tasks with an multi-model ensemble!
    \n", + "\n", + "In worksheet 4, you will consider future model projections and their changes with respect to the baseline period (calculated in this worksheet).\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    \"python

    \n", + "
    © Crown Copyright 2022, Met Office
    " + ] + } + ], + "metadata": { + "instance_type": "ml.t3.medium", + "kernelspec": { + "display_name": "pyprecis-environment", + "language": "python", + "name": "pyprecis-environment" + }, + "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.6.10" + }, + "widgets": { + "state": {}, + "version": "1.1.2" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/AFR-22/worksheet4.ipynb b/notebooks/AFR-22/worksheet4.ipynb new file mode 100755 index 0000000..64f072e --- /dev/null +++ b/notebooks/AFR-22/worksheet4.ipynb @@ -0,0 +1,629 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Worksheet 4: Creating future climate scenarios and analysing climate change\n", + "\n", + "The following exercises demonstrate basic methods for analysing changes in climate, using two CORDEX-Core experiments (REMO2015 driven by HadGEM2-ES and MPI-ESM-LR) As with worksheets 2 & 3, these are examples of some of the many types of analyses that can be performed using Python and Iris." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "By the end of this worksheet you should be able to:
    \n", + "\n", + "- Calculate difference and percentage differences across cubes
    \n", + "- Plot cubes using different plotting methods and with an appropriate colour scale
    \n", + "- Create time series anomalies of precipitation and tempeature
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: As in Worksheet 2, the data used here has been processed in the same way as in Worksheet 1. The whole period has been concatenated into a single file to avoid issues with loading multiple files.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contents\n", + "### [4.1: Calculate future OND mean precipitation](#4.1) \n", + "### [4.2: Find OND anomalies](#4.2)\n", + "### [4.3: Plot precipitation and temperature](#4.3)\n", + "### [4.4: Future time series](#4.4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Preamble" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Code preamble - these libraries will be used in this worksheet.\n", + "# This code block needs to be re-run every time you restart this worksheet!\n", + "%matplotlib inline \n", + "import os\n", + "import iris\n", + "import iris.coord_categorisation\n", + "from iris.experimental.equalise_cubes import equalise_attributes\n", + "import iris.quickplot as qplt\n", + "import iris.plot as iplt\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import numpy.ma as ma\n", + "\n", + "# Some helpful data locations\n", + "DATADIR = 'data_v2/EAS-22/'\n", + "CLIMDIR = os.path.join(DATADIR, 'climatology')\n", + "HISTDIR = os.path.join(DATADIR, 'historical')\n", + "FUTRDIR = os.path.join(DATADIR, 'future')\n", + "GCMIDS = ['hadgem2-es', 'mpi-esm-lr']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 4.1 Calculate future OND mean precipitation\n", + "**a)** First, we **calculate future OND (October, November, December) mean precipitation** for the period 2041-2060 for the HadGEM2-ES driven REMO2015 simulation and the MPI-ESM-driven simulation :" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for gcmid in GCMIDS:\n", + " infile = os.path.join(FUTRDIR, gcmid + '.mon.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", + " data = iris.load_cube(infile)\n", + "\n", + " # in order to calculate OND mean, we divide the months into two seasons: \n", + " # one for OND and a second for the remaining months\n", + " iris.coord_categorisation.add_season(data, 'time', name='seasons', seasons=('jfmamjjas','ond'))\n", + "\n", + " # Extract the data for the OND season only\n", + " data_ond = data.extract(iris.Constraint(seasons='ond'))\n", + "\n", + " # Now calculate the mean over the OND season\n", + " ond_mean = data_ond.aggregated_by(['seasons'], iris.analysis.MEAN)\n", + "\n", + " # save the OND mean as a netCDF\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(ond_mean, outfile)\n", + " print('Saved: {}'.format(outfile))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: Within the loop, we have created two cubes: a seasonal OND constrained cube data_ond, and a seasonal mean cube ond_mean. Inspect the cube metadata. What are the differences? \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Use this code block to inspect the two cubes\n", + "# e.g. print(cube)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer
    \n", + " *Type your answer here...*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Note: Remember, the loop has created and saved two cubes, one for each downscaled GCM.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 4.2 Find OND anomalies\n", + "**b)** Next, we **subtract the baseline (1986-2005) mean from the future (2041-2060) mean** for OND to get the change in precipitation (or **anomaly**) from both simulations. The changes are also converted to percentages:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for gcmid in GCMIDS:\n", + " # Load the baseline cube\n", + " infile = os.path.join(CLIMDIR, gcmid + '.OND.mean.1986_2005.pr.mmday-1.nc')\n", + " OND_baseline = iris.load_cube(infile)\n", + " # Set the correct units\n", + " OND_baseline.units = \"mm day-1\"\n", + " # Load the future cube\n", + " infile = os.path.join(CLIMDIR, gcmid + '.OND.mean.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", + " OND_future = iris.load_cube(infile)\n", + " # Subtract the baseline cube from the future cube\n", + " diff = iris.analysis.maths.subtract(OND_future, OND_baseline)\n", + " # rename the cube to reflect the data processing\n", + " diff.rename('precipitation flux difference')\n", + " # Save the resulting cube\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.diff.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(diff, outfile)\n", + " print('Saved {}'.format(outfile))\n", + " # Find the percentage change\n", + " pcent_change = iris.analysis.maths.multiply(iris.analysis.maths.divide(diff, OND_baseline), 100)\n", + " # remember to change the title and units to reflect the data processing\n", + " pcent_change.rename('precipitation flux percent difference')\n", + " pcent_change.units = '%'\n", + " # And save this too\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.diffperc.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(pcent_change, outfile)\n", + " print('Saved {}'.format(outfile))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**c)** Now, repeat the calculations yourself for **temperature**. \n", + "\n", + "First, we calculate the **OND mean** temperatures. \n", + "\n", + "**Fill in the missing commands in the code block below**:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# HINT: Your filenames should have the format: \n", + "# gcmid + '.OND.mean.' + time_periods[period] + '.GERICS-REMO2015.tm.C.nc'\n", + "time_periods = {'historical':'1986_2005', 'future':'2041_2060'}\n", + "\n", + "for gcmid in GCMIDS:\n", + " for period in time_periods.keys():\n", + " # Load the data:\n", + "\n", + " # In order to calculate OND mean, add a season coordinate, separating OND from the other months:\n", + "\n", + " # Extract the data for the OND season only:\n", + " \n", + " # Now calculate the mean over the OND season:\n", + "\n", + " # save the OND mean as a netCDF ('outfile' specifies the output file name for your OND mean cube):\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.' + time_periods[period] + '.GERICS-REMO2015.tm.C.nc')\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**d)** Next, we **calculate the difference** between the baseline and future periods." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for gcmid in GCMIDS:\n", + " # Load files:\n", + " baselinefile = os.path.join(CLIMDIR, gcmid + '.OND.mean.1986_2005.GERICS-REMO2015.tm.C.nc')\n", + " futurefile = os.path.join(CLIMDIR, gcmid + '.OND.mean.2041_2060.GERICS-REMO2015.tm.C.nc')\n", + " OND_baseline = iris.load_cube(baselinefile)\n", + " OND_future = iris.load_cube(futurefile)\n", + " \n", + " # Calculate 'future mean' minus 'baseline mean':\n", + " diff = iris.analysis.maths.subtract(OND_future, OND_baseline)\n", + " diff.rename('surface temperature difference')\n", + " \n", + " # Save\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.diff.GERICS-REMO2015.tm.C.nc')\n", + " iris.save(diff, outfile)\n", + " print('Saved: {}'.format(outfile))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 4.3 Plot precipitation and temperature\n", + "\n", + "**e)** **Plot changes** to precipitation (in %) and temperature (in deg.C)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Create a figure of the size 12x12 inches\n", + "plt.figure(figsize=(12, 12))\n", + "\n", + "# Read in the percentage changes in precipitation\n", + "for n, gcmid in enumerate(GCMIDS):\n", + " prpath = os.path.join(CLIMDIR, gcmid + '.OND.mean.diffperc.GERICS-REMO2015.pr.mmday-1.nc')\n", + " tmpath = os.path.join(CLIMDIR, gcmid + '.OND.mean.diff.GERICS-REMO2015.tm.C.nc')\n", + " pcent_change = iris.load_cube(prpath)\n", + " degc_change = iris.load_cube(tmpath)\n", + "\n", + " # Remove extra time dimension using an iris utility \n", + " pcent_change = iris.util.squeeze(pcent_change)\n", + " degc_change = iris.util.squeeze(degc_change)\n", + " \n", + " plot_num = n*2 + 1\n", + " plt.subplot(2, 2, plot_num) # Create a new subplot with 2 rows, 2 columns, 1st plot\n", + " qplt.pcolormesh(pcent_change, vmax=30, vmin=-30, cmap='BrBG')\n", + " plt.title(gcmid + ' precipitation change (%)')\n", + " ax = plt.gca() # gca function that returns the current axes\n", + " ax.coastlines() # adds coastlines defined by the axes of the plot\n", + "\n", + " plt.subplot(2, 2, plot_num+1)\n", + " qplt.pcolormesh(degc_change, vmax=2.5, vmin=0, cmap='Reds')\n", + " plt.title(gcmid + ' temperature change ($\\degree$C)')\n", + " ax = plt.gca()\n", + " ax.coastlines()\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: How would you use a discrete contoured colour map to show changes in precipitation and temperature?
    \n", + " Modify the code above to use qplt.pcontourf(). Remember to choose appropriate contours.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Question: The plots show projected changes in precipitation and temperature using two models; what are the common features between the two model projections? \n", + " \n", + "What differences exist between the two model projections? Which is hotter, wetter, how does the spatial distribution differ? \n", + " \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + "*Type your answers here...*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 4.4 Future time series\n", + "\n", + "**f)** Calculate and then plot a 2041-2060 monthly **time series of precipitation anomalies** for land\n", + "points only, relative to the 1986-2005 baseline monthly mean. Do this for both the downscaled HadGEM2-ES and MPI-ESM-LR \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Read in the land-sea mask. \n", + "# The cube data array has a land fraction associated with it which we'll use to mask out ocean points.\n", + "land_fraction_file = 'sftlf_EAS-22_MOHC-HadGEM2-ES_historical_r0i0p0_GERICS-REMO2015_v1_fx_r0i0p0.nc'\n", + "land_fraction = iris.load_cube(DATADIR + land_fraction_file)\n", + "\n", + "# convert this to a binary (i.e. 1 or 0 mask)\n", + "land_sea_mask = land_fraction.copy()\n", + "land_sea_mask.data = np.where(land_sea_mask.data < 50, 0, 1)\n", + "land_sea_mask.name = 'land_binary_mask'\n", + "# apply a mask to the cube \n", + "land_sea_mask = iris.util.mask_cube(land_sea_mask, land_sea_mask.data < 0.5)\n", + "\n", + "\n", + "for gcmid in GCMIDS:\n", + " # Read in original data for baseline and future\n", + " baselinepath = os.path.join(HISTDIR, gcmid + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + " futurepath = os.path.join(FUTRDIR, gcmid + '.mon.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", + " baseline = iris.load_cube(baselinepath)\n", + " future = iris.load_cube(futurepath)\n", + " \n", + " # Apply land mask\n", + " baseline.data = ma.array(baseline.data, mask=baseline.data*land_sea_mask.data.mask[np.newaxis, :,:])\n", + " future.data = ma.array(future.data, mask=future.data*land_sea_mask.data.mask[np.newaxis, :,:])\n", + "\n", + " # the code to calculate area weights requires a single longitude and latitude coordindate - \n", + " # remove the 2D \"true\" lat and lon\n", + " baseline.remove_coord('longitude')\n", + " baseline.remove_coord('latitude')\n", + " future.remove_coord('longitude')\n", + " future.remove_coord('latitude')\n", + " \n", + " # Guess bounds\n", + " for cube in [baseline, future]:\n", + " for coord in ['grid_longitude', 'grid_latitude']:\n", + " cube.coord(coord).guess_bounds()\n", + " \n", + " # Calculate mean values over land points\n", + " baseline_land = baseline.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN,\n", + " weights = iris.analysis.cartography.area_weights(baseline))\n", + " future_land = future.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN,\n", + " weights = iris.analysis.cartography.area_weights(future))\n", + "\n", + " # Save future & baseline area averaged monthly data (time series)\n", + " baselineout = os.path.join(CLIMDIR, gcmid + '.mon.1986_2005.series.GERICS-REMO2015.pr.mmday-1.nc')\n", + " futureout = os.path.join(CLIMDIR, gcmid + '.mon.2041_2060.series.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(baseline_land, baselineout)\n", + " iris.save(future_land, futureout)\n", + "\n", + " # Subtract baseline from future\n", + " diff = future_land.copy()\n", + " diff.data = future_land.data - baseline_land.data.mean()\n", + " diff.rename('future anomaly relative to mean historical precipitation')\n", + "\n", + " # Save the area averaged monthly future anomalies (time series)\n", + " outpath = os.path.join(CLIMDIR, gcmid + '.mon.2041_2060.anom.series.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(diff, outpath)\n", + " print('Saved: {}'.format(outpath))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + " Question: Why do we only want to produce a time series for changes over land?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Answer:**\n", + "\n", + "_Type your answer here..._" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**g)** **Plot the precipitation anomalies** of HadGEM2-ES and MPI-ESM-LR downscaled" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# Read in the monthly series\n", + "hadgem2es = iris.load_cube(CLIMDIR + '/hadgem2-es.mon.2041_2060.anom.series.GERICS-REMO2015.pr.mmday-1.nc')\n", + "mpiesm = iris.load_cube(CLIMDIR + '/mpi-esm-lr.mon.2041_2060.anom.series.GERICS-REMO2015.pr.mmday-1.nc')\n", + "time = hadgem2es.coord('time')\n", + "\n", + "# Plot the two model time series' on the same figure\n", + "plt.figure(figsize=(16,5))\n", + "iplt.plot(time, hadgem2es, label = 'HadGEM2-ES')\n", + "iplt.plot(time, mpiesm, label = 'MPI-ESM-LR')\n", + "plt.legend()\n", + "plt.suptitle('2041-2060 Precipitation anomaly (relative to 1986-2005)')\n", + "plt.ylabel(f'Precipitation change ({hadgem2es.units}')\n", + "plt.xlabel('Years')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**h) Produce and plot a montly time series of temperature data** relative to the 1986-2005 baseline. As for (f) and (g) produce time series for HadGEM2-ES and MPI-ESM-LR driven runs.\n", + "\n", + "**Fill in the missing commands in the code blocks below**:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# HINT: The temperature data has filenames with the pattern:\n", + "# gcmid + '.mon.1986_2005.GERICS-REMO2015.tm.C.nc' or gcmid + '.mon.2041_2060.GERICS-REMO2015.tm.C.nc'\n", + "\n", + "# Loop over GCMIDS\n", + "\n", + "\n", + "# Read in original data for baseline and future\n", + "\n", + "# Apply land mask\n", + "\n", + "# remove the 2D \"true\" lat and lon\n", + "\n", + "# Guess bounds\n", + "\n", + "# Calculate mean values over land points\n", + "\n", + "# Save future & baseline area averaged monthly data (time series)\n", + "\n", + "# Subtract baseline from future\n", + "\n", + "# Save the data, make sure you follow the file naming convention!\n", + "\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Do some plotting...\n", + "# Read in the monthly series\n", + "\n", + "\n", + "# Plot the two model time series' on the same figure\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: Write a short summary of these two graphs. Include:\n", + " \n", + "- A description of what each plot shows\n", + "- The differences between the two models\n", + "- A consideration of the ways the climate in East Asia might be different in the future\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Answer:**\n", + "\n", + "_Type your answer here..._" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Question: Conside the plots we produced in Section 4.3. What additional time series analysis could you do to support your consideration of future changes to climate in the question above?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    This completes worksheet 4.

    \n", + " You have used Iris to investigate differences between historical and future changes in model output by comparing 20 years of baseline data (1986-2005) against a future period (20241-2060).
    \n", + "To do so, you have:\n", + " \n", + "- calculated and plotted seasonal mean changes in temperature and precipitation\n", + "- masked out ocean data to focus on changes over land\n", + "- calculated anomalies by comparing future data to the historical mean period\n", + "- plotted time series of both temperature and precipitation anomalies over land for two different models
    \n", + "\n", + "In worksheet 5, you will investigate climate extremes by investigating threshold and extreme climate indicies.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    \"python

    \n", + "
    © Crown Copyright 2022, Met Office
    " + ] + } + ], + "metadata": { + "instance_type": "ml.t3.medium", + "kernelspec": { + "display_name": "pyprecis-environment", + "language": "python", + "name": "pyprecis-environment" + }, + "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.6.10" + }, + "widgets": { + "state": {}, + "version": "1.1.2" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/AFR-22/worksheet5.ipynb b/notebooks/AFR-22/worksheet5.ipynb new file mode 100755 index 0000000..4a6d417 --- /dev/null +++ b/notebooks/AFR-22/worksheet5.ipynb @@ -0,0 +1,853 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Worksheet 5: Thresholds and climate extremes\n", + "The following exercises demonstrate analysis of moderate extremes in climate simulated in CORDEX. As with the other worksheets, these are just examples of some of the analysis that you might perform using packages such as Python and and the python Library IRIS.\n", + "\n", + "The basis of climate extremes analysis is a common set of standard extreme climate indices, defined by the World Climate Research Programme [Expert Team on Climate Change Detection and Indices (ETCCDI)](https://www.wcrp-climate.org/etccdi).\n", + "\n", + "There are 27 climate extremes indices, nicely summarised by the [Climdex](https://www.climdex.org/learn/indices/) website. You can read more about them in the frame below..." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from IPython.display import IFrame\n", + "IFrame('https://www.climdex.org/learn/indices/', width=950, height=350)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this worksheet we'll be looking at wet days, a threshold measure giving the count of days when $\\mathrm{pr} \\geq 1 mm \\;day^{-1}$, and **R95p**, the 95th percentile of precipitation on wet days ($\\mathrm{pr} \\geq 1 mm \\;day^{-1}$) in the 1986-2005 period." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "By the end of this worksheet you should be able to:
    \n", + "- Have an appreciation for working with daily model data
    \n", + "- Understand how to calculate some useful climate extremes statistics
    \n", + "- Be aware of some coding stratagies for dealing with large data sets
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contents\n", + "### [5.1: Frequency of Wet days](#5.1) \n", + "### [5.2: Calculating percentiles](#5.2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Preamble" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Code preamble - these libraries will be used in this worksheet.\n", + "# This code block needs to be re-run every time you restart this worksheet!\n", + "%matplotlib inline \n", + "import os\n", + "import iris\n", + "import iris.coord_categorisation\n", + "import iris.quickplot as qplt\n", + "import iris.plot as iplt\n", + "from iris.time import PartialDateTime\n", + "import cartopy.crs as ccrs\n", + "import cartopy.feature as cfeature\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import dask\n", + "dask.config.set(scheduler=dask.get)\n", + "import dask.array as da\n", + "from iris.analysis import Aggregator\n", + "\n", + "# Some helpful data locations\n", + "DATADIR = 'data_v2/EAS-22'\n", + "CLIMDIR = os.path.join(DATADIR, 'climatology')\n", + "HISTDIR = os.path.join(DATADIR, 'historical')\n", + "FUTRDIR = os.path.join(DATADIR, 'future')\n", + "CHIRPSDIR = os.path.join('data_v2', 'CHIRPS')\n", + "GCMIDS = ['hadgem2-es', 'mpi-esm-lr']\n", + "TIME_PERIODS = {'historical':'1986_2005', 'future':'2041_2060'}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + " Question: Thinking about climate extremes, what model averaging period should we be using for our data analysis? Why?
    \n", + " How do we identify this model avergaing period in the model output filenames?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + "*Type your answer here...*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 5.1 Frequency of wet days\n", + "\n", + "**a)** Start by finding the frequency of wet days using daily data for both _HadGEM2-ES_ and _MPI-ESM-LR_ driven runs. Calculate the number of days in both the baseline and future periods which are wet days - **a wet day is defined as having precipitation >=1 mm/day**. Then calculate the percentage of wet days.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# For each day: is rainfall >= 1? True/False\n", + "# Sum over all days to get number of wet days at each grid point\n", + "# Do for both model simulations and time periods\n", + "# Then calcuate the percentage of wet days.\n", + "\n", + "# Define a new aggregator to help count non-zero days\n", + "# (This uses a dask array to reduce memory load)\n", + "# To learn more about custom aggregators see\n", + "# https://scitools.org.uk/iris/docs/v2.4.0/examples/General/custom_aggregation.html#general-custom-aggregation \n", + "\n", + "count_nonzero = Aggregator('count', None,\n", + " units_func=lambda units: 1,\n", + " lazy_func=da.count_nonzero)\n", + "\n", + "for gcmid in GCMIDS:\n", + " for period in TIME_PERIODS.keys():\n", + " # Get path to daily data\n", + " infile = os.path.join(DATADIR, period, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.pr.*.nc')\n", + " data = iris.load_cube(infile)\n", + " # Select only wet days using our custom aggregator\n", + " model_wetdays = data.collapsed('time', count_nonzero)\n", + " model_wetdays.rename(f'{gcmid} number of wet days (>=1mm/day) {TIME_PERIODS[period]}')\n", + " # Save the file\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.wetday.nc')\n", + " iris.save(model_wetdays, outfile)\n", + " print(f'Saved: {outfile}')\n", + " \n", + " # Find wet days as a percentage of total days\n", + " total_days = len(data.coord('time').points) \n", + " model_pcent_wetdays = (model_wetdays / total_days) * 100\n", + " # Add metadata\n", + " model_pcent_wetdays.rename(f'{gcmid} percentage of wet days (>=1mm/day) {TIME_PERIODS[period]}')\n", + " model_pcent_wetdays.units = '%'\n", + "\n", + " # Save the file\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.wetday.pcent.nc')\n", + " iris.save(model_pcent_wetdays, outfile)\n", + " print('Saved: {}'.format(outfile))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "**b) Calculate numbers of wet days and percentage of wet days from the _CHIRPS_ observations**. \n", + "\n", + "Climate Hazards Group InfraRed Precipitation with Station data ([CHIRPS](https://chc.ucsb.edu/data/chirps)) is a 35+ year quasi-global rainfall data set. Spanning 50°S-50°N (and all longitudes) and ranging from 1981 to near-present, CHIRPS incorporates climatology, 0.05° resolution satellite imagery, and in-situ station data to create gridded rainfall time series for trend analysis and seasonal drought monitoring. \n", + "\n", + "We'll use CHIRPS as our observational data from which to compare our CORDEX model data.\n", + "\n", + "**Fill in the missing code** to calculate the observed wet days: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load CHIRPS daily precipitation data, but only period of interest\n", + "historical_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", + " <= cell.point <= PartialDateTime(year=2005))\n", + "\n", + "infile = os.path.join(CHIRPSDIR, 'chirps-v2.0_pr_day_1981-2018_p25.nc')\n", + "\n", + "# Find number of wet days\n", + "\n", + "# Save wet days cube\n", + "outfile = os.path.join(CLIMDIR, 'chirps.wetday.nc')\n", + "\n", + "# Find number of days in dataset (number_chirps_days)\n", + "\n", + "# Find wet days as percent of all chirps days \n", + "\n", + "# Save \n", + "outfile = os.path.join(CLIMDIR, 'chirps.wetday.pcent.nc')\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + " Question: Are there any additional considerations that have to be made with daily data?
    \n", + " From a coding perspective, how does working with daily data compare to working with monthly data?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer
    \n", + "*Type your answer here...*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plotting" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**c)** **Plot** the modelled and observed **numbers of wet days** from 1986-2005. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Plot modelled and observed numbers of wet days for a common baseline period.\n", + "# Create a figure of the size desired\n", + "fig = plt.figure(figsize=(16, 4))\n", + "fig.suptitle('Number of wet days (1986-2005)', fontsize=16)\n", + "\n", + "# Set common limits for each subplot\n", + "cbar_lims=(0,number_chirps_days)\n", + "easia_domain = [70,160,10,50]\n", + "\n", + "# Load and plot the models' wet day count\n", + "for n, gcmid in enumerate(GCMIDS):\n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.1986_2005.GERICS-REMO2015.wetday.nc')\n", + " nwetdays = iris.load_cube(infile)\n", + " ax1 = fig.add_subplot(1, 3, n+1, projection=ccrs.PlateCarree())\n", + " qplt.pcolormesh(nwetdays, vmin=cbar_lims[0], vmax=cbar_lims[1])\n", + " plt.title(gcmid)\n", + " ax1.coastlines() # adds coastlines defined by the axes of the plot\n", + " ax1.set_extent(easia_domain, crs=ccrs.PlateCarree())\n", + "\n", + "# Load and plot CHIRPS wet day count\n", + "infile = os.path.join(CLIMDIR, 'chirps.wetday.nc')\n", + "obs_nwetdays = iris.load_cube(infile)\n", + "fig.add_subplot(1, 3, 3, projection=ccrs.PlateCarree())\n", + "qplt.pcolormesh(obs_nwetdays, vmin=cbar_lims[0], vmax=cbar_lims[1])\n", + "plt.title('Observations (CHIRPS)')\n", + "ax = plt.gca() # gca function that returns the current axes\n", + "ax.coastlines()\n", + "ax.set_extent(easia_domain, crs=ccrs.PlateCarree())\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: Which of the following steps are required in order to calculate the model bias (the difference between CORDEX model output and observed data)?
    \n", + " \n", + "* Regrid data onto a common grid, to the finer (higher) resolution
    \n", + "* Regrid data onto a common grid, to the coarser (lower) resolution
    \n", + "* Convert CODREX data to a regular lat-lon grid if the simulation used a rotated pole
    \n", + "* Ensure the units are comparable (e.g not comparing K with C)
    \n", + " \n", + "Which of these steps are required when __comparing output for different time periods from the same model simulation__ (e.g. _future - baseline_ difference calculations)? \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer
    \n", + "Steps required to calculate the model bias:
    \n", + "* *type your answer here...*
    \n", + "\n", + "Steps required when comparing output from the same simulation:
    \n", + "* *type your answer here...*
    \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**d)** Calculate the **difference in modelled future and baseline** wet day frequency and also the **difference in modelled baseline and observation** wet day frequency." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load percentage of wet days data for the CHIRPS observations\n", + "infile = os.path.join(CLIMDIR, 'chirps.wetday.pcent.nc')\n", + "obs = iris.load_cube(infile)\n", + "# Add coordinate system information to facilitate regridding later\n", + "wgs84_cs = iris.coord_systems.GeogCS(6371229.0) \n", + "obs.coord('latitude').coord_system = wgs84_cs \n", + "obs.coord('longitude').coord_system = wgs84_cs\n", + "\n", + "# constrain the observations to a smaller domain \n", + "obs_sub = obs.intersection(longitude=(70, 160), latitude=(10, 50))\n", + "\n", + "\n", + "# The observed rainfall data have been created using surface rain gauges, and so are only available\n", + "# over land points. Define a mask to remove sea points. The mask is True for masked points.\n", + "mask = np.where(obs.data > 0.0, False, True)\n", + "\n", + "# Redefine the obs data array as a masked array.\n", + "obs.data = np.ma.array(obs.data, mask=mask)\n", + "\n", + "# Define regridding method\n", + "scheme = iris.analysis.Linear(extrapolation_mode='mask')\n", + "\n", + "for gcmid in GCMIDS:\n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.wetday.pcent.nc')\n", + " model_baseline = iris.load_cube(infile)\n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['future'] + '.GERICS-REMO2015.wetday.pcent.nc')\n", + " model_future = iris.load_cube(infile)\n", + " # In order to compare the modelled and observed numbers of wet days,\n", + " # the model data needs to be regridded to the CHIRPS grid\n", + " model_baseline_rg = model_baseline.regrid(obs_sub, scheme)\n", + " model_future_rg = model_future.regrid(obs_sub, scheme)\n", + "\n", + " # Find the difference between futue and baseline models\n", + " diff_model = model_future_rg - model_baseline_rg\n", + " diff_model.rename('{} change in number of wet days (>=1mm/day) 2041-2060 vs 1986-2005 ')\n", + " # Save the file\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.GERICS-REMO2015.wetday.pcent.diff.nc')\n", + " iris.save(diff_model, outfile)\n", + " print('Saved {}'.format(outfile))\n", + "\n", + " # Subtract the observed percentages of wet days from the modelled percentages\n", + " diff_mod_obs = model_baseline_rg - obs_sub\n", + " diff_mod_obs.rename(f'{gcmid} number of wet days (>=1mm/day) bias compared to CHIRPS')\n", + " # Save the file\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.GERICS-REMO2015.wetday.pcent.bias.nc')\n", + " iris.save(diff_mod_obs, outfile)\n", + " print(f'Saved {outfile}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: A cube can be easily constrained to a given domain using the cube.intersection method. More information on this (and other) Iris cube functionality can be found in the Iris Documentation online.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**e)** **Plot the percentage change and model bias for wet day frequency**. \n", + "\n", + "**First**, run the code block below to produce a series of plots showing the model bias and future precipitation change for _cahpa_ and _cahpb_ simulations.
    \n", + "\n", + "As the model domain is smaller than the observations domain, you will see that the data is plotted on a domain which is larger than necessary. \n", + "\n", + "**Next, read the Iris documentation** to learn how to use the `cube.intersection` method, then **add the necessary code** below, to constrain the plots to the model domain.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Create a figure of the size 12x12 inches\n", + "plt.figure(figsize=(12, 12))\n", + "\n", + "\n", + "# Load the model's future percentage change in wet days (future - baseline)\n", + "for n, gcmid in enumerate(GCMIDS):\n", + " infile = os.path.join(CLIMDIR, gcmid + '.GERICS-REMO2015.wetday.pcent.diff.nc')\n", + " pcent_change = iris.load_cube(infile)\n", + " \n", + " # Add in a line of code to constrain the model domain to these coordinates: \n", + " # longitude=(70, 160)\n", + " # latitude=(10, 50)\n", + " pcent_change_subset = \n", + " \n", + " # plot percentage changes on first row\n", + " plt.subplot(2, 2, n+1)\n", + " qplt.pcolormesh(pcent_change_subset, \n", + " vmax=10, vmin=-10, cmap='BrBG')\n", + " plt.title(gcmid + ' future-historical \\n precipitation change (%)')\n", + " ax = plt.gca()\n", + " ax.coastlines()\n", + "\n", + " \n", + "# Load the percentage bias (differences in precipitation between the models and obs)\n", + "for n, gcmid in enumerate(GCMIDS):\n", + " infile = os.path.join(CLIMDIR, gcmid + '.GERICS-REMO2015.wetday.pcent.bias.nc')\n", + " pcent_bias = iris.load_cube(infile)\n", + " \n", + " # Add in a line of code to constrain the model domain to these lat-lon coordinates: \n", + " # longitude=(70, 160)\n", + " # latitude=(10, 50)\n", + " pcent_bias_subset = \n", + " \n", + " # plot bias on the second row\n", + " plt.subplot(2, 2, n+3)\n", + " qplt.pcolormesh(pcent_bias_subset, \n", + " vmax=20, vmin=-20, cmap='BrBG')\n", + " plt.title(gcmid + ' model-observations \\n precipitation difference (%)')\n", + " ax = plt.gca()\n", + " ax.coastlines()\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + " Question:
    \n", + "\n", + "* Which simulation (HadGEM2-ES or MPI-ESM-LR) has better agreement with observations for wet day frequency?
    \n", + "* What is the magnitude and location of any notable wet or dry biases for each simulation during the baseline period?
    \n", + "* Summarise the projected change in wet day frequency over South-East Asia for both simulations.
    \n", + "* Given any wet/dry biases in each simulation's baseline period, what adjustments might we make to our summary of projected change from HadGEM2-ES or MPI-ESM-LR? \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Answers:**\n", + "\n", + "Which simulation has better agreement with observations?\n", + " \n", + "* \n", + "\n", + " \n", + "Magnitude and location of any notable wet or dry biases:\n", + "\n", + "* HadGEM2-ES driven run: \n", + "* MPI-ESM-LR driven run: \n", + "\n", + "Summarise the projected change in wet day frequency:\n", + "\n", + "* HadGEM2-ES driven run: \n", + "* MPI-ESM-LR driven run: \n", + "\n", + "Adjustments in light of model bias:\n", + "\n", + "* HadGEM2-ES driven run: \n", + "* MPI-ESM-LR driven run: \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 5.2. Calculating percentiles\n", + "\n", + "**f)** Calculate in mm/day the baseline (1986-2005) and future (2041-2060) **95th percentile of precipitation**. Do this for HadGEM2-ES, MPI-ESM-LE driven runs and also for CHIRPS baseline.\n", + "\n", + "This introduces some new processing challenges: **the size of the daily future data set is (probably) too large to load into memory**. Sometimes Iris can handle this for us (see [Iris and Lazy Data](https://scitools.org.uk/iris/docs/v2.4.0/userguide/real_and_lazy_data.html)), but in this case we need to manually **'chunk' the data to load and process smaller sections**. This way Iris only loads a section of the data at a time and keeps within the memory limits imposed by this computer." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Specify the number of chunks for the lat and lon dimensions\n", + "# This will give us 3 x 3 = 9 cubes\n", + "steps = (3, 3) \n", + "\n", + "# Define a helper function to extract our cube chunks\n", + "def chunks(cube, x, y):\n", + " \"\"\"Yield successive x-y sized chunks from cube\"\"\"\n", + " for i in range(0, cube.coord(axis='x').shape[0], x):\n", + " for j in range(0, cube.coord(axis='y').shape[0], y):\n", + " yield cube[:, j:j + y, i:i + x]\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now process the data:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Loop over job ID and time period\n", + "for gcmid in GCMIDS:\n", + " for period in TIME_PERIODS.keys():\n", + " infile = os.path.join(DATADIR, period, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.pr.mmday-1.nc')\n", + " model_precip = iris.load_cube(infile)\n", + " # if cube has both latitude (2d true latitude) and grid_latitude, then\n", + " # coord(axis='y') does not work, so remove unused 'latitude' and 'longitude'\n", + " model_precip.remove_coord('latitude')\n", + " model_precip.remove_coord('longitude')\n", + " \n", + " # Calculate lat-lon chunks in terms of their index\n", + " lat_chunk = int(model_precip.coord(axis='y').shape[0] / steps[0])\n", + " lon_chunk = int(model_precip.coord(axis='x').shape[0] / steps[1])\n", + " # Make list of cubes\n", + " subcubes = list(chunks(model_precip, lon_chunk, lat_chunk))\n", + " # Loop through subcubes\n", + " model_pc95 = iris.cube.CubeList()\n", + " for cube in subcubes:\n", + " model_pc95.append(cube.collapsed('time', iris.analysis.PERCENTILE, percent=95.))\n", + " # Concatenate the cube list back into one cube\n", + " model_pc95 = model_pc95.concatenate_cube()\n", + " # Give cube a helpful name\n", + " model_pc95.rename(f'R95p of {gcmid} daily rainfall {TIME_PERIODS[period]}')\n", + " # Save output\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.day.pc95.' + TIME_PERIODS[period] + '.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(model_pc95, outfile)\n", + " print(f'Saved: {outfile}')\n", + " # Tidy up memory\n", + " del model_precip, model_pc95" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + " Question: Why can we only 'chunk' in the lat-lon dimensions? Why can't we 'chunk' the time dimension?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer
    \n", + "Type your answer here..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now do the same for the CHIRPS data. First we take a subset of the CHIRPS data to make the code run quicker - constraining the data in time to the same period as the RCM data above and in space to a similar area to the EAS-22 domain (62-185 degrees longitude, -2 to 50 degree latitude)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "historical_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", + " <= cell.point <= PartialDateTime(year=2005))\n", + "# now load CHIRPS daily data\n", + "infile = os.path.join(CHIRPSDIR, 'chirps-v2.0_pr_day_1981-2018_p25.nc')\n", + "obs_precip = iris.load_cube(infile, historical_time_constraint)\n", + "obs_precip = obs_precip.intersection(longitude=(62, 185), latitude=(-2, 50))\n", + "\n", + "\n", + "# save this to disk \n", + "subsetfile = os.path.join(CHIRPSDIR, 'chirps-v2.0_pr_day_1986-2005_p25_eastasia.nc')\n", + "iris.save(obs_precip, subsetfile)\n", + "\n", + "# save memory\n", + "del obs_precip\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Repeat the percentile calculation for the CHIRPS data\n", + "\n", + "# load subset of CHRIRPS in \n", + "obs_precip = iris.load_cube(subsetfile)\n", + "\n", + "# Calculate lat-lon chunks in terms of their index\n", + "lat_chunk = int(obs_precip.coord(axis='y').shape[0] / steps[0])\n", + "lon_chunk = int(obs_precip.coord(axis='x').shape[0] / steps[1])\n", + "\n", + "# Make list of cubes\n", + "subcubes = list(chunks(obs_precip, lon_chunk, lat_chunk))\n", + "# Loop through subcubes\n", + "obs_pc95 = iris.cube.CubeList()\n", + "for cube in subcubes:\n", + " cube.data = np.ma.filled(cube.data, np.nan)\n", + " obs_pc95.append(cube.collapsed('time', iris.analysis.PERCENTILE, percent=95.))\n", + " print(f'Done {len(obs_pc95)} chunks')\n", + "\n", + "# Concatenate the cube list back into one cube\n", + "obs_pc95 = obs_pc95.concatenate_cube()\n", + "\n", + "# Redefine the data array of pc95 as a masked array. \n", + "obs_pc95.data = np.ma.masked_where(np.isnan(obs_pc95.data), obs_pc95.data)\n", + "outfile = os.path.join(CLIMDIR, 'chirps.pc95.1986_2005.mmday-1.nc')\n", + "iris.save(obs_pc95, outfile)\n", + "print(f'Saved: {outfile}')\n", + "\n", + "# Tidy up memory\n", + "del obs_precip, obs_pc95" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "**g)** **Calculate the change in extreme precipitation** _(the difference between the future and baseline 95th percentiles of precipitation)_ **and the associated model bias** _(the difference between the baseline and CHIRPS 95th percentiles of precipitation)._\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Define WGS84 coordinate system\n", + "wgs84 = iris.coord_systems.GeogCS(semi_major_axis=6378137.0, inverse_flattening=298.257223563)\n", + "\n", + "# Load CHIRPS data\n", + "infile = os.path.join(CLIMDIR, 'chirps.pc95.1986_2005.mmday-1.nc')\n", + "obs_cube = iris.load_cube(infile)\n", + "obs_cube.coord('latitude').coord_system = wgs84 \n", + "obs_cube.coord('longitude').coord_system = wgs84\n", + "\n", + "# constrain the observations to a smaller domain \n", + "obs_cube = obs_cube.intersection(longitude=(70, 160), latitude=(10, 50))\n", + "\n", + "\n", + "# Define regridding method\n", + "scheme = iris.analysis.Linear(extrapolation_mode='mask')\n", + "\n", + "for gcmid in GCMIDS:\n", + " # First, calculate the difference between the modelled future and baseline 95th percentiles\n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.pc95.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + " print(infile)\n", + " model_base = iris.load_cube(infile)\n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.pc95.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", + " model_fut = iris.load_cube(infile)\n", + " diff = iris.analysis.maths.subtract(model_fut, model_base)\n", + " diff.rename(f'{gcmid} change in R95p (future - historical)')\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.day.pc95.diff.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(diff, outfile)\n", + " print('Saved: {}'.format(outfile))\n", + "\n", + " # Next, calculate the differences between the modelled baseline and observed 95th percentiles\n", + " # Remember, to compare the model and observations, the model data need to be regridded.\n", + " model_base_rg = model_base.regrid(obs_cube, scheme)\n", + " bias = obs_cube.copy()\n", + " bias.data = model_base_rg.data - obs_cube.data\n", + " bias.rename(f'{gcmid} bias in R95p (model - obs)')\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.day.pc95.bias.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(bias, outfile)\n", + " print(f'Saved: {outfile}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**h)** **Plot the differences in the 95th percentiles** between the models and observations, and the future changes in the 95th percentiles of precipitation from both models.\n", + "\n", + "**Complete the code block to plot the figures...**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: You will probably find it useful to consult the matpltlib documentation to help you produce your plots. In this case, take a look at the plt.subplot() docs to help you arrange your plots: plt.subplot().\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# HINT: The filenames have the following pattern: gcmid + '.day.pc95.bias.pr.mmday-1.nc'\n", + "# Create a figure of the size 12x12 inches\n", + "plt.figure(figsize=(12, 12))\n", + "\n", + "for n, gcmid in enumerate(GCMIDS):\n", + " # HINT: Use the `n` variable to help arrange you plots using: plt.subplot()\n", + " # Use the matplotlib documention to help you! \n", + "\n", + " # Load and plot the model bias (model - obs)\n", + "\n", + " # Load and plot the percentage change in precipitation between future and baseline\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + " Question:
    \n", + "\n", + "* Where do we see the greatest changes in extreme precipitation for each simulation?
    \n", + "* Comment on each model's ability to reprent observed extremes in precipitation at the 95th percentile.
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Answer:**\n", + "\n", + "Greatest changes:\n", + "\n", + "* HadGEM2-ES driven run: \n", + "* MPI-ESM-LR driven run: \n", + "\n", + "Abilty to represent observed extremes:\n", + "\n", + "* HadGEM2-ES driven run: \n", + "* MPI-ESM-LR driven run: \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "This completes worksheet 5.
    You have calculated and compared climate indices for future and baseline rainfall. You have also learned an effective method for working with large quantities of daily data.
    \n", + "In the final worksheet you will combine all the techniques learned to this point, through writing your own code to post-process and analyse CORDEX simulations of extreme temperature over East Asia. \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    \"python

    \n", + "
    © Crown Copyright 2022, Met Office
    " + ] + } + ], + "metadata": { + "instance_type": "ml.t3.medium", + "kernelspec": { + "display_name": "pyprecis-environment", + "language": "python", + "name": "pyprecis-environment" + }, + "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.6.10" + }, + "widgets": { + "state": {}, + "version": "1.1.2" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/AFR-22/worksheet6.ipynb b/notebooks/AFR-22/worksheet6.ipynb new file mode 100755 index 0000000..a2bab3c --- /dev/null +++ b/notebooks/AFR-22/worksheet6.ipynb @@ -0,0 +1,258 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Worksheet 6: Investigating Extremes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This final worksheet is a chance for you to put together all the techniques you have learned in the previous worksheets.\n", + "\n", + "Working with the same datasets, write some code to undertake an analysis of temperature extremes over our East Asia domain.\n", + "\n", + "You have the following datasets available to you:\n", + "\n", + "**CORDEX data** (REMO2015 dowscaling _HadGEM2-ES_ and _MPI-EMS-LR_)\n", + " * Maximum daily temperature\n", + " * Minimum daily temperature\n", + " * Mean daily temperature\n", + " * Daily precipitation flux\n", + " * Monthly mean preciptation and temperature data as used in previous worksheets\n", + "\n", + "**Observations**\n", + " * CHIRPS rainfall data\n", + " * CRU temperature data\n", + " \n", + "**Extremes indicies**
    \n", + "The full list of 27 core extreme indices are listed on the [CLIMDEX website](https://www.climdex.org/learn/indices/), or look at the summary table take from the IPCC AR5 report below. We suggest you look at one of the following:\n", + "\n", + " * Number of tropical nights (*TR*): $\\mathrm{TN}_{ij} > 20^{\\circ}C$\n", + " * Percentage of days when max temperature is > 90th percentile (*TX90p*): $\\mathrm{TX}_{ij} > \\mathrm{TX}_{in}90$\n", + " * Monthly maximum 1-day precipitation (*Rx1day*): $\\mathrm{Rx1day}_j = max (\\mathrm{RR}_{ij})$\n", + "\n", + "Speak to your instructor if you would like to look at alternative indicies.\n", + "\n", + "

    \"AR5

    \n", + "\n", + "**Table 1:** Definitions of extreme temperature and precipitation indices used in IPCC Assessment Report 5 (after Zhang et al., 2011). The most common units are shown but these may be shown as normalized or relative depending on application in different chapters. Figure, Tables and Section numbers refer to the IPCC AR5 report [here](https://www.ipcc.ch/report/ar5/wg1/)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "By the end of this worksheet you should be able to:
    \n", + "\n", + "- Build a coding workflow to undertake extremes analysis
    \n", + "- Understand the different stages of post-processing
    \n", + "- Have an appreciation of data storage and file naming issues.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Preamble" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Code preamble - these libraries will be used in this worksheet.\n", + "# This code block needs to be re-run every time you restart this worksheet!\n", + "%matplotlib inline \n", + "import os\n", + "import iris\n", + "import iris.coord_categorisation\n", + "import iris.quickplot as qplt\n", + "import iris.plot as iplt\n", + "import cartopy.crs as ccrs\n", + "import cartopy.feature as cfeature\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import dask\n", + "dask.config.set(get=dask.get)\n", + "import dask.array as da\n", + "from iris.analysis import Aggregator\n", + "\n", + "# Some helpful data locations\n", + + "DATADIR = 'data_v2/EAS-22'\n", + + "PPDIR = os.path.join(DATADIR, 'pp')\n", + "CLIMDIR = os.path.join(DATADIR, 'climatology')\n", + "HISTDIR = os.path.join(DATADIR, 'historical')\n", + "FUTRDIR = os.path.join(DATADIR, 'future')\n", + "APHRODIR = os.path.join(DATADIR, 'APHRODITE')\n", + "CRUDIR = os.path.join(DATADIR, 'CRU')\n", + "GCMIDS = ['hadgem2-es', 'mpi-esm']\n", + "TIME_PERIODS = {'historical':'1986-2005', 'future':'2041_2060'}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Step 1: Process raw CORDEX netCDF files" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Remember to:\n", + " * Select the raw data with the correct variable\n", + " * Remove incompatible attributes\n", + " * Concatenate into a single netCDF file\n", + " * Save the netCDF file so you can access it later" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "Step 1: Process the raw pp files\n", + "'''\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Step 2: Calculate the extreme index\n", + "\n", + "Remember to:\n", + " * Consider which observational data set to use for comparison\n", + " * Calculate the index for both the model data you prepared in step 1, but also the observed data\n", + " * Calculate the index for present and future model periods\n", + " * Save your index data sets as a netCDF file with appropriate metadata" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "Step 2: Calculate the extreme index\n", + "'''\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Step 3: Plot some results\n", + "\n", + "Remember to:\n", + " * Think about plotting absolute values, differences, or scaled differences. Which one communicates your message best?\n", + " * Choose an appropriate colour scale" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "Step 3: Plot some results\n", + "'''\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question:
    \n", + "Which extreme index did you chose to analyse?
    \n", + "Summarise the results of your analysis of this extreme index.
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer
    \n", + "_Summarise the results of your extremes analysis here..._" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "This completes worksheet 6.
    \n", + "You have independently converted raw CORDEX output into files ready for analysis and used them to undertake scientific verification and analysis of a commonly recognised extreme index. \n", + " \n", + "These will be the same steps required to post-process and analyse CORDEX simulations over your region of interest, so keep hold of these worksheets to refer back to in the future. \n", + "
    \n", + "
    \n", + "\n", + "_Useful resources for future work is available online:_
    \n", + "* [IRIS Documentation](https://scitools.org.uk/iris/docs/v2.4.0/userguide/index.html) is the first port of call for IRIS usage.
    \n", + "* [Stack Overflow - Python](https://stackoverflow.com/questions/tagged/python) provides solutions for common Python queries.
    \n", + "* [Stack Overflow - Iris](https://stackoverflow.com/questions/tagged/python-iris) is a forum for queries about Iris.
    \n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    \"python

    \n", + "
    © Crown Copyright 2022, Met Office
    " + ] + } + ], + "metadata": { + "instance_type": "ml.t3.medium", + "kernelspec": { + + "display_name": "pyprecis-environment", + "language": "python", + "name": "pyprecis-environment" + + }, + "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.6.10" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/AFR-22/worksheet6example.ipynb b/notebooks/AFR-22/worksheet6example.ipynb new file mode 100755 index 0000000..639a7df --- /dev/null +++ b/notebooks/AFR-22/worksheet6example.ipynb @@ -0,0 +1,392 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Worksheet 6 example code\n", + "\n", + "## Example 1 Frequency of warm days (TX90P) in the future\n", + "\n", + "Calculate the baseline (1986-2005) 90th percentile of maximum temperature. Then calculate the frequency of warm days in the future (2041-2060). Do this for HadGEM2-ES and MPI-ESM-LR." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Code preamble - these libraries will be used in this worksheet.\n", + "# This code block needs to be re-run every time you restart this worksheet!\n", + "%matplotlib inline \n", + "import os\n", + "import iris\n", + "import iris.coord_categorisation\n", + "import iris.quickplot as qplt\n", + "import iris.plot as iplt\n", + "from iris.experimental.equalise_cubes import equalise_attributes\n", + "import cartopy.crs as ccrs\n", + "import cartopy.feature as cfeature\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from iris.analysis import Aggregator\n", + "\n", + "# Some helpful data locations\n", + "DATADIR = 'data_v2'\n", + "CHIRPSDIR = os.path.join(DATADIR, 'CHIRPS')\n", + "CRUDIR = os.path.join(DATADIR, 'CRU')\n", + "CLIMDIR = os.path.join(DATADIR, 'EAS-22', 'climatology/')\n", + "MODELDIR = os.path.join(DATADIR, 'EAS-22/')\n", + "GCMIDS = ['hadgem2-es', 'mpi-esm-lr']\n", + "GCM_FULL = {'hadgem2-es':'MOHC-HadGEM2-ES' , 'mpi-esm-lr':'MPI-M-MPI-ESM-LR'}\n", + "TIME_PERIODS = {'historical':'1986_2005', 'rcp85':'2041_2060'}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First calculate the 90th percentile of tsmax in the baseline and future periods for both set of downscaled GCMs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Define a helper function to extract our cube chunks\n", + "def chunks(cube, x=200, y=200):\n", + " \"\"\"\n", + " Yield successive x-y sized chunks from cube,\n", + " works for 3D Time-Lat-Lon\n", + " \n", + " Args:\n", + " cube (Iris cube): input cube to be chunked\n", + " x: size of chunks in x direction\n", + " y: size of chunk in y direction\n", + " \"\"\"\n", + " coord_names = [coord.name() for coord in cube.coords()]\n", + " if 'grid_latitude' in coord_names and 'latitude' in coord_names:\n", + " cube.remove_coord('latitude')\n", + " if 'grid_longitude' in coord_names and 'longitude' in coord_names:\n", + " cube.remove_coord('longitude')\n", + " \n", + " for i in range(0, cube.coord(axis='x').shape[0], x):\n", + " for j in range(0, cube.coord(axis='y').shape[0], y):\n", + " yield cube[:, j:j + y, i:i + x]\n", + "\n", + " \n", + "def chunks_2d(cube, x=200, y=200):\n", + " coord_names = [coord.name() for coord in cube.coords()]\n", + " if 'grid_latitude' in coord_names and 'latitude' in coord_names:\n", + " cube.remove_coord('latitude')\n", + " if 'grid_longitude' in coord_names and 'longitude' in coord_names:\n", + " cube.remove_coord('longitude')\n", + " \n", + " for i in range(0, cube.coord(axis='x').shape[0], x):\n", + " for j in range(0, cube.coord(axis='y').shape[0], y):\n", + " yield cube[j:j + y, i:i + x]\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for gcmid in GCMIDS:\n", + " for period in TIME_PERIODS.keys():\n", + " filename = f'tasmax_EAS-22_{GCM_FULL[gcmid]}_{period}_*GERICS-REMO2015*_*_day_*.nc'\n", + " model_tasmax = iris.load(MODELDIR + filename)\n", + " # solve merge issues\n", + " equalise_attributes(model_tasmax)\n", + " model_tasmax = model_tasmax.concatenate_cube()\n", + "\n", + " # 90th percentile calculation\n", + " model_pc90 = iris.cube.CubeList()\n", + " for model_data in chunks(model_tasmax):\n", + " model_pc90_chk = model_data.collapsed('time', iris.analysis.PERCENTILE, percent=90.0)\n", + " model_pc90.append(model_pc90_chk)\n", + " model_pc90 =model_pc90.concatenate_cube()\n", + "\n", + " # save to file\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.tasmax.90pc.nc')\n", + " print(f'saving to file: {outfile}')\n", + " iris.save(model_pc90, outfile)\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Calculate the frequency of warm days in the future (extreme index TX90P), i.e. the number of days which exceed the 90th percentile temperatures in the baseline. Then calculate the numbers of days as a percentage.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for gcmid in GCMIDS:\n", + " \n", + " # load daily data for future \n", + " filename = f'tasmax_EAS-22_{GCM_FULL[gcmid]}_rcp85_*GERICS-REMO2015*_*_day_*.nc'\n", + " future_tasmax = iris.load(MODELDIR + filename)\n", + "\n", + " # solve merge issues\n", + " equalise_attributes(future_tasmax)\n", + " future_tasmax = future_tasmax.concatenate_cube() \n", + " ndays = len(future_tasmax.coord('time').points)\n", + " \n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.tasmax.90pc.nc')\n", + " print(infile)\n", + " hist_90pc = iris.load_cube(infile)\n", + " \n", + " \n", + " # need to do next operation chunking data, also chunk 90th percentile \n", + " nwarmdays_future = iris.cube.CubeList() \n", + " for chunk_ft_tasmax, chunk_hist_90pc in zip(chunks(future_tasmax), chunks_2d(hist_90pc)):\n", + "\n", + " # Use np.where to identify all cells where daily temperatures \n", + " # in the future exceed the 90th percentile\n", + " assert(chunk_ft_tasmax.coord('grid_longitude') == chunk_hist_90pc.coord('grid_longitude'))\n", + " assert(chunk_ft_tasmax.coord('grid_latitude') == chunk_hist_90pc.coord('grid_latitude'))\n", + " temp_gt_chunk = np.where(chunk_ft_tasmax.data >= chunk_hist_90pc.data, 1, 0)\n", + " \n", + " # use the 90th percentile cube as a template to copy warm days data into \n", + " nwarmdays_future_chunk = chunk_hist_90pc.copy()\n", + " nwarmdays_future_chunk.data = np.ma.sum(temp_gt_chunk.data, axis=0)\n", + " nwarmdays_future.append(nwarmdays_future_chunk)\n", + " \n", + " nwarmdays_future = nwarmdays_future.concatenate_cube()\n", + "\n", + " # the sum above removes the mask - reinstate it with \n", + " nwarmdays_future.data.mask = hist_90pc.data.mask\n", + " nwarmdays_future.units = '1'\n", + " nwarmdays_future.rename('days > 90th %ile of baseline ')\n", + " \n", + " print (\"Saving numbers of warm days in the future from \" + gcmid)\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.tasmax.nwarmdays.nc')\n", + " iris.save(nwarmdays_future, outfile)\n", + " \n", + " # calculate percentage of days (see below)\n", + " nwarm_pc = nwarmdays_future/ndays*100.\n", + " nwarm_pc.units = '%'\n", + " nwarm_pc.rename('percentage of days T > 90th %ile of baseline ')\n", + " \n", + " # save percentage\n", + " print (\"Saving precentage of warm days in the future from \" + gcmid)\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.tasmax.nwarmpc.nc') \n", + " iris.save(nwarm_pc, outfile)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plot the numbers of warm days in the future and the percentage of warm days." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.figure(figsize=(12, 12))\n", + "\n", + "for i, gcmid in enumerate(GCMIDS):\n", + " \n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.tasmax.nwarmdays.nc')\n", + " nwarmdays = iris.load_cube(infile)\n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.tasmax.nwarmpc.nc') \n", + " nwd_pcent = iris.load_cube(infile)\n", + "\n", + " plotnum = 1 + 2*i\n", + " plt.subplot(2, 2, plotnum)\n", + " qplt.pcolormesh(nwarmdays, vmin=0, vmax=10000)\n", + " plt.title(gcmid + ': Number of warm days')\n", + " plt.gca().coastlines()\n", + " plt.subplot(2, 2, plotnum+1)\n", + " qplt.pcolormesh(nwd_pcent, vmin=0, vmax=30)\n", + " plt.title(gcmid + ': Percentage of warm days')\n", + " plt.gca().coastlines()\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2. Percentage of total precipitation which falls on very wet days\n", + "\n", + "Calculate the percentage of total precipitation which falls on very wet days in the future over Thailand\n", + "(where a very wet day is one on which daily rainfall exceeds the 95th percentile of the baseline).\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First find the 95th percentile of rainfall during baseline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for gcmid in GCMIDS:\n", + " filename = f'pr_EAS-22_{GCM_FULL[gcmid]}_historical_*GERICS-REMO2015*_*_day_*.nc'\n", + " model_pr = iris.load(MODELDIR + filename)\n", + " # solve merge issues\n", + " equalise_attributes(model_pr)\n", + " model_pr = model_pr.concatenate_cube()\n", + "\n", + " # 95th percentile calculation\n", + " model_pc95 = iris.cube.CubeList()\n", + " for model_data in chunks(model_pr):\n", + " model_pc95_chk = model_data.collapsed('time', iris.analysis.PERCENTILE, percent=95.0)\n", + " model_pc95.append(model_pc95_chk)\n", + " model_pc95 = model_pc95.concatenate_cube()\n", + "\n", + " # save to file\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.pr.95pc.nc')\n", + " print(f'saving to file: {outfile}')\n", + " iris.save(model_pc95, outfile)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Coordinates of a box around Thailand\n", + "thai_lons = np.array([98.0, 98.0, 105.0, 105.0])\n", + "thai_lats = np.array([10.0, 21.0, 10.0, 21.0])\n", + "\n", + "# Load a cube on the rotated grid\n", + "gcmid = 'hadgem2-es'\n", + "infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.pr.95pc.nc')\n", + "rotg = iris.load_cube(infile)\n", + "rcs = rotg.coord('grid_latitude').coord_system\n", + "\n", + "# Get the rotated pole coordinates\n", + "pole_lat = rcs.grid_north_pole_latitude\n", + "pole_lon = rcs.grid_north_pole_longitude\n", + "\n", + "# Convert the coordinates of a box around Thailand from real coordinates to rotated polar coordinates\n", + "grid_lons, grid_lats = iris.analysis.cartography.rotate_pole(thai_lons, thai_lats, pole_lon, pole_lat)\n", + "\n", + "# Find the max / min of the lons / lats on the rotated grid. They will be used to extract the data around Malaysia\n", + "# N.B. The conversion to float is needed, as numpy data are of type float64 by default. If the coordinate limits\n", + "# are passed as float64, they are interpreted as a list of two floats and the program will stop with an error:\n", + "# ValueError: setting an array element with a sequence.\n", + "lon_0 = float(min(grid_lons))\n", + "lon_1 = float(max(grid_lons))\n", + "lat_0 = float(min(grid_lats))\n", + "lat_1 = float(max(grid_lats))\n", + "\n", + "# Set up constraints on the rotated grid for Thailand\n", + "lon_con = iris.Constraint(grid_longitude = lambda cell: lon_0 <= cell <= lon_1)\n", + "lat_con = iris.Constraint(grid_latitude = lambda cell: lat_0 <= cell <= lat_1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# loop over GCMs\n", + "for i, gcmid in enumerate(GCMIDS):\n", + " # load the RCP 8.5 daily precip data\n", + " file_f = f'pr_EAS-22_{GCM_FULL[gcmid]}*_rcp85_*_GERICS-REMO2015*_*_day_*.nc'\n", + "# precip = iris.load_cube(data_path + file_f, lon_con).intersection(grid_latitude = (-14.767, -5,623))\n", + " precip = iris.load(MODELDIR + file_f, lat_con & lon_con)\n", + " # solve merge issues\n", + " equalise_attributes(precip)\n", + " precip = precip.concatenate_cube()\n", + " \n", + " \n", + " # load the historical 95th percentile\n", + " file_f = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.pr.95pc.nc')\n", + " precip_pc95 = iris.load_cube(file_f, lat_con & lon_con)\n", + " \n", + "# Use broadcasting to identify all cells in precip where p95 is exceeded\n", + " pre_gt_pc95 = np.where(precip.data > precip_pc95.data, precip.data, 0.0)\n", + " pre_p95 = np.sum(pre_gt_pc95, axis=0)\n", + " pre_tot = precip.collapsed('time', iris.analysis.SUM)\n", + " pre_tot.data = np.divide(pre_p95, pre_tot.data, out=np.zeros_like(pre_tot.data), where = pre_tot.data != 0)\n", + " pre_tot = iris.analysis.maths.multiply(pre_tot, 100)\n", + " file_out = gcmid + '.R95pTOT.future.GERICS-REMO2015.nc'\n", + " iris.save(pre_tot, CLIMDIR + file_out)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plot the percentages of heavy rainfall in the future." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.figure(figsize=(12, 6))\n", + "\n", + "for i, gcmid in enumerate(GCMIDS):\n", + " filename = gcmid + '.R95pTOT.future.GERICS-REMO2015.nc'\n", + " pcent_heavy_rain = iris.load_cube(CLIMDIR + filename)\n", + " plotnum = 1 + i\n", + " plt.subplot(1, 2, plotnum)\n", + " qplt.pcolormesh(pcent_heavy_rain, vmin=0, vmax=100)\n", + " plt.title(gcmid + ': Percentage of heavy rain \\n over Thailand in the future')\n", + " plt.gca().coastlines()\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.10" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebooks/AFR-22/worksheet_solutions.ipynb b/notebooks/AFR-22/worksheet_solutions.ipynb new file mode 100755 index 0000000..a643be1 --- /dev/null +++ b/notebooks/AFR-22/worksheet_solutions.ipynb @@ -0,0 +1,461 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Worksheet Solutions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2.2c\n", + "\n", + "Complete the following code block to repeat the same procedure for MPI-ESM-LR:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Print the current MPI-ESM-LR cube units\n", + "print(f'The current unit for data is: {mpiesm.units}')\n", + "\n", + "# convert units to kg m-2 day-1\n", + "mpiesm.convert_units('kg m-2 day-1')\n", + "\n", + "\n", + "# Rename the units to mm day-1. Recall that 1 kg m-2 is equivalent to 1 mm of rain\n", + "mpiesm.units = 'mm day-1'\n", + "\n", + "# Save the new cube as a new netCDF file using the `outfile` filename we've provided below!\n", + "outfile = os.path.join(OUTDIR, 'mpi-esm-lr.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + "\n", + "iris.save(mpiesm, outfile)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2.3e\n", + "\n", + "Answer: Write the line of code required to calculate CHIRPS's (a) standard deviation and (b) annual maximum rainfall in the code block below.
    \n", + "Hint: How could you adapt chirps_ond.aggregated_by(['seasons'], iris.analysis.MEAN) from above? You can refer to the [Iris documentation](https://scitools.org.uk/iris/docs/v2.4.0/iris/iris/analysis.html) if needed." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# From chirps, calculate: \n", + "# (a) chirps_std \n", + "chirps_std = chirps_ond.aggregated_by(['seasons'], iris.analysis.STD_DEV) \n", + "\n", + "# (b) chirps_max\n", + "chirps_std = chirps.collapsed('time', iris.analysis.MAX) \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3.1a" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Enter the ordered latitude and longitude coordinates for Kuala Lumpur here:\n", + "# lon=( , ) # longitude (East - West extent)\n", + "# lat=( , ) # latuitude (South - North extent)\n", + "lon = (99.5, 100.5)\n", + "lat = (13.5, 14.5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3.2e part 1\n", + "\n", + "e) Find the multi-annual monthly means (1986-2005) over the BK area for CHIRPS observations by following the same methodology as above in step d). As before we've given you the input and output files names.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load the BK extracted data created in previous step\n", + "infile = os.path.join(CHIRPSDIR, 'chirps.mon.1986_2005.BK.nc')\n", + "data = iris.load_cube(infile)\n", + "\n", + "# Add monthly coord categorisation to the time dim coordinate\n", + "iris.coord_categorisation.add_month_number(data, 'time', name='month_number')\n", + "\n", + "# Now calculate monthly means\n", + "monthly_mean = data.aggregated_by(['month_number'], iris.analysis.MEAN)\n", + "\n", + "# and change units to mm/day\n", + "monthly_mean.convert_units('mm day-1')\n", + "\n", + "# create the area averaged monthly mean of daily rainfall\n", + "# Find latitude weights\n", + "monthly_mean.coord('longitude').guess_bounds()\n", + "monthly_mean.coord('latitude').guess_bounds()\n", + "grid_areas = iris.analysis.cartography.area_weights(monthly_mean)\n", + "# Calculate area averaged monthly mean rainfall\n", + "monthly_mean = monthly_mean.collapsed(['longitude', 'latitude'], iris.analysis.MEAN, \n", + " weights=grid_areas)\n", + "\n", + "\n", + "# Save output\n", + "outfile = os.path.join(CLIMDIR, 'chirps.mon.mean.1986_2005.mmday-1.nc')\n", + "iris.save(monthly_mean, outfile)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3.2e part 2\n", + " Plot the CHIRPS observations, compare with the HadGEM2-ES and MPI-ESM-LR driven REMO2015 runs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load the CHIRPS cube\n", + "inpath = os.path.join(CLIMDIR, 'chirps.mon.mean.1986_2005.mmday-1.nc')\n", + "cube = iris.load_cube(inpath) \n", + "\n", + "# Quick line plot for cube \n", + "qplt.plot(cube.coord('month_number'), cube)\n", + "plt.title('BK area averaged ' + gcm + '\\n monthly average of daily rainfall')\n", + "ax = plt.gca()\n", + "ax.xaxis.set_label_text('Month Number')\n", + "ax.set_xlim(0.5, 12.5)\n", + "ax.set_ylim(0, 16)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3.3f\n", + "Question: Now that the cubes are all on the same grid, what differences do you see?
    Complete the code template below to help answer this question." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Directory name where data is read from\n", + "indir = os.path.join(DATADIR, 'EAS-22', 'climatology')\n", + "\n", + "# load HadGEM2-ES downscaled model data\n", + "hadgem2 = iris.load_cube(f'{indir}/hadgem2-es.OND.mean.1986_2005.pr.mmday-1.rg.nc')\n", + "\n", + "# load MPI-ESM-LR downscaled model data\n", + "mpiesm = iris.load_cube(f'{indir}/mpi-esm-lr.OND.mean.1986_2005.pr.mmday-1.rg.nc')\n", + "\n", + "# load CHIRPS data and extract region\n", + "chirps = iris.load_cube(f'{indir}/chirps.OND.mean.1986_2005.pr.mmday-1.nc')\n", + "chirps = chirps.intersection(latitude=lat, longitude=lon)\n", + "\n", + "# Do some plotting!\n", + "plt.figure(figsize=(12, 10))\n", + "plt.subplot(1,3,1)\n", + "qplt.pcolormesh(hadgem2[0], vmin=0., vmax=8.)\n", + "plt.title('HadGEM2-ES')\n", + "plt.gca().coastlines()\n", + "plt.subplot(1,3,2)\n", + "qplt.pcolormesh(mpiesm[0], vmin=0., vmax=8.)\n", + "plt.title('MPI-ESM-LR')\n", + "plt.gca().coastlines()\n", + "plt.subplot(1,3,3)\n", + "qplt.pcolormesh(chirps[0], vmin=0., vmax=8.)\n", + "plt.title('CHIRPS')\n", + "plt.gca().coastlines()\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 4.2c\n", + "\n", + "Now, repeat the calculations yourself for **temperature**. \n", + "\n", + "First, we calculate the **OND mean** temperatures. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for gcmid in GCMIDS:\n", + " infile = os.path.join(FUTRDIR, gcmid + '.mon.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", + " data = iris.load_cube(infile)\n", + "\n", + " # in order to calculate OND mean, we divide the months into two seasons: \n", + " # one for OND and a second for the remaining months\n", + " iris.coord_categorisation.add_season(data, 'time', name='seasons', seasons=('jfmamjjas','ond'))\n", + "\n", + " # Extract the data for the OND season only\n", + " data_ond = data.extract(iris.Constraint(seasons='ond'))\n", + "\n", + " # Now calculate the mean over the OND season\n", + " ond_mean = data_ond.aggregated_by(['seasons'], iris.analysis.MEAN)\n", + "\n", + " # save the OND mean as a netCDF\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(ond_mean, outfile)\n", + " print('Saved: {}'.format(outfile))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 4.4h\n", + "Produce and plot a montly time series of temperature data** relative to the 1986-2005 baseline. As for (f) and (g) produce time series for HadGEM2-ES and MPI-ESM-LR driven runs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Read in the land-sea mask. \n", + "# The cube data array has a land fraction associated with it which we'll use to mask out ocean points.\n", + "land_fraction_file = 'sftlf_EAS-22_MOHC-HadGEM2-ES_historical_r0i0p0_GERICS-REMO2015_v1_fx_r0i0p0.nc'\n", + "land_fraction = iris.load_cube(DATADIR + land_fraction_file)\n", + "\n", + "# convert this to a binary (i.e. 1 or 0 mask)\n", + "land_sea_mask = land_fraction.copy()\n", + "land_sea_mask.data = np.where(land_sea_mask.data < 50, 0, 1)\n", + "land_sea_mask.name = 'land_binary_mask'\n", + "# apply a mask to the cube \n", + "land_sea_mask = iris.util.mask_cube(land_sea_mask, land_sea_mask.data < 0.5)\n", + "\n", + "\n", + "# Loop over GCMIDS\n", + "for gcmid in GCMIDS:\n", + " # Read in original data for baseline and future\n", + " baselinepath = os.path.join(HISTDIR, gcmid + '.mon.1986_2005.GERICS-REMO2015.tm.C.nc')\n", + " futurepath = os.path.join(FUTRDIR, gcmid + '.mon.2041_2060.GERICS-REMO2015.tm.C.nc')\n", + " baseline = iris.load_cube(baselinepath)\n", + " future = iris.load_cube(futurepath)\n", + " \n", + " # Apply land mask\n", + " baseline.data = ma.array(baseline.data, mask=baseline.data*land_sea_mask.data.mask[np.newaxis, :,:])\n", + " future.data = ma.array(future.data, mask=future.data*land_sea_mask.data.mask[np.newaxis, :,:])\n", + "\n", + " # remove the 2D \"true\" lat and lon\n", + " baseline.remove_coord('longitude')\n", + " baseline.remove_coord('latitude')\n", + " future.remove_coord('longitude')\n", + " future.remove_coord('latitude')\n", + " \n", + " # Guess bounds\n", + " for cube in [baseline, future]:\n", + " for coord in ['grid_longitude', 'grid_latitude']:\n", + " cube.coord(coord).guess_bounds()\n", + " \n", + " # Calculate mean values over land points\n", + " baseline_land = baseline.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN,\n", + " weights = iris.analysis.cartography.area_weights(baseline))\n", + " future_land = future.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN,\n", + " weights = iris.analysis.cartography.area_weights(future))\n", + "\n", + " # Save future & baseline area averaged monthly data (time series)\n", + " baselineout = os.path.join(CLIMDIR, gcmid + '.mon.1986_2005.series.GERICS-REMO2015.tm.C.nc')\n", + " futureout = os.path.join(CLIMDIR, gcmid + '.mon.2041_2060.series.GERICS-REMO2015.tm.C.nc')\n", + " iris.save(baseline_land, baselineout)\n", + " iris.save(future_land, futureout)\n", + "\n", + " # Subtract baseline from future\n", + " diff = future_land.copy()\n", + " diff.data = future_land.data - baseline_land.data.mean()\n", + " diff.rename('future anomaly relative to mean historical precipitation')\n", + "\n", + " # Save the area averaged monthly future anomalies (time series)\n", + " outpath = os.path.join(CLIMDIR, gcmid + '.mon.2041_2060.anom.series.GERICS-REMO2015.tm.C.nc')\n", + " iris.save(diff, outpath)\n", + " print('Saved: {}'.format(outpath)) \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Read in the monthly series\n", + "hadgem2es = iris.load_cube(CLIMDIR + '/hadgem2-es.mon.2041_2060.anom.series.GERICS-REMO2015.tm.C.nc')\n", + "mpiesm = iris.load_cube(CLIMDIR + '/mpi-esm-lr.mon.2041_2060.anom.series.GERICS-REMO2015.tm.C.nc')\n", + "time = hadgem2es.coord('time')\n", + "\n", + "# Plot the two model time series' on the same figure\n", + "plt.figure(figsize=(16,5))\n", + "iplt.plot(time, hadgem2es, label = 'HadGEM2-ES')\n", + "iplt.plot(time, mpiesm, label = 'MPI-ESM-LR')\n", + "plt.legend()\n", + "plt.suptitle('2041-2060 Temperature anomaly (relative to 1986-2005)')\n", + "plt.ylabel(f'Temperature change ({hadgem2es.units}')\n", + "plt.xlabel('Years')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 5.1b\n", + "\n", + "We'll use CHIRPS as our observational data from which to compare our CORDEX model data.\n", + "\n", + "**Fill in the missing code** to calculate the observed wet days: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load CHIRPS daily precipitation data, but only period of interest\n", + "historical_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", + " <= cell.point <= PartialDateTime(year=2005))\n", + "\n", + "infile = os.path.join(CHIRPSDIR, 'chirps-v2.0_pr_day_1981-2018_p25.nc')\n", + "obs = iris.load_cube(infile, historical_time_constraint)#, 'daily precipitation analysis interpolated onto 0.25deg grids [mm/day]')\n", + "\n", + "# Find number of wet days\n", + "chirps_wetdays = obs.collapsed('time', count_nonzero)\n", + "chirps_wetdays.rename(f'CHIRPS number of wet days (>=1mm/day)')\n", + "\n", + "# Save wet days cube\n", + "outfile = os.path.join(CLIMDIR, 'chirps.wetday.nc')\n", + "iris.save(chirps_wetdays, outfile)\n", + "\n", + "# Find number of days in dataset (number_chirps_days)\n", + "number_chirps_days = len(obs.coord('time').points)\n", + "\n", + "\n", + "# Find wet days as percent of all chirps days \n", + "chirps_pcent_wetdays = (chirps_wetdays / number_chirps_days) * 100\n", + "chirps_pcent_wetdays.rename(f'CHIRPS percent of wet days (>=1mm/day)')\n", + "chirps_pcent_wetdays.units='%'\n", + "\n", + "# Save \n", + "outfile = os.path.join(CLIMDIR, 'chirps.wetday.pcent.nc')\n", + "iris.save(chirps_pcent_wetdays, outfile)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 5.1e" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + " # Add in a line of code to constrain the model domain to these coordinates: \n", + " # longitude=(70, 160)\n", + " # latitude=(10, 50)\n", + " pcent_change_subset = pcent_change.intersection(longitude=(70, 160), latitude=(10, 50))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 5.2h\n", + "**Plot the differences in the 95th percentiles** between the models and observations, and the future changes in the 95th percentiles of precipitation from both models.\n", + "\n", + "**Complete the code block to plot the figures...**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Create a figure of the size 12x12 inches\n", + "plt.figure(figsize=(12, 12))\n", + "\n", + "for n, gcmid in enumerate(GCMIDS):\n", + " # HINT: Use the `n` variable to help arrange you plots using: plt.subplot()\n", + " # Use the matplotlib documention to help you! \n", + "\n", + " # Load and plot the model bias (model - obs)\n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.pc95.bias.GERICS-REMO2015.pr.mmday-1.nc')\n", + " bias = iris.load_cube(infile)\n", + " plt.subplot(2,2,2*n+1)\n", + " qplt.pcolormesh(bias)\n", + " plt.gca().coastlines()\n", + "\n", + "\n", + " # Load and plot the percentage change in precipitation between future and baseline\n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.pc95.diff.GERICS-REMO2015.pr.mmday-1.nc')\n", + " pc_change = iris.load_cube(infile)\n", + " plt.subplot(2,2,2*n+2)\n", + " qplt.pcolormesh(pc_change)\n", + " plt.gca().coastlines()\n", + "\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.10" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebooks/CSSP_20CRDS_Tutorials/Introduction.ipynb b/notebooks/CSSP_20CRDS_Tutorials/Introduction.ipynb new file mode 100644 index 0000000..b783800 --- /dev/null +++ b/notebooks/CSSP_20CRDS_Tutorials/Introduction.ipynb @@ -0,0 +1,245 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# CSSP 20CR dataset - Tutorials" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contents:\n", + "1. [Introduction](#introduction)\n", + "2. [Description of datasets](#dataset)\n", + "3. [Learning objectives](#objectives)\n", + "4. [Jupyter notebook](#notebook)\n", + "5. [Data format and python libraries](#libs)\n", + "6. [Instructions to create an environment](#env)\n", + "7. [Resources](#resources)\n", + "\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Introduction\n", + "\n", + "This short course is an introductory set of tutorials on accessing a large (~3Tb) dataset hosted on a cloud server. By putting the data and the computer resources in the same place, users no longer have to spend time downloading data, finding local storage for and manging the software needed to analyse the data. These notebooks explain how to use this cloud based platform to analyse the 20CR-DS dataset.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Learning objectives\n", + "\n", + "The high level learning objectives for these tutorials are:\n", + "- To access and explore variables of interest\n", + "- To convert data into different formats (xarrays and iris) \n", + "- To prepare data for analysis\n", + "- To carry out basic analyses\n", + "- To carry out advanced analysis\n", + "- To visualise the results \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Description of the tutorial dataset\n", + "\n", + "A climate reanalysis gives a numerical description of the recent climate, produced by combining models with observations. The Twentieth Century Reanalysis Project (20CR-V2c) is a global reanalysis carried out by the National Oceanic and Atmospheric Administration (NOAA). The outputs from this dataset include temperature, pressure, winds, moisture, solar radiation and clouds, from the surface to the top of the atmosphere as far back as the mid-1800s. More information are available from [climate-reanalysis](https://www.ecmwf.int/en/research/climate-reanalysis) and [20CR-V2c](https://www.esrl.noaa.gov/psd/data/gridded/data.20thC_ReanV2c.html).\n", + "\n", + "At the UK Met Office we have increased the resolution of the 20CR-V2c reanalysis dataset using a process known as dynamical downscaling and it now covers the whole of China for the period 1851 to 2010 at a horizontal resolution of 25 km [(Amato et al., 2019)](https://doi.org/10.1175/JAMC-D-19-0083.1). (https://zenodo.org/record/2558135#.XJj2uaD7RWE). This work was funded through the Climate Science for Service Partnership China (CSSP-China) project.\n", + "\n", + "The Climate Science for Service Partnership China (CSSP China) is a scientific research project that is building the basis for services to support climate and weather resilient economic development and social welfare through strong, strategic partnerships harnessing UK scientific expertise. Through CSSP China (supported by the Newton Fund and the Department for Business, Energy & Industrial Strategy (BEIS) UK-China Research Innovation Partnership Fund) we are developing a strongly bilateral partnership between the Met Office, the China Meteorological Administration (CMA), the Institute of Atmospheric Physics (IAP) at the Chinese Academy of Sciences, and other key institutes within China and the UK. See the [CSSP-China](https://www.metoffice.gov.uk/research/approach/collaboration/newton/cssp-china/index) for more information.\n", + "\n", + "
    \n", + " \"Trulli\"\n", + "
    Figure: Downscaled domain of 20CR datasets (Amato et al., 2019)
    \n", + "
    \n", + "\n", + "\n", + "The area of interests are devided into seven subregions, shown in figure, are considered for analysis [Burke and Stott (2017)](https://journals.ametsoc.org/jcli/article/30/14/5205/97096/Impact-of-Anthropogenic-Climate-Change-on-the-East). The coordinates of these seven regions are: \n", + "\n", + "\n", + "\n", + "North Central (NC): 104°–113°E, 32°–39°N\n", + "\n", + "North East Coast (NEC): 113°–122°E, 32°–39°N\n", + "\n", + "North East (NE): 113°–131°E, 39°–44°N\n", + "\n", + "Tibetan Plateau (TP): 77°–104°E, 26°–36°N\n", + "\n", + "South Central (SC): 104°–113°E, 26°–32°N\n", + "\n", + "South East Coast (SEC): 113°–122°E, 26°–32°N\n", + "\n", + "South East (SE): 107°–120°E, 21°–26°N" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The dataset include monthly, daily, 3 hourly and hourly frequencies for the historical period of 1851-2010. Though in the tutorials we have only used monthly, daily and hourly frequencies. The details of variables and frequencies can be found in [supplementary material](variableslist.pdf). The data for this course is held online in an Azure Blob Storage Service. To access this we use a SAS (shared access signature). You should have been given the credentials for this service before the course, but if not please ask your instructor. \n", + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Jupyter notebook\n", + "Jupyter is an open source platform that contains a suite of tools including Jupyter Notebook: A browser-based application that allows you to create and share documents (i.e. Jupyter Notebook files such as this notebook you are reading right now!). These notebooks can contain simple text content and live code, equations, visualizations and narrative text. It is an Integrated Development Environment (IDE) that allows you to write code, navigate files on the system and inspect variables and more. The Jupyter Notebook file format (.ipynb ) allows you to combine descriptive text, code blocks and code output in a single file. You can then share the notebook itself with anyone who might want to run it and also convert the notebook to a PDF or HTML format that can be viewed like a report.\n", + "\n", + "##### How to run Jupyter Notebook\n", + "A Jupyter Notebook file (.ipynb) has three main parts, which are highlighted in the image below:\n", + "\n", + "- Menu bar\n", + "- Toolbar\n", + "- Cells\n", + "\n", + "\n", + "
    \n", + " \"Trulli\"\n", + "
    \n", + "\n", + "\n", + "Cells can be specified to store documentation text such as Markdown or programming code such as Python. Text written using the Markdown syntax can be rendered in a cell that is of the cell type Markdown. You can run code (e.g. Python) using the Code as cell type write you code and then either click on the run the selected cell button on top or use the Shift+Enter keyboard combination. When you run the code in a Code cell, the code output displayed below.\n", + "\n", + "**Example:** click on the cell below and press `Shift+Enter` or `Ctrl+Enter`, It will print the output below the cell. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print('CSSP 20CR dataset')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also execute shell commands from the cell. For Example cell below list down the contents of the *~/cloudfiles/code/Users* directory" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ls ~/cloudfiles/code/Users" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice that **`Shift+Enter`** runs the cell and moves the cursor to next cell but **`Ctrl+Enter`** runs the cell but the cursor stays in the same cell.\n", + "\n", + "An important component of a Jupyter Notebook is its Kernel. A kernel runs your code in a specific programming language. Jupyter Notebook supports over 40 different languages. In this tutorials, we will use the Python kernel within the Jupyter Notebook IDE.\n", + "\n", + "To learn more about Jupyter Notebooks use the introductory free online course available from [Here](https://www.earthdatascience.org/courses/intro-to-earth-data-science/open-reproducible-science/jupyter-python/)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 5. Data format and python libraries\n", + "\n", + "##### ZARR\n", + "The data used in our tutorials have been converted from the [Met Office's PP file format](https://help.ceda.ac.uk/article/4424-pp-binary-forma) to Zarr. Zarr is a [specification](https://zarr.readthedocs.io/en/stable/spec.html) for how to store gridded data in a key-value interface (such as Amazon S3 object store), where each chunk of data is a separate value with a corresponding key indicating its position in the full dataset. This has advantage over NetCDF format as it allows for a highly parallel data access where many CPUs can simultaneously read different parts of the same dataset. Zarr is also a [Python library](https://zarr.readthedocs.io/en/stable/api.html) implementation of this specification that allows you to read and write data in a Zarr store.\n", + "\n", + "##### Iris\n", + "In order to explore and analyse our dataset in these tutorials we make use of a Python library called Iris. Iris is a key tool in the [SciTools](https://scitools.org.uk/) project which is a collaborative effort to produce and maintain python-based open-source tools for Earth scientists. Iris is a useful toolkit as it supports read/write access to a range of data formats, including (CF-)netCDF, GRIB, and PP; fundamental data manipulation operations, such as arithmetic, interpolation, and statistics; and a range of integrated plotting options. See [latest Iris documentation](https://scitools.org.uk/iris/docs/latest/) for more information.\n", + "\n", + "##### CATNIP\n", + "At Met Office we have also developed a python library called CATNIP (Climate Analysis Tools: Now In Python). This library is a collection of routines to make frequently used climate data analysis and visualisation tasks in Iris easier and quicker to perform. We will make use of some of CATNIP's routines in these tutorials. See [CATNIP documentation](https://metoffice.github.io/CATNIP/#) for more information.\n", + "\n", + "##### CONDA\n", + "For these tutorials we have used the [CONDA](https://docs.conda.io/en/latest/) package management system to install the packages for our development environment. Conda is a package manager that helps you find and install packages. It allows you to set up Python environments (and other software packages) in a reproducible way that can be transferred between computers.\n", + "\n", + "You should have already set this environment up following the steps in the joining instructions." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Resources\n", + "\n", + "The following are the links you can follow for further information for the packages that we have installed and use in these tutorials.\n", + "\n", + "- [python](https://docs.python.org/3/library/)\n", + "- [zarr](https://zarr.readthedocs.io/en/stable/)\n", + "- [iris](https://scitools.org.uk/iris/docs/latest/)\n", + "- [numpy](https://numpy.org/)\n", + "- [matplotlib](https://matplotlib.org/)\n", + "- [xarray](http://xarray.pydata.org/en/stable/)\n", + "- [jupyterlab](https://jupyterlab.readthedocs.io/en/stable/)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.9" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/CSSP_20CRDS_Tutorials/images/global_airtemp_cp.png b/notebooks/CSSP_20CRDS_Tutorials/images/global_airtemp_cp.png new file mode 100644 index 0000000000000000000000000000000000000000..019c78315da3d919a0e1cf2e4dd49bd12bd96570 GIT binary patch literal 150651 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 z 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%0A&g zutDCP-Ig>*ba4C13JpJU9~~_(o#V5LDRh2thfMp&W);=y>$2K;`ZG-fFnI{$CpTMy z>1fG{@{F)vQmJPaJgOz3d(HqbJgA@ z{{W?6eQ7xJ-l&JyYa=cVy0^;2$1>u=yiUKZnRH0Ntd#HU=rZLPvdP0&L(V!0ONHy zSG8>SeZu*ly7kpVysM()JOkp*p)$>q6&PK>OB3PG5lUE6+_0Y~%j4@DaYmcb_Xm&0 zA5Cx0VJ;UD;}Q4o;Fvr#N+~OGP%p~kS$+Pc)bpFJ%9~PGfldk1#zTPU|8W6U%;v&0 z7I#k|t8bC`$IMkcAYe(0f7Nz{$p9!wM+aMmMJ9G1QQ>Y3(1=%AsGt;8^0Y?6rGrfd zM$-9j|7Jf{OBr|6B{zS56l18IM*yYo^Di+JCNk=Egr&gPf$G0cS4+LSF36R;8bUkp zmu%kGBwUZJkil-=eVM;mk4;@{BwjUJ2^A%cC|j&%hx_@lrH!A#R#i~*beYaGaBDE- z692k)=s%jS-evP4*I6eUzI~4MBME5Nj}WbN`)9({BL;q_SlTfcMNuhj_^vCZ$I@TO zF70C`o(m)%*y!|3WF|VS97#65FZ%Pk&w>A7UqRZQ_PsT}H!%U-K59jzz9^cvfWg

    M4N%!OfxtGZx_y{Frat(MnUFgGHRlQmR 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 Ut^C9dt_n*=Qt@4}_y_<03l~VUEC2ui literal 0 HcmV?d00001 diff --git a/notebooks/CSSP_20CRDS_Tutorials/images/global_airtemp_ts.png b/notebooks/CSSP_20CRDS_Tutorials/images/global_airtemp_ts.png new file mode 100644 index 0000000000000000000000000000000000000000..8c8f66cfd22e9a1d773a6795902a505ca227c44a GIT binary patch literal 6278 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 literal 0 HcmV?d00001 diff --git a/notebooks/CSSP_20CRDS_Tutorials/images/jupyter.png b/notebooks/CSSP_20CRDS_Tutorials/images/jupyter.png new file mode 100644 index 0000000000000000000000000000000000000000..bf8e9f5f1aa6b7cf070aae807b5f26a6f4c01b3c GIT binary patch literal 37078 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 z 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 z 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 literal 0 HcmV?d00001 diff --git a/notebooks/CSSP_20CRDS_Tutorials/images/region.PNG b/notebooks/CSSP_20CRDS_Tutorials/images/region.PNG new file mode 100644 index 0000000000000000000000000000000000000000..c47c58495a3377bd449b30529304b8b39cd6f6ac GIT binary patch literal 101249 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

    D7YGMPI$IZ%O)(JyaR{{oFurPHI`&{Pa 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 Y>LV}a#6QlPT+9Fjp00i_>zopr02d?fU;qFB literal 0 HcmV?d00001 diff --git a/notebooks/CSSP_20CRDS_Tutorials/images/rotated_pole_1.png b/notebooks/CSSP_20CRDS_Tutorials/images/rotated_pole_1.png new file mode 100755 index 0000000000000000000000000000000000000000..84ad49f9e5786b413f7bcffd6b254a2713c0796f GIT binary patch literal 794319 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ΝeYz-)27av&PrS)^ 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À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%0D&h-7c}v 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 iRaE6Uev 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

    %~*aIig>8@~_mzk4e0fEmi;qKaE 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ℑ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[RUPn89x4M}hK_5u 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%0DM)tOo?u>(2+Z5JfcFxb6pQZD#_>CBz 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 *Bskx>X#AucNlYdJuNnMmA0FJl`K1%HZMw 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

    $OaUnKoDRe;mwsJlXf+}|ia&IFFI3q3eH!x$M; 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�{B0V?RZUzdT98RkO~mRd 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%0Ahau4bv^ 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 literal 0 HcmV?d00001 diff --git a/notebooks/CSSP_20CRDS_Tutorials/images/rotated_pole_2.png b/notebooks/CSSP_20CRDS_Tutorials/images/rotated_pole_2.png new file mode 100755 index 0000000000000000000000000000000000000000..39a12392a68977418b4c40a154c388cca5eb895e GIT binary patch literal 436316 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

    Lx^ zp{&66tXBky_%qv=W`FF>JSF?o77xtO{Utv0Y+U zz#mIC?dnCa(XAlI50|YPjifg@v^8J8rH8krLek^)R&3AcsPN=u8kd-0vaL4WL)aJTKg zKXyNV9^9uTH-s#s+?pfUHT4qQbtOZct99ax?uRSQJ{QeotGgR2Ln-r4xg1f9K7}tlFv_2G{j!&pIY@XAy5J=(@vy%cMhfncB4rsP?lDvK6qD<06FDlCAEIzP=oa}t zQn7yZv|&TnNRlJbdvmFufY#W1$FIYTp4?IAxCBfoWKcGD>VRz>w= zX#<6q$@%Q(Hk0q8kChiK8>)vlH`^fAVbrr{(jMJZ#llIdlcKcDsN{vcwQ$$o#>^&f zOC-o{g`NaC7)2|bl1oBt0?g^hUj{|RSF6|E(19Zfy}nUbrFhJO%^Si^uo~%B=aOCb z!gmk3zA4`q>=3R@=&V^_WP31LtBF1T6YvPjmSpriAV}vg{$@(IJQvDXRAyM42yGQQ zU(Fq*DS%}+c&w$SPS1(XQYJ}SYnjA^nPCtVnLZk7ZtB3Bl}5S4GKwTML1Qj8v4{Hc z;qvUoW9Li?VY6*AaQfc45Q_P_WIt{1ekZ)iN*%|+wEqlaXQ1l@;Z%z4uNmu_Fu#9f z(oA)%%vS6c(snIhYiQ=wpc?&MNR?|GweB5p>kR%>YV@@90!zXZ28J>9kqo%~UYuWK z_F9%0N;NmTL*|TpW}D@EiF`b&%%0aIzzkLJOMq=$zj;8=$^Wfu;me3dw-8JgqfLpH zp*`%wEQ1rT{($N^30zBA^<<9J-{fG3iKuD5oAdHz+{yqp16rJynYlK1CW@7TD0aE- zAkm;m(&x~ZmfJ*p?r32&h~Um+n7-ox08O%aG{K2~$E9n}I(_Zr1W{*Ih07hoW0kmT z-bM$BvO&J-!v`04>tw0EL3u2NJ7wAz;}@Iuhi6e>{rd3`cw9K3ux`Z@ZLM3fY98ah zFuuEVRhkLh9qhTGvB_i~Mw)!yXkT1!Uxoz$m!iDwTtXWdoQY(Xe%74E$5>SDMb`qZ zDYpJ)kr2QnmXmwOpOZT;bIf}=qPbm&7VEz!H@|>l{93m7m#?Mxsrb1Ha1Tc_N-CV~ zCbg)YwF*0^h^^2cY<^Vv5PWH*4t^do)?J(z8SMv*YU{=mPF%J@=xr6O+z_5a5guiQ zrS}*0avY3ylouD~$Fe~peX4zlajlBv#p#~TMjW%8t53E0=MLO58k6*@KO<|ExIm+S zIg(06$RH)ey}4MBC*vDldKV{2B@+9M4|6!PXXVyicgh-M;{D46Wn+?59Wm(o8(42- zp}lT#S##fNnsYNvqtsKW8-327mq(rso*!>G_bzB2@|7hVZ8|{8ukuvh*b*d`IRG+b zcl!2hKUo*lPM&M;xmMo`e~t$h%v0*KMWq5>&ne+*K=Nno)Z{axrS6 zT8)#W2lE&guQI;1I&4efp9}9OKDG+)&y>n++c01Wr8|;uSkMtI{vBO#(J*)Ypp@Xw z{|3k=I_gf!z7zp(*UVHQztkK^6aiHQnRg;h=Op{!>CpWGHTqoKnm1EeCp*t$*q=HPxqD(NB2)g>gliR&|nA#Q>LqbxWjOB-1i8_A?Jw z&3h=ba-Y9@rMQJzGNN04g}6OM)XH&0u^o$5HqME^f5c^>^t0^%U#>9N;o{GP`Dj&b z;=_M^`(bMU;__+!)yv-xS4n*xgDA$Xw-l(t@)cs}*X|u5#_${z?(`(Mh@+mWW^((e z5Z^;(pKCR163e#M*gd8qvtpn&rFYY7wK|dIO;qpK+=F#H1kC+zGlj-OY{XxmYB8>G zqIF0AeC_9E@o&cszd`S{^VCz;g}f=sAObTL?lfH&ALf*nwIIg;tedFiTHU_p;YY{_ zJ>lZ(XNxUbVEvvAp> zxG!E>v1ASk#?3bxl0H{$<5lg#J}9mzFv0d zGxSnbtkCil=xSqU%p`45j!<(Q`51ftcAfLd*xrt2XDaKWNYEicp<(`Vp41~z0O9wP z56xy4BG~xZp1iRM5~?nJ8}m@CEPWvO@qk_)9#wVycMXV&qMTYKJ86@3wul=Sdk7}f zJK3YmYI)X*SlJ64<7+`jnvur1zQ(pd{~6H()QH7j$b{~D^Yg#Qc-fEZsvxAYA6fO< z`~|+uFBmd#K@Qy8=sS~-U0y`L;Ql4t4$)$Drl%lZH+WCRz%LjcNth&NbrHd3(lb#= zD6Bh(2Rl!gmm`%-uVmU!dH)WRw(w*sdqL41>I>l`*K*3!dl6kpntjyR>|&-)!(tfA zD9JSiKm+GVH0Nq^&dT*&bw0~m*i#vyB#G|r>e%UZX6;b1ME0@!vE2iAh6h0m%h=8{ z0;l{^v;C)pPHX9x?bIS6Tk#!Lk*}CyDS32boTF6Fzo5&({vpDNu`UOIU0?SHc3;?0 z?uheOzLx_PCQS+p_b^aTkQ=%&Bj5U}f!gv-UWuE&tx>NPj}0d}vZo-1_*=V5dlr_b zJZZV|aA-1a;54IX-Sx$<2@Tp5+n$lpeOct%NdAw1P{=#KJf0h}Ulan~cdkfX)MI+5 zoT@!Ec}>KZ5;QHY(iP#I@_f_%DZ;@%R(qYF%$TAc8 zTKZuN@2By4y*^ZVS*VbF6lpV>_8Ch#c;BH!r>7NR75&LFBxY{@jsw5ngODWstW#zH#*AHZ4 z31EIXuMzvQLKr9fXTBe#YzFWCdmUBcp1jR@E<2v={k{8o^G_$6menwKUZX9Uy&pdb42L>C;AW6O?3AG0YLCi?m`O-}R#Teb#7jBshCJQ;pBJVpTLs+GTX!`6QzF1c{ZKCI=Dz`-jxBW)B ziyTh@#_ps{VJ#wcZn9}LCvRp07L?yy7%K`@sH-oDILfE0a^IRh7Wtox22SlK^e|uS zWFvg+n$TIa6f@xj+<9|(IY=R}G}04Jtwz_!sSc^Kq%^OO8d7I+8|qMNzC1!tw>6EP z{7Jt*Go_XIYkI##YWJ@R-At0$H+{hoTh&QzpVWl!_(OG4sA=EhmGbM-mlo;S-Ym3{ zO1w$yP@c|O{Lt-}-L!HADjBHOK%8|X34?eMD1DX=YYow;ZxJRKlISDbp3ZwUDjPcp zl$p@D$ViO8Vo)z9bUoKIA+$rfDMa&xX#Mlg>i8zJ<^SBTP`@QsaKAq5mS@7iGydoK ze)#B}7%3wLuf=%8tRZg8OTr1?tOsA=9(%lrymylL75YPQAKSUAM8EIpt9DzcaAn|m zQ75)Wdk_iXY>knZG>`BHQ%AuWdq}nB5mZY<4Mc;t9B(@FPvLI_Tu~>GgYcwe@(9+` z_fw%i0uChRrCC^P#XGY|z#XkkRu^dZHRiG3&PKX_C5a}Tgr`65kPXB(EURUm9nuu6 zd#XuLD1qzdy{XViaIg%BkNlqoeSi&UmH0f|7{@)Sa$YCoy-$6RHaktyUP}th1($Qr z2QKPSv~hoXPFZngy;hI&V=B0Iv5uw3b6%6Q$Ci(wtsMkZ-a;LHYj8)c_mO<|*)Odb zSR_Lc>B-&q85k zg^z+pv*ggnYW^9QNiL++u01f^#_g)>VGmJ5fy9%b~LGqK}xr!1DG?a=5N9M!|D_^g|8hv zaufZ_b=|}qu)e0}aR;H;2!WX|Z)$Og{FH{qxZbKumD>8|M@RCS6Op6LKYVN7){pGY z_J#8#Mef##*lnO(_9e@0uM*E(ze?a_Yuw&NBVbdJDzqskXcpurz6OHS-R6a3#O#`v z{)szm7V5Z6rU1&8a;)|EhwPqU9t*b#>+*a0GB>?dr4@aiTd?Uddx$u3gr&XZHH7iKkNsgg#cjY3D2MoIepp zyFO$yHpB&vIUruqONC8fgm}K2drFPbLCd~(@IxzaUBJ7ibO)1Q{ zfA~V#oOz1Zso872F^8rp&hcB2bK&vc%0Hq&C&~}+9=N^p!%94bnJyhEx$(c={Aj0Y zQ!Q}?kJ69(wHX|07nH(}ucH(y<%6OdJ)hh3(6gFUBV}T5QYcNz5P>B<9I9K7NKlV_ z#(C*Wu832Pv0*hmNV-)g@4zE1EEYCwnW);nLaa29Y|DMs8vu?iu#~I!nu4?81M&;b zcf3!`;M4B)gPZtGywd?rW!IQZ+^bKguR&%XGLF0N#Bo0{2YfqbB9~9ie9l+?L{lwR z^Jf3HK~Izma5d8^0rZeuIq#}5`L+gCxc#zl)k8dpsD33?)!HmR3H|3Xkj*3LG|j9t zF#FS`vp_}U+>`9*UlEUua6;wVz6eVP@?~FC@cy-XDx85pk9EBx4U&VOk)k=ymspj? z1+5#b+HB}4GfJhz-4IT>YBsd3MP$84%P(UO5Vc9C#eM^1T7Zz$Su?t3QIa$Eop?VA zK`B3EZu~i^*l1Bx>a!J*{MQw4hz`^tj%4IRD%AcOLsH^!?*}}`1fy7XIdP?qI3$Hv z^k-K?1eXQr(AQpl_D;c=NJTHTJ2;io=7Z>2)HI&0BLzS2LEW%h2gvi$Bb*el&hSHW zU4};6v`^>)kKh_QfR4NQ@3U(Bo&puZekvv0iqjAP!)>p`3q0@^+w@%7G~ixmOCR`eMdJ*D<4K}`BUTdLcTIcX;s#N8eC^cQpkk8 z9@sA>A2g?*j6BTCV*Em$&NRA9!_-|66RS6S(1g>T-F#ERO06;Stzx+S(=dLY&+@hR z3JMKsQ;!apc>R80yhi$jix*-fk@|&N-Uk1iG=hYl=n+obR^}kBQfSSrb1|9a+!j3J!{dEtO51V4h~M&%)%p%@%k}w&Zhk-7xD-l&LhdEwPe=qDpc^}KYYI^nJsLwedZD;$>kF%~aIHm3s z9?wth#$CKod74V)gsiR~@eI+NKUZ{_~2>Yr-uB|L_-rgv{Vyc1xQd?H%`_Yp$oiqa4pzdG(I1 zVzv*M6v+%D_Of3(O^2}@JS?#{Vd1edhS_gc*%F*x-z?}+RoahM&W(LD+<8EU?xr@_ zXm_|VK7Pld)(A&BDrI|kKq3)%N#*&%A1o=FKWU1~*NNr(xgDRM?`+HUPqsptvFJ-6 zdt&~LuT#sqH{Et~9N0dLJ}gMj0r;Z+RR0Tl0HIQ{>}M13r41Zw)dRk*!_>gR7r5L- zx(-p-)3QtH-kOWiRtcc;8IpMZJ9l??W4n1T2HVrvg4*=n8GxK@6oU+J>m@ZoI3(Zk z{IsAXnan4)!hsp#*Ac;vQOu&ZkjoO8l6}8R)?e;*UtOoA%r{Md-4Qv$dZ zTDNDiN*$KuaQ(1I&$tD)hVGk6`=rsy=;KhjMJ)U?c}>*1f7*iC0A`24_)9VUlciJU z4_*_J9np9`$>i~TBeQ|>Kv4(xAk+W=s+Cj~qbL0C6Mws!7s_@&KHS%dvZ|d4`N~+I zN-6S_L7IWQ+_j&~Qc;LX%2M_BP<31%LX{E4_Y7G(6%dAgHPYjLq8Q7gn>OyK!H_Cu z@Trg%C8Wse&N=JSG4@OCMaf>bddQ(}hscy`i$V-+uMDLIq!rFMmcJe{ZNi?s|wf=R)OM413mEwo9^Kz4rkv#|zD3r=L*cu6(ck zA-$9az@scB8R`_fcGbBYz6U~885@zRFy&iln$9RD;|#AU$1xQ|*EOLf-u=9F=C7pf z%r0Ew*VDH(*+K@B(o{!Hg2WQ&?j6z`Q|PrOR)XDU1HTpVS;T44as5Hcdq}RwjH7NH zoO^Mi@%K2@<0*XliWb_&y?zHHBK63gIp6Fvwaft~JT7{v@SAQ|D}!a3XdmA2*dCH| ze0~}OvrzJIS}wyMOOvt-peb01PVs;~ z{@?S(&Hm&9&^8eu0>~ENrqCOAZAZ1%L08>|oF(AK){h=S8YuA$a5hGO^IwU`8S%r_ z3s7X>X>OGTo zk#|qcIcYsM8)RoFLSPInWjFcr(&~oU`?yqj`4{4NKU)u%gR43{|G2w<%^D=0D=4YKn}<`S4736JLzphs*b--J zp0}cvq|jfU1b)Bl-|s!8WLh%(>^A@ML4Vb)w_^E&E8-+0?{=fFm~@k2qNbsh9aX=4 zACp9l979FX^_LxZ)7#B(wq*b(3&cvDC!tkktKg2UDmbVvKgA+dBARO_YJP&MkOK=V zgYgAdKRZ_1hu1VjnXefQWs=LsTBn$E<~m&}vV4klMw<;Q4E}8Wrp$H3vkQp7a$DA( zY*oaR?K7!%=f2xc0_mvqu@%Yf3N_N_bqm?Yx-T5k6A8=hfj1+KvD3;JqE2L!3OcuH-B`Fq8FieXyM7h^=X z91=V9k=c##J6ljzwxh};Y&6qJ=iG?Q?O(CyJ8(xuf=8(f8v85c)FR5&pes?D+u{q5svIor4d?>f zL={P$3!eV~H8y<`uP)AlDJ#_Xd^r;Xqm*iM%!tfvZ!7o+C60XR1sf(x+m+KI!agb+ z)XzU&W*wGHFw2F$6yktIEi`8{M3oZ_R>}&E#G1wRjjAlUevW0;7FJGDCDpdKkDNdr zjnAHcz_@oa>!_$V<%J2gAMcu(+nF(!KQrol_={STFQJLu@tHN}$3YiYtOC(sovcqP zqMOa9zRQiv z-NkEEMLnh{Vd+blX0_d<`10KYZ>OUOYpAcf6wB*g)7bFmTlQCI74QF|yO*JuP-OVI zS&yxTvPkZ%MgUbes2Xps7L<%&e{FcCAL@PA;Hh8Pb?-7YH3*EBLmR*8x<=<+i*x`> zJ-J|!8l{Tn^$OUGV{GwPomSQg<8SZec~NHWP=-;&>=DYj199cbp?a#KN9G=al=tk+%QbnaZn4 z{!l_Pvf2$%FOu-FAkd|#L!YPlJSP&bf zmUf3FdWX-&z!zpS|KjupjVW#mc9fTN>XJpy!E=y;Y)iOLn1)(Dcylld`kzF~+drtQ zt-G!v)6o=hr1mb7H|Qexd{)|*H=Z3fOw@<75NiCK|qF*5Z0iiZhfZ8jMNj;p`eiy`fM1Cp>E;7@(-UCAM;Qj?*m z&dl=}R!+To$J)Xr*1O7|6&I0nOo6wT_+Kpmv%8wVQiMX!D<+@8#q#?Qia$ja-PK6RBQYt>PoSDnt5yWgg>JA#B3glDXjguMcYa~v znpA1vU%AQMnk(K{r|d60xg9`H+kX_cE;CD;J{y5Q-bg-})Q?D~e%ZOIsyKnx=m?#^ z;y`Q#OXM;%Yq!5nif#yt?qT!MrxeRf9mqXT?*kG*0q!D7OI|S&jOXGg+Q~COd(!p` zXlzTUew->`bkk!aqrIZ)?PZIM)QQ927b#E5&6SlKxH;kuhoj#iLpo@cI3o&^+Wn`q z$2F^+iC)8UA}8zUlg95^ycxp4|LlPxM_P-hlxq(v>W|Y^+X3ZtUU@l> z)ZOr_7kt~dOZL&1pTuYLbOLCc|6#|04I=VhT_L_dwt))f`HT>tMBJCbh=4;%pLdA% zadz)wUO){kbQTwvHRwy8Y*gEIL>Y_%d4EtO`m#|%zDbpmJS^xvG=&ZDC~$K)xa{yy z)ul6ig@oRC$9u|M9PM=#8nXJ`(BfnfyU1!1&t~d8V$P6*hfHAe9RIjb42WbHhRykYj*Q3}vNYazV*)S;x@H{}M&@I1 z2DCE)Bef4+)S+Gfow`7r6lAw6m{X@jZQRJmapIcL^7|CjJb&@^uxBTAUd&X^%OZX4 zDamoZ2@8me#Q($8SFlCBb#HqxKoJ4y7Enq;kWOipmJ|k1xMfdLc=X^`%el!2i; zB!=z|iJ?-DWl#jh5=8LBL` zKNauiAQK_^wvl-uv$xX75*jEk&NeoVkBAPm*X@XT_~(bvK-1T6BYfJ1nV7xuhRbF! zg+$bU1c5SQFX&Q4{U5i@LOPX1aix0nhIPCeF+fEYJ@(>bSK8=nO`ji!0qYdb_Vfqi zsolN96}fJ&b~cL|Z6{r3P070b_6M=}t&(O=a;br`a6nhwb6h6}`QpVgdSnA_=Wf$! z`RDTQ;Ih?0zEd+QkXFF(!xLxy@rev!Lq}4SV&{l#J*e}h7SyJjOl#(PPhuL#HvsaAAU?~mf6UO4BQWjnJmeWKS>ue7xqYJIgNRnhIaPeeHPZ!u-@`h2n=hB=HVD|XPUOd`J%U)cJz6tKnpQ!TinvA?II#}trzpmQIy-0y!l9S59GRU%dybtfb3i`Ss7O9z->5 zc7^Y|14#~_(splX@1;Clvgz`JKd!~Y;!CK7`F7i}WgBh>%uJDH{UiK5V>~@sd`!tn zxa=xMx3>cC>f(pX_Vr<;S{oZ~1IO%k*QZGP_2Jr|hkU7Sg|gbxXtfR%g-|iD2H<5$ zrJOOUhzldjYCdfWc~ZpL zAYj;Dp6C7X^EZzq9;rWHaU5>jmF@u6=Y**N>XWx=;W9WoziZXtrllZ^VaoUPw=eFf zH<>~12X#c+6HndeGkYwX_A7d1cP(XoWdcP9pBDKk*cz~RNgGiGW-dkmvrFT2w}jOO zrVPHTotki^pMQ`d9hlWNxI(&jXR!Fyhu^#dxpvATB6*knfn}xLckh- zq1bNg^7)0(1SRKG%$to~0K6q;gFZc`*Wz8g@C_=GR2NUM0*0Owv*2S$Go08?qEh8) zoT<}{j(-F$JtHdp+L}+RR~Z9k8ySs4>Dq{e?1S1YKgt@f&i8+~S_5-#(uM}tRPlEDv zjfp0^!#2i?46_@?y6tM#naY7K{@=aujlZvNfFDT$Zq=l@%DFZWpu7{oLuauC%Ja7= zS_$nM z+YtR@RDsK+_PnH928waMxRuVkQ-!P?1)dMnHGf8v+;_tE$%>tt9J3Sp52l9+V2)DG z!S8nD+jOUh$%3GeU}+kdMC@k%FujVKa;?$wz3w6k!H)#-VV}7FPZ6^Whsgq+)EqgR zzZ-S!*h_>9O}$>bp?-zhhx0Rsr}%0bE&CMD(KLj*vEDVDhwFqqW+p+ie_|Js461cH!*~<0%InB5ezHm(Y@8t;s*eRl4Gp*E!RpfhK7E@1D*c8994Hy04TS;EmRq}ty8bsj( z^2_uXY|6`ROC?6hu`OCVUs~eqE$Br3M@Y+Ny{A zZ2l@831CiohZ1&QlyO?PP4@ldT4XHs35?I~I}P%)?sFbmmKPjk(&F5YjZ0UQf?>Xk ztRf__iWya|@d0^CA6;YmsmaJT*E7osgYiz@QDc8!*dKCy+q)=0s>hvrv6UY0@$8?hvxpprv#nG#XiiA-Zp@-~N!yQwAq54;*7jNX+TCZ(#6{;+2#!P>R|V zesJjdb&=yD@Jo=Sm}=c*P=54SyJ~7#kx?Jlzb|sZjUo`eo35EgR;&-*dot$&28-W! zJw~wjZKV>OZ0hxIQbejJmevMZYcwohFAAV!>DJfb=NHfxsB6tLcqoH}-b9i1v$}LE2qT z7X0(Ta$HY{c*Iw)Mq6<&tmaD=ivvusXH`F-q(k9ocqvylcK@*0-{`Tnp(IJcU`wt4I zUXfJVwZAs+D(mHwAH29Fz)AL@8)2^X?CQ&}%B#IFFCD%+TY^npACy0CNG~sih!JZL zO)5$R?iB*Wr=ymi^^N-Q@|qZrx%tISF5Nv1PVWOpaZdgi=jDgmhl1*16yq}kb>#gN zJHnL_d{S=Fs06~ZoM8L5e9baBg(Zg?NYAS8=@Wd}l}EV`$dHMVN7WYA;%;>NnY0>E zgQ6ZJp@kXB>uxf~shAyoVrZh6^%z~@KbV=xw^{oP++D#r@%5}CRon^A8jHa4FC5Q1 zjREA9s+q;){at1WY1E@@@i1^6$~5E64hv=7PoJp4J5|MexUB-EF0dw}x5Wbp8m`w% znQn~#UxjrIcrmR_v(nnPlCg{UgE8Zx-wUQJhANxNsQ892u2Wytbm`2;d*|XTmF~*1 z-K*&mTStgkRM(YRx{Taao$ot*Q}R*=!YTLzSkHUu}sf2e2UiXoZ9DHPDl z^0W;sN5^p|&3fX}kq?r=5ldfd3siC50t=Ty0)UN&0y7_fP(dZqbbhKc`C2NiUw^37Z=rb%#WM2SACa z`uXBwc(1I5!r6g=$bis_mE(mP9@`&kI&J&_yQsfr?dB^tg>WY?uhf+z{u>@|IrfXW zXs5dG2m!JFr-D{i=G3G{5J+kc^{H5vmGg9HG+VBCn;PHU#z6O-+lgMozl*t?+0mx;WOzkeXyjitp^i`+anE~E{x&dYw%D8c)+b{N?P-;@=iST| zwgOkR3$M-+j{`S!xZAti9I7_7)`1h<)^tmo0l)00yF0p{!D4*_IR0q|k#cHK3E1SW z=S-2-s=N%5+mNA8v-cBS?G~;yT_x+Z9^sG+YS4PLZ*VL~C2%LJCH?b3l0Aw=VhWor zg(`@T*65GShD{!#x%hp{h^Dqu`NrI*gWgW5ivIo-K5MUQJpqm!Dg3U~)66w2e%`m= z;K3okO|iO0b37~Oq3tFQB?CV_@=rKnfXIqp_gZfMRFE=1{4J<@6V(;MaRX#sGp!d* z^mXIbe?|_>y>^=an)xpPRMa46N$%}ihJ*-ZKV6g>l~1g}HpWxWCx`L8}TI*8&y zZ__rN0XbBV813VkXnNY3k=3mvy5(9NHx1FipGK;5R&_AMBcwbQ6@Ax}qsN?f^wUnm z*?HYuwTjoH9FF&VZ~gHfbq}}8;f;(Su8KDZI*&3+AYL-9{6w*`gT<0kqHfQ(-Q!4~ zl&7TXDD?8H#2@vlH7Q7g9i0pe|3teGVmZm{aYh+5@f~Tcot3^aI^s#6XifKENuIyY z;8PL{@EWQ@Kre(d^GY`kCokg<%Jw?P-?QHa4F`lh79pmr%8u=lOqSWO``P$dj+g>J z_6&&KMjM>Ace(1b#-M+jwa)zM@&Q5W?H;kL(+@dohmc1a!)$KsfwV1h$Fd1J!8NX8 zQiiL!@N{xsXAGL~IqNIEphUh(o1Pm*u5TG{0n^arn^p6kHEuA5yH~Ogc)hv)^{p)i zG(a#Gq_%=p@qnZ$*+EkG4*kCG<1lLjmTp}E*4 z6#q<$lWZ_ieTKSv03)Eb0;EzQMo1LF1 z{_Lkdq$uFwOIc0v;3T>(%D^G|?WqRGE%2{!g*Rl-_*>hk(T5lK&Kq@+7EwM4rypcn zHy1w|*fyBr8SzAjrkF;ItoraqACNzo6nLCZ;-SR1&Dn2n(oeLi>S@5G-K?}+$CPF) zhmwP9h&^sl`>mJlvLU*{VIl&$t^XM7-eef)VWXg^?ltE-5s*{MQR^#qyXyrjwfK19 z`fVFXk~+t{bcK!A@x)4+kytPE>5Z0kz4+>dvObm*MIfiT=p;XK&1ZGZnD7sO5d-iZ3t2_unjrK{k|89E*W2skD zj;O1f0Wk#m7`aT0eknTj%ET$3VM;NxEO|_>!_%KOCj(KrRvnUzIF&-IoK4BJ=}|sh zkS|vi&F>zSx~drg4Bd_Dt*1jnzY<=UD|oSd;)REAPo-Wc_NGc0UZJzDjYqtTwQ&HO zj{&-6On0X77mL3**-y7=1;U78)#Pc1^LNSf-%~Dot-{WlDkLP!{fw?n?NkHrT_%); zU;D9)P>ipih&-U|ffu zNX^oaLg6At=Qc9laKzUQW2fq9?d3fBO7Yd1yN zfYw>#W_OsOI@OVJ(*X#T7}WX=+_fkm2@m`+8|4IT3HBqG8E6eLGBG?$OD(0W;V0F- zxRc5lhn&l|=BfI69sKTN?1O_~9%Oh|^bmB>3!ipo-g+s1@C1jsqJ;~W__=|F{>CAz zRh)$+rVl+m#34NCXZpUC;5h+qEsOd%<#V$#;r&hd5=Tla5w1Uc zcGhX;qTf*o$2@Qd4V?#W^Kz!{cPVium)R+&nC)TX_AFc-q{5}e);&J|>>~>Bx#F

    =hf@>r7gjK!!4sm2kLQ$6vD-zQ14=`tChYqQMq@0o=F` zJ^?CQZYO2s2XyW$dhbMw($l2=lNNSdxE+K^JND@F$V2kJT%RbDMlOed@L))drVK ze$LjnOHFCaYyhn5)sGmWSc9Y0^t=GmeWZ{I=sxt$RwQK<0zF~%1*3~ok~P{9Zt#sq zhl@P=k@<;-+2;-QyomyK4`98^Ssofm6^weq_@n#>!}cr)QFGwY9MEnJhF?pO@?Fb( zJ@1OTd)e06Tce-!Judm}U>C5}`)KwJUz-Ff+d6J_JuZ{sbqsxx<@{R4r!%v^X{e2X zeyYA~FGZ?oDd{KvqTZ~D9IVg?7P(J8?*IQ^V-@Nnyva9xX_xT{J>)%Z>k>G6P6?-* zhF4aTckYwFLoK4ol?u7j8sK+b&sBw@W(DpnpKORgeyP~T!lg%Ra#E*%5dE(7#{#V9R!m`e$bWmygUc+ZiVi zKZfLn;1I>&qyd9hDZ3{>sM-1}nYvVt|4s_zyQFBfPlksDNuss96~xMla>X}3p!0Os z_i|UN9pVLWFx)WPXAi>553!MDRbY9l_hmTsvl5rl zaK`(q%ZtLQ3M^rRsCSFrVHOC&0%b~VNe(Ru#|4N@#KXIqoYk%wB!S(VEdeGF_Wg80 z!v!UZF#7*J;hEJK!Rm0fN@;^WWK)+p=_3}T$t>b|ZCZnW_bPhO>8paUUw+s=2URB5 zTX+Ye?U_?9RNJE)r$kXhtQ+5?hbu}3?R{i4lI*eG>D=`V6?1D~I*=#E|;d)mcyl7Ju0yrmWLZ;Ubd}oG6yWTp= zm&Q^b>sc@EqMjo?tX4+lJ&FC%X(<|FeFoCj37!6qH%UuqK&tx2_Oe|80L?Xv3LBri z;W9ZJ>^W{TW<6f|)w-52OX$L7eb2o?6XQ8Fv$k~c^x(RiAJf0;vQ@bSI&h}IU!5II}l~7;HNC8p~ zBeG&kQZ9pEu&dMl=M`L@dpPADMcbRx*kNKiG!7kt4(#jO%&BfXNRhQ+>AHUse}~*HLVAT*DRk7t|03{2FT#eAxR6A_4IoD z+|;B9v7?Re>09)$kllsgJnl*thcQqD%8C=4w`aoB4etK$(U-GF&@>i`pUi*z_)p?k zxtrY_RcNdHbjhN0?#VdoNMz^oM$O5ZjqqIA8++OI@UcqOkk%uFgt*n|on6t1k|#pW zPbk@IsrLTI1$eF9MMZQQ(C+!n2)@}+%hGzi4C2_Ia2bnGx2ascVZFEBP8MSZSWRw! zYIm4HOBUp0!`cN^3eGzw>9zl*`rW zPP`jQG{nq{SPsRB;xbVbN99h4CI<}t1i{QpMoP1Iqf%$vJfvMY{e-$UI$k!*!2iI~ z5;diFCnq5xVFcJWE_$|EbGfdVR`Vp;$OxGiu?*Z!H5alc0!i|8a!Y zl4^Hqf&$W9=fBS7>6!QBUTu|h!D<6zj5`XAVL#iH5RG5SuelC00GP($*uOFJG_bN_z*f)5pYCGlU zu)mn=wyu-U3B3Li>~nJzifSbIu)9WhSLB=wH}(e8g_OBWs4z}yVFn$*t)ZxmE%RDQ zGkxD>&Pf}UQoE~GIqO+l-aV6iJJ7s>0BHzi|+rJ^z% zlOKsibz&}fI$HA=H}NQiQEMDux7*H7>*K9Sb=1xJK;xU%_Aryivvz{LUnJiZDZxGiaEgIq`Q@5)q};s? z$G`?Y=q>T_&Wziuj-7LqQHjXPE8Ai|@`YYgc8I6r7t_TCc&M;kt^nZD(p`&Tv_+!3 z(;W}7Xb$nL0cEw{WNJ+X`vC>dt93gQ&{Y^kPWh^bUW34G9*raaFC30lHUbP98swfT)Ec4+`>bHp>UVdM!uEr0P z_KXTc*M>?AcN0u1zV9Pm9+0X4LWE{t8+Fc_m$Sgp@W1O^p|%6m+Z)gOMQ@T7C%f!a z^XcREYX3S_!WLmdBCNjaV;@TKRS9zXC8SoX{^LZjLid_*j80SS!@-131n0Nx(s1lv z%LuRK{OA~!(&^&&S|BQpNBkD>t#`w_WoIZiK?BxE`PjZ>xtPdA*OmcVD7u z!&F1^wrEYQZDGR1UD8zzUVzoA#?8WC&(#sO2)IJvm^n-e#&6(GZlLam^!5PtQ22k2 zTV8w3z%cEwXi{$vgM(HN6isWot6de=>YM;_6C3|2KGkHfwNf(3l$ zJgKP~mOfMaPxH_w`DL>$nfv+XD{1I>$9Jx!7fG!gi`=r983bcPg;n!8&4H!X?tXOX zyJlR9vr%ospRnqc9IO2(Rt$pTR15IX0m;;gjmPKHjh9cUxhSW>*f-vD1oVBQeImQ} zjSsA{1K4f67!SHXx-cfTVa{ir+)e z2mFuqXQ2m5lPV^de+3Yaxt^r^=O3gd6miy^7+Gug3toKUb69%mkn$tBOoy~Zsoy0j zuUl@9EV1b`Q*6N|FITy!bFish6FHBgvMS>TcK`r#NcidpFxlB|8C^eYA(?CCMiyQh zHQ%OIUK-U>3yuU%9S%){QR_2M1Fn8^_3Zwv#Hw(>p2?5;%=Ow}7R=UTpVWE%j%x9=vi?UIt+2Ku)^NjMzEyHTau z*aCmJ>y_Q^cPIoXL;Fj(g=m3UXsO#$g#6(L+2xir@Jne2cC*2uo1YKL>jBO%WFVrlcrGSJ+|-Tk)4(;_-pcRZw!E0)*Udm>G(BGR^h;Z3Wi$XKU&k zCV(a{EZ*RQxy0TqPgFG1bSb~bf`-+6V zOz7(3z^xHuy3jH_n&C`&{L%4~>`b303NbnraY$>QJ`&-S7;1GKPUO*KQMfUILTm=h zK}+V!-hr4F&gyCCduegDJ8fu-PaSp*%&NPDt_Zg0cV5dE5a0sD%x$UT;$NK9(D`)P z>hk>b`mJledA0!|@Og7G=5u!x@Bz%C$0~Kn_XFrZ?nluhX4Ab>`_i#eaUmZn9;|jx zYQk*W;@&Y#Kvi+oI$|AzCp;cGyl4MsV-5JXEf5Hv+TU| zJa%j63SCn?j)a`n%q0rsf+rBJ!B+>3SBaCf!25y(SyPk_q?4nv#DrH6N49w(NwGgr zxAup=Mx$0fI-`Yp0tGn@+qQayUE#T8j&T5vFZysEFhhs}d~H^f4l-3F0FfDA=O%`Ha4TJZZ_aV` z(yOR$fB(s9s@GTDaw|=<@dk8sQEm}GmzfXpqd#)Ix9mLbw#K0e@}-xj zBOZJ~L&SI`WG`Dwp{EW{enS(wZpi25P&DfKjTCh7(zG<`BgS$x+alce|EfEBy3liOj2oyltUd&pI2T~ zA6ad?kzuVHet1u}-@bkZ-S@bRr3oYL$hk;QbA%i^`45*3z!w+u$ccl>1a47&i*KQc z6y@lBC0{V_Ys1#5`TE*^<}bEH@kXlC(WKR+UiS#2*U7i*QU2o>Pi&G~^psb}5|^27 zn=$UG=Ad)W)#EU+5lVd%^5k!|BI$5>t{}MB_i}VFEey}xy(W`>Trs~oHw&AN82?>n zjcReQ6!?!V6GSivWh>I|H;BPYKe#GCJxT`@f2~qlkC6?@y>=?QTwn)kR>vq8{ACbA zLnaZ3Jeq4$8U6WpJ>+AjWRb7z?L-}KmHT@*cZp4h^3-#t7NbA)j}~YPWVysg(QmZn zj{Z0$LA2S(a-X#l-`8(t>5^Mc69jw9XXZQD`OTw}jhVv5Dxo*br=qz@>vK{55-0CJ z{Nq9i+8PkHF1`r<0&;6SjM)%@k8=xHx?ZhjC)$>f7KZ@OP>=17q6o)_-Ddvewh%-R z`V&*=17BzozlK(ScpQU=gU7puuH^>Qm|o0>SbgWtmA8bvBgUZ{Vc@rSiQ{uR1wpXU zHtMSO7%NS)+8Ud07%^o9^X(c^sgDhH7XT!;d6{J0tFua~)-GN>=14;qI9y3GTDdL# z>+`XGx#cj^e0n;pe;OB#Dk|xqVqAUta8pn3wkWeM@RK5Jn4%nlVlPzeb_ zCr?Xg({SwlL_Y0BPhl)~gx6b%3ehCda;*Y7U~$LQyRWvXM6ze}Q` zgsN{>|6AItj6)Xl#9f_DfNKemdSe_is9lB7R6`hBoykG+n&Sy{$Oo^hvpEilHe9ar z(futzN{HbYbNwr1W*TT~n#3i1XL81UF(IUI_+|RtyL!Op7j`;-^C?%B^HwU)k(gXz zOb>oZmti=PXjJ?{>oAt*Ty0G6=WG#0=&~TaIN5!NY<`YW)C|{kyX`EFt zBzJ52X-vP`1CqP1b-{q=o_cM33uXv~-o#@Wvnv2rWi}kw@8)I0l$IcmrTegXNw@{1 zoY`RIvvS1Cde69%+GRt&24uYt<@$vP@h9)LzB=(=R`EI$$idF=+~VGQoUJT5$vSY} zKzR1!IO$$tWOg?*wq6BZSfg&P{I7$)QC6gmPiy;#zO*&MGo?C|gGR@&sTXb#YZ^xHgVPbolXi5gBOP@}Aq|;_XRU>`1y$P{Zk91qI>AN-d?1z> zaJ;!;!ODTRZZUVhBCtS%2LqPQx|Pn`RjvmslSHbRCoHt?`@N{-K-^QGd?DM_nIyr!Zq&1@lfc~7=T7_REblL!6{gT&2_oya zB^NxAHc!L-5~9?Nuk~)L=RlX@VVq07eqUXv4b5Y;hb~%*S*Z!xn2_ zkM1gn-_C42ReH*FDEiT!+q!0ije+0q@TDtzkjflGT9E$SWeC9!h)e-U%NV)b{*&py z(TEJS%H4bA3Nv85%{@~3@=6D3*LluRom53?-1vi1wlNxSfzj<}rL>FyTfk)mG!EvLaqOgW`L*f`8%DJ*P)wu!ugu!)qkfvJ`OpTDkC&vQpsdEJf>qX< zrKu|Y$<9-jn{zBbtY=^UJPJvF*^jqf$}wPp*H2d=A7|{M&Eb+&gXa($MHI1& zmYS>Z8KruR0IwEJfUa4mI`g#^Ry?|qv4?JuAeros>EZe@o~sv(u2Z(Jwy*(ebbvwM z0qvQchL}dIh%zUG=?b?=kI2Sp3htz08G(Rt`~5R(Iq;l;dmVYcu;5>SY0EJr6zdaU z2V64+ybfY!lTvN?bm;vOQxSq{d%?^``m5$2?W0ZM3s#>ut%Ae44``&@SKXj*e(6>A zm6-0c!{z5VC6DI%H2|82jzGXF}o}=}_)E%fwGMh$Hq?0}<%d zBeik5Qgg(G)Jln)9bbU8c)h>v_CqhOSSVLIQ)w3nInOd53J`k%PB!r zCl24=d*qS?_tf$s8ORzx%glNX z1u*MYzR~Cg|9a?> z2LR$ii@)B%y&u#b3WNubOmY?}?Wxol2l&4Vvn$@uu~(yvr&+&|+dpQ!SUvMZAy$Vw z;eBrykVEvp{4J8bO>>~OU&MKzQkTG7!bJ-XGIHjTOKia1YYXxtP4Y+B+ zOz-9ruEW=Aie%4FfMn%~{gsyvpyzJjP02t_##kyPJQBFmr_Ian-20feS6a#{9Wr-J zo}W_$TPes>gS)y>#fG&fk#(bTtJqD{y9_$U&d-`8zl~^otb}3ga54K#G4xtyMmliw zzVWv<3s|#*!QQadt_$@>wO{nq}a`flt*viutnOg@*CVM z!`pgcH%*ldpHmY8_x!Qfv$Zf+Uh zk{21iyAu_%>0Bmr(qWo|#*o8v^ly(h8n?y$RYL~G-Prh5PNWbw1C${t3Lc#8KksY= zL0RsE`V-C%2$Vl@OfaF%xS|nryI&o?{Tr8)fKVCJc1^JWs*9L5m+M&mq= zQn1ARltk|1r|C#UO`dYB~RQ8~`zVIw^Y;NB5gS2Wl0X4sYP|NFy!r9a(ILn4ELgP)>oR`~5(UjGyTq{Xxrp zvW}0QO$zJQtCWW3S2|PiD}sboji*@1>I0d6 z`+k_$IioQZ-^Pp4N;^Zr>^g470bfelw~Gb4u7M6ajx)sc#vJ>C><6xs35YS$S9D}_ z?+etz@))Yqkv6?^UF~fvqtd&CQB5G|5zTU^`LuUjdjl0iSxI%0Vsy@x8;ak^rmvbl2I(Y^;MgQ4ieZrAdwrFNv(x zH(K`qwNuFBwU9yJ%IG`fha6LfE@P`DL%ZS2x)}k|`uCF!U}`RLF@14iWKfi$d+lLK zEPM2=mUO;2B~fUam>!YaEh$}jl2AF`|G6^|SdO`IiqjcwBz!L^>vOZsx@}`>{m|4> zS-;j<6Wl2H7L|bQFE6S@)dw7fPaNun3@vQ7-0sf!%dyt>3s#-tc?TjlRCihbeU_0q z=WF#ofl4nD%vS^{b>C)tc4-%-4h@ufX78RG^H>fES+xa{SpBJUrQrar^l$#)i$Hc9 zDFOh3f<+Td3U}gvZRJM?lgTZDmXMoOuM$W$U4w2Dw=AFGIR1LKtjc(S(0q6>p=z(C zS9y^pmKOTHRBX~<9de}O8mQ8NnIepE-p?R8vN%hgtohntcnO6Q>MCMNc(kGuf#Viu z$BkDW-O8v@Ly}}UuVE?yaL(%XrXw;wfw}jV-n34|GPtJyR-E)!&b1gBGE&!TU5)dl zo?}?eif~P8%DyK`*GnmDpiSV40t`BP?vc9tZ4UMwIS!#JHFxqOkJ5c@P?Yar-agfE zV?_S7HHQ6BYruv%5Xt`f*HtKev}AGCMWPP49bVJg{NkX3!?>b&ovJ6&34Y4$ZKti_ zUm(^n;x{*YYIDiEZQoktQo5oBAVmL&DT?0hcz=ckq{?3ta@0Lo+~bY2SQJ$33x}7} z7UH)zO7N_ZbFq5%W_bAqDgDf2tL042yWwtHoStKRHuuG+UdFH48E;Mu8eHuiP21^J z#5^iQl|`q9Bcv28gCT}}WDlt}?Pyp?InwqErI%~gWLUyV7$s0{T__o(G*)Gk$k1Y!lQ~p*z+{b=z>y7w9gm49tk}7|rO@7BM4GbUj zR(p?6bSLU-FFo}C6kl$x5$IWtvHyLF3|hA}depErEYIudv?R8Nu0C{7c4NVxPU`}F zT)Cg8dkv24dF-pFmM!K%9;99bJ2lgsqg5BljgIlRCB?9f2;b1@f5Lqq_nT2Z!f{z4 zLUiu4Ew^4UBK`@1?B~839QCMcb_R;@zjF>Nc=7fh+)2TI`g-zgxN||w04b+QqQjsp zqnBGR-}u`HnEOniOLIKuVhG&csyF_e?R4MgDEwgWh-3I=MfKc)O?AwI*Ol@E1Gl~*XN+}?MH@|fJIbDXAqLsn$u}8Ng_*mOSG?Y zcIQIVKe@&xM3ba^0UldeMQ(hUN0edSHWqQuGKHh+ONhHNy0!Ji@!Ck9`t}1dCNa0e zVjI{Q=|K+1o2B#esG|;$wZXzK7i?X~J0n$*Q8e4IOQ&%^Uw%1_oQ=7NbJeBXaW~Ud zSogvnPyBw@x<$5<7vb+Jdw&xv;BcWm>(I@C(Fr@qgP>&}v%ex4k8lhy@8||H?CMEm zhHL|?I#U77*=~n2v}(H!1AxX?>U{i~AgF%*TH}$7K@m-DB>O@uzgeEyGa28_MNpL+ zcB~-fRfS}^c%%kgF>;EX#w&4DE75^fqyN^oKQIr4>Db0!u=*o&tA*dbKsg$}5qFo! z$~p8?A=qcWQHbU2mD%O_M8+esv`4*}gdPjvSn&-`558;=>ms(2@=1$%7*@dt33ZG( zSXIcRt>rv}_`GhO4r17EoH4TOKYR zGQZ|(So#rZSGVT}AG?7Wlq47($!};*$GuWCA1Su6NZPQz@hD?9b-c*l&(%RazRSHblMjAtut_pS& zxIfOnD7tt!+mpQpw+t}uMj^qbi`)9Aq+|4_LV^KEPKWg^aKax!RVLY7ly8U=rW_jh z1^;RszVvAmtixBQ=hT4BaChqrh}GSQkf&7xfRhG>7g*eziScG2UR~PtC~^a`O08tk zi2j70WgIBn7Cz6o1DM1T#y2l{w+gvwtUfN%M)%850&n-Fd!OD71%07qh!xZ7Iq7=5 z1XzKpAn_sEb7x&5Bh`6o-Rk_rcw~*+c%&Jd4iYvTG__A!;Ts5LIYNzpNVn~;KPs_d ziN(^lQEPp8+nAQ<7HW!Osx*jfME=m^2qA{Mr=I|V9Qnd!(!hb3W3s;wx9LkedLSqo2@GU&@n|z3} zMRtXwxQm->kKA_Fu%^jQ!a49c{SzY9g`(=$$fY}|9N9g-Gj?tZJBM+UC(v=wUD{Wp zEtZ8RzHK5-ug{etL7N4>ff!@#8fk@~*L>clU@ zkoy8NIG+yMXk6`!#*mtA4(2tvy&nngArJc8-9UP{UOL8pN@*#RNtpC1tp54e+6)-w zRW<%S{2->>v=S~Wws&?~^JkR=&)%^1R1(YDNP0Y1ZH8c#IW%iD;Z^=pB~mRTRvUcr zw&xyvi|_5s1aXusfvmIl*;UVSb!_};vg1l+@66fXq}|nnrh4<#<-YTknYrXw&-PBg z`#!EM4*B4i$w14P5FS|)M8V3yW+2K$N*DQLd4K&|CwDx4DsRGTrdAI!uD8^#bJ47#31+V$6#^5}PjwkNO`MKp&nC48t?Es)%2#UEkIX+HKF^0Q1Q|Q1p6Eu}G?azr>YjH1!#!P)MhbFhA$fo~Y#{ znPb*okeU?*l-j-6>|yqJdD!$?Yx7|gO-|;%rNF$yV5imVt#H_5d_JupqDenIn(Xro z-p{VZ$m{(h2>p<$&hO>nI{wao;9m?pm9F=TD5kV+)!W=AnpyvPo&6UUAR zafeKtq_k*zbv#kg8J~Z;9d&us=S#=tY>B#?N8WIzVtHKJHK=|tiR~=Ota7l@n?4*N zFXiM^o)I*jIBM=?*y==MR*#npiK1>9Uu`-pl}AlL#yn;~#2Y*9a?9i!etzyRlR)^v ziBHOG^8LFJ{CCM>1O5#J-PMyS%Mq5gt9B~+<}Q5g-*v7B8?3LvZxz1fd58EGeFXhC zY(r;cuG$qzWvxjE!P->$Q<0_se)z~&JnJHQ?Y|>4$WL*>-X+Tk?os%6jr-dihAh!T zS}PUy68WBrp`D6{ zMFCwExkv*u5eTNd`F<;o`)|)kUh&6ftV2R_VvX6N3uJl6S&`>*K_K38_vGnRO18b? zqS>rXOAmDS*pg3Qk&5*#uh)hzB{P-8nc|?M)B5Fh_nHm!@U}(iY-vZtivFYntC#_? zyHe+;(0U!l;J|N_4$euTU9n{i3}@zpqSwtVRmA>*5ybdZ3Px#^_+rVeb>AOE0_qnWe#~^LUo;0j?0}xy z*9dCj9s6H2Oo}qh@~?7STm%oUPfZ<`LYGjoM`C>F2|LPe5<1tCwZu_b=;7y*nXqC= z)J!{P$iWRhKYKA)Vu~IM)%Bq>oxbCSxc!1ighcuq%a73;5$&dvm{unQ*oe8Kyszrl zGQJ!B<^8sYM6@t(j$g^YV#gq96Ds@_kK!V`mm5aPEQf0sLz{~<+z;29+cWP-6YrA` z#@*|th;17WF$&16rOsvYU7@Xog>UySqkMZWrB78I)Tw%yJqbzA-JbL;$Wt49KEB*v z4)lt9XQcO+Y(-@5l%LvV%l>04q5KO(D9u7uUowdVYzM5H==a6Hzc1}!B1_=s=C+~q zY}hVyWP9kf**P-i^V%xB-EtzA&}OPE@6l|zyMWDHL-K`F0UlF#RR8#&>St}sSuyml zcC8G1A}T!oR=OYC%9=;g9rzFMY_?}^{dVYK;>2A=Y_*6(wyHv2vA_18Y~8*wY4|&} z@tpSCZ#XYqKjDxhx3<#F2UZ4^R-=@*RhMoj>+{VK)cE3u1ZB3f!d|ne@$O1&P*}WG z%`OiS5-Wx&2RuD-dq!E|*-DAOZ<9f8jN;`-Z(5Tk(^+O{Td_fsjPCcfKlaz0lZ?m( zU@#36E-Ohy3>^{UVAxxUpH4XzBci+YXE39O12vkPxnDXnpRP7RpT&nh_*UvNIc_tM zd}H1?p5>Vb$`a9(O*S6$XZN$SP!m_LRY~Eb8BNw;DqLUL5M^eGya_&so#au?T=8$5 z5uP$#7vlL^uVI^XW9q`g5Lxd4z+38dt~b7*pRM7hg3(2fV7I*7IJNiS&*$H&x0S%t zyZY%-k$-QWPdJ&DvenJ@;_TQTfJaR|@ujcf-*PCZ#}=Pi45UdmXz%`UARxMxuFMcQ zajQ8T!s#-gCQozfwcEb4MST7m)$_ccy)HWe+I8D8+KOlpx&7!iJ6TL*Deg3jlP-U& z;=Ds~FWiR``KF8WF3c~>sps?!(L}LeT-dAaS3Gp$;#BXG@NR3iB)j~%Jsw>Db%iUxTS;^%JJoUb7-S*1npXTJd9x6u9zv|)Zw4^_LWi=Gfzo(d}Z8?2& zaP97DQCWaZ6Ys7dMRw+)#!b9ZzE0oCkJUFOV;`jyvb`j^LboT+mIs+q+^0-lZSh|dUfBf@xpn*cF7)AZT1+t(8R^EFDTCJtLoqj z88JYF)qJ}v&&v5wf_*SQ5#AZCs6nMj+Mk-FYn;gPL(F9g^-pZ$`xd`I_TY7Aq(k+) zSw@tqb{%3l({8ag_M7A>zaX5*#yeJF_n^SJ>By__%N;}8!ins+rTv$YyLIFZN89Yj zblT9R&Keh{+|A?-y~mQMr%-8>7E5(N@(#~O?!{ZHZB3-5mFq?C#hxV#M&Xft+f;fF zev={26zLAqD4XE~Bf2oc|M_RVe(;%c*RVgb}k1dMZM zQR+)yKp1$kG%Yh5&YfFC6W~oeyJLejJ)a<=q#9{KT!w~J5kArGpqOHwFcMajlbn6a z{!lto$fuLVOJ8D`l0mpTi8@>96&pSi!o>3Aqr<&9rIO;U0Z`(!i~c;DuRBQ7?`?&1 z>eu|<^*q)icS43d`&)NF?4>XKX)SlDMW+H9&+uWmqL9Jytr=1MhoslGkBqboknXnL z_Nj(FoIy+wL2W@p&=WH{Glh-!CY^X#FTaMdGO=?;eKK{LDCiZ z&Sx|~b3zN^IL!Uq6au5m{vTCu6&LmQg^gN(O8t;-1u5xnumFLf8-_*@7&;{dq=k_X zM!Fk@?ye!EV}_0)q`T{U@&CT(e9jFQTrup~dp+xkwMyi+_>Q}budyfh&zVRgi9Oif z@B5zF&KU!{;pHN^O%a;Z?u!o%HHq#YhL>4`*h7-3hV{-YvpxuFxdK*r?W5^x%l=4W zWxhXoOt_s(j+?ir3Nxk7jBZ&1@(ibe#HfGH=`F(SGeW6e}8kp&D=tT8MMc9PvK|trMkh`?h!9dHd&PnUTYBrD*F5yopV=ti6kP(2cnAQQqTkA03iXl-Gl zXA>a-yQUiCsYf&WrpuZAtSuzP7$Prt3b z(CAed$hs6t4!0pGt7~96w}sTx6y`bUMdMUJk)NhE1@KtJtFJ}sO2rrzgcxj9T4Wwr zB)gD+otFX$8Wxe+6BD?G_&zT)UX$Lph_Cp8(GcFFh%JdAS*W5vu#WrVD9-Z$08)EnET=6E8=5OwSq>fwoy!Yd6hmEhp^3#*Tqz4I;4Cv`MgK1 z*E^+N(FWD5?j>hyBGap2(|(Y5l(lux?egOnQGf`eX?6XHy|=&{PKMm>ELri&pRee` zif2$loLanf#Qfb)Z(IR%YPkWoz zbKf3!BG{M%(s5|%H%-$NqNI5rj*XC1`hw-A>c+p}nsGN3v|&|B(Sid4Rwwd9AB~yv zP$p(+D@K_0_hOR)IvMM1+0Jt6EzxfC6^(YYm$2B`c7;7M*{yv)^^R)rFOqZF#Suy~ z-G6#2YA3S-*u?!+n(F&|HbC34rds~q6s{aIs_SF1uDIGom65$1Cx2JMluTx-tVtm= z)e2>W3M)TDrG7opBF%Lw!|3pycWz>s`!#?u#&?YOn{c1LclEkHnAW zV>?|JX4A0mG^A@WueEwEF4A+VmHatL8fMil*?Tfo1gR>9L=6#P~^(^4D{e zfu)_@8wtjawC%jw90B9a&5r_qI2w1kyl1=lnr&};>L?EsJTlsP#XZ}79|yaj~fx@Mkjth*_>d##)v_NJ&8dr$IMvq9-KrEt+Sd~hPfD@*w@Qd1`a!T z0t-X(249n`8vYfaCfAs~)xlQ~@)4 zHKV9qQN~%ciHQH$NErLyxak_zap@%VcW$(+`&LnVX&&ca_|7yk44)r!5Qrja!W5MH z&qSPdTpWQ1+&rc*`bt&8E3oguRxWD$vE|85DNU%Y;vinQwW-=`Sda9{BxEvTblo8@ zKHPXZaWtQ`ah}_I7V|?*a8U8tr~}KmB=+kIn1YYeLk4|qlH(yvT#6@!$f6*?(^^G9A#1zp(WG6}sFkBSY~Z&$^x(9?FlX~HlfS-yB%suBr()H&XP^O=I2t(EBu zdRXgevd_)))Ct<_MXy?$ZEg3p-}(E~jbBRvkUWa-NxKd}`t${Ii??UHOm9SfoW*l$ zWdRR@mKoXf6=f!GTeaWn*kJzeK;Oe3=&Na37pKo7-<<}=fbeq9)j*;ktH9L@;gxvj z)$fIYV|CM;CiN+Kh7k#C*w=4Z9e3f>z_e;O}+YRf1WlQ*({lrZ_vLVJ9MI zP;O6NL)BM$KVVBhp~6n4D|-b-jmdyK=t@g*|JLi=>hVdoj9DBRoDnGrW6!D4Z$TXz zt?SRw=qetCVmjy?xa`vphxe)DGg-b1jr;(gEkmFe6YN9<_a zjjn-(a&)YpTkF=}Lx<^~EjQG=4R=1Z*N3TXb&oOM z*4WNHPemKvE|czW^A5EZ>F@$&yK7k)R)hq$6395S>s70BNORS$W;)i5+gxRThr8rh ze^6l|M1d$Me$BteA#BN90{SPSMDJhrrbV*~Y9*M87S@T_Z=W8(T}MvBNqnKGN=c|Co>doaw)1vKlQb0<7sI@c0Gp?(`& zI;zy6KA;~TCCzW_#d)@L38<~@o|0h4Os%bL3sYkWn&*~ooEe|jo{nZ;#+uT{&G=s7 zZO_+_36Xr3?`82i8G{^&B4oUXD4!$(E~NM&>AFj<0|RCK+kO-Acu`DDV$v960T?x7 zMcF}AaKI+DG3swV`akpV4PoCm(yF$E)N%Clk{yoU5gOWeMV|{bxlB6kyL|tk%1W(H z-oV7IHQl6uB~PW$bRYRwPv3_UDs4BvlJMK)a5@aY-6 zpsE|f<3<5t=@PSy>F-!>gItd_iKJ=CJKyMb$AyNjn(pA1g-QXP`*UQsV)R|k(8V(W zU|Qn0&=|(HVdIWPe{7ELDdL{*uTFQcq0eszZq7Q!b5l9Q1jehIxd20e!OD$b^Q}u) zaQKpSqLV{yxZv}J0SQvCiLIkYsdRs{`f>>H$1|LuBwZ|K}v^%FRIwH zW|wQToAMXc$(G>xoF5j={%5II_l&PU;T96!;Mk|8W^_-_a4lSF(h8l7tNl7^BB4;C zcsh6+i^~8IR_lkWnV%7;VG4j6>`FIz-PKQE>Yx@|#`b_szZw+k*pnX2%v0hD3hq_a z!3>trO1Pr?9Nr6FGI12?EAfe+4D&(g6%vtS{X#llUF=%coeD?T{72h`+2$fC*oAQM zo{Vi+PzyCHQ!Jeiu)$d{;#Rn{gyF<6U8pD@aQ&8T8n?y)?KQ+pPnqt;n7qDFEo;Ap zL@Gl;p)tdfTa(42IFurMFOJYq$)I~`rrKs^?aed5?Q_a~8iV`hsgUG#8~&lwdNaic zzs)oeCO!=gz&l{?5n{1q3vPbyPkxWC$FB1jCR6rbT7&y1T zz>lSoFJ#*6cGp)CJy(Ryj{YVe{JP|IU2z5nbNp5trYtDN#^H37kt|V~DVv*CQY2!k z$E}a?)mL0X_b&(6D_ROYxh3Ng$EKz+UF#1(lQLXUHbB7-n`P8Q!9R@{GLd{Hj58Gg z9yxLI#FYVqizH^x)Af z|HlMmcv7-X&G$&D6K)gfu%~&qk;`&=#v-6Nb(suW!j8{+rQRZ)61!)BS(aI3yX08g zRtrFcC&p#9^8^?<2s5gj zCcYx5CKz8GNB?Uyb&iZ@RM)&ViuQd|IjrbSd_cvZ1m!(D0`z8YE(QR=BT~8d0GEQV z=WKIM4^P|w<#t8SYk_xf$%IWl-bOtmqzg-Hb3;c6!jz0Y%(I@dT#IP*W0b8@cmho* zzM9nEIx-#pQ;>D5qlqi*M<1aI%ZuqDvzAP=5(!58G9mpJ^#e^#gTh$NhZFGDHHAcM z!fF48k|~~(-xfqeOeyY-`-QNq)#>uj*nbkwbU#j}f57S*G{4CjiCuvx93`NpcL|#} z+1-3-vwky$%#|8{U_hMi%n(mCKbg#1Y^5O9dBgfRG+%B8NYy!^RM7N=T#eYNW$mRaPa zAhWHhqZM4)4*Gv0ZZt3yIsZCg!g}#kbXOSyuQNBxZ~6SATPGpWD@Rm?X+Cus;bWaff?hs^eqJ7X`v0+iTy4u@M(a#Lzm8VTdp1~S&Z#<*zXKXO$+{=cv#)s z?BmG7@CQ+GD+dFyb*Uc-#-+xzp?aK_j0c57R@ zD1S{Tw%};9eBzXFglm(FR62NPnhmf)%L z%}XlJS%+cx0=fO}w}b03LoAkv?tPyuo{%Af4L6HR5)}7b^~bZ8 z1A`D*%lCOq;KHJKgM;RJ^?cqDx0ee^@Z5k zAU@BTY;j`OCM69{D!S?ajh1(B%wrcY{I2RMi?G~8g-ropMH?YZ(%{i84qw%jQ6K7Q z>4P%8vW+I$A|^Jf-I7LYvx)#O`Ykzf}73-wE%A28)PP##)<+&0M|4 z2nL@O>S@)PpS*8he3OmuL(d4m4esBp0PT`%id>|Wkpa588z)qqNq~vP<6mPIHv(l` zJi;kF4qU&XVwNYU(KPVaiYHqKQ@6(Baq|`wE+z-gS6w3IuW9iNz4^DV%{;f4uk#NW zfx6G#;7pEH=QXuo#+5dc*-x z&<)DaB!H~91WqQ{@OnAkFcj{04{m@q#i|(AW5j?)gg6S+moa-g*QtwJ7XFSOOV<`S ztzBKD@Ij7lqURL*O>n9>)4x-BY~qjxY2n5a&1|> zUz$F62oqH6*ENzQ8xtbnp7cfkt=o-q?PbGCXW9xQcRTRcffgxjOArzJcO?UY)Z%f8 z@A^*#mrep9Jwca&JgFMCswHJR;PA>wpXLclcB7;vfW#fCk&>)y$WyyZ}~2Vzmw#`72}ft~z3QAB4+rPL;m8EQAAZ`(}Qw zG$zTo(Ra!}Mp*}BBYc=p?hjJmV>>!Jhpo0>iF9?BV#cp3W~&7L)%L`%Dax;;-XG-a5A7$zxnY-74!;ET=C^mMiq#TBPp%6{MwRZdw!;RFJ2;#Vj{ z>P@k+c_K90^z~GNz&Dq43fsk{#?KxSZIEaaWrXgZxKTB3E^1Jg%w_|aYb;z?Odro`9r!Ov}d-Vd71S_U)t#pdB zZ-fw3=%#{PoW##PlI7qN9>!d7F)4F)G(vEvB4`WXYmRJ43PW!DThwLiN^D96Ad|v( zg&DV@7oDqrg*XMw`vZ3uNg5@#wky)z_6!JG7G*J&Brab6Nf1^`F~8?@uzXHmd>82f z7$3+z-`eBvwmHr{y4ZpF>NSPAIvXVIgYhMq3er5Rn4JNC>kIZYZTzw_cl5IHV`m)o zj`NJuClG^=!M)&N>Yl_EB~QaFugPLPt%Oz*`#F~ue}H&Zx%O}90DL1&T>0#<70oRD z8Q1;WtG$lT>4q(@C#nuR{=#KjydK>pdnH5^uq|IyckGuzau5Q^nC~?eC=4ASCS9~l z&t2?a=n)`oBKdhnzxPS?a(nTQf+%fc#Tk$Tc87rk_g$Nan@M#nO}O9G#!B0=YPD2p z4pa3VBmc78X?iH+;ar1Da5ykqu~$Vy4An|WEN z#h0ftlkkCQ08}p|JZCdA z;S_Mab6bbN{>q5+t}5gjllbKqv-AMNJUmJPw$Vj&8YVlD0fpzE)~5j!f2 z#e*9Du7QAba-yfe%HZy=jHD{fI<**0y2VgTW{oV#Jve{3$_dOm+#4H`2y}3Rs*T43 z8+mMIDm7N7^Ew_7K^h4%UnLMjqLd3baP%XhHxol zt-kV%6Bmz3TFtXD^w;y1@G!4OtsUsl5@W|O0F^#e0_Wth3aHzU+S6uhfub5A-I%1H-4D4U)A+QuYtcwSN^8^h?yk!KA|@|n&;jcb6BE)0BUT;!Omb}tal z!c)>eF;K#T2+~Iql=iVSCNtm4Gmj5E@-I7XwIh=@J_@`xQ1RW!j(^kg2A2kEzrhgS z!zp*4MS0~nVXb+$KE!!V{;w3{Fyfws=wGR>pWNfFsBV3fvx!4>Y~c(HALk-)$q!L@%V80e;2bz{{CVbCyX@YneI#zI(X+ z;k`m$r-fcNPCp#ikrC)=dx)2u%r_PNVLMfGASmghY`(cuy5e0 zO0_UXB!0Yhj{n>{$`H2w^8=pBGE)}-6RO9%2!r=_R$p)qF#3loWD9};)8$jfG7LW3 z(I*KtUmjBbY`~s$ain3){9Fe&<^e^v-GdddGJ>hx*tK3k2&aH%lfSB1&hb6zg(Q{e z>6h<85fp9W@6hbs;%D>N>nToyU;g*pzW2*b@#4AL72Rt$jbW0}{InnIcQhnvC@g5Y z?(_m+bckc3Sv&u{S(=XW4<9-W<6`sFr{ZYhC?Hv|ud|7-NvfJYhV+%;35n8*vut|! zmlsN)YeT$dzSj`x#UzpaDurK62SaL{;%@k8B{*u2d0e+q4}nN*P?a_EO|?I{>`eNo zXJPYZrirqn+}@Fp3_B$wx;65wxg{|p&Fda6$*@bBTO869J`9gK0*KK2CfMU_mpGLA z`hhbLXyme916>g0y?lE0GhnWG4SoGH zs946isSl8lexBdKyh++pBa}gHzgrjLa*4}eo2-o5T_@7@SWoTyyQTi{oH-E#a5$MjIUy5W!2n(TUQHZ>6%CPPX5TLoZ_Glu`2 zqDxXsJNto=!#3vTl)M*+Bs`nF=*h3Fe9e`(f z)*o$hAu^Bhk|>{5QaCiO1{%EYU3*PfdNmL~7g}GO2GnC?J423tH*;=uhP?8u2 zk5mNnOoGr=R?3UDOtgG4)*q5FC)XsrqimDJaTqVGCk`7Cax%zq+uPL_gJVlAP7%j$ zNFt`Gey`IhZ>7U^F^p-~ffP;85MaJBdnM|!`Q;c}Ln<=yK;lVK@^11h$SGRl*)5=w z(oBw!gmuivhlNG9vtwyJ7I=Vo%m0JZ%I={iA>&ch2OUg0dBl^rQHalle;Blv3(#{d60l&p3g}L6M+(ArE=jpK4MN3STiayggJKE?S<~v_ z^FlLPnwV9`;U+z|+Q04C^v!Kw>w(I6#~I&Go%K(7{w~r7u=`Gc$YXE^3{rc4Et3%7 zbB*pfVIup1ar&Hy5TisU+gqGgseg*`=jq9Rq^VoH>Ds6DLeAEU%VQK2e=LB>g<(a2 zsTyL7Zu~quFTih)w$vMK)wWq& znoGUoyjfzrVs{EO3Kwry`{fCd{&&D&e>m#dhD|QpRmtGOFX5GLGg#8$62#?L1ZXN) z1Y8`~Wvs-Fs$of)xPK8C*IzE>_45Q@~lPTGs<6)isK;%Y}$wtQ>l*!7x_rT*ZJPGH(% zOkWIw?)*9xKrEZ`;0#6rMvCufm34V!cUG_Vvx+to6^~>u0}8Xw(>5!GzJTI06UdGX z{r4Lyudqwno4+!D(FA}R>3U2FtlF4Q{C z$Q?8rI1us)C#H;-$7ie{oLtmoFB~wv$wsME$Ku5}*q@?c@g9582n#9@w6_np#x};v zZkW?Uu-ayb^P`PI&F|iW@ALyHac~L+li$iELxHv&hU-5fQoVC}${Q*5IF18Kr%x>! ziim#A2A@pycciVr@GS~6p))3@fQM7$w&8e%%kcjEVwJ$TV}_ZBCO)vpFoJjl>q}3I z^jcuQL+}wMPRKdCcIkhNAlOSNG4Yf1$%<6S`}C57M8Mu~0k><`(E)PNb(p$*cIiDV zrGCNr(9k`a4^EOuPWyfrQh`38OZm%&#n^?JNLGn?1}Li^f_uHv*d9j(M>mY;;jFMb z8tnzhyu>3HtL1WF9~`$xVYy~Fh@e?`$=)t3>3-)ewUF+OHJTFs>&ZXCWyQI7kAn87 zw3smFg0XllSXuO`U5nRzNsaOk<1IL$B#oXR(^}z{(uL|1!UEU5`Qk74_c9FbvTP)v z%_awr;VfCdZnLL$s!|mx8XWb}*TA?)uzB(6@Zj={h^$!n9D8}FD? zekKGAggmF4j_u&L=~&()jhYO??X zzx;#RMn_VCiQxW@biK!-NGMWcA9?TM3lM!807n|}^qiIO)(i=ZFx%me3 zqQL9PbuJxf+}=^BEXL;4(ToY{pWIb(ChY zuIygKt7h9;nvbxo6e*y?jTbAaGWI4?jNA~?qxPO9p+fRcFfDJUIjgr|AB~hLl#l4R zzTrGcDR|g#GcC$0VP1(6rR4ka-}TjiFDWDZpWW*mes>9PmH6lPdH{%x#ouo)e!bkz z6uS-%whNUsS()S=-ZI+GoZY`W1y z(@)2yllY8ICB!3Tr$I(#T)%B>2UErzQ0Kq-QZVt!A6Xm&3i)3ylXLsO^EV&Ic?>#6 zKW}F80+#7QRNeb7wdU_Hx1CRNsx1Zoj8?XpH9P1_j((h}v7gJa+$B_pfP$u!U1Pxr z(#H+FFx%uLXm2fWP0greFQOxNw0G2hyf%EJiAwELG5r>jQRlRT>N3on>`CAkCA)Wh zGIYaB8t_UQm&1;T{xJ>X1h=;}EfZH?CS-!44W3Emt!<_s(UPNlG_0G|9b!Kuy%z!_ z=;8~}ZpNk%Vf|?K_5KYogr$}Yr5)#yN-Q8w0a~+eLbVs`C4*0(*7-fvcf6OG%6)zCGF;|qXMyM%IrNB#(q6~#Q)_X=#$hS^!FTo88L0cTR z2udt8Fk)iF0Wbpkh`4iE`K{_zm@BM!FEr`HCQH+- zW%6kgEbM0zv=7vldLv8pjaNblZw_aK_b!m>ffoHB+84-Wofe^K@+c$fy=%#5FQuJ^6I=#F8e;CiNuFBsWGzW=|I` z58e|9>)atTSx(gO?aSey)UEtNfUkb8SLc|$&QKs~e)$L{)ejwjYZH-4pVw;*ahOos4L?(;0@zcvlU;8srh#l{L zXq!WkFbCehK#%tAzCJOg1@?yBiQFxIz?UK^Iu8ll#GIJMF2dpCqk${`8oSC<384I@ z>p?1j`~Np1Lq7ahhU^OksKF2aQ$-cQQ!VA9%d(n9f9=G+)DcygSGG;%dqwH2_FjwgS*^!Xg>4t*8rK z^;>GFcWmPJ` zO3+Bz9}NKMl)fP2GyOL#8Cnj{;9gNyF*-XVZ<}a1{0;ZG?K&DrD_~9DIEX~!SF)Ot34%IN43T!wQh_Yc@SISol^a17b2s6F z{IzZbSRYdP=$bQgREnZp*SBOZ0TjDD)(Y!t$s%;$i zoV$E}@q1pU*A{v}qciZjI?atl8+;uTzBC}XE^}#K6G?-sU+)UsmE^HPx4m9D6ToHu zTxz$Iar+3Mig^W3tIHw;AR+U4|6dXAX8;*hSZ&uCd|EwUdnrAdSqZi-pu4WCh2g~n z#(EmQdD9IIAvl#k>|U;D4iP5}KLSi3+!4QmniN2DL4sW8Npx@@a#6>6OW}V9TzRu= zEE7Tnol4+TZiw^$c>uisJpelz=yT`y zTKHy?75dy<+W$=tesh^D>ehaFvPE3CXgB9H6Fuf6k_y{R6j1hw6)Qn+gSOh^kgM)~ zC()obFK+U{QC~VQmby^5C0?ImS*W)RdDN<-{m1?|K=V=Va=Si1@Vn){Z|0TT7J2o7 zH{E13OSWNsz>~fF?OeS#uHv3&{mlE#`^!J~(EOS^BdIttg>HFWWZ&Z2Cc(ozpFKVm zc5XqTM*i*1|HpXS`mS7ac^T$87)hMX`AUM4_?`vfQDTyU?Ozq?ROGxgaszI=|MckrgT*nME#66mxLEz*H}U5PrAOAj4Fn{E?b2~h51N?Id(5xhV6l-5QbIJ%h|Lw|wGj&xvnR^j7VR;CHc58*N- zQe1zUDEJU*{W9MAss4Q^fF_8=(rc13#TT@46R8zvg>cYmNt$Iarx0lFDL`7kSTLi! zEWiqP*>A%lWvmFadE|dvzLygJvr*jnBx#VzaxWLiv_ZFoM5(=_o1l9yn1!51$*lGK-;<$78ul@rW?MqgVJ75&Ha!uV&WE>9#GH zCXCGlNK+Uuw)*wala%^>01q`G>}iDbYSo0x-o@ZH18nJguU<={aFl`UJlIRUV~SVg z541|~b@-Y;J|#!VfE4m-uLa)Yuh)jfre9CA+q5Sk<$K%eH(a2>dcSBg9TwI+&> zX~YmqKMJ*`S#VkVskgkfl6HOiOD0^^V^ER<4agkp&|+*hX;t=|ezgZ*`QCTZTG6ml zct9R~M?ZQCED$#aV%}VUPeiUcoTLfkW=O*GF+cdelW%qvhC6d57E)3&TqH`YgL4mhO3*wS1ICp}I7J5g~| z8?6^`Yl<9v#8HE!DUsPs9j2*nPchI{?(zlNC;hFOR-a(L)95VlO{&~Xt{3S2LEzSR z3er67Hu?_%28VsWSc&!bwMT%D`^NEA^39_y(bpTo`kE(QHu{%}^<||7#DTU7vD6HR zw9RD`Baze_-a%568B)N(QL9ZRawA^kmczDAV|rYcL8|XeaP7SdUMZ(->`l(_ z`6jsL3t)nRIvG!>0?LA1^7hPB21=gEHvh9NV5yWOSjw!M5LNJHCK`8aa3nd8-p!a- z!KUsS=o62t_Qa@~tM3x{3+c;&*R~^lAd%GI4o!Qf?DdEdl$6)=s3pep_?u~@FlGYP zaF+dg{NhN)ffrSwmX!6zL4;kYMABev5v3VN)s;xe)c8gNxz^x~WO0(LYuoE;fD+L3 zXt73ebeS7sS%W)~v^n=@T;O0riCrj_8%lC^G~v!Vjp^H9o$yuwSRyjFMwY#P{R@-W zv>))T*(63CP~=gyW$u)@=zp{9UTr6w`e{xz{uhvxRI^{5-Pi2++b#JEz?Z#`#qp2% z2rSY)8FAg@&OniF%6fCW?Y`7Ss)KR^w%CN~Pa@-NH zqJ^?917@lrVXR2WTlX4_vBt?X4msvJ|1N%9V$uBk-0;~z1qbDiB0wB#a{i~>7ar7j z+RPLAQGBtz#`f2h-;C&Vqq6(s-c%Fa+cQA6lwSw~CVYZ}2+Kkhvm!W~uL zX`m1I4Sgbk5kH|0S37R405eUU&HN9elMsqYJI@y$#Uesnw@&$mPAb)I*kB%3(&>YH znkbqU4S9=cQV|r!NBt2CL07rv{fy zdi7BtH9Zc=!_U>4f4<-NAE+-L8i|0q+oqUsVcx4t_5+ls8-UkyR>(?yKkrw2W;aLe zqJOjkVB#l|RP%2r--(}>6}!ltL0f$Jl*Z%S`13 z)KVud^NuD&tE2Hjt#(pmz)_}iEY;5gEX*zF-%*Jt36iDolse4OEyudxH=)P9hqtXEMX=J=?Es5gbdv;H4Y$eH9RV5@d z>g${c1FvT5HkXioLBf9MD6zq+6+{aA^zh3q4YGCJ9ya6~by7OGK>+-J-FxARZe zz0OVq(kzHC|8}p*yT(Ln<~IKnYzGmE}oU?NR22VI7PH9DFK(mY^9X zVFbi6U2d_G08;o_+mSdh+@``+V zwgc0^LHvxS0}*I-%>gM9X7T>0i29<|-TS(_KWbVZMRlL!_z_UC&S5SjiDO9WBXGsT zh<@th{o>jM2tJwd@9s7jUzC3?b?-GnHCj3uXUrU)#dom6ulZkW072ENLt`k1&CGoS zwQ0D+Ov3(xuFYI{w7hNK=T9$}o$dwL+IlwY+4lKL%;;6IUd=f(B;#jt1~Yz)ZJ|`U}b}%j_rd_jei#=&I-Px=sCl&Id7N4{EJa@#R_5M=7 zXJ6jP&0SfzK1=*2ZkdMY6(7bJxjBsWgtpBEDhQI~q8G23sTr_B6la&W!PcE-I#K4f zv{Ct&%)&u?H=)rplNQVUfY@@nLg&dX@Ji7;_R-V0%h`T2I2}2c6E5?({ zJkG*B3?WL8bkt|VkPI;Y`Q{9UoX2Ce*omwF+UjTw`ySM9lO(u`nZK8#Yk6f>inli4NqnE83kjF_d553}%pCyu8g zms}FNJ<<^e;7Q)Kdwn!6#?+&aMDI=;Cs+4B{ay*aIM#_5lneaU(>Ou+cXcn&@qiLR zPzT<9`9BG`>f2O>MQWu3TDo@c_Ue~OJ|aXnojgc1-bn;!&fr1rx-&m!SWk{LTcmu8 zyvB%#6!gd3Cp&ZMisnxD7>}U~6JU{*!p8)h`<7{o%n*rbx$g3+AM8+iqTzkZO#m<^ zoMtzWql<2>g$SU1kBzLT%0~nhd8#eB=bR?pPbVSPd21gDjEJkCBi(k`&~oru-9}t& z8v-JhSjiE8T*qYm(U}|h$p>!dD;<<$unh$Hj98M+BE{^#I5qEz?})J5_bhS%zxPPF zrHbIYZeMZDY_u=raOKlM8|UZy`Eok^XR+_Ttv?eZ0?ux1+_nFeo3R>J=eTFQm;@R~ z+XZpk&I-Y}9O#l}E10g=fd7K5ITgZX7iZyS_cz!6^$~gD7X|p;(Md=V&`IPabCi%a zTGA?cb)H&fe!Au>=|7no9?&SkGzN+h-QH@{bFo!OO5NIl3MKL5e-d_~qk>tcGx%|Y zEFz4%^?d;mC91Ny+Y(y;NnQ$0J@^2Z5O zX+2@eTYqY$`=9-1**S5r>YP)@A}VM5NT3_wuIts$&P_TU&m;xgOI-AdwpPtJ4j?8o zwss(CK=?`Y0FCTWp6`0Yy2q;Uce|w(%m8LSf{t*uY)%k-Wn&2pnp$%aM>yOj;dPv% zK3q85!Xl3L8z2(-iZIGZ!-_g49)4 zZp#NOs8kr+92FMPp(w15MO?J;BK zux0FTuU?}=iQV80c?8y)R(4kqn1d?wFX`yn-U6+Nn*_&;y91__Z(Hz&NS~5`d%vmr zOSK%aU%qF_Zc7{aYV=*iwDf%^sXvBs0+KsioC!of(Zm=zaEmHx{iH|NH@SQnm+Mp* zP3Jn5E)!FbTXIH`rdcl1msrEOut#^(&*|=O(^l@{-6eu19c7zXqg|HW3it?f6iK~6 zDW67x7%{t+Pzro&vGQ;lg$3ANUn#>4#HDDCTb5%6Fnm#`DbA4uNea3*LWbgOfAC^d zJO<;&j9se{FZ&{+)kF&LK;}HvSr9H^;*Qr?CnC|J`F5DCrvqV7Vq9JT48SD3J?sSq zHWC3xg~PDciNA6SQw0v_pA5!{bGx1u;=w2n^{vdvNsd7C@}H(V-9w^S~&+?~~;9}#u^`$gYVb0!4v zzDgWkiFOwVlvKq79)%c$+05m2kxALIn`vP7>G*c3!y|frsyT)n(dR*gTQY)q$3s!3QJT?W`Py!_B;H@ zq>TTy9glwVJDE=ab7k=E&7-Q|eKM8jyJCtdT7=sV&uJl62ov>H|6;ej_bhbDQW+*_ zRSF)(zu|JR-w(*P`dho?ogRVXZV2ONbx=-OUk5_;(E!a9S!<|~d6RxCY(rnZ!^t7{ zM@dD`Ll=h2$QvrVRNU{49O+mi5f>@{~nJa!?EZ zK22=-{=^p&=jSnS@%JwmIYyP3HV6&*mVi3bvW8koC@hYrN3Kl6= zKv`_SZ7cWl1vW`lg%rZ;-$k&Gs$>tAOh1#-NUzZZ4yd`Y7YE3Jk^~1ru-yFTt(wF>lBO~ z-IyXGig*d(e=g}oK$?oR9zw~J`0B*Za1*g#gK(8>5*0)N%ZO zogg1;&}H~9TU>INJG$%{`cp{E1A5DKIbyWy`?Vq)C63hGOlRtxES8dz``zE`2urkR zy$7E9A9)L-_qgk7;mQEMuqWIm{nRJf>WEAQLt)GjXR;Az6TD@9 zO>fBc#C2Au6|Gi@NDbcu{tD7RX zAU9Cte`X1ilrT?@jsJp?M8w%)dpE=*pJ&nXKZt270V=zX$@!cYk$T5V*Q}h2cQUHV zrBe+G!6?o$>hJ<-a$G-D-e*^9duocVbLVPLZwh*7b3M+~a?_6u6f|gqVe<6%Ql1l! z`^r*!xGKG~G^ajWV*OZItCVG`>BCJ&$%8hy%>^Nqu$;4pMHpkSqF#Y1aVUU)-Zg$E zdd<*|PtVS4qkAg+fM-0nG_aQ^J+#>JC}P|Ww2a>tFu+|x0=VS+pEPnK>>eBOYU}0M zpsM2lSgx=NwnnKrZI5SPYf&I!bG2QW{>h~T_a@4IF);E4(fv%!h0e?;+~T$KpPc6e z9%I2@`y*Rt9qRws)#*E$C#8Dp`tg@V5b#!T@MPQ$upa{+Ofb+r(^LzFEJ=6+1-8X> zAEO#?wUd?k<&7ryj5v4j(dNrQY0?bNNLj*8aN<$v6jdXRcF7zC*#7?E!#gx>q~^NJ1{Ge_)}$X$2}hjv6opAI`^@J+3I?lfWmKe1McAS0&JX%-{dPeN-iN z<8|wa?Vh#(XBA5bqD4~O3H6@UuTPL}Z@>H~MunRY{mu7rSM}|xfl}Sz$NX`z>~%rI z`CXd2pXlOv@|D44?nqGrm+IHkPY-(1&OjyiAw$qhf2<>v#pd7dGPg6+PD}=&xc_>= z5|Abq)>Z^kcEz{>OM_TyEM+H`7OY9} zF>!1!X8pN(`DC3@_o*ECMH}u;b*unr^tZL%#dgOiZ`9r4T{0=P=f%vLogXr^GZfnT z1XN}CS)#!hFfLQ4-g4_yX|z@D-WEmkuvett_|CQ2H?pKPx4a+Ih3>2@M2lyFd6fsL z&nuQT46D_ni`Lc7e8x=&^?^;&x7yZ7a?;24_SSxv_}u^B0mp)N&sXgTh!>@HT07e` z%+gJocvSUrS*?htebHW;*|1%&W;WK?J%f;- zYkre@n30q|xb^4ydIXnVRcyWW?%T9BoLR;qSrqRk0nbt6bKAk5Z^!53AD8nIbpt?~ zNmK4y)KJ9Y4ux4u2fN>p8XdhTfZ-%fi0! z>)IUJrlTP3bfR2R#8|;Y@?T?|PdeIYa^2~oKOGQ&E`U|QB)pht2y;9X|kN{ccIx*7d|C&ggO4Ff*r<`a(zq`X0Ar;k;EtDZMoC&uS@$tYt7xDe1 zH_)TD1c-JMMBk2uaJ%$$okx2K<@!gW6=S|_-FQS`BrUxOFN?)|Zh*b=;#!i_=Hk-= z($kH;s3GUZp}9%9cV#V8P3YPk!E$BvA-#?5bk$lEKSmVKYDgOaJq$67VTBb^C-~^sUSMU`(7A`B%m^#9fcN?YNaZ2TvQx+~F%rhY%(>eOJzr{)O`kVve< z(A~PnFoRJ|K+y1Iv=Y)8_-kpo{Qgx-&2jUB&L>bBW8R&G42(s*S_;9lFy^C3O-b(c zg1WN#C)Vov6CSSx$WM#`Zq{mH(GrQeZX26dwIIhUUXl`CC;*mkOZxGDwKiG3#(Obp zD_@|1@(FCC@kuGdF6!F0sFN3C8u?ipst`O< zWvTYLP@1>eU)Cou_Txm*16uoq>)#u0o~%LA)EH>@J#JX~-~}GOf3^yUecvY9A#Ukk z%sKtG^kp&sSWRn0sNVkM_L zWCut)YKS$Pdu}7TiFs@@S3TAubM)t@ib-HfI*~3I{dUS%K;pc?EbaMXy^AQ32N&FX zMlwqL&Ed{fM}o8_Sy5)g0;$-C|8p?Z)6US}qXK)GmDRmejua9CbDapP*;!A8L}so0 z9yw%44SiEf30jY zlgi^6abk=*uH5R(akBjSv~0oZ3xLkmpg&X%L!XQ~hfNHh?aD@wSs~xG+-#=KRo(Q3 z3h&UmrBq!H$#!P1LvE}flVOo9Lsb6(Y(sY2;7LjqV-o<3;uYcPWB2g<$);kK5;4JVeu^xz>}uq*2}CoiNOR{fagT(+M*U3UvD-waigX$zzJc)Iw_$Sl`!70i=`g6K-yY1xLRkodqkHL_ zS<>Ox9dzz2PH~_7q`^DUN;2!$P4Borqg?(o+(!e-tT4RexxzOa3U>w?nIDxKj!DJC zYq^Ir!@ z0>r*il*qT*z@1HX@J3N!I%qhNc;@CaA|P3Ta#_z>R_=!tH>w;UK;r{CjfiG)Rm%6D zh|wjhqZp)e6jQ27%@6;yd|H}bEbfI%WOycmG1cH8->)i*SR5{=V= zo2dPhVy}6pB=;tN<2xRDYIhtQdK~(K^&HGc_j?R@>@>4&5$FWO^+C`72iiFw2lYz7xeEcSZL_j8aWGIiDCoq zyn@P~6t&oz$1d7iLsYYcsn&G&zt-2PELWO3k6M34tG0qoHfl6>ClaLHjuS_(RJV!G z5ZlxI$LF|SlP2ZUKWDdPt;STq!012+Do<-hVs3TR6-gwT$fSegrbFF4bn12o0tt+i zS$RN-6px{xZI&ld*Z#jE*=5On(G8{L&7<#QA=yxzg%ne#Uu;+CI_~-d{uY=Jw!C5x zLo?=$8YNZlKbs5cm7)K`1RED!&z-!sx)!P9_N0VjO@%jto*iy50u#J&&sUfeQw9LR zX3F03mGad_-M8U4f4KZn%gP&?j~f56e9fZgr*o0li)8s+{ne2-{sa+2FPWGM)+`te zfoPE{kz%73GGvbxc+~qr(8%_LCtVsN3Sp6-cFwAlF*rydTZl{EvLeK)1s4vmf8(D4 zuei#$#a3Gs7^S#rQ(l8l7WkPGiswjw47G0aSGsp-c*qpGL2W|$4@r>$meSsIcw1`~ z5owH@!M$Y!AI=90pUMg9Po)L~LgP2SraWpmwFlW=d{%46^uBJFijXAp!YOIWZ@1>f z0UQq|W2{sqOW4-s6xP>$CwedO-J{WuwO+m{0F@Zqk;q*`djhhlfBq+^Ya;kp=^qSS z`QEP=K-Ey|S~B<^c4cSsg;nKWq76}x7{tw6gRD?gJ=;>9%6vf4Im;hBp3<@r1{}uk z1O%mkQLOF{Y_s2~ZeBR_XXk8z^$SM4fUo?d-6d0X{`cP)^Xl<)pNfmGlO}>VgO z#QKwR2r8m!bT5s7S^o};7Wo^+{C?r4P0v*};BfGpsI+zKjZe-r!+U zjK!cT+WLQqD*bxoNJ?d2@5cIGU^z8TY z(wi?i@OR%MSwQ;LY)`)bxYZTw*)5ca2PxmVoM82|F6D67)R;B2eM}oNBaLE+A|bEj zVxyqOo>h6?AKFX93#rW0E_ZY{fK;bNS}jF{$zPzBPxG#JXUJg8@S8?ljq*9~!f&Ay zJcDfzjA1LXZJ;p#Fk2I?fP&zS991UxmcE`fu|Un%07+5HKU+)JKf3`dZnxjyHXXlH;?8|IJ4``4g{E#a^$;!5e!%vO1@G|4^&+21j4^ z;d?Ry*Tbwnl%3UzlDK==)$~2&8MvqfANaphOJ$`r-8=0>y2^``_B!DKre2C;2IW7UzD}lB zx)y!u<)(~-QI5!w;yZ2?r))f6gCVZhlgASCz2e0WXg3Cv5e7x76snAXkb}On!Wy=C zcH1pG-`ggqc;}2Z{7+0Wx}p8ce)7@JMb65)KD?k$eq(Y13cdY*zc~~;*JkP1{OSaR;$0BApd`u#o+w8Q#_le=fMSJ<4 zcueZgN}Kuce|WpgtT4N_c+OUc3F&MOd2t%f0`}tX6dh`(?HT=wKMuEGpFu^!<~ta` z@g@|4j-L@JT&C@PQ<3jEQ}RS91bf<+&ro0V;r&0vb;g@lZewt@5@c?`Ag<0!DzJCX zGyJ|jAXZ)0h(jSLQRG(irI8l@UTG6Bvu_Qk{xcHK?EvK7GY8XQ-|KONA%QL8FY_f< zhAR8oz1j0erz3i2Q#s=b+rO!$y0bVDSP4iZEgnP^%vOfy_*VI=kM^+DJTDt*++w3D z=*?`%(;9B~MhnW;)vSV_impGE%TjPlsy^^!T-XBI>4F&sNecsHX`P{k`qhH8=8<{2 zByGiI`!WnLsbfht_XdEm0~cQtJIp<{+xbu(Pfsx234bS#@O;4HyT`qSBUrKqqm#TT z$NZswULf>} zxtX97>=G@o<-d(6IbDCju&qvudUs$-3R6nh+sszH^mcf9upN`8Zr$;^YnwH@3hoDt z`D=dA@~^nG-0Ac>x8C1`38{%*UjRP}oO$qY(X(M!)E}RcFb_V2oPFfx4QKy9EOYuEFK1nk_UZiqLL5-c z5+})H+~h$dRCMElh%ZSg636dM%)x%q4m@F0 zEO^BhmFv`0Pp4kA%)GD<<_-bEkOP6vps>&3017cDuD^aUV*XlM7%K`X6%lmRjhM zr%1i-#pYnDB#iDLg$SYf4fF|b-!5kzqGA`ePtOl=?3qZQd zsyA>lbl)e2-87jU$yCr_2zEyiXb<ftB4nCSwdz)WFL0_o?WX<}zb+M#-T299)WwDcFd%cfBYaaOBI{Ls`#V5RMMa-r)rdVti+|Qv^Jp4 zJA0rRwf{S{C6yrXLS{%=t8`80PG_Hw`SOu4jtTs4V9&Vh zu5)DhLMuD+ot;Acm13DzU>IeiJ1?WW)k%BLZe@(A_Ajz6wr`9FCabFjvmWcGAF-$Y zc$k)#n=A-s8WkuUx8UpGe1l0FO$U-*FGNN@8tT4+Z)Jx;8|o$Xr!pI?*}_JpdnY=m zrIu&F&)|VafICTfJpi30T(L9HF-eYIDCgrbM{Dr-j-1FxDvl%}+{8Ge>*nk1_3Ded z+j`xQh=#qA4rJ(aNoT%_7?A6Dt0v6_$g%oe5j$aw-5y60WF{lOOz6AZnP=<`**=yL zBn?z|{ef!l!YgJd?k%LqS93s0<1NSJr*JGwzqi;kw%BC+p-wQUjqr_y0>9wmTfR$zneca)H7$`pmI}|3xqbxyhCZfQbk9+DaPGQ|=Eamfh77IWzDXS0zC6Og zn)+tVnA8G89(idzWUS$E=_7U1O6x8AIqMHDopqXT)3xX-4p0R@8530fEQqI4Pfr@a znSK;j&G?yCI&RE_xZY7!J9MsCIH`0;PE|AiaPK|ELP+gW+!`!|fEUM4mYg=R}s~!D@#}5R7x{j~Nw=DR`ZE>;mZ2REsbQ?qddzxk_&KXim)lA%#1^)MRZ*=$Iqz>|u1no$1Qy_|iA(|7cOg45mgOkGKPY5`Ro z^0BX|LhrJqfC>HosOA3MVY)txPN(Y1V6JNA2N2@`%tjq%!htNX-7ORZeB^O-KQ=LG zm7UQ9MK?BE4x^cpjHc8YET(^n+2qvZEj_ZbZE}{P=PtICwMX{G*pi$|82HjmS2(N$9Wf{{8YwIj>`i3H1;wAh?lF3bsXShMuxZV zu&{W@c`t5nab_so}{lodZ&<&hVUhRx1?9~4TU|EYSD9i z^S(exwT|m(U|*^15#Zz#uzI>GQsu*tV4ho1l(4p^$66LSSsMr7C?{`|T zuJK_bf1Rm6ZO-`}(p}@(5P#k@sDaY90MmF~pr(6cx$<;OqR!{C^TK7p+oR)9z*s42 zvKkmmi%(^{p^8fwI6N0O@JM4HG{Tza!h^K;oEk22BnKU&(v0Y_en<(1lM<>igP*B#@h4>T&EYNyx3bh0~ zPrZ-!Cp;uUM|+tPOS@Rr0r!&g26tM&arqZrAzXKFG_JZT#4J{w_f^kQ&6@|Uk(LFbI0?cv}H_FxOB)shn<&!+|?xy12*ZyR5f~X zDt}UylPY2dvuHO5Tum*=hyJ;|07QWV-5SezrfjWd=n*q#yNfRB_0xVjauRN5)%Bhq zT00X>Z3QNIUw*c~7LL+L2-NO5Hnx0(gmPRXCG&2-Q1ca5O=D7GEyNAwkb#Lj`vuzo z5=zvngzYPnXC}B35+;Pi0XIHg$sRkqd`|WC4ZmtUyqCC_7CeT2ew>_KtZ7ip_(ey; zCU%@RhG2Q4LhThTq#F~6PE~eOGr2pRC_+(yjuMl;uBrjO*x~V7=WIN~-g#pK7f2aQiYh8%Pi2w(SWq5%UX>e;{PpD=`t~!fq(!i0feeozPPdTC z9UB?zS94?aq^t*zfFZpW9=jgth{qvn$G-`G+D-g%1FOMQBrM*FdO3kF@WN_rQ3Dc? z#4L}yAFij;Orc$mbuJnI(hj&J*)&UIb^U}wHu{B@bGwNh(DXa~n`#qZuh)oD^Z5w9 zC6YpT-Rb5pNZ?*}qFJEkF^()w(An9UrfLGImTP-*eC613!+3P@zHQ%$*hAe79Lfha zX2GVJ-eaxkrLTml7_q%y{nTH1&lhO66zQ=T3-h*`LE1rRq-N{*($k|$|E7{K3`2ZH z>iSr>^+s3c_?Oc1>XDA;@h#3M1GMk3Y|mQakLW?w1o9qR8ZtB|ha_e|L&&s1v!I9r zd}r^iyqVj0<^gI*sCsb;Px2BQU#O_xx5=PYvJ*Io7Pn%}GKw||yHK+p8~T+3cHfTb zh(}89fsZO!vt{;4LpZ`qqCJjmyg?QVy*3_id7X!MsUFukO%cFnBx6(t?)vQqx~N25 zt9P*y&2Nw9Xmm%B@RIp7Z;@V#%MS{+@`B%z1WjmU2>R1mfslZZTOUpdFBO%5hPgSd zYx$t>PA(0eGCHN9)nCU~(yrHM<07Rd#=WlAt?%Px>BNL%C`p94>*{Yms2Qd$-QHdv z^n3X%Ki-}7T3%9#%>OZOp9MDh(RcrV_$x2?TROk9{n9Y+9kdk!HMVjRRm;}a#GYX> z#tatT4PSk;n)eUwcp8{`Dm2$Llm4lEq9XZ{dT*_#-m4FlNd+haL&4qFZ9H_)$q%Ls=;84(%TUoc0{h3 zjg6lDAm^`tb9gIm2BMJkx8CvKh3@=9i5FerQop1JHAWS7tlKF4H1ahvKL%yE2Q3ax zKfgSDD3YpfF`=znvUX7KOw1D3%b)aeLh2fF)Rp0UKe9wdmk-k>YtE`Gyf}~dkL;uy zQ7g4oLfdb|2>yboF)UWEwElJBhm>Rg&i=-Ks6iK`C}#$z?h&1R3s_Tc;t_>p9JLt+ zmG$m0NCIYOfcmQobV(g_baX>lyA()%Bk)w^ugh2Jwlavep#4?T+Wld`G<)>Vy|t~hV=KeL!r(O)e+c*$#q`jer#c8FxhKDE@37l);cshp zcCAzFaEwWhTGkv{`Xsm2i8nTD#lp``m>aws+&AM7MdRy^$xK@`ohVc;(rdxyDR+9Z z9nN_2Y#5<|jR8vfYeDFeav7}Y>>y%IfQS!Tcu-HJT}PZqqs=_yT8rN1X*BKRq4Vea zmwKr=yv~h4f#*iqKB*aFIy@>@jnb9nFR8+|F2zJ!NFGm!D)A_}bb9P;u}}EGDGumD zf{|_oUySekTKdf_G>;kot#g3fn3Xbv4N5~9Xair^-^@_RSPSK~r z)JThx2gK9-??jfTw5-hwi#)?E`+!Edg5o1OHLN9YXhV$g5{USFP?94IeS*?^Hfz!>G9}dbSx8LbdX2aFN*ky481_2x z^Zk$K$%LaAXPtRl`gf1t1;;L=`M&p1DiQBbfR0_n!3!}r-H#Rf#lU(GZCCT5w4glM z#EQw^H|t^j)C$JH;}5P>XT)g$r{2uq%zep!)__mr9@3utmy19tnfxkF_^8t)kF_O9 zVamo^c#mye3xWw(WSy+Aj7!?Q02#%l z-zaFwGMBu3M?^u2-Hue;&brT#&Ab2ZVvWIQRZye5T9{3!nOsO|V89%6XYqEB6x(RT zZN2u&ac(P#LpmZ+;BLQi3JOK{1HUK{xbGbjVhW|YR02z=p6$P)B~ThBc6rC$_O9KXp(5CFs5#_BlbF0{lE- z>n*^{?RhNLYxxnUwILBfKs(bv1Jry4ggpA09jD}cakOnSOMF)vF>8}?#pEXvNz4gl zh@a8YL%9faEzIY{8k>rK|Hd{JGkR(`7X=l4q0fNt;|C`Zwq)X11A8LmFt6E3a-%w*!zl}p~WilRcDABoSe;^7d`dLZ~Sw9KXYPj2&8INw3NAb(%(b?40G zG{;dQB`vL}s;QasRN{rlwcLQlIQ*LF0DoU+7ww>Kx+C07cr~vqcq}Dj(REr%TCQN1 zqKmS8Q9YG4eSit$1RbrRWmWke%HlzKD@BuB-BDSab>|uyN9M;8xnraYx!RjHhQ9vY zf8?=5V`!=kMHy+>G49#_yk0S^l$v$*i?I9e@N+nX3f3G+2f=*#j3L$1N3mmhusw!5 zVWbcakbCleP@A5bvX6hf{`Fh^Y;_ZnDIxY46$D?g+&uHY9SU(SYzikGM|SV14iyW2 zdG`LwKu-5l@G4Q=C`J{@>vxuka!jIEmrlDAp#m4{akD1EP5M-20uK`(i-596X1=20 zmrM-Fzw#V%e@_GN2YotZIwoZ3KbAzwY<6-YN;k#``09w^AJD~o^sA=kX5F&46L-9f zp-?_A13qqksm=Jzt1LEN)3vJ_f(FbB6~xVM8!t9O_)WE+3}wZB!*W6Ljh^rJwrit= zu17=@2DAK(U}fuB67ShfkeaSrAg_@QHdAU$q!XbB!q~cMt)R#=)>4klMyeFOSKV2S zG~eLjqYe2#c_zE|DoS%7CM{I2vb&>J2=oi$8p9g|JnOzp)bs8Yyxpd#cG^=FRL&j61*J*7KhGI)&Ugf+GhXN?h1Dzzn(aTUwV&elK+wkyeAmrpN16bGSGw z^mOC1|Ig!TlaD?%kTa!2M!&M}X9ZC8wvOGL&UbL}T?EGb#hW^!RK?66*T9ref9{|i zJ`M<73X1)qzkDy;VzFk8w;$8n9P8&0dmE>i@6s`1dxGLS9bd%=P&)L%I=R`N{jyAA zzPN)0w{%Qb$S`;(Gtqp&4l^<#@mc)nH`k*Yl8Uh;Jvr(z5?#6uStbYsFI_<*Mv<}Rt@&qi|Y8k0ZeO%J@WnV3nV;k74$4(1^I$< z!)aEz?U?ZsA30aLaeyn;dhArua4NTrX*a0{v}j&F>1CMP_1hwz)Ft=(@BW5j^}F%C zCP~|R@wNB?m1#v8T%D? z<$ApQfb8*7_LbN`7A4m^w#S3S7N~ktisEAukHL$*v8wRo048yV$q(8|n9v{RA;p%d zubZ^jS`o8RMMgTf(I#q!DW!en<)wBg7L(w*HepK9&aUZxKqZVnrQ?fb%&v(-E@ zSCS9fN8fuM$}(X#G^e|3NSSzgWBw}Q^skSfK6T8FA$_#zd4Vj46{7T3VS|MP-ZXk= zVZRYR+z+9}xRsJw+N9#>RSY`LdhAUAlw2o9jQgV(W^bL9SyXP-f{l^U3oWK^2VwLj z%ds;I3IZ1sf&Y7JjK4E$&%olgxO^Uer@_oxD#}ZU)faltD}_{R?D@a?rka0{T#zlU zt!qt{*j0=0>Ro4R3xVrhhwO&+DH5MlTB#FCsd*~ssk%%9FMx;sX455a)qaefG2JpM zB&%oL*(g(CBvY9d{PQ(7X6bxRSgU3)gRNer;E%oHZtv?`hs)hD$yGQppDSPX|~JT#XgY}wuUI)>Kd>4>z1{sMxD=-GQeu+eZT1lh!y&W zPX{bcj-NA9%ZQ0U;&v{#jiT*712yLl9bnOTb0nO|Z7aAeg4y^gi6nn*U*+B!br(*m z%ddF_E;i);`b-6H4nz4JA|3NtcyH4(cds<$%5ZIqcpNu(zR838_wBK$FzL&wFMRye zn1X~>;uFFXELU*@_>|#qG*XT2NgiHFXfRv-t@`)X&$i(U7nh>`UAyrMda;=e^0r!2 z_bSv?wM&hl{giM}3xDYgmI25oLvHJw@eI*xNGbsrceiKO6xt7&Id772NA3?xNK`9( zYCNdsYbAtDJ?j06(@>*f!KFnPXy6*(vE~f@YStf`{3Pzp9*l`xSZLxC;lpuGyMo*_B;mEp{Blp0q&_2ooY z)YsQv!JC0gEeN|2SWFo_c2-tajA|FrrS)N)%+@8}dDd<=MMoDVLOxCW6EEEhl2x5^ zV}G$L(&ploVk46S=`&8`InRc-&t&%3|$1xVDjH1UCdcQ1h>I8JrnoUsAJbNo~~#CZoML zqxYwWgZ^G-k26TraZY}flB4&%2pbZ~v^ujL1XqiJlsV4GS&2{%p{tJ4H8K&m z=1Z$}-G=GVkfyHVXtwy&z=V*$CG46YfNK&k6v@4CjA}L}X}y!ik*AJq@qyjHBqW-{pw8`nC`Yl;XCrzUf z*5AsQ>mg(5;o9i|^$%Ur#N=c-u$(}u{_!DSNRfh2Q}vT9(Sm1TpK-PK9%lUm-G=;S z`F!;UwjM+W4a3$OJ<~0Q_7n~Sbk$P^dnOYMoId8aDZC>|jaK1!j1`sTi*{S-H*Bi< zhxHi`MXJ-o)Zj9G!?0*6G8s3M+p6wtUj2~7ykfkq%SkSejKsI9E1~SBK_~TzoA!Qd zsg{^O@Vgjxc%la1|8W5jW>7syc)akV-}_D~K5#rWJ?{6hleLcd$ z5W2TbNS$bX)V{mf%BUn2a7Vg)DH)W28wd*BD?US0rS$q$88$bi7PbXLX~>>hRp%U1 zuQA^M9^D?bu4#IP^ZeM@Ti7r?6NZb3-E;Ifo-spPkaqgYX#dDh6xK*6VG+INvtjnQ z^GSEoy>AMyd@3jM+PpGQ9}oFNl^XFScy6!o<8z(p1torRLR3v^mNxPbA&R$%onq3- z+KSk=OKeSYq#Z5<-R0?^$wp=)WFGjzI7+-6tfu`<-hR(PJ7eF4zPH#TniSTA`&mUT zRD0H2r)Tmnuo|I$Qh2$@%-i-)(qOIT08-5>{qUtCZ>lJO-{o+?r?j*bANqbR&*o$7 zF$6e>zK}PLdo8X%T&hR2(`VCA_B9cW+2j*+(XohCs&p5w(!WnX)OP3tPmMr?FW;d9 zq@AhpScL1Yb5>jbFstP$UEpRSj@s+tBFZI@52UJw_!(`U4RbeszQNOKs!y3e2ea!y z2~TEft$@w8E2Pu0!t5)W*^7DCm#1*OH zGkpJ9I@b|~=z_a0#;1I{h)X%Dj~-KDI5_q7i$_E8(G=OA3dHLOS=Y8t_tYgH=23h7 z4CzXcc3RcZpXJBBl|>jQWHyR*&`{+zMFbo_4#*a(Zr9g?bPjW@hQs>3x_Uj3dNQ?A z*8V04gG7d#A6^*VF9DlMWFuh@Tb>|?{>x2#`c%B4~8+>94+7Xc(nCpsC1 z6`2{g;-P|>x5fuZ73c;D)4mo&&5yU1!kdZR8LobdPk-U|L3~)>W4cf4OXxugr;OE& z=iZjzK;1rptj5<^zhZk&DowatDwe~vNO@VTRD3qVDxr6|iw2LiUH{b!xx*UtOE$;GTPlmsSo3X!{w}53kA}D|9|7| zArdGk|MscYgKc0e-L2j1DK&aDdgmvGq8dC_#pRbL=5NS$h�`4|+(9InxlH_pf`a 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�`ZQXpf_F?f$f_uQ#8C*~r2V(!4-+rq zw!|qaOfySM*PpF8xplU>`hKB`amP!$?{Rhc6UdSu6SMRiK+<8Yt^R6;a=Gt_)-Z+Ik2MYeCuWbJ;7 zW&RF6RFp?j|J99Qx|lFux{_4(<78Z7fK3881HK&Q5jr6p+4(IKNJ)U)s)L}3Dtae z5)5Dw@rBvy_p1vz{gt(K7TFkHVg)g0oeXP#Y!#4t=H;ZnPHV47SD`Yz{|=8wOiN3NAR7+q@?E5an;fv}7n)KU^0W!r6OmUUpoOcUn_gI;y?GrsX+USE)2RZ5BH<~J=#*!-jha7$Z{1+w-W0n_G%FRUCWS%S1 z$bWd#6#vu@hYla5)NS89jGga&E{?BHQ|`2x{ud@=?fRJ9l5`6cAOW4JdA;hRO@pr> zU#6kc2gWP&Wp5dc8(-C0OE2LvE}wB{|VXfNX13m`Y)c}C9iCy zsl=+#e1x9aa1NV;6Q6D=!`EBE7yXL4{u||nWNXexk@_zx*CNsZcB73zyuel6DgW5J z2a1nbIzGY?6Hs@;stj0h04rdJMy1J)5jA*9;Y4D7&iyv1LNyaYFP#GL9&=uv;!E6s z_%!b1u$G2jwF`?iXuacm4lo%8%+T$OIqb~B94x`R0nKJ8nFv!zM>j~c$kwnnBv$?) z-Nmaio4IF#MLkICrTv1RnE9Mi97XjhoO&tSdj(LX^vHMYbnAlGrtz|Znv@nC7~p{R zDRuk;?#C?Kds=?MzXQXwiCa3aFtt4vRk_Q7n;mR0&FBl5JV~A)3Hh5=IW{1sFt}~v2#SSr$k@@WH8&SX_;Uo{(25W;gu-uGmVr~c zGo(Q3;4wzpZ@-WqA)kMEFS+-sGgMtRI^f6rhX>I~K55;l{s{>Q`TQP6L6t12 z^y5yqZ5`f80*3v{oCUK+@Oqr%;@!7!jIm9KSt>~=K1aTxQinEMPBYRYOHuQItwfHM zpHQD}V_%96U-}5QUA`5t(lV?bdW73Vd_$3s8ZpiSVMMJS{hW+~F5U@h#M^&*phbk=(~R0Tw!d4KfK!Mqd3c-=;L z(|Nn#vyfb3P))Xo#-W-uO7x0^Ld4n%_Cg>Ng`g7svJsL23@o0D9KT(h7brRYQaW30 z_-Wj}P}uoAuK7;!-dkz8uP1E^mfH9}XD^_rgi`sZdq5G{uM`zm_VHb9GnVk>nG2SEkbp_dA2{X%UI98$o5l#!vlld+hJ|d_gIEq>1|q_*aY{IGmWOTy zxMlU$GDNG>AebfyvUA^6v`qQ&ozo`798rI4G>Zmj(zq-!zFC!)rL(Nz>?Qjl(g{8I zZY3cNZf@RmM2f6Eu0sD;`T+#(3kb_V@edNdU8WD}`Yo+BOqFyD`zAMM7S1Pc{GLv| zXlwaK7k)q|9q1LMP2{9|K{_;E*BQ6T(dC5S(<}MKybTf^$Ym$rC66ORnu4oUOpWEF zI8LfS^2_f*rH#w`eADjsfaMtz4E%uBz&b)#iFtVy&B#q}vUlT(6c~E6s=>c-PI-S? zoyalFa@U#<#bL9D-f#Hg3%y>xg(lF#>grDE?CN~!d9<)L@ASH)cs@gB>Gd>zstIY+ zDo@^?`9>Q4@IaW;rp4SZR|zYvm1bHqD&$7xcEM)3yfom~GHwTEv`G=@-Pp@dukZdQ z>(GcGX+h+ksYa1y{}$U&^GA4>W#c={P6T1`QC;?;S3spWCOHLp?>{{+g(M@k`X_<1=thJ#D4H`@Ikt_m_b(eoV~ z@-AlHO#lDI07z{^Qn*(22^OhK1R&SkUqBoyY-1E1#_6V#EKcbMeAPF9a)DLsY z7G8)?ZC@ufUQ@s8KY#7{XfGjlT)MNN5XiX!Nad;2Ex)&u5;fvuGZuX$LsCKZOdOjB zRyyg{XzfwrX=}kwICX&+qJA-?o1A#3lS9|H%e zy|C83uhheydnUPrl_4Aw93qwD3H@>WTr9f-%Da}Bpy9P<=L@>u=RKI`t5=iVZXH*E z!AkmVgF;?h==+FfdTS^fygiG7^-jsw(vGZN`TaOIZ3~bzw z2jt_NGX1+x$tanxdV7`OkX{Ye=;HCA4$)KnB39}Ifq)qQKE48$`NhNA^ZJ1V10pAJ z&u4)jt#^_vDdlXyWH<|}@vQNZoxAoIiGsL5I|2%$g&c42A8$5gR-F(zGzBwNQrj7g zcFA65>k@G+Mz0`3C33GrNmVqauPvS-%_R4d2Dm*A`jZ!LmANInT}!jT1>8I-juVwX z<~V56X!K^}i?7v(Yp*AuHLnYS*Po+;|igW2YOs zLG_uDD3rP#6%bQ1o<3`mYIq-QStl|CzPf)4F(sRwK0|BkB`85sb2927^3kkG<59r< zLwOq-tEk;0pyFtdeo^Q!OSFg~w$Om!bDC8+dBmIVynST`n%;U?=(tt;wO^Q*$0Gp) zZ<)Od19Y88d4UMH5qLBRww++h_DrU5%k9#;`cbLds7~ehMalb3M6aUBb-NO8rH*>m!Ro85ZmZ2^KRf1>XuKRZ@a?q$@{L7rx4+)$3_+2g|S1g(lxsYew zFgjTV@#OgPzl2H0)CVFOrL$0~bcKBb{+gNw6eZ17NSg&4aL}5M3pj7YT_%(zFMyDS-oPf+QkeKT0yDA8 ze70j}xxG~QmshoJNt5exupM(Wykuz8^*Oo|Q;k+A?^<@A7n!R_23bHxi;FWjA!R&5 zO3akPn|>6e+VU6 z(ACxPE?boJ@^XwTNP!{qb%Wyb(2`%A`hAz6JZX8r8uk_zVM{)31^4zp9W=5ieGU| zE5UOi=>@{v670brWdaajHwD=$86}ZyVB=FJt?ZYNSJJqF+AW&baHNEPTB)8*NRhLw zZjbALY$qaWT{CBe&K-!P*H0jw%;`0h!UgKH?tzRC-$+JK1QxW>xru^@z?G=OETGJV z&4=*^1p94@og(x0|vDcN{9BgydQHDqD~- z_k_Z&9%|#nef%Q?@*6qX`H1k$uvR8N0zzZ|_z8c>g7OCqQX3{Auj_ zDldUVo<}hH2fCaJOX=Ag(-xhh(YRDHiDn1M8Z&t4%VxHlJ^RRFDB2rK8--`gNJc@f zOjo^FrLw1n_KN1LU}3_0Sf!79S#Iilx%8tUCxRWMi|r_GE=H)X3N>{UK|^~CWNaq? z;|8ku%YjB_-~PPjN)s$@`+fmW{B@qv$0!gcHeuBt}R4xBm0 z2CDYc_2W@>_vnT%+3R+caWJe7$NnwogX-49>wgcyv{N2760S5?NGorSJ{UsY`3D4_ zelcrdEKB#Uo{^pf2qj>fjg6#!1Zw70@V|q<4GW_15?;yl0FjJI@Kx~!Iykv`8y8bq z#X*Wfx|rlW=@^LQl}+fE!>f|050=193xg^G$Co-#obi-Gt*WsYmpvyDz3TzV70hgo;<2!@6#nqYt848>M2crfNVvkrq536ZP7-=Z08U=i&ma8 z1bzF@XJby-lq@C=>Ni|WqWgI0lCn4{{#EZQzBaby$0I|sKT|(LgKpuc7h+XT*$LAw z`+k1w7NxSldaUvA@-teV718Pq2&y=dfdH+2kj$^gnv0lywZx22ynbpvx7qm2kO*UV zJTRmXsf+bAj~f;Ur}cgY0wY0I9_~GclbfO<)?0;f&Fx4cI@ALanf+=E(qP2tBU0W3 z8y}zEizn}Pl%*e!%j6=$S$?jnNbq7+f}+h__7vIa)#F3EAu#AsF*f8Ue z;q1dlppFreKcOTR3qe*O&)jSml7qc{&2}T#Q(UF2W4J^YF-^G3&GIMNl9&#SOvLg& z=En$CU!3#L>OmJmp4T_O7AWv+T;K21zV--M(ycUhWx zzBi!uwI=VUg?ZYahGQPNli;CFOLiX{-0!q?ezhNaz`*2o?1Yv0v%iiR2ke+KK^~?E z9tEvCbEB}TJe*YI8xYvtWV=Ql_q}PQ6B901JthbP1LFfKh=)eUw@i5Pnl=H;j8#qx zPz+AH9Kumd3JKYGQ1pp=p0|_?QVn0esLy?kJ|IC7-|(4&&4Rx0@wQU+4L+h+sSnucJ$s)R7WfVE4#G3Vws)k_gJn%dbvy%LxNe z!GthO8KqI96!S!b1Z$S`De!&hJV~0VgH^vnxRb3d4lzZH!|`Y(J5Df^{>k$xWwz^R z)H(~}{@TyRCMN#nU{ESh^W~D8@KP=oQ&I&Ihev>nj6xK_DPz>)n6db!Fd74caBNIv zG~A#1hiluHXP$TMQ*YYy@vdz#*j1HPTc}yLg2yhEjlR{0AwN*EP4@(64-Bb}MoyAhBO565>p@U01F<7hF)^VFLTk3SPL z^9`oi71wdxT!dX77~x0w`K4o+RMVas%u51m14$$6X$%S23HDlD-;u6`xN;|9Q#1^L z^%<5;NLXfl{U1QUnr;eSjPw}3;W|^zjLBmGeX&BR=T4W&EG|C4$a*L)ab6{bC%`IW zO9qk3k7N~KVZXAJ6Tf@f_U7BOZt5=zWh2?2^doxRv+EF@7g+|ezz$MK)zKtizF$?& zd(_&Pw~|*lY$NgZoA!Ykw)mc08}2tgL;BCgczI{dweGdi;II=5TT>VQJE#8vq$-IUD|4SM$38sggLinV7k6oA`NB zl8Z$qt}Fs#z=~Rd>|3c(aQxcj-j`t!c!Y4q~?!`jy$z9Q!ceF+Wt*!%g-p#ZuD=Xj=HXOShM7j!#!) z3gW7!SKlio!_h@LFrbg)oy*Sns3eEBeZcS~9b;-0)~PjoWuRn^_n=Q48z5HHJb*xC znaZs5>uS;2^SSf%>YK?r{W=-fIvWJ(9{bW0)M@GD-ItT#EW@w)3J8p@q?F!p{#bu{ zUc*V5=#mO67EmNZn|2dC@@ud46r09QSeEG9KKZ^l z5P+BZzSzM-CwV&NZfXkCN+gDoIq_P%#5{^}cwTv>lMVLT+;<U$Ht698K7weWZy`4Wf%9~3yei2V} zjT-9hkhpo07GyS$4w28o_IjF73xtL+s(mg0XboC2sziYr*!*bENc)@1bQQ&e#Ft}d zB}=5g`>igo6@e}Cx*e%m2dfw%tfyq-U2~Ph!|wO61t9lsN{xm3-=P6N|K2&lvA<06R6$l=}a95F?F_*V$?%W% z%2-oO;XAfz_XYSd%Wu5HZyBd+yP;}TLM2cu6r%3*JwaSmnmmXfFLW#v8M3%)CJM3; z3$GCx*>0@gam5=+!H~qyrbuN`;Fh%LP5A6UU)dS1tAXlo^ZjcI>dS z8z?J$d~$}rQz$t`hKz9HR&tG(X^do;CFi=>59*+6dQZU1yP+gS&tQ>%#v)+U>WqKd zeh2v`<=$7%u#+HDR~y4uh0IvRSsQLmeaAbU?fBN0jUPuGcE!8M8&GzJXybyjsno6T)+QbPu7D7_M2-P%Oa)Kd&M1FBoqFwTRDW%Gf2|ECujr-286-=j#n6cKU#@Z31#CmD(ubX= z29)EO9}%bjpyl#RY*A&v8gV6gL8nCX@mD2p@d-g_xBuG|AO$|VdI8O&CM;>)Yu#!L ziG?|pE&Wq;tt3Z_ANMvZE88CCY=b5Dx?p}>UQj9Xr}P;Jq>isrT>%K(6AnbAxbE??lhZr7+a!d2H$CJ*C}_8gV4TMz3#Yt^3Inw=X(vIZlRv2~N@rmp4=n}kJh=Z3e1Ibz(Cbiz_W zzXW8~`@&B~W%*GK30g)f8c-dzP@-otOSwCj-|WdpDK|^_yR!@+`Iy9|#u;e)K4j2= zBoT3f9Mcj6I*5NE8*G?#Gzpbn8SLw5xo92~&wR-cMUn?11HvD^rm2`Bww-GNAxhF}ni^8_ti>dZGA%jtQumi|TA2vmP<;w2M;n=D) z+4S*EuQ1jIx5U}M5!}PK=V{JCqfMm-GD%cVNjfk42+s#|-+qJUR_r>lJ1??2$$q}^ z?c*VFtiYal_L;X*cr#G8#VB}whJaH4OK8jcj473%9p6Y1imcCmUsw82Tg(*-8S1Q* zj!a%5pyxIRC)~}~3+Vzs7Ukwtd4PgN5=Q%{e$D6x&{bX&TVC}%-23_~cUT~XQ_><{ zYdbX&-B2H6WJ7%M^R=c}fX%}Yx}Jn925}ar5!L2Qe-uw=4O~=Il&t=Oo^^NP)8U{s z;Yrd*CL!W&SmcNwnRO;{8Jh=#mj2XH=KH=9JnaAQ;^GH)dI4gJFbMK)K+{$dw)}h8 zv&7e~TsSi&yUNN4y)x-KJtZc60Wwu&l)$%7)T}?TP`%{wv!afqkA#Ej5c*r>D&_`g4XhP|b_D2%aBsIdF^6xJ}H zYr(ol$as7N-l*?OARBMO`J^-F^n5s5ioVoj?3*DP%Cs|V6)!=ODVZ4^rab`dyx%7A zAzYZ(HQ*5%D^e3=Z8iQZ-#BIRP{IAFi!^buX3`C(OZ*^+_?-i57c`hCX{n$g11Uq@ zkVEFQiJD=zK2W@{=$j5hBMS&A0)LTVB4TPcUo309JAu&B=Ra`gjWL0AkxVqn5lh?3FV&OA1x808?Y&%l(J#UIVTW?MzK+ZzSu1pL#$a z`bva1!tyg5 z0yLlNm+mh25hi^*_063S5C`r$`0oddaX@s?AzN!?|MsB-?JDT31T&L~O7LLJG*+s& zmaJqd8Jm|^I6o4_VzH^WgbGXM=6pGl1M};144Q=)H4K=B@Dy@2vHy#MHD4KI+v4>(-<~ZKaqyrEZo-va74X+{3Y_o{ ze0a^_jM4jZbU4jOPwPC#`Qz2{fDZ$~QW4%~R?+LfB5C@B(YS6jPLVHItk+Po z6Oe`f7;)G*1AqNEUELDawdce=;4%C5H5|ceH1BVdRFh>i67b3HDoR~X(vu*TvU5~0 zc#6&N4E_N;BHd~VTcfTbh+$P89al<@-jWLn0OPyNp68y_s}B(5s;Ia zZ!jE8t*uonT`19-z1mz~GI!htNz7+!h(LAAU5_Hqo{H(@v2wWZ9@2d<%xU{usmQkI z!&hJRzV_?1a7H`QjDTbnKm?=02Y-et>pAOfOAT3h;N?8V<_EoZ-2z(sguQzDl1P65 z?(Kv$b?`@LC`M-)(J`+dytC@q`uAF!RlH_|w`cVqB7*<;as~MCJ;mp=2GF8 zZ+Yu+0ju;2Y^?IK;L$@^pV;-AUu4sAb@^}NqV)VD%DuPnF^noJx!-^ly|g8f_YPD{^RIV*cP+E9&0A-ThDT)_8&e zQH+}O@;eImP7%|@&e?i4FnYddD>L~$y0oZ&@jik8qnN%wx&R@}J9z{o*uKLGVdeSC?aya-qugFN}p3ktzJ? z`Fi%Z0`GzTe%R!}S|Jogb|rq7!R9pw!xbWrfG{ zpk!wud=aGzDr2rZefLkcHXPmdfKew=fTcu4_+9bYU>qQKjU0&4V?(R+e_j9#jD(%d z%}p(C$4oR5nRwT?>`%xCPnd42CU=t^h$nt;lCRmv*e0t7UEOcbUk*C13DckKB#~QE z$fv_XS#acLXv7M$;?)NXYVmG6WE}Le`IL(8BABVe_H(?}Y5n$}&bkIAZymn-Wdb-n zW}2N334Y(Z`JqmVKViW#{f|I)|7jxKPm?lEwHl07FxaUyubcPp%8PG@lQ08e*@q#B z^gt=?xUN7OZ|NFJj&;n?$ZlxjdrjJFJ$oVL2{4|}lcHy;mq932EH)=tJN0+)p@?Q* z!KtIgLJy1V+rt$xa3T5;Q@O8Vrh4`2Q-TfwzJ%y3v5|Rha}E97P4T}OaU4i2#TPKP zs%z%8VQ8SqG&djpkhdK;sRqF%gfUVW2OAhfbc2tNm9Z-*BYZqZ;bJ`g?*q3#SBt$$ zVfa>5Rfx{7^c5$yP8~Hm5J$*VBU<>S-GdGm7tIO`P@L5VyNQT|rxbSuV|bZR`cm-O zhoisGI?kj7(~w2gHilXSPI$iE>k-LHSspi_E`@ZXHR4hVed+k5gIy09Xdp3G@Oqjc+Cu1DaIpnqDtXlU)x}fCw$Uuhdf}`FI0@SaiV_4^wf`n)dmPwdRBTxHh1=@X z;S`=a7*|kHnk#CC+Q1Jcm!u21b+4Wfob33Py{s2^x#G}I@dKUhZA?gGkLFHp^2LiU zn)=Wnbvx9-V6(!GW+WxeHSEeih4LhhXrDfC{O7OnxJgim&D?{k5E7|y;u{GEJL!hQ zNA{)S0fmHc|NbtNuiofofV#HXyolGBd(|Y32>7?RQ}Lis9o&hUV0rS8UfY~B&T3?$ zwC2>Bf2>FQKKFsPPUBqu8f(LY&ZUm2VqCPm)4Q{0T&T*w%2=wOPjg&%n|8Tfek=hm z+`4ov*w#fG400NaD*vdge}9)~0&HZ#+j}A2?I77_of6gmu7y}_+fpKZkPWJ2{< zwh3QFAx~y^(wS#dtGVRaECjrudEb;9Q%pL$rEx$@{;Mg0ollPo{Phi50k=X4Fu1u1 zXAtcba2kUB?agk3epj4^ZsnB3IHcw65~R_D_;tRyn(WUc>AVq&NC;FHHuyvXw(EFc zns_|mg72U0O`N64B6UC9R&c-QCwb_DKJ(y6P=;;Kj8-z5Zf732Sh#|KNXJ4ts%^}y z)(k~ayrGP4kF;?^OkxySy6pa`qy9@2YRh&f@Eo6)d`rWJfS2$k>0_ZI!Q^FX2Y)z! zpvNKkRCs{mYIe-6=V|Mz6(i^#vjgNp6Lqjq5PxWyWo|~r@1-3pDpQW2X_Gp8NvJVU zn)k7%sm3e#g~k5pW0Z?BuTA_Tv(4rJHq8okkK+LBP z%BwpJ#Qk2q#T<9|V`28ItMa`Mkt~H>$RQDhc&I=i5RH8>7C;X+7(yJmNl}isTYE7`n-!|~g%cl#- z9PXdcxAd1DZr$b9B^FScf#!l0Ge_hlI~giO+)kLXhtNL^IIW5FnJbiXQLM;29Lodo zhEXzg=?v%69b_Y;mymH#>_hw2O_JPF4l{f377L^cnxL912leR4Qc8?6Q|;4dh5?5G zy#A7O&Df8zBKbkgaP2B@t|Yd8!v2sBv?U{Wmy5{|G|hGbQ%1W1!HZ!+-(FY0eqt4M;ie|O$!TK&;{clZtpG3kJ|>I zd>n<(15gMMb+oc1#f1|*AZVMlA@|$%OJX=grmIzhqh&UZ=s!D6_w&-Oexid5CLb=x z)k|#T5K1@hr6yvA4S06()IVZ0*cRVhR%P+dhWy*;yD7s@Q>h0_mlhFI#0tL=6AJU> zESisQO2hhy&2I(6Bf3KCwp>K14xFD%(g);ym@t`7J>X(<#SvS)*WGU5q~cSy##B+O z$ID^DE@CCO`an>dl(ly{8`5uw-#{rJaTmNquoj1Q`F>^D7zk;dj$z#$39cidXcprz zjINfoi26W=nC>TS4>=d+a_vZ9YyROubr$c~s!24u_2x2VhAtVUnfEtk9CBWv{Cc=* zC;_ckSz-Z$HwT8QU#m3MkS`08djAlV<_V&QBB z!9%+biAE>D^Q=~7s0)zB(_pZ-ngLdT|0$TQng$<#LVE|<#8RgZP={230n?1zhx^co zhNwHikjGlXz|KDd@Jdy;=ym#3op6qDjH6W%s;~62D<>=!zZgtS`5aXJX44p{ZQi8;3&5zdW{pqAEslS+#*JlU zWT>5!m%q~TA+5&`AR1#!Z$PPtOfR!rqE1UBL8`$f%rKNj+g>l@5`5vqlIcQQRCnC_(_We zBQ<-_J%Q+OYnasmYhssIwpb?=70?VwO(WN06~Q%teWR)l+ke$n*LCy`*wse{P$*K^ zvn1E#!p0}~50H=o39?!ikgxKDfJ4zw@-kq=*LE5K?|Xh5FmPvpI(?zBySX-KG&nMI z&ft^L`X_5$X}jbISL$u1qlm{O21V4h)vl!#Ob^){puCF7)iLYVqf6_T17|N`PzTjb zKQTw+e4Z9Zch^|n*-hVKGwqJAAXZR3vW%W_qW77)7nA7MELn&a*&iah01O(&;7WCa ze_MyLdE+bIRZ9VV-g^idarY|X``o;9w!%>i;6{9gzjAOB0;zuf^PneJodxIB;sehNf;m z$|28ds)MSWqz4B)5z9$m)i5(E-#D3DG6eg1iUf%Zh9-dHeX&NsApYv5fD!!?GE=@7 z^czM79EIQ^Ts{4TDfsS?;!o*z4K#(8HMrs6=DF`%749k)rl4V~bc;ZJ%3F^|4;$ad zb37*NALHn3ycE~-sEC_yx(~{z#Cr&Op)Bl(xPVHcHE$jABc1`F1?AzbnF(Q zemRIDqN~h@3lsZee=w#T<#83+fj@L<+BNx>n^q?$^Lmi>qXU8u)M6} z(bvH8_2`6u}FTz?l+sm%1*n##Rd4moqdA@*v?yXxoJAabaPc4Ug zD(vD-D1E|Ju2qqro9T#n=;eE{Y?JbYmZj1y7H*fSf=VpA=jzfIEi%b{c_PE@U_xR{ z)X+O*L-ZM)r6<~uV<=96I(5Pa*wrG#1&epwnF`}$VP$E4l`g(2%0&&dJuAllMWENz z5FASFeIO%yo2Ds+t?7H}bpKX2zgQWT5`&Guuy>%#eTl0%}@0M^~$CK`X9sl zQo}T=)W2p;Hn03)|NQ#yht!)$flN2|-k(TTcbSAmA~WPyIWsuQ2Hd`6GTYQ#b~T=ZpFOo_`WYK+FQu3^j5(@x@boJjRy= z2OjR*HlILPcn1m!o80&98T#-!AUYqp2~MkttlKV+e-4#}wVWZC$`3F0mc7v7E=S_1 zCSm^Aici}W|IYW8zwSBnKiV8kz`yW&K9Rd}@15VgZaDEi-psy}#_em9@5Ni66!fn+ zSgJ1gEw`-{*`Pl%cWtJb16Cc`@*_)x(7yezfvNQ{zp)&)%Da*9*k&kZ?uzrh zmTQLfzUU&8OsZUgc0NZi1vT`1s28_;#1Zq~AA$rGoP>GBVp(k?vB;-f7fr9mgtV!` zZu6+wNp7M9Y-z)C_(c`S!J9cD%@LI$RD=LK0ejczj0OyhSN_&(?d^ftU>?;_LOZiu z!2e;JWANupFbC7Ggh_-aR{C1TOdsq({6!ec&V=Ub^@Rtra}`22M{K~ep%-X0!L||! zb7*`Q{3bvidpxW%C}Y8iX_&dKz~>WjWN()&?6Y7c`xGW5`E2u_CyDw0KuKcyAjSuH zm@IdW-Dy0JuY&EvDvRqcdV=Gd4o016Xlp|b`bzED4!rjIB0I>EL{3+sFAp6{uK`{t zfKF3NY=RtEh8%M$DC2IwiO8$nw*$@OvspP>I0De zpyFE+{MLMs98>}$Dw=Sx@?|Lr*?m9_Vm$Vi^*a#H`Oq|d?8b)QTbMlHKO((*GM9-q8qX>QF+V6P^Yl&3ArtqU5q{k$ zJ7ae^#>5s%99dK##fR!Ci2Gu{UxXA-3~|sqdbBpK&E4#}4-}KM(LNgw=dqCoR_ZfdlZ)9* zkqkLD5M8+{6)@Jx+|Q=@_G;JF)tkruxnSq=!hqC-e{cT^c+XlU4-goji|N`+>I>nk zoDR3<8Ee(G18G08PjvWg613yrQBYtFJsk1>+fO z2UVTlH(WJDDS5`--!7%i-IrNYa%4xvazuSEDrg5ZCyqa`HqZ9MtFN1XbubxTTwhDP~%5q)M;c5t2ZbJR}{^a zm6n$66-67o4sT4aZa)qE9gXKsrpaQ*d&I@T`A^3ZUNmG&$us&XZ40sXtgmH-xiW^N zJ2&1gD>!#QCJca&zp!rJI5k~7wxWmvMe67|4QMeRHYAbTxxdgX%WJ*mzVd?ihe<88 zq>Aw?;7rbEM6p7>eseu1AIv_Uo)Pewz7R=G_u5M!IHntW@6G0hmcIR~rY!7uYd`DV ziIbvTOZ#u&P3WsP{_8>9+oFt-nCmg=kM@16x&09&ctrdK-Os7{&^dpzoM#*|!EmqH zTWb2{gEb@ymPcV9E1H40Kj+n$nE!PvdHrfWWK7Hidy)%#7;`R+ffbJKs)$pL-DB#7u%4j?fQ<&BmDne^Ri{N5Y ziyT$?Noij2BO6h|f+8>0jPoTD@N3pL<5Y3w&gN}#TQQEdx?S-vb$IuZv<&e1X3h>f zSzKP-Kr@Um3>eEokQYWdi+0_Gn)Ii2&B02G;9GB)vNfWb5kJdhv9=--G5~KxM{(nu zm}ZfNYoPCwSGV6lor%{9Prx5xWj_eTmMk)){SfZR_wvW*Avg@XFM6$BjT{_kEk^Sn z(&D#k;JF9fe;G?6Xf@mguKda^$0JElmygqv8hLzRsDo#gHops8??s(awAc}Ns@ty( zXT?VX!clAM!c?`#uEn(siG{s!+ip3&TC zK4AMwV8(!ZFR{S%Zhxk(8eXiV8?lvnv>4&|6d>JV5cZ&m`42N`cZfxi7bYlQU0qRf z&XNr7K8#vpmW!!;(Y`0?BUWcB8+()yU{OQV9WR{&NFyKq=M_13Gky~d8F&Zifpp-3 z04Yc|Zp-#Heq9W?v@_)Ch&)=vz+{KNMD=0tVv!? z9{B4d9?vT-+-S5$9%wR=b-;<2cS-RLM8^pRS`m`}+Nq#rt8JK5b8|hF%lI@58mX5x zx$?4__2xeJ1~s8o$so;Yn6a+iaXwI&!m0BwvHIf6YWTSlGSM3v~*2oc8X(-^ZqJR;~W`!~h9#wHx+qJOG+M?o5 ztM%u{^^-9xTB(^&lWUkU{h~xh8-HOwVGk>G!i8V&3>rIj*WLOAOIMu)lq29(Mg~yu z@s{))OQjBJ>JG~Vd3;-Wr&q}QTQ(3Y$JRe+jkRS*N(#Sh|)G*qZ z_UYn79(O%1`h}T>woJm(E^SoAcPd$9DHMXNigxE2Bp@vJ3{^>E9a|#ZTO)73mgQ&} zHdk_xE}z~ZK=J$HH*o27STy?mkzCR=o?8X)&qWKoHW^%m`c2hb^wD57SocZ*^Q`fe zytswT}z854R3R2WI!yQO_Y&l-AAr?9A*&g z_87T!1n$sV*7jFupTh3^J38t{fbz(h8-0w-NW)+dD4>)*+U%c1-;|7@()oEz{>Tcd z45#f1-?~>_IHcl+?vZ!r+p)(i&ED)3@$@#~E%v)XCNJASr%MLXmDkBbCdeePTKIJy z@cvR?4~-*(u4WqFj~IwWZ%hW^(oM zuqefFe#}odLez+hN7DOozRC?P0ca4Xx4jQ}B=@yrc^6pAMwg|byX9M&sq5Xk6etv4 z_iycY)gXzzuN03`tyWM!H!8w0aMy|D-FQ^Mp7?#}r(2>Uf82q~gq-=6PNnGD-jl(0 z%Si$symhZPiTlMtNy*nWb_xnM?6(1m>R!yrPB_1Z>sgQoj1_u16GLUMWJ->jnB>VLF3zz8bAsBi z$#5dD<;`^D=qQ>r^^nj$W^m19QVc*jxgu=%Bor*N6k#Zh1?2ftIUJGxP)$!eVc}nt zYK`MH1Eq)q$*Yf(6Jb(Y);JSWbqjxH9Zw9ba2kI#Tt$0tp&ATk%@EitHKx4F15lx! zAj-lRdOYld4J0Bu1z;8@tYN=G`uFogX^GjiHf-L(n~HD=&k9?sM6f>YLrYu0`>Rb3 z>sH&8Lo#1p*^M!SM%! zpZgI(12^b>#YJDc0$NYt7GD3H0Kt+!Ut9vp{BJ8fYz-Cq`T#vR9;^)YvObofoMgK6 zVjTR01%Hw-kib;2^B7-%4PPu?i~-%8y5J7E7?xz6sIq;a1h*&aw6Hd7n!}!;vnXW> zonSsL&wHcFed*bH6IqMr{3Y9_i=&BbG56}=_a2*{q5nWXw{x8;zdr55opXny{0HN4 zK8j2q1|3jyCrUI~7ZQIuFg@+OR~Ui`nKgH)+yNI8)YDbaORdLjrTpt*FW!K0_Ff81 z--RK~H?{U~V;+VMt47pWFxHq{^<;Vv%T*>Iy|;Y0F7f52FgV(IRs`3XW%K`}&grx4 zv(6wDh!Eg@LSKde00V1syt?S50JfhStV$^SwHCCGs46@CtX14TR z0$BoNnx}sTdN>k}j_>=JebGA}#?uB8N7J|nePHrm!GH7P{t(~_7D(_XVJ=IXbdwjH zq8-4b2DjuW?lrw3RYrfFPseBXI1KSd6+uR*&3ABV!C!Em%o&sxTXcK3({@&u1wTxT z{+s!Ek~1^0pu!pmVQ{_RkV2D4uKg-1FQXQMXFrY^P{3DX+rhQc>cK+H#!e0w>{l{Y zSAalxRmm;h7XdM&nYS0WOaEV^$d*V~&&q%XczQUbuc=*W?q%6riQv*>>KD z+6xod1f(srtf(tY!Qhg}1Uid?^-2DFzqqlG0HV|=NJ~O0w8@P2u@mf9pQ2;6gye>D zds^PHJhyFxzQ$0I8m$F)KLTw>H`+o+V@r_hxO1_5u8bd}i>-Y~q78LRme%9!{9D#g z5L3ioN;(ruhf1F(b7^+z+^-Xq(Eop3RO8xjG2}Fjd*{Ulwxw&}61sH+=;7{~7{01$ zGwZrZfxqTsx^^MFt()KfT%{B2*p6}Y{hg!wg&b;660W-z&ol($8=u%EVco8G=^)09 z!oEa8eEoh5)?L8Sz^TZ~e6&DDaV1#!ikoML0PZz@%a@xbTvBvBZSa8+7E_L7YJ0Qu z-w9m`fdxVl&E@dYvOr6C7-p6+kSl7GmCRj6tm#=QMMFoH+&h?P9gxjLhlo@C2I_b8 zA!m?{faz3bGV^$48RnSaKLNtjV6xEef9`$hrUfq+_18Q#_!A9^QnihZjWESR_&9uyd*cjG){Qs++w>6 zEM%;1U!BCi^m<7fmo{vmaC9Ob(a%fdKp;Iw$5%5SUd#?QD;c+pVQ8zT3Mtq_cxS!- zp7u-4zHF`-E(}>d94K}PWndHKbN)fgVqgzOuz&ows(c$JLap2-*QUIAR3!l&9SNjk% z5^FJNuB7cJZ?Uqn5=6+X=~xl|Kuvs_R0{J}MT{iFSgD@5fJW{M`Cu^L(o%$8dMIg@ zF`$0bDc&##ED-rpQ)DV!SEf+R?ClNalk{6S|8e_8eM&^sVR&|>H?i~#yT0kfHUF)b z;=c3c&E3i9QowHm-%K2vr7%*0*yobyA^Q*p&VyrCn$TM)PMEsphv6ZdSSERfVU4P& zaE#*2*u+Y4TBp}CZFLbC_3+QX+JX;vW5#2-qdn_(#A@kJA&?&(0(d)AzXCT#D{46& znkB}dAhm%>@#_>3`wu-aVo!P8pMu@gv4oCs6m-54SsEB_1i{l)tTFH#U&0JP($=43 zq$F_-V!lMK+Wk<6O_EUm_Td=uL^nXic%UT0MBdtua|jYb6%zNt_{WyYHl_Eq(BexW ztql@zN%VJoBL_rgCsYM27A0E^c{1|(0o1(}rJm79{-~AC2*XYY&Fvl3$I2PKX!8s*~V|Jp+jS7=a{s9%XA&Io!>g9!F0lIx0KL@yNw6QX2YrW zjoew2t1&nr3F_1&AGPfuW&QEXxYs<}p7T`bQSl^+%&2}Jw$1d&RC&rJoWedRTWe_% za>W3n50vf6Jwy>7j?NF`@t5A~PyO=Xabq6-e>8msS5;ltHr?Ib-5?xNx*L&@Zcq;0 z-Q8W%A&S7E4k6tw-6;r2cgMHyXMFEJ*kkOq=9=@WiKMw86W6~-Um)+*cba@7LkCbE z359rkRE?z`V%z~uk^3jevE!K(R;PqoP2VDX6OuJ{{3Co(52X8><}JS!H60rJlEWD# zwV;4Y!g)wvA-gX0%Av$@@p5SwyNy5#^qFJ`|35_v)Bgszw8H0Ispfe=syOgR@!NXH z`nvJbs#l>WFKoPcwhgs!06et#9n<&ePa>~yP^-|p! z31C+}XZcK1K0_Y%@abZ@&Wa){5Cm7}qbC$4C3W4;YF9v>p4GfhG+Wv!DYlyl;D)*V zDwVD=&BAd)2tJU}qGHbINb{tm<|D4#B%$N?%LJjzBZsQalHjfQ3aR8ZF&_ah)v#4P zOc?w@qX!ECdpH%5Kk~F1>RlpGIi!_&-AEs>g&E{evw7f8>FF;bEKI#IqhUgffStg@ zq4$0BJE8B%$?4uCZkH^Do^mO>?)=^a{2wn&2U7oz!tvM3kyt%yQrRVw!dPKqjv|W> zbFJC)e8$X3sJ0FE8H-&fZzdtFij?79#!T7Jj2ZBq#>;Xo%7}{kP5hiyu|J_TT1_a4 zy7{e7&T2MsuKRhr>|74zC3!YJD1-9fD-Dzi|{jFh%w#6q2vSZ((}Rg z%~e_iXM8>bji0*KhQiMcj#i*}y8ovdmh`B3{Jm2zVqsPa5H72$JS6kULz^*bQ{%wa zxAr|%+4X2Wl%}I)>Qd+2&Jtii z(PPRe&z0qOWtGdh77i_=O6O;c&6~$Zk}W4`!%PGohuZv&g=6zO)@1^@@F&TUkRe|u$|Q@8+P0f zj2kgR=||FlXDjp4o9*R2{t-ES8Q4L4veC)RA<~s88GTusqnm0DhX`q^m8Vr_NOJ`B zBvGsmi_Si6TF&vbC$xEcZz2x@fdn^{Z@aPsj#4z%fuHXY-g6+dLj3p)$ZKoC-qvby ztJK_z?5u~p%)f=-EhsaU&;ZWCfLxk7TBFV@TA&AYHe3x~?fY>WtTO-izl4GeUG%+u zdzcgPY~=U$sG!?w^#J(s>O{uXFYwoE0~F=8@eLMXLkr7mVkCEA_N)D!Vt4k}7#`s! zq>Eom>GAxqJgDyYk^lEx=Q#pRjKg zS{OM|jKlGYH0rhP02{uDAS*uEfFP1Y=Wn(gHQbq9NzYpW_o8Z1u{98&4h<`1){t@g z8|}Ox@NLB%f9X%C9jR7M(L@T<)h}HRN)BQ4&$NFK6B=f$dO?5=I8-{fxMb~Je2-ah zjD2*s4cTqden^G~W{1(N0=A-N?uIIp+fo*{j+tYuEyFzdsB{R`p8?yXwc(+<^o2Vh z@TZ!(0lhTECy7VW5dH_1I)7Ms7?QM;A_AtmTuuTfr?uRJ_=oxBK_qT=WtlZuVC07^ z@=*)`?nUxw-g&EJV8ul7$-*P$(3#2vVu{9|?38uxgpUkz+$x-XPQ z%>pyzuU5?Hf%OxJn0rEZXr2@9K2}@zg;w3`XCm=WPv@jBY7i6$pUU*=ORd54wxaGM zSh~g&U|~5?Yz7&DibqR_3pvst%z{&GU-gZlX6<~jh#>NSMamR4Qbzqd{I$PhS>=a% znwmlsODij`d*w88*W-=@(G9H5USkJykE0U7-a&m1X*O?hRXN{V86ZikVyz zNA3?ZjNbpsv$m2X-h5hIb_VqW@78U%YSM;^bvbe8(K9o1A#Lp#DwwPLIBkgo9Cm$t z`76?&*LGjqw|;>>A&ypWAF|$lk~P-*G4);B@Q>}4b>+F^&P3d-;=%59c?gL{wm5|> zD4-6*z{HD!g`el&Opb?!ND3wmL5`Ze!Ck56PbA+4w45d~$&@P$Hr3$Ruun7%tb7Kp z$#P~ge*Wnm)vG6>(YmeDutd34&b#-lLIHaiyz0ZZ1UO57MthlLkZaXIa6{KDJ9d1e zzMrxOI6Q#MGV)(X8qBpVONkxb4sB|U7>n$^N9P_LUVwL-qF3Y}rcU?3Oj*2E6_YKY zDPz1aTR%=eR~29pT`Pm{Q9{t%>D<(}r^uq_c)$(w{GGKysCAeW z^(|CzYx0DA%KlDj(aj7)LaZ6uYzBY_%H??D6B9i~)$;M!p*urKqVgvvZlf^&u@gMb zfO|f;S3&&p>N+tBAu0!kDfHqI<=D2=XsoPOo8<`@k7TF(OGmt45g4PvU~o6NQ#)4B zt!)sNQ^(DM{)Qd@e|T^3qY>#)>&cgCuTo2e1!sAv)~&(Hi!3~87i|R{;&M_xEHhDE+g2?a^5L#`P!Vk7gDfZ|79Bec@ee43kL<%2le$xrr$g!Mf~is&+-3 znUVyt!!}a(I)wn&N3v&ObZ#L!ZB$G4D!)Xeq5g(J50E!xaBQ zF)qnwrjKrl!uTL}kCwv9EFbcnx-IN6(GZU$S9)My-cQKzM=^!n{7uMEGTV{zBm$9M z^b}plf@cs;Ukhdwm6y)bQpWp!GWbp7E%nn-q5P)-fbvdrh5EgVmlp#a zY*OAP8XmV1d+#V1d>U)G4YB0mGc?mYR@OS2yUg6xKN9Ds>pF&Omr()28{&F2}rg-L8Bmhdw!+7CykIJb!ei%@HOx^BM zAvV!2$&$wTFD(lJX0jwn6h;UYhFDVwA7;Z;pwL%^^G7H#U_pZ&77vJ}5_32M_W>*o z34Gtj7j!!mS1Llv z#9mwJo(?<1HZ}pobPltRb!`wn(#ydqNyD&4>F3+BJNMdzciAfLw%EIIQB+H()@`EK zohC&GXv$Wlm2@yA=wd%q)=6>TZ9Mi5H;WuSIVwd^@KH#|XS zAH`z*p0sUeK_L%a&BmT#VZ?si(COuU`|bMT7I$IbiWV1uf!&et=b`iHdD>jexF-me z)$ItKpVa5qgTZu(pV4LN^G=M~^MNmB?vY9)H#!%ujc%exn0{a^%X5+N9RPc~-GY=0 zamI+_idwdh{rsrS0uv9$W_Kc8EQx{E&&*_bFbCGdBvWkEBM*^}ysTxeQu-NZX=CZy}k^GWF0_rNNP=b_T9q_r{jk6XLN3%(TI(J zJ5nK!KO}QM7^jS*L>G0likIyqzs-hFzuq$^vKEDHz61st$*0GKH`MWd#JEYeXM~si z$eejZRWLj#bH{!rVvzF1p%Wq5D^*5wMB8gwn==cs;griygd^|Jg))2b144fUOvU@^ zboh?cA<`vz68{!>=iKK4r$zX5{n>CJ9m~dv=U-C&(}g0qyVG%2)ds%swP8WWybU+K zJ@R$I{a2+`Wy7;uQzy!eJo?@j{9Bh!&2B%pk7%O%qYP}Jl6A@9C}6GC`aTU(tpY$! zh4I26o5HCkt4H$7#pp<~3PFoe9qpF2WFdx_VhS=2;O^$9pvd=s{?#xIYbp zrA&BqZ1@Hoe?!?=xEURz=&bAvFRPrg;2;jNy!>MEM>gp?{qCO2Fi&#iNrk99{`cs) zCf!yb1_dkVDtR*?B7VK7N>+*8B4{>_B8`GpZ}-=xm$a^Z`u_NQtr(_HB9Fdf7KCHi-Z;?PSX| z8H50xgxU8xlpHY98LQXb9qKwto}uUzm;=XE;x#o2=X>*qFI)TXVw;g}p~piScqfo` z*aivb#O1-JZy#gj$=5AChr39V2?mB9NoAYmU4U}BoHsh{uj=A?+ z`oCr=ZH;Ay|Dr>t>PI6I>uYGoxjD96iyQl_OB6*zIF*gNFA^BPN!fTrFw{eGSXmg^ z@abN)ti$`M?L(7=0LKPl>)sxB{ie`)n4fhV=7;*_(NqwGYYsYmpT=N~e)l~}M6 zYe)T;=Jhqclj-&39z9&?{RJBi2ElH-PhM=yRE6T_?X9}z=I#U8tQlOv5H*`~Hbql1 zy5GHnBzuDBohZXmX_#Zb}_%bD&x?YIzksL_02E@10mRAUgYv<+qGZM=K zvY?V%DSC52=JW|MW5+9S@T3}QY2#7AzD($DSD5tu$T&oq$bp&=jr^u;~oogeVLHYMox8WmVX-m>qO7eAS^T_{l_KyhRHTuf;V2(aG& zuj9Cf0}uerlYo8Hduj0`(*}%HAJZxSh<;s^RtI{npTb8w9hU|{}h$)w}L>r>5wYD znr;>D4g}NtS&0a8LC5&N*lR)5T<8Y1B1%Hhm0fe--f8-(?6ScRVr^N(`}^B_)j--s zel@2M>QFQ<-RlfEKIpDaOlfTpNbVVN%`R1lRFg(VmWlyC;wf3cC*9mUf=>efBHw?@ z9E0J|-)#2yc*$>zYlNeOS(*)B&F>R0SRbQOY~#*@oHpaLcS8w79)p>ICRfkvGVzbb zW4lqAs!^Blx@o0_eCk&!jxfqU1yh`UNgMo&%}xo+b$YZ5Is)35WYyrBvy~LfsW6VY zJ@VucD+uQ`zO}K;Zqsyuh~tNk$u6InAQv=M@s*~-M%>e&%&*8BBvitjTEp$?RBpN` zQNWvXAaj}$tW4DkhD^2={`A` z<62;@5-<2g3r6m#Z*hEVe@gjU-`trFhzmk_lWCzV{&=t>W-PWQr$@uTsNi0GTL$k2 zWbh~UH~>DFoL<`siX$KO=DJacHq-MYR2Iq`4B#D4q~p^>d-fOCxJw6?c4o~G2SuMk zr4}zm)M|3tY{ijD%M`!FX926`x^As~Z4H>!noZmsPEm%2;&E{0TBY#8PFCg!?17KJ z!Sl+EeM`DhL#yn8)i#hhXe=D``WzK+^B+@(IF0St^|Y7XA8~w6r!+EilB}JXIG=^K z!ZiP$I2JSK{8CR>NlOAn#CFAKjgJ63=m7}Pa_V|*mTjGiqHd=?bh9?%noBG%N8%75 zgUsN)C5A$HOqmtIEg`==W#h{F}2f4a>4t&M-Qv! zvm4;ZzD+IBYwoerbsiKjVr#UI7x>yfQV^y)60*Rt&EXhL5fyS@F8F9=nkPX_J&JRZ zNxvWttFm@z<=T z6DDIt%nI8Tvgy#*qXD8RoRFf;8ilkV!RObf3IvoYKo;J$FfvybZp6gsxoJicbFtzp&p& zAzj)lcsP8bZ8*iJJ9zo#B?@lQ@_uCwkEi*b@)y5l>CO7m>4&k`-vJfrMc28o>!|*P zAzjoQKk=*0R`ZF-if#dok}(z}QQuQDxHaE#QOmO~p(~YW$c=CbEdn6nYI(F;4GRbR z!mL}JUHxLA0G+>mV3!T8TC5S7D-aHdzknr=v4u%nOn3#C}3X z<{=>g#O*L)RFX&;+ZJN}e`LySwSg`R1@&lK|FM(h_XmpUM97uMmHlS;1T%GTf&#hO z(yP0O<(J*a=N9^1OjiJg&<&OKurs|9Q0z?m$W-x>6_K!@lI{vJ8baoNUd88FVBb_i_wwooC_~N}iU? z;||?m3F*{C8lK^tm0aD_a#5^btK7-FOo_x$;-J1(MPi#5u3R84(sZ@Ke8=|8`2T^;amTQkpC_BwzIYH72sH~5Zb4k*2pRqzqF_Qxv4QoK*BPdxs**>;k zKRqB&!;Uv0_CzN8$VND5WAnIG=aqo@nT|@BW~6RzG6`1KllRScsRv$|Mh4wK&ngJ? zHK27dd3qS<-TL;^B$6Nw{_e-tYcSZI`S?pSG`~EDn0PPdbuL6o%4=kg*H&$0(#TkB zoGwMJu@EH%Q@ZSlnBFnv2p=iXU)KuS7p8c(Oz{`^@lqr9R9uRXquN61e6e$#7IijP zkp{yh5SBGmW<tAw|@ik2gNG~GH6M5wX`q$+RCbpanNVeh9@i+bt%|}c7 zJ=TJ1`T^^r-)k=py(YU|%9Ygo$ zSgIh-Kz~_i?nDfFv<;F^M}O~Yh4{mIU*;9egkHry25DOhRgPd#Vkk=ZKP>>+10tJn z?u2#mrkjm?o0~2Ap1oTN&*Z)F3&oICf4Fp~?W~DzdT=-x%pX41{hNBs-qu8~gxVe} zE%Q+PC8dCuqOx|P$1LtcN>wtct>LUaVu>(H* z6vm8lZho84ZYEo-6r4Tj1NTgA#@zJ|)R^eN?`~M$!*dV6hGF$2#9P6*lyIMQfcb)N zs_TM{A+n?6eT&;Z0JzBR^7fFp!(gyK8F1xg{Gv5Gi}kNm-2Xn!;9R*F>dIZWKwpzx zy3S~V6A~fx+}IfxG5*-EZ(9r11hFjotq}mZU84hLtvI^|rFe#&k{40i6%(7+8HAKi zV%oAGY1xSJaR)JP{N~-Lr_ki(GH)|e|3n8l8}uYuOFy{59U91hlu2AY_gEq|VaU5q z(h}g7A?%+r>T(TKqP3_a)8DPoiR)w&ycg~aX-ufoU&gB9ctJ<@!P)>lfQvjed-$zM*kafTN4FZ}3AOrXi_Y4fH7V3fV*dN{5F(6?R@BF7vI7;JDcv8* zFD~wXV+eB`;JS412~rWAY)@E-bLltT#LllHLwAeJmX@T?w_lO!eVLVl<1c9{fuJ0O z2i1~Ijyx?%%Eqrg{@zQ(k|E)Ab>%40?I1R4G%~h}86+N_J{SPTwtA;UeWq;|(hN%& z;kS7rxWr5Ln}QhkDAt<0W_EDyvsQ#TxU8e34NO$Wh#|qL@oDLe4{g2}L9U_?jsJc-eWya!&4P>*c4driZJDYUbfwA$4l>#Afwryg$Rmw(ga{nt@0u zags<_(LBLo!`!e|-*vi=uw%N%{Ia1uG4y$7Dd@W-b5ZK2)jHlp`g%w{jz zL&c`?w~tYmn^4~Jf5jvEJ16%WcN>vFh9~7~lEiag9YF?q#~ZL^*w8psn(K%pYBZvT zquFdgmn)tB?>4&kCJg$OM`%CP#TNfDEQHW<|G=x#W;_omP!BsQ0;4}GAtBh_RZOqt zsN13J;O0OBaJhss#DIfeW`FV(pn$NLPbkfyelW-jutt^v#8{dHXQ5b+k#hd*M#nvC zzxnkgTX7(-lr1+8zi8Zkr^@^uh(ekF2=ONl5rw*6(5}QkBZoc%4qfMNg#y|)kdbe= zn(Jlh^6y8}y`^jTq0S{sH!|-48JcLdSB|A&8@DMVldwIB7IdPl%$%2Cd=0aaj^w9m zg-~jJ3?4^*rmKHZF;E&%fR55b0y3&FdW%Fk=IRyxuP5d^Tt4Z--#+J72XA4f9l&1r z!?7=JW1k%8-KiudD0i&chdUadMs~u-6H-hF{K&}a12w_1CaVdi`ZiDCJV6uqJb#9F z$M*DgS8uOdjQ3f4?*P>^T|dx3|GcFMo&fsl%J%sn75-=d`6oaDBw=2{wZqcf{MbQdg%f0B=vd)Qv2_W?~=*g#I)vNWcoOBpfLncCz&!2 zbM$+8B2Xw;?raaD7GE4+dh5bQFBcxZkbtAuQ$|pU?NHaT$w)#+oEm%E1G;{qtemK2 z$pnV4-f?Lg`Rt*dEmk|Su`of-g2312eS-LD1`p4H(L3psyAXv(Y34Be{u^OWdl&+7Xj@9f*j~p%lqk6&!PbNN z&$K8***BDLF~gX->R9Tb!$_$gPU9RuKjSRRqfi|*23|(7^BLyyxcONw_uxoND|}d9 zr0ES-7DE6P`l2c!$V*E`lK=E*o4mwsn2o^vTtmaKLllb@8@-Y>pM)mA z38W(%k}noPA!tXw2L{4(ojU$M?qVABFlOmfIvpHE z)q?$H9>uXFhiV>1U(Cl#x-gYb`D>-ef;}2A`GNr-QpkEMYd**ym#FGOrco&p_0& z_abMbW8%;n=u`w{EiNi~Soio~s$DF2VjkmI7o(($Qj`#$tZ(zl?GsNfY4FW-hokgE zFD#hyJKoN-!@MR@8qydhG^=76bYx!Bg#d9O2y$EDf`*RKmw zgRVj)Z%bfVN`uSjQk&S|gDTB5k~lwvUB|9mVvz0`N~bKL-$uC@X6JE3O1ac@WO1Og z_2(1JJx47({O_3ov?xlzeZ&IHlXjN<1PIOzc0`cIdqI7|v=N4!ap(B7cWL1xR>LC*Y2o3F!97%= zm{6;+rA({%6h?BxOzZEQBdO)OXHOf(#y1jY9-L<#zuKQRe%1bHdkWl7pYu3#`gPY~ za9Z2>^b7ncGeB1i&Un|mRbA1?q+Qo9oSU2gJ!K+CP5k*s<6Z`Mh^$$T?WN0~j~v00 zn;~Zcn`8OLHUvrc7y%@a=2MTyb8FL|7IsVpr54m#s@!sKg+eS}8)BT( zclNJwaDA1C_}3cj*i~JPnV+8@{uKasLZx3_>E-Y1CUHMWTpnLMwuf5h8JVNSrP<^Pa*vibxqmZ*#}}73~x6B=;(Gej6nr;?7nlrTTsgo;2HN7k*0%*n2iyke7<_cb=11FC%djti^N{7etL10}EaU~@$Ap*D5 zO>`qNCCSfy`zf<<#3YXwMLqSK{hvS51T|!NVcgwZVb{JvPtthf!|ZhA)01Jue0kml zlZA7cX-nubHl;(&fH+l7OtW=Y06I{vY&Lc<#sInK7LlLhMEOIGIQEA{3(IbYc}Q9j zWptYMwT&Tn=43B%0fhisk60q!|sxUHVO3@CR z4pgw0`sRYOQB1iU3`fAINI4UkC~2y6IAu;oXQdd2?ma33eydl`xjWuG zJ|lE~X(sa~$W||_^!i~MZ2x%(gH8TJc6_oh;Wx9tHb%>Q&uaSYx_sno1599%mmuE2 zs!!m5f(dKo%mM5ubz)vNQW@p?^}Mi2wrWU;gwYWr<`1 zw~G_4>E_^f6#VoQ9NvHbI}G1%NP|M~y=kijBW-E2jLPAwUK`w<+P4_+->=_u)bW=R z@!zANeFnOXkfQviPKQ<9bsr@ql9B#i^&C}1(6Sk4x)sf)P7fO521RU5F?#F5WSkS- zukKEXGMq~atXMBhxyO9T4gWmm4EwCvkv1%TAr-2Is=yH%16&z8z-&f2Bw@V5X0N83 zMs`~iJ{p;Tzw$gaq(IH2R){QTdVdj>fsiW|;+RlWeJ7YWhiOyHX==;UDP5uG(%eH_p){4-3X@fSwr|{}QM}m=Q>$jqy-V8*e}*hcX52Sg8mo< zcxFjTS~e6HJ~%(Mo@QEJ{BCqQ>c`Y>WzfaGR!I={>{d|x?o02TQktoq?NPL>RF^zX zjszbAo3}VZdH`_!Rj+Epyq-QYkB|IyPjMUZkWTR;X><$lJqMW+We;bT=zBO0**C#) z(DUUrviPeaJi-l1d$G!J`CzKXnN%#CSrw?l<=N?Q<#L(M9H!Y_hWqQ9r{OupQsFy^ zE0L=YyCABvDR(aEWMpJ#XLmpQ<0($kk$t+yZKYpTMLqt(8UrEOcMe`J&km+N|8>gqS8XPn4>{;vT7v!xj1@@h?Bxpf`Uw?d(5G zdz80EhkB;lskl+7UC5_r34g_38E}1v)Z?$Lqr=#{je{5Cqy2O~9Ib9)IF+FdN?2PO zAz(CPR*4r}G@pFB{{)-zG1Kd3Wdh9q9i|6>RZEi$2*R1~KrP`8vl0r9K}v9@54192 zqv*c&&|z5@%yg&<^dJbxBM-O4zsH4iLhKLJID%o_nBtxJA23oUeEA>f`t zXfpjqjfPeOJT8dAw}?T1MBuL3xQX(mX6f%*fe0?NN@t3R=8U4p6C279jCFCB>hWab*bBc}%A%H#8m3Els%I@D zP4DV6XSilU2yOvwR(du$Gl;?tA~`8&sEc$>*?};Eje-OxlH%}D)PfPQkzdfv${oWH z3LboY31DGox4#mAFoyDns8vCrGG?-5BMybSb!xcF1O%7J7HZJwt)UfpD{=2zRhPBNYs}9mG7z_76ZMOs4N$PneDf!xY_X`n@uPNwO=vUQgZ84`LL}zDo z7k6J#oiR#U#U(`GbQDoij+!jS1A{^(DCT1_XJ7B`EsFAOg7uL8#V(69wPU}(5Ti9% zmxa%8FeS)`Bjfw1)UQpv7=(-#B8&(v{3?Y;@x&iLj1bko^$Tb&?pOqv96uHx=~?r3 zUD(%x_ldOTo#3$Nl@OgIfm9h=K_7%6leuYRL2Os$v8DEbNCVNXefh;=ehTpenf!ZvG z&$vs9=g$p(OEf5YC9?d5KOi~39$xs%5RMH()3HkZRw%r?hGLlRpez@4MU@64Dl zOMsftAI)5}P_{8NbptJ(fa6U{&>(0kpRqwrFcXK5qa~-dxR_S#W={KlI}E$z8?(Z3 z+i_}swBSN<{hI&eXAcj7l~n^x({GfFhcC7WIl`K~M3%6maq>WZ<20Uh!0 zR=r_=OrRb430#)2{lvw6A2>UG23csmEXvKg%QXWM=9%z0o*YrY9EOfVy{WcMK(6r*$i?86Y!;%0iJdE!rI`|B1yJt9 zBFFaY!o(*gei2>7{a!N@M8bj^rKM}2>+VAI4ozNYhr>e7lI`O$U$=7h`JUX5H#jQR z+@vF>3FIN1BeEGtV^v*DNaf_9im$W9ANQ0kkzyI#<%2Cwd5YzfbE^HuwomHZr84eX zkj7y!us)1hgiwmJD_O+^e%69l&(!TGteo3MSuADXbX(8d4Xz-_5k{VuT-ZSHy9__d z6Ju4pQa1TNCk5Bk+3{jt(POO-A7Uk)<+G~3*T|Z_(dhov-(J~p4b|1+4ER{7ZIo9t z2z6@xUEDh(%}*wfpg=#%p~De@X7v!f@59GIHbPk55%BHx8@*JC8d1Czv>4kyW0}MX zv>?6AVv!T~{oiK_pBo*q+k4CV0q%lHXmeAO`PHDuqf2qInIm}RB2P`tg@1@#%UCDJ zkuji6eQb&=6SIAdy@^*OrZ~t9M=c=%oz~@&imG>V*@jJ|VRU?7fBgOv0I*pHx8q*y z_nHLTu4)bY(A7ua%7S^q74Imf3u7#q$ObhjvbpG$$i|N*y1{ZVZsf{ZGrW1m#&ZqYfK!h&yOZ_7i(l+q6zrP}Q%RR-l}zQ&xvC9Xdi;2TOFiI$xj>KiqA4 z_>P;NnL$SsXMS@y59p-RZ|cc8Dh};U0xrQ*E8Z*!N~#}+SaIVRcOs@3(SV`tc-LxA z*!W-Bn~ec(bk+jk6^2~@_e4l4jY!j#)Ylumb(Jx+|4cI+P&pjE(gjhGq%{&G5?EtQ zOclz~Y`xdAqli3~Wm;DmBnt9(bhtXMuc^`$+r_Eedce`lO!uHe?&DMIs&M~&-Sg0Qh_iao2U2Xy%835)&aXXZ9}M2wTGDUIfN3lK{8 ztzMx_r0w!!#?;e98itZo8C13pw%LB&(7<2p$2mHf5a$kZA!rFvnxZX_GQ70psVjm z#ZjR=5*!<6KzR?B_2S=y<%NKCepwBz4^atn3_R@>ya3&!O*nB)5HCHvD_La!P`d^- z%l8avyrr}$bZ50y?C>Sm+c?x76^ff;7K_hl;wQd{p-kesXA=23l+2j<7U_AmhtsmV zFT2|NM2)(z#5ert|1V6oQ0cUO2!)#KKuI`gMS^?fzWtIn7W+|1DxjGk`prwA^BlHh zbN7n!7wSyrysmEMf#t!AYu2YkCeI0~$fPw#RaY>-%)bKL4F#yRtJdd^ZcL32JCnxr zZ2^2(VbA!2_$N&5Z^THVy7d$orA@a}$(gVJ{8$5!s*}W2u2VceiMyS^?!^0_y+?^~ zRdCSJ{b<(fZ2k-Gt}fIwA#?8K=XdUGjjm_cqC|WheOI$;MgpRu+MMh{u?<>FwNoUY zYLupMGX)zKj;A0v_S%f!-{8fjlhS(rII zjRq=zeMAL2CgR@wNkYmLOG;;Ar;>PV?;gwkeAx)1vU0GgXu4Rb);uCWjCcle>d;Ue zhRCl46&|Pu<1oh&g@Oe|)Xi;dh^Fl@R}6AB4d^mkT*CZyBG@+$-EOyxt1P1aDYy~G zxi>FX)66dk5gvQ{5(ug;t)s66l2aQQr_l(Lkk5uQ(|#ADWIxQFI*jDV#@d*$UrroG znry$90+2P#j=7{=K@*w7;azD%OOn~Ueq6hlqOVg$rO9Uw>UgQblw}@Y6`$az%NUYy zO1Cfr8`$a>vkzR%9A`yjmW_1HfCR=$ zW5mh1GJbZFpuXBiB;{K@ezNC%G|c1i)e`tH!T^`4{4Rh0_mR$G;Nvj;|3I0>LrYPp zlU#c-(RT8u&N^UmV$J;G0LGQ=ok-CHMD*PMK`ViiD50q8*U%hDKp^4YGHH6&-mqW$ z8vKwLEFDvb*1e9>x&|IA_ZO2wNt(o@2~PeL&TKRq5SesinwSW`n?yV)%dEwb>MF!X zTE0JNI6z>9OggW;dT)+^iTk_0x3pH48hnGW)I=Ng`B4QI(p&-}{L@k$NN z{n5x%%ml3cUa8HoWT$9^5f4rdAK=x>B!P1h+~HR^lfUq`5T$8g5UQVEM<~yijZQmq zWK}_(CFHh85qL?RWR=kjUXEAsbW|{Q;MDzTCnuA?{yaiSp6ON5UrB zFHk-OhIr*a&@jh2#ichdUSKVFe2e%CB_p3^G*>OD<<%uI`B690#+10htPjr{Lx7z! z!DZDI4ZeE2Cxfe1vnfP=#6#(NAMrr+n1aedkXv>XF|Lc@oSHsvAL@)-LQ-30D=HhO z9RNl2OhT7nJtJHi?&|kA_$^lrx$zF*KQEJW$Z@0`1!C~oSklt>EZGw6QqH7LkLJE` zQlOc8d&>p|Q23m%BvSgpXPJ5m7uWu`>cPxgBSW#CUHAOY-y5HZ+N*v;?=St|k_3wX zAitOWwaK#nK0I=ryXZ2mYU*Vgv#nWmzG?lJmv&W++z)nDEuHkNQdTOtODm`U(*h`H zm+E#@e6(uetBA*RUFO~zTW@muS=&c0%g)2c7wdYIQj$7ak9hv+Mg7DghArmARyYyhZ~h0w=C|m6_@I2DGUX(m5hiCb#{9rU-8S$sKn+C z-z^DU;XM@SfhH6LK%GB*EPU$4E~zzsqoQdgBt+-iZS|q2s0sNOlwd}?xKU2mtwn=- zxE*B<(Yrt+QFjUEuRoZi7dGs-tJK=)8hn1wD}|-~FdmB-hmvH?^QFNC0{XXVs^{qA z#~o>;kOb^Z{;GV`M7VEpXx|y6^Y*1dA4m-sj#%F^vYY-fjj)qYR~a)M`>XyQw|P4~ zGQ3YIs;G!e)=rMqn|Ehp;gCsIDS9qW?&Ng-+HB5A@N%g~gYkBjPtsnGn@=oqam`&o zRMWOFvsQ+`NcZ!%qqcyk>w9p4iH{)Kgx=)0wJ+deXO#JQ9TMt7o_{wt*d-&<7AmL| z?1#U{quKgBywx% zseB!0=I+kVT?YgSB?I&voQ10^TFRj^FzB?RS=60O?S?dUQsiZiGg)~rUG=9eSsrxl z<$77p#}e8(CYILKQ6=2)R(Njgr3ehGHc!BPgi7q+Vq~6J0 zMSR8na+A&syV9PP#y`uYEzGC2bL^htf4jKSkP1r_5-!V+Q+#hgwdQdTys!Dpg|Zl_ z&o=nTbR$`M-s1lrO)l{az~8e*7AvC*h<#R`LM_SFhhF|5S9+>~Vu)l+Q`c2+()l!k zZeXQBlnBO2qzKEy)xDl(S#qEOf_an&{xZ8>in4-0YF-6lII;kWIeV$k78Z92bG-iw zn&hiC3DktFefsK@D8&8WPb2hEy{tX@*ao$stQqFteUtKLXeTwW~NNtli zL!Xhpci(9SFx*AhXWD7n$bi&dT}>7;v5S6uFWCE-HaalJ$8ZnjPMpPydim@6Om257 zNg~$7$K^a^JB65nx3vKw??V*NpqsZp|GpKDh*;|wvvad6_!+Y2k{vlDU0P!-;u6US zKv(nuupbi(8{f6pg#`6oy!Y@TuJ+s)9k%D+-1RY5vV}T}NeK&xboCSI47@YCp+8=I z;`xzz4dkfEM`yk0RE(?2d7*6t37NcdlZ-r#OkjQpOsr3V=`v4et+Mb-@3~iS2929J z_gNhFucf#aI4!=6-s9u1ot|^ANgwrSDNODu*lH`KpK@=an;T0@e&kL~NM2uoD6r@W zuq-#6+c*3B5oq_3(X?1q4sEn!ISum2MIAl#PxvfZ=DdXYY=;xW7MbxmBqG|yrEjB& z(%zNCAkkgfRO8q}uGZYT_(!0PjhY<5nY{-hR@q@11zT%sxZFMNiiAyS^(^x8^JG3N zjg(MjQTJC|2C+R5Lrv$W)`C4w#JCMuNnxPec@H=_5HTIg zG30w0UJVWnC`nb_vd;0&zdi7Ol+e$oZ!FPZlacSBu&s#Wh+%oRY8^|J*IGRuuTPA4 z?CkECA5GbVtV^dU)1?ur5RA-1aI~+A5_MtUc5aDYj>lmMNtOSVwvl_ zon_4$LUtb99?(iYr_{tCeTLvIMgOp~;`x{@Y)&VVn&w3TSELHa-SENHaq#Kd0Aq5EuY3c4Bx;v!@7?5(1RJyynL%N0(knV2I_V>Q$I_E#& z+B|#Dde-{f>&9$;$?;6@#)vvPkctWErX6T<-N`SdOG{4&_By6F*HY3ndoa)GN5UG> z`BJ1{(i^|moO4%Ynfl`-x(t zosS=pl9Wu@gU^QK)U`Bq{g$-MTrprpjGOC&cxINd6b{>J8+NgHaec&A8Ous>PYAe+ z$a!d(`=7F95nz$+#EY1gEJ5j>>brys+-Ajob_kMo?`DfgLQ{TB;{`j;F48A1e#~Nj z>C~wp#NSSm8y)>^>cAd+=Y1hvYut!vU&0{)h~L7fZFI%cxm=}ee@3O)cq=|jD@#s( z{s_FR06R7U=)m~CU8@HrP{*Y0FLJAj1z|86)mSL?7ZKE{I!$2snx1G$luI&z5@WvY zxlCJFSbFLp1?2Ro|88sGrFspfDhfdt0%Awq3Myuw{Y$-tR_C5-7zUj+#t9U+`twR^ zz=`M8i}DYl&>oI9R`nu9VOw>9H#Fr0zOVLJ1R*9FAWwEhZ)8V@t$V0cXLVHS9LF|n z6rnLHecOo9T*Hj+Frnv$>Kj@LA#z`B8g^zbc7^1IP$Y8`V|5h0hxbKKO93}(##@DiCME^mB_8=JN_xv5~yQ_rd0TqctL>2XtwwCfe=sjXzQCR7>pjh`eV8$>{EN%Zw%^G1^P-dch zBss(I9_`0CtypatNB8ylehFnqD$9JU%MRgH5yeZE%E`p$7X_{L_J>!?0|dF7CwvCB z@xb8%{tT)mv!^!;OVcrgELvOcDy1j4Q^g%Thdc6X`1-85UT5d`tqZ@pD+SzYhzPFu zi7V*gkDXhD7PqPLKBxSF-pX_L@H)H8VmsB(vvu`zM7(`uIOvo7T=00Y21B<8U8f&w z34Uu;Dr689UukJ+G(4CSIeT%HVCDOFW0f2<%p0XXbSBb@2U;VjN|FN|r(ZO_5An=3uDcPK6?QKSc9=}zK^$%0Gynv8r5pQ7O=br+Q+ zXy5?+acz&mR+=T0ig*;^4;?2oa{W<^GEZ-|b8gQM0IP)eU)Jb+f9MU??Lf|>%e#-S z!@6>pH`OmE68MH>GXP^ktBRQ`mr>@Nig)#SXM4Mh=&roCij4j}2QdVOmay3uIw& zn-r1To%$T|X;FyC`na-Q8|QDi+bNm%eIjzy#E^8Y&y9%9)gSMu|LP0^3Tlbu9MDa# zQoNt9)_aOa&i}kqL659*rLd3^a2*SYApVL;OZIN4sB@6~^kg96e%1TQ`<$%e)yutM zwCF%x*i~ffu9q{nkTEPM zgzhsU`-SFZ%RY^>mH>72(4aH^wSiLRq*5Ok^~wOqAz9TmW89dyR4KaE_xvVt7h~6+ z2KY5;!k7DB*4IUfQ4&ci3U(sA_p&6^EiQUE#4UShKiJj=O|X=YjXFiy@m2ZENVyQs zmm=~kPKYv zL0Zs;&F~Dn-?zfqIIfevG;Gq*Yn~{sXzGF$WfFf%K_ASh-fnCUWwD2hp#yzWc4b_) z03e}#Q3pOqJP3q~$Mdp|QY9fF2>4$arSD$(D=5vIy_s|JE{of)Ir`=Cgu;%!aiaO7 zv!UZE+tB@}ZN4p{uvs&usCjO;eg8Wukt-j_@UV^mZ)qLpq0vp17DgtJ&N2@RV7?gs z&Tq4M{*j)AkycLtSE`jM=p6T4d!qk>Im3wJBX`=cFcb^alr-9w4V_JN7e_>KJt*GC z$0rFaz^aN!`)Kw26y#_QYW$pltG#ayvVXSP+2;K4Ax0|E@59W`D7#5GvYM}r&fDVR zVw|Xn660Y6NH2&zN?>3VYoRkfBMB^A>d|oRwZ3->SghEl#PZVWnFZqqn_a(U+Fi>7 zLdYQQ%Ne3ylGhx=jARH|{*N-J?F`;A>@0^>%)b`A?so>S)f4_2IfYC#=eJHMQsOsz zPfO>HMORO8&XqgN>v=k?g~c!51xSQn8l;)0m$>svMx|G-2bm1>oF~g(N-qzyu^(-? zi&47#9dG!Qv;%>Dv+4pK7@CxpR_}W<6|(}~;f=j73i4-NH5kLocOJ{q!BODghJNUM zKa1=!70o>_J(U3Zd~2OFm!_Jldemre+aplbGTMPjK$os~)L0!NO7)exk`Tii zE3RJ|ed-WRC($p~+9Ne*oDbV(?uUZ-aFK+nxZ!f2P+QRVa+>~yK;OU(MvgZHo=;S73 z%J4k0Z5FD+Z1mjHz1$3F|Fxv5$1$6qFTB zfJw(3mB?NEPh5X9%$H2-TIvQ~D>J3LwR@}bzM+K1hMNw(RBss9EnQ7^0_m0Tm1LP| z%9vmxwX7$mZ(j(9|K3f-OWWGR7uCL>*_Gujd5LI#gDW{Q{5*FneP_M7Ba}C&w(*M=8@TF8V2{${ z-cF+ZYIj4g3W@9|Zpb3*CO23$@9$?EFMz!Vi=-u{&K29m zRxQ9sQ=H8XT$@o(w?mO!zoalr@kV8DZrQlGdmbcyXnTFzH$9H08-Y#Ho@%YWPOJFk z!RJ0FJ6k0zA$fCL_^ytr6OfP7f<`&f3MagdxT{*Y@UrdUOjZ4KLf z>)HC=l^xnD4^*-Dmn1Dr+At;#8TUw$HZ2=}AwQ4i5>$|Y$`IKufwSl}VfcDeZ;Zaa znmAwO-q~35l8MO_PmZ-|AB;By)(#5;83OrB^!u4Uy`tVaI9#`FgA}5Yf~~Hhg+Gv@ zq@*My`lU7@dEOlUXYv0Y9;+&xg>#*+koobDERBU$c=p~Te2PLUDK9`GgKhkn=4?*S z5!e1dLttcU;h0+w3RgUs-`yFuBV4Qp5}$Wb;J1ysIAn>K1xipd zV6$cT+1%33spQ2P0(i4Z1*fk} zdjpZp+)@paj_$@OR>D2ZbZg9e_sXSlS z>GNC5{=BWXv0o0TfDM2j@4iM;u6vH#_ZrQ1MBd-~JTTiP0?K>pn|^9geR{vvAXn<%h;q=R97 z6iw)$6l&cE=CFdjtvV@hoY!ox6x1gkT({fs7uU@tbH~Wz_#=RA#Krqc#vYK+EX0~a z_S^y1dUfE?1OPo-SR*2kMxwHqJVwok#KbR>zJH?Zq}A2cap>!#qR>Km`*pQi`dp|h znr8p*-2xl7Xve2-_LnN|cCIGZrB+97+d{VEb^k!7PR#XdcM$FmU3USo_Y)|BivEx4 z?lj_TVKaVny-U)ElN730F$nxzl^WKe1M+ypiW@U#2)JD-xV@}Li2Z(Uvly||uXYvQ zx3#M>{lr4LpBv_<+TCnjP?5EwNX4Sl6|D7wRMgKH^B+H1 z+2BD!^Odhm@QIo26vA{K9!t74F*yg4_(H zZm&Jt&Cd1J)Od8&lS+V`_?;8L@|m5i7F6euqS>Ph?j8^lAGCjE&<+NDa+%X^6*V%; zEma^NNUWg82)ZT?xjiH<@2T=gWKtrFQA4db!ZI_&oL$hS2EHx%(1rf~ey*$xnRkOl zUOV)DzY!C9Rq_jGi;Xd3?WDOjZ|sts_JRg2g*osd!O1){GoA%1LS2jn5Z(wb0@#2b z=TPh{c-2>QfLRA8)_dlC`B-b7L`7!`v{+OqI){%vz-~j3JDQD;n@pc+aN#^idQ#*S0#-nB}TJRVBNYZ z7LKJH6p#HGo2Q7dWR|5Oj6Dg4kVgqi3PDbRkoI=b@>H{d)d?!;!{)#K+8qvT8)rT< z^Rv07-vVOd6&3#M9xyo_>s!?;(qTBjYbov7AYmdHt#|z8ztYhV8&09910e<$e7>)L z#vOP=8~J7g*jKLz_N+q5MF4E)WUON{9DucczfVw&kZS0GBJH%(unSIh@+&(QG~j)~ zizft(~B&Yk_iB=WMco^QC0R9KZo>Q zFOK^klb8Ve+{DFAR69M`q>K#Zf{hL;{r*Zb?GG-ODjfP5ldjyPnsAD24i;a3;KKP< z=b#UtT_D{z+ZB-G&8rB+8FThfN=x3P-ip4{Rz<6@FR0+}{uTOakhWR}R|yg41TEJz z45)I64(G&CHp!>=bbH4|^u}D>!c}OTH`a)fCt=}B;er_Y@_vpn0uR&*S8o^)%1pI{ zEa{3RjhbsS(R0amTpxrZGLMhJM)ah!Lv~8>+n4ButG&_H)!e!EKDM8k6yC;*j#(+( z)%L|eW{(nvh#X#h&ib=B2pB1xcIY{wpy6HUXSu z^Y{^*$9buV$OCPfL_gBfdWF}V1>cX1Oe`%$K%uJowH{cuw#6SJ`t=d-(tf%`uU_JU zl&W^3n5vk{T*vrM`U^y#aYq({wTy)0I$k0iIoZ}O&RWh^4_0$V40n&`lgL=PGmO?5 z?Df0kLOLtxKKX~GA}Y~1`g+T~zj$|Bjkli2+jnqtWaupL_Ohbz@|B*VFx{26$c8x- zZ!u&b9C|-Z4CSVv_>Lh~SBBTc0hTGvll5618_^<4Fa48N7b3}u(w=Vi^MSjz}b6k_QH1M zE81#p*9U}^%wB?x_Qzjt#a^tI{Vv7?-0ul;fR9mjc4tHqmMbs8bpEWV*q3iXCb+wC zD)cvzUkbc#;uF0#%*02LN7o?cTNUbj^+?sBnxCwFeBksY6wGh}$I7=Qp~22uk&TCt zAwkV=2pa)6auG-^BW$6ADQCC}$P=6-67E^jhI#l4iGTh>hKG=p<=znUKq28(b%cfd zwJ0b%s?+J6+OUB&A@an<1S<&`xT9B7(G!ik+mJ>K7$KC*fqG~bk$E+MlXcVM{CbmDA?_hSz@3dy9#gO@0(YElR6ns zY;R*Dt*3`k_g=56lLhVb^vUrt16=GvIBV+V#Os3o&CfvXKPEl*?ouZ;4@R9GFYDsD zE0HJuFA?`OEbME+VlO8*2Z4?&K3pLC^Vs&`jQop-eq)G6C1mA+mSO0?59qM@#~C-VY`1vS?slvTuxJ3Fy2n`2o2ME5|_i zZsUT7QFBjX5^)t~GtA|6kD0nBs$>;RO_ZpJ5I-s1DV<-?fK9=qZ0g{U)7;zJOOWaN zOs$j^fB}I(Zu7+Ml^Y+cM`Bzk|M@>0kN3aXrpu}Buu_8sp5cf5&V4b8hDPnG3RM#- zPtpiW# z?aWQ@)GN1uYQ0qlufm~iyFg`h+2So(tLn!=-cL%youMxYL9o zyP6e?2!EZdx4nP*Bk-|j4YaN94#Kp*feLczP`p>YLj!{GxLP^ z>Im+RK?B6e>r?JnnIay6$ElItvpiji z?#OAY-%EH4+!K-Dzl2RSPw|xg27$}>&twWN@kids_GM#{eYBA?GrJl~tdeJrHTgkj z>5GD`*FGrM&l@^^$DX3%y#oj=lYaz@#C87G_@R-cNF(xwTk!WwFbdz9xz)2Iq0kr% z*SQ@=$S(YCAcaj|X2D+hrZY+}5Iw9$fx9n`O*w?Z{de>$H2H zYJV=-qk`21R7{}L=3S%CJdDY#&I=kQHBG3!0+9vGYAqU>9xHbqB-l8 zz!UJ^r!Q~1CT&kte&<1(M41KSD?I&Pl+c9L?#LWQy1FrL7F(mGnS0qMm%9?ZCq$j_ z->`HPyB_#q0_G{77@NOz9PO0w-#q+vGgvTv~Rfw4)-)KKj0uj1lF;kj=~ zW{fUL_5Uvm@QFex2;W(`LBJxw`=%8Why6m zr}3a8SK7vgS#5&J?AHRi7Id<*F*JpH zay_L-f{h*Kacz#c69$)y*wqRMTQQ&RfuZ zzqVbnw5^U1DjP7KcSFX*<0|!w?`VJk(rGDW=bHDt&}7eZ+-ydS93cbv+}T>r!oJ7k z@TKpH=Pzf2W>Q;lXx>T7nNMv!@Ba9jfHUdZ^D(xY#Io4SNJqN)nxl!19b#3)%UWO> zJmAK)Bh=HtpZO0;?awGI@)5GR{T=qpjRi7_f66-b$gwa6Pl!9GxT>kFf7{P~Brdsj z9HD}gjNDM!Lxey$u3E%Tr`rQWIh^r@j9A4;D<-%r=g{@Y5rQZm7e$#cTk9^mtBYx2 zwPN#d$58z%Lw%nGL9b48%&HbhWsa#D6_z>bI#)C^v{}uff?A1 z>Ze_97nDjTEj_a9uVhu7q^Y>0p|YDL#ga4M1`s zm)=^8OBB-Fg)woLC7 zy~hi9ch6t{3wq}aYTx*tsn0p@AXV?Dh1)MR>`Z!w8=t+pxeX)MCwaHqe7snlN# zq9&oLXjIxftihst8pbkc z9E`|Kp3K;20?gTQN?(zZ*_j!0J8_Yl?ut@N$B(Ac-34GB(UPh&duUQ}g+Y4Jx6Z0u zbFYy8MVU#w3zN;zWNX~^tSF*9EO=cGin)yWW;dfY%t2_^#N`h$6zgU0%X%k|;NK+} zPNOeRVo3>_Y7AL93e-zyKD9xR+eohV*JsPnvBzrF(J;{5kJ`rd8=*G9E30Vs@OY;P z%4V4WTRlXkWVpuZ>ds3CA*g+c%jbZ0S`x`|^?6@NYE<&#bKxng<$FkoDraN$Oh1iG z^2Kp+iN!aJyKg++0g5upO%D%{k|t~IJC{4~=G}{|7ZLVVmotfK9cjP+HE!hd#gvGI zWW~OT;HsKi4I>|5tQaSj9ezvU|Mc$qcqL|F%DX;(O=%mGC(Yr%%sWI*ZJ5MsQYRtK z;ABsY+$ScUuu_W8_eqV{cibXZ4m@aao_eTS8+u!_3$3g2q&YN1F{WN#y)&yzYw`6! zB~z8qkl5^?+7K~hT%RdiC<_4%wSaS3dXyTi0ryC4C z7tfTtUhQhkv9%G#PZrcJmPAi5c~_U}lIpHX_8Kl5eb+4*u<4G;y^#{tzBW0{gLQM} z5_5ZdJ3(P7Q=T5@O$6?n)a;xhLaZ@+fM>vOmZyMo74j-5E2}-AD}G6|0Yt$p2%EL7 zPstb`Y5c{dq`RLk3d#n?xhL>-5MQvYeQUz@5!fl6U<9bpSL<6bRUWOoZ8xhiH?0pJ zZjW!;W0IJZ{}lZAkxwVRlCYSDK`DpEy^WyrUz`8yFcteU{_6R~nw_Y6>@{x~P_8Pj zCr?-2a!h)-l6XhTzYb$N-~tayf;i{<0qgqZ2=(NT1C(ed!M^?@SQBFk!SIL|DJ zgaS6P#GP8$#_;An2?n@qI0RSAz*&&S3?;p#GVMk$-zbrz-z{=)SRm0P3Q(Xt)$4H- z@lRI__#R-rRnw~rKclJEJrsmp*+!Eo0j#BVABQiJ%{=su;^4w+xe zaqU>Yjr4sN17L+kuTu&0>EfzBpP=^o|MG|Nwql*!ys7(p#DP(tC@1tJ{`qW|6Ycu4 zjWK6qR|=YuR;|{c;p5yqoY}=k+L~aGEGyv*TwK1X@6v`am%RngDXlvdu)Cki3pi3*6~M@%od zzs;XNqYKcxrJ3b-zJjvdwQF=fXm+L9$}y;+A|e^4f_k*krRrljZa<19SxnpcQG&9* zbn5D|Q&i3^^dZv|nUach+Q?bVz6WOSd-8R{ z*y)Jy+r*|vqq&GtI@Zt>ngqfPxb=0b+4>R)Lsv3v28J^N4p{FW9McQyms*ep=1E88&{C zGcce%a7wKY8BvOBi^ZERpw3Ie&W$DWg{I2B#KYoIA)2WfBCW@;d<#lI06IY})i(koUVfe8pk-4TP+Mxb@negBxSv)dK zJBqbI@Vno6(ocn`16wDH^h4aeb&E}imOI-D{zA@dx)G#LRi}n^%V=O(tp!##W}0nz zx+*r!bJB6fl9dtzj%IFD@YnM0{v`a_vx9((7C4MTCl+bGS7?(Q&)`rr1#3wlis&;K zCJ9ilQ0Y`(stEccJlqHpo#3tuv z(n{d@xC_twc1GjRg;GGbAe-9Q(fG?@e3ko!P?Gx2SHs6tu?KXAhjkRxqkAEgA>!BC zas*&*i>x-%; zPKZjxO4tozat=#{?Zr9(!%^P9Q>-m+osA`-6(D9EQJADaPT}3U+6kJwMBMweG&>Iw zY(|Necu9fW8#P0-&XtWrb}@c*w84G){t%0p|KAx0|GRO~SE{0EhaiGDs0+fZadxX- z$wS3`HVv3My3WU}^RWi#g}H@7%8w28clUq8mFTwtWiOjBf84nFM!)tt_YjxYgM@@r zYk0NpfQSt1UumS!`;ru+jkN=x?vtxX{D;~)I;^ksD0uBiNeKTok6w!=3v;XY0CZ5L z`3)HG1!xqP3dJk&{i#|idrNZe*$K8NqY@U$4=nO zpT2v^aYu$fQ@@WODmN)*ik#$g^JP_eVkM%5y{=v~x03@&|J;mq`)yXsCN)TU^x!eR zz;MrPibP#=_a{|&xwgXmdt<)FI1x>`O{7#_A#Et)ehPJNceFY9 zDhCipSJbcUzegZ@5>!lO+WgzxLQ`6`zO6guHb?|Q^^g9bM(Gy4Jfk8X7#GCyBn__KVBPv>h%y54wt z(&x+Zlj)Z=_mKyu$xkJ?kU0R1ky|q`L9~A*08(O%gzM@>g6M=e+|o1c24ZxbcYmcS zvT5miFw-P;ZP9ysc$i7rd#FB^IR<9Q8`o?EK3}bEM}lq0R`xa(11)76ElwK(Z*K05 zfC|(Bd#Y9>y@paIbMvlvr1Ec4vDW9b9J339wa9BkiUB490Q%}=&e^7qvp8s?)6Kn5 z4Rt3fDP^Vm@J^VPj2Kk4=vI(-o;64$ARIUIx`Ni-SUWJ&?+6hgm5;8j_9`b#URX%GN9*DWuGb1X5qRtlBVB(1Rf;xCk&UmvpNqf`h2Z2-Prl zvw0aII+%?a)FZ1>*1!BDFn5S-3VCN|XL4RF$aP1UD@EzIooj+D71{ma^Xo-3$p(iu z5~JI0;!67i5Hs5U8czA&Z5LbJ{pSejLkvW#Dg48@BVp$%oUFTgdHScP7n%d$?S0Yp zmSLC&Gfo1r`CfG2H=Sp&=Z(uvkUQ?d%&X-%x6UF*w}ZuUy=#QhM;B-ky>IHq$4wr# zKa(3uR$NOr>PyTncs+YCH^rKl=T`D91$Q06;k6X8YaDW>n1=LEQ zQH>D7>!zZENQl=oW@jV&Oxwp~+uu73T^68%fBXB);$96L+_V7dfufjwAa3o>ASD(i zDC~b!8YeQ>ZtWPj-~S>5oL}^F$megdeo^ zO9%%0*?;$&J$Eb;z?N)$+W&9fXKQD656#26QkAd*>$7&5^`7BVF5bR45}H<)&o9Q-uRcIqXtnIV)hodi06j-*QdL7jyMCc&xchX7MkyF(2PW^2V!mM zK}5fec4vLLZ>)Xo=p?@&bVcUUm5{=SRl0}u1h_q&w%bTyVVw3A9b#(vo;-f73M5Gy z<{%;SMHb#1#WTU%cLd&wDOi~l(luDSpINCE|L38m03Ir>6xh@huO3ynl*vtPdy7{2 zOYH!1sk4);V|P9TkPQ@bBx4s@rh_3Q|8d9(igE>C?6gcQ&6k|aj2m0}5IJW0V4xU@ zWH3~$1T5J%Zc2Kt=f=#XldDN)e}t|8&)+<^xH`IW4gfU0)H19&c%y&Wst)%-bMLJ* zJ|8|b9qFca_zh!B_VKXBh#U=0JU!fO4q$(f`oKLyqU)_As9A0;X<%O#pq?JSdQZQ4 z8|vM5|J_C(bQ9}Qx?AD+zN>sEik;^Fv%DCmpBq#A$C-b2v(gC)MQz8xmc5>d`V`$IASIdLjGyMGP0jjkps<29+XUXy31Vr|) zK7AxGkkmSzwB0nnk)o@y5mV5ASv@%0XQ|kTz!r^+i{rnFxVAV-q*$7mT8=d4%%i|wT4t+Gf{>TaI+60^;R_v$5c`A6TEoBWfW zTkFyldvkLFoe*W>+a30cN_b8dNJz*Td0BuYpdQmpV+mln240?F75nD(Y6at_wzlXE zfv5f84r%(OdhZYK-?N-f^oR}B>zT1~aP*W>d5Qhb6s|~`)sB=Ni%~24vI3l;?hgM4 zUv$J7MLLBh7s`N5p)FV{vehePq$;<*9vDCB^^>Kq z9%IDyDtujpqJ%Fbw84P7+(a}~oqZ6G{bP^_$BZKiXR$N+kJSM80jcJ@=uzni1>d4? z4HO;Gt~A7Vt8Glv$m2x63g`g7(#YT zeJqiITkh`hao6B(VNpd#AgWCKk4`9Eg~ihG^RA5Z^cX)|!hGv!1n~a}k@DNf^hLPw zJ5S2zCx@_pk)4?L9>Iunq5j4PsEiD)l#}TKPs1(~DhLxO$xuUpQ7kHZ z5Q6wmT@-DE%wyz&t#cPm<k(h$esRgf1z4HnTRHK&=rZ5`)Ueh2$FtYzKs+9Oz1VY}Snu6$jQguN zvN$gPCkX#p>dU5Gm>^xivv{{#&^%yfyFN!E*33HjZ3x9v{JV3 zxr9Jbejm4?;vf`c;f;Qf`$jClG?+eE&6ApZFoRZAu+Kwx)tPMx6m zsAyhj8Z@Vnq~+j4z3HlvEE7==#p1VKGX<>*N@&tmAazut4IRJ}X5LrY^wME#JbVcm zaO!kQZcMC?!F>)}7`rfCd(~`x=*&XQd>bVJ1sE%n#a!MfT{>ND(Zjl4gdDt)cZwn^ z_5zh==t;OWI`naw73rP+R`erboX)xjx2dsimh){Z|fMbo|P zLIV3u+a>H!S5oi7@9?PxtzCg!E)Kb4Kd!C8*9XZKk&L%rM(TnWS0 z6)S^8^l(u0<132|+{+^qUcXzw^v#8}TD-K2SwK@P{MsNn z^28aaq~BBC*f&aEFY+wd32Dhq#(;{1=}5b{iDH6EDdx4*AXQwh8f`fyJW-18T4{we zXF#c4Ey~On`qs31M_#CPD{|A5IhwJ(k|fb%bZ^bc=UZYU!K}hbid#cy$;8{7Z<+t> zSLcKri+3VqO$qOi`uaSY+4ys$(0dKaBPEq^8)pFCt zeO__#XD0CMY`==`HoFNO#+V|OwSAP?PW{+|`-M9RENv#9jN*w<9b5zoiI18~}mpkz$rY?9{kG(S0QlL$*x&XT8 zW5*Ztfi;n@6;Bl}X0|V(9R9DgjGB_takd!0kOv8tjlL-%@n+M}W}jUM1KJZdPXWL# z1G&7ND}a{X21CV1B{LE{6ZEwONQ}mMlO=ZlzM_A*d-tVcGX6c<^BF+XRayqOT5A3# zgF=XiCmmtx8+wDwviii*)<}qf{n^EHj_EzON5sXiLndM5j~As9GG~t!DY(PP_5Ftk?jrTx z;OFlUDS@w1!ls2j^q$=cS0!}2YcuP^fva&VhP37&NU0{3qvXNx?C$ZOpS%*g;ZybQ{I(?8*Od})5HCJ zTKJcu8PQx-z~12hcfxT{k%j&PC+wxy3FtK0{(4@hvm-Y22fA7AYh)B>{}+c0#l@(S z#n2Lsu{&m(2KR%$cWite>egY^)n9zR zR%fmT|x0J`cB9sBErElfXYAbM4c=s0zULajrJ6Ys`tKz(v@kE;L0DKz8HN9mKQyaTnl!E zB@A$a)~i@r!iGHpCmv;10#}%lj(VDEPP?U z#;#-jj({Xp+N&0I1D(l}S_E+u&eyuXF1vSge8KVY@j2VbNv%$ns4cdmYTkUa>^7}v zZErWyKh(-(kJq7;mcna;m%TF%`X3i{+~bFrWttvF7d4$ zr`1`MrWqM2Wq0O^@9FLF%HsG;N(vEJyMYK=>@r==K?KSD)g(6_HJo7ty-V*BF}wu} zmfx|sB$cApKX20eoRoa@-1}DCpK>MN!E|_EnH2dwlE&gyP>z7o#&(4FOD0om)XlabCBC8;Gb7Tp*IvgM?TTQLnSfEdLC z?hYRDXr%vN79jO(EbyL)#w>!bL^GY?3-jo2D8uy9(x91a)_q?M90}5y|L1ziV{sK@ls=k5%CnzaIF^fb z@N9z@rcXM%kkV6?n=8naiE*!A!{;TssB8La$*sU&r98dQ+1UI|aG+4gOkP`aNx%P9xiC zWW?Uj(29t1{d&o^r7yRch{I@mj2@}-U-I~-rH*r57Vz(zPaw5g;eCK8c)CxQg_!6k z*}tIlL-eavmNyahhexM+`=0PC?b+23my!JGd@phqxUPz=08LP{WxWLNPH(8m;+@A| zL?yp`WU>yvAywne;Rw9{gR?Eb5HAH%fetqQi9-#5?)XU`+td`cXGl)@mPQslHL&eO zd)PPTjin4TXJ*FZuh1wE(wL^{6;?xK*p-Q391bOkew~+W{zhbH+Hx6*x|-{VYn>Qs z57uBNWphdXa6w{^f!FLL>mUsUkhUFib$3OA$!6)=a(y$}^0zq}`qPw3)Ya`QTQ_09 zs-G`i$wii0MRi15cR4%|V0t=YXx1LwF*)dD7_|YqWOYAi29jua$ybGWn~I8)Oa%-5|IT;2;sfFzWgjGDvqeAsQAwu*o~i$YYoqniQj zFE5OJ%B<~vnB}sgZd2Oxcsa@*HjnS3Wb7%=`r8(4P8wPvGko!fGm1g#T(5N?dg|i> zk(2oRADc>d3^{X*(f@Nrb!`6>@MnIb`NNyXYfE}94X#bAZaM&2z&oa%=TJYzcMeJC z4CN?(n?ydI6{uof-xqJH_}_4xJdl-T<5m1$kxutOv^Azk%eGM4yxC# zmvcSbI=;Q7_wgZqFBcDi;6Ca0)ddIBJZ>k`<=YMdt)={}H^_$zRgz+s;g+z!NyvK4 zurMR;p_eLsfWr-r7)HP7A2coR-6q!mOPrDa%Dksv%ub=yqeWD;^>RwyYh#G1GVtY< zf#irzxlsd=J)844k~rj9&`m!X*~HXLuPC=VZQ+34VU`6zI4AX1;QZCIkzsabng!aXQY^sKJ9zqdft*wDv+Yzy7rm zCCQ(<-n|$MjZ_-)!#P`}elN|l#aH9UjrmW)N1~FGy=T5byC-0^rCn0^gzicd^;Z8rjohHHDiO3q@3fj%Hg~bB*`~RKt zb*hdt$ZtoH(~qjX)%Fh{@LCmx=ZZVAQigyyL+#OW6U7mLx6P>M)z(Te)!JY~yilG5 z(uHQEY(*%9heHm-`mg2C5nN@G_tUF zV7Af=pUc3)`ZNQ6-bM!YOJJ{&~K~wG=ExZpmY8_s4GX>E0fD??YF8J(GzH@wB z)X{K8CQUqzbu=uV{mAQrO=A06Z;`4K`u+2AzyXRoo-XpZNXwer&)peABRkQON?e#U}=8)AP>!z?5GuvQCns4WNgcDfNV}DlHi6p>8nr$?`=lWV|8kIL$Igniz5Vp2 zERnV6b&*0Oi|?@YkWQZAFn1T%3OvJ`1Md`L21Wxie+Sl#$Lm!guz9 zU!zp+M15F<6q0(|@5I>`#>`TilSsO|CkL1pdYJz#i$_p5n~o!Vx>96VxDugZ2)oWw zFqC3hs*iI%VEXUwLf`Pvn3K4%Ct6ea@b<1x?N5OXP))q}r?raIlb8bmQ~b+#X1)V zRK4e}43Rhk)Cqx`wJ;tZHw-#)eSc7~Sr9K0qGc$UE5=)@U4=k4Zxq&iPx5|*nCR^F z>(F~T*TcfP&#?JVF^8YV0c`1N;2);`)Z~12It<+m6Df0h48O9g@{Mmga%{i$Y~0!O z%qwTl=P(UCyA=JgZ23v=q5CW|Z&OX`B2#5oH4!BRjQWt5UneH;wPcU^r&?Ka z6WrwVfg+nkCm@3&o3xBI3H`MXOHSkGlY>8QeeleyqR}GKqwD!(tBL2rdRpG{O)3q8 zu9y_oq<8uM&~%kiZGg)X3GUG1?i457fcc2@8GlYuLkz&RDhc36{d5+KZ6>q0A@bLqj3MSn-4fD<_V zYv~QaZPk~oH&r2LnWG{}oV4ALIpb{Vv7b!po|K!{+Dlt)SO{lUg7M%o|7Mx zSGyK?ndYm5YpMTc5C86?GBc3792HSGjS|dx^IRYm;lKPiw9vL>#YJG4_o&hcc z2R9eKlHznGms2i_Am`b(KW>v7-FtWqes+AgVY_?|Btz}vlluUH4H?X<-L{fR0x4nU49trs zXVM%hq&^TcYw4--fhXCEx9i{#(N|+6*M`5-=6I3C{Ty&vn9Xj&F?x_h7v}>Vr#y(; zts8)EPr-eu=GZuR2Q#zvG-Bmvwu8~0HMUYQU_NKRo z^ejoIM_|b~KsnACB$@%z7lj-2yy_Pe_30zrOM)+DoZUh{n{aJb_OYV3wSoP;xex(8CGOtMM?ZTkWfhXeJ$tKb z$xrqsNW=y1G{EX`=kh@8qqa8$YkYlk1-XS1G5;IL?;w3WF-EBx7|8MZnCLBGccZSR z*6`y^C3A5$YY%-*%>ej%JN)n8L-|?~l5xZxep1W)Q2_^PImzh*2X*rZIwpzN80ID7 zF~eHFCi7jMqc{ zpl~ob@jLWLgiA*0$5-v>bUrAgVZcav9g;Nn<;16OVLhqI>MrreNQ#R}^o8GYyLi)6 zeWP?P{(F3Jrj@=YWcY?bLuNA^aJ>A3)f=T{mHjk-;nnv zx|JUR6VzU70fNH9!k3s1QKrJ>F9<0McO~Zkn8?B^sC266siZ(`toTTwfIyahu>dtG zlf0J&$8k0k>zmr8%bD{neE8n+g(Ci$KfjzmPU49xD0DzI;W;Cm>Mp(U5|aw6_Yc^V7YQ zPM_GfTR>&=IVO0y`u*A|13%h}gr5@<)87x-vB#OMJEh0_KFPn64OYm(Bbe0Pq=Xb2 z^UV0t=<8V?XIR5nEz6RtZHx)wTdVD_j|~#a+Y!+*7`K=+=m4&22zW?w4nDnnjU0x_ z0*!^~t!=Gk#rt`!Wvjx)`&IWZFNbc=Ev2m(yz#Fn_p;=UEl|j-84!cKA)R=Tkt$f_-`Wq}9B)0HSSzS117IAC5Ywx{&aw267bf`&!QqG#lfhyMmN%0h$r)D1hN%4kc zD~DF*ZYj-wFNMvXR)%^9F8MrMKhAuywKzI|{4-3|W2Tx&#?Qn^j-+H^k3Y3{8F}e9 zS805C)_K!`_g2j)bh=o*uPn+mB8o;_QOQ9W6yhz4+Seyyo?C^cH4F%6XJN3h`MWD4 zWpAGe`cx-v=SH)A^yl#pVT!)P+$rucYE7LO4$TuDP4GeG9TO={mnh7Hy- zHIi7EB=7XIm?$Xp;v!gE{b@$gs&_ruW5|Rq{fxtYeYV^Al#3Pmfd6Fo#()&}RG`UA zo8p@HbUe4^^PdpU(}24#_V#8|#$e8~yG_=#f|WR&y4)M%;bk`0SZ$)wzGt*l#<~_u zja~}xj!p`(hs;l^eL2MFU{(w)0(0)P2-v6c%#p7o*R%#A+YhhtLYX^PlFuk1xhEoB z)d+4ESk_aEm)IO!Gm7?~j~5q(RW-(Ybv#j5MO~7I8ykaO0=?&8f_=wgZSbad?e>@M z+~7CJA#gTvqz0N3laZtd|I3gS9ZR>+*VhkmCLLGhs;TK-(>TjJx#-2>>XyNi07T)6 zNtr6p6U_4oBN=Bq;AWV>$$-=gL=Tarrt?Zqtb+oVb8hM!TbG8mi) zP~kq?1AJAjOQR_b^v!@k(2f?H+m7ko^8EpQ$G4tWSeW>Qv(1jPq0WXm!#MxXd1<)oYVr zE_n}|QG45>%*rIZS-!K0QS5m|xq}PL|30*BE*)RG-Z8(?*OVd$M4kiR&f2~y=Z-z$hU5{XdcBmI63?7+(_0h7wX)P zKSR7aH!Du(H#NGyt9&Va8oCI&|NB7d2RdC$667}+7k@!A@;jR0FQD#`3?h+b0Nb5z zvZ(j1u6Q$dyOA)jr+qY;9CEx*^Wycji;Kg}V(B9VcgoGJ;O23-W-^$8GA@gd>|FdnElLeMDe7e0B&(Uu52{S8TdNp_reBvTKLe|Xt#km zWRecPSyBLBpmEKTD$RIF0sH)?C?0N8KFy+0Ae zKYJ3&KZ}poLwiE1ID1A}dbx?}P0~}L`3tU4$k>4Hd5fzC^BR3wP z^k1KSC9Ucx>|aR%!UEY>^3v6E*SPqwt@ z<_ou>de!6k)yVx@3%axs`>WYJO}!a#mh=WU;}n^qO)D*7jP7>Qr}|`fIyt4^6nD8l z7z=&yCdp$L%ez%X=%;i$9z9aJchW13>A$83a1b{@y*s>LeBrU^pOlE&wz>!WeZ*uh z*fAb|UcP>WuhsaR(7c?z^b9dEGPZ|3GF2-DKM7SQNh)e7r#CJ+by0!-f;L9?_?&M~ z&Al&c20tyl_t<+M0hi8`@~i}?e{d#6%WzPKxxYb)@usxk*(6N!4h>&=genCnQd#-0@$U-_to{y5aL^NnbXJ;!NY;d|`x(z8EMWX8u zxE_B=77rRX_UerizojN!ZGr6FJkf{(`a~Le7UmTr8_{U)F$%ie6kw=yEl??$+L{)! zPm$*&KOm{_+>s-CihT-JQhq}uH<xel0|6~HsX3_Ro?m$882A!-Qh0H9!PwK+W29P|EEGO+M#4m9HK z&L`6vl8W(D-6nbZ{sPMLT3`nRs}he&_p7*L3p}o@tGu1qh&z2F>@s^B`L%sN z!;aa>4-)R`w{%~*v{d#mf+O@0&N*+zY*9v6EW?IST49U6HcMuvhP823U*dfqK^9+wgdpSxw#6zB**aP=X>%Mwm>o>V5MS% zC+uH##KibuLplEEKiFPUdG`#0#VQ9BGsSrO7zn?)gRjxg_JcD`SyRi9 zJ9uqiyXzw;>@|~6kongnPphfdhVq`}C*)~Q+;p`oPsds7U)IiaGcq%aZ1*vS3@&dx zwCR_Jr~mQ?V7xz)={lnx*m?c&a58b8yD*vOb~ose^LFs%YM`RjU4n&Pi zVR^i8oZ?4$37eaNgi`S1AK8l3)32plJSU+sMzx0tShB#iW%Aq3bIjCdV}&;X0(hMy z#kp3A5S&Dh1x;Dt_GMF=IB_&M7`1HKd^r>1bpCWo4EZ${>7a~^c)$|MH8ZxDZlzRyxYTD1y=wTm_vY4EigH>GSnGwjzXS?c&w-}kE{{AI-1DyrY zR=vS7cwhAL8q?Z!Y3nz?0d?v+Jd7x$?8X$w@A?>SYN@J>FOU!`yOCnt?1>I$#=ehP z6yk;d1Td;<;P>Qs5>^aCMH24W*kErK zb2z#~@>oUdmP~+xWq}`WHc=PmMLWQuNAFGo`xk}zIAS3FTt<4M)2a@~w|4Xt6gV|! zSJeW#q@u?NYBR4_kH~L&=80*_ALeQHedeOjK;E&kz(Oo6 z`1jvE;O5+C_!;;PU2Xe@nH?Vflr*&IhTyftm5rtTXZvl+0x^mGgQ&EwinXxqj|okc z3io$EbW?N*=0*p8Y$2*(Oj5%^9m>_O&d83+FXO#Js7O`OVe$tX1I<_TVxQL;v9gk? z%EPPJQ)3s!n%|0=DMh8Hrw0z8!@ImF%Gh(#DJAUMdhTGlsPOQUh8Lbu(9_jvQi4B# znVDt%_ptWqPL@-CVdH}2YG!i zmKyn-{=Abt|B96RpqENdg3nXzOklm6i9RdsP=po}NZ%dyL6;+%ZWzq5JcjP|F894v zDjc^ELD&!V72qzs+)Z0!1(Q?r)CgEOqI{uKum6q-O(EVpbUr}|JU2HiZV|zcW3>Z4 zkB{_BjcV$kjhQ|LR;YA>Y0%4q`CvR%YCW*l9*|#(J=qu*OwLOmR4HBNxrTp_KwF?W zaJFfHw1y+t4w+0!OiZl)e6-YLuLx$O_*jR$bTJ>{TV)m7J!!=xS5b~bS0(m1(Z_$0 zi6m{pfcA!A!yqm;an9GTZI4cAb>oAVrrj?v80-0i_r0Zy_h3-d%_?cD69%(*c5uob zN)b-x26Zp<5iM|g_JJ>Zpzbj#IbWU;I5+Y+pWVtqlz0_?;gN~P9R{FFW9opkEoa6%su)rF*0sPx%GT7H(h;mHT6!Nf)(iTFOe#YYqWO0E`m=Q_PC;p6 zV5M5l*Mh#8>vaBm1)E<=6Y7jwH?NcE(t8AM8sH*AAbN=Z@3#rx%$gxcl`fe zfKL{$h$hf@yjz!1#eso9;6)F6-NHNomfmgT6h`}wPr>t@YS`1_{?1d6*C=5UByo;f z0`F&+2F-oN3GNZyH=T5gbNqL+W=B3|_jGRfy(siq+dS|V?MSlR={IVq1nLWM z3G2wCVNOC^uE zt|rI(eqZupU$T(nPavIHn$~bWZ*4r<8bVFYoMc3a@7~}d|SJ94FWNACZ*Lt#* zvbJjPfj_gG`TS?Olln=5Z!$v%Tq;Si=syNpxL>bKWHXMlHWpu)H^N2W zorR%n0`2tQi*P%~Y!Y>SAxMIB-%P!NRqBdzyv6zRu;wYX7f;6;X`dv0_Ed0vdd^rY zm11R$JkvSC0fk%*8m`-~TXjO9gYw9Yh)#g^a~Z3T6IRv$c?%HOT!XyYqR=QeoL9C# z%mx5Nq)e&?BV8EQh;>y<($u-Z9|RGNZ&k#)WC7OkEz6W!puf8>?Hu-KxRk*ZtJlDJ zU_Fj!!f|9skCY*cV~x0Hm=DOK0)VESN6pd8-~}+783YZU!w<4!#eSNTy*vGmXRNTvV}J6{=$=VelZ1>n!p@G5 z5w*fp3w0Zt3Y`}dVn+fN|JFj_O%X@0cr|%OY>3Rg(1{x%8DhIBMYy1sdo9#`ttqe9 z$%AqBU{6+7Pz6J7hfxtyG~&%wOHGTDE?#)0_ zk1$Vp`baXQ`tb1ZheXCkR61>pUtoY4#fPfNOvmpDNl664Qz!n1Uh9|8X>J$W(DeFu zkBjD+6-N-k_^BwQS~fDu!(wa2=?b>!L3$$#iV0f%jO3-E0p>L2sX0b_C|L$`*gQsX z>+5$!^Y1GU3@cZ$oLcT*!ikCp%|IYr_yLxb#zAx?=UhBb94DJ0dpoP*dd5bt6@Q|F zf>oE;V-}kb(6J6wzVa7k3qNng9b#$F0#Y4gYSMx=Jn zESY%gG2zSg0!3jB*nZ7Q^~dIz@!~AV3PG7>5$7jAb?%007-C%~MbZ$c+Pue%O)?tw z$1+n&Y4Jqd!a_Ukw@F$Ah7Qq5Fk>=I(S(oObl#7TV4f5aw}1mopL(i};0wFzs>uh{Y;p@f)o2Kauztn0X6`Uehw3w3hK@v_$6QTcAlQzr{&dE)Kg}LqBR~RAH$F47WwWG0N?qq zDEq9VyX>3&n25U>monZpdQZe<$KN#W&4snY{YOe+-ai;?d5n4dDD{lHB0AV`VmKd1 z3G0`UtI4f(sCqbg4e4i;W9*GPo-W^wGb@>K3-6nJr&0p7J!+00>Nz6RZC^@eqr<}s zBJ&95XzFaY$;pQg;IhMvp5HHiUo;WRA9H_qc^o)u>iV`%f(Qu-i)fX=IH5V_IQ1Mm znBjdp=sG63)WvGqaW(MmJyLS=(1SH!v4HH6?e#xDW4Qy(DdVXmP~p$Ms8yZ*y=E9b z+>cEa9bH2W3|7$}T?CQnt>-m*9-4eC zOhBy5GaGD_3U)wndRLubOSF-0xQfvx@2Q28oCd%6^x@ItCD2v61Uvu+=O5%z!IZf_ z&j_CPVV0-97ErMw`oRr!zgHEpm;6KnFs+~TkdOFdetQsqV-cBQjPml)G~!R!+|+tq z2ZH~}9_lTGfYmXkKpb;$Jy_q=`Umzs?^F0eaIUl!@|dkkT?rxcS5!%y?lIVww0^e6 zPcUEdLObb4_dlL|p*Q-!IhrZ!s$Bd&B2%bhk{WG!FB=mheGl?b$w?cd-TkK zXNJErO!dMar?jBeKoK;zi;KkZIb|F3MjKZ*?v$*Eg#{lWH_tc~y|$x9LvyP+^uv{= zFUKtRXsD!A#XX`$RS=>d?ZK53kx5;YSwf8FVgX#;x%4-L?dAuDu{L#5AMsh@G5RNWmN#dI~cjfnE%36c<&>bdX8B6O~;CQRDgTLQ5n6l0gx&u-`o$xy=j6+od@f zO$oI0IFG$0pgK0~=B7%0c&nv>lx1uPlMKHgZx{OTVLR&R+m*f*=PMmD~*xi$~KM#cIj}L$X-raHg@un|zD|8@@36P9nS!Uu{ z2{GA+uzL;Y90;?smv((4^}{`8aHlTO6vf_5K^($=o}s_(^rBP_@~S1I-U6&$|Lnf0 z>CkL#l@X)eFNm?_mRzgKAJ+XaAE+AxHcQ853l@)dY&G2us_QsKNQ2KSEb!{HU=T{c zGCCrr7!ZEd8eoodcH5idNH{NKArCt=D>^zeIfbV zW0jHfbZfA`JH%#ocA3`{UEVS9ntZxmGMhVn3!m+XfEQX(O|SQEGF$K-BUw%u>P1Shob%%d6 zIx;231j1QLl(V@$lDoo}^3`1G5E)3b!Fm#!Po}0=D# z$A@v`x`8|2p&pOht-Jb=O?AZWdE8zENhe+5bYG~YNsk7jep3O1NAG*|%M-e`!YZM( zg|$qn?Yh`VTfzZ}YU@l+f>cScdO{n~C>qHUHQdqi4c}@2`<#L;Di9@RZpX~G1XkA- z@%>j1bf%ZQyrM!TPc!#}S!mC>Mp}<1I&XHs#H@O>Ju*JwQ->s2hH4lrZ#k1<#zGf4 z{p3)W1W&4?{7DOrXG4+^UjzUewX%Oj8?>a$yB4DfLIXjEF^iX;-kW;$+J3{=JysbG z`Na}uY1}@$@^E})tVn1WmT2qrB8>2e#wEXo-UDpo#+-U@vGlClZ1?ivQh=^83GDFY ztw|^pN|uSLGdy3!C8x|SER1vn1(JhR`Zu>-3#B9+%0Lbyb|W^-L>Ru(357q@`z_P{ z8n|YO^-{O}kdswS3=PpgPq#&3*Di4a0vYDy0xBNfQ&+nz%scz}2i*MnoH;yDG^ho)t%N5%!zk7z$BZBs{jX|^B8vkX|fN(*_ zQa2iGcHAjvRLxCH%zd%*F=PZD@X%x*E)Vmn>mIp_24iKG$8{@?#&aF6ARtjJL8fc0 zqz6M!=mlm`8G^rWzs~FkwGv?_n<1?wM`L7IIy^+0p%Do}Gzogb$;`$)-Mq49%ET?YhqS+ zL`5o8upegC{CO+;7B4^W=P4PB!IU?FA2L5fu7m3yCkMh9dxoP z;RYyda=u4B^rEf`2)Y3W!V*8{^bT_1sduCJ3y0GDEbp^I zB8EVPo6P@s;v#YAgz$&ZZt`abp1JKPa4CXZ7!P9-&K}n6rnYnzWrluVL{q(;BDlVN z*Vy6p$CcQFa+28UR;}O}X~fUp$wR`H>pCUT?;DSU8?V)O_pSMC4CTZ&%|L^T*l2uN z1Xs~N1t>yr>Sn-O0_6#e)f-0{;>=}&zs1d-s|gQUMVIJ>OoC)Tt|@$b^|$5kH$MqW zMR>8f{VO)-O^D!gdQQK5ZM1+rGti_vkD$6WSf@s`b{S)u!gT{L#3i~RKvzLvxtSdZ#1M@Ct(NP78H)%-= z0`inr!D-?Bb0J~Bs6$gptOuG9R6@)_$C}Wvw6lF}i&q@|5)>Xt^^=Uk7?cn_n#qh% z=CT5A!a8wuKf&nkA`J2~;YFru9wf@e?lj$q)F&fD!vZUTWPJyoZ*!@8gF8~ys(iH- zy<0lOMa4GZ3p2icej5W#T~v`#QRYh%Km$T|v+710c+<#{4Qkj88B^vYA633@-&Lpm$Nl=g{s! zP|<>(6)}W5pMmS>%)WLAnRO2I16)Q-O_6-&Uiv#Xj}YrZH5CPdEB#S3y>IGhFcdZu z6>Vstj$x{PEMi}`fcs=c$`yOyQ!#6F; za1&L{A@X9Op!hKNw*Xy(>55A!<)k-yCi+GFjb~>r2J!B1L{RX=Z}C;t)u*DKqXe|# z>+9;WQ8!bQ3tc{-0wb1z0v{Nfl3F4eHZWT_0kV z_I`Ikeq664?kK1KJe(q=it}UsbjK=Y31z0OH4orKb5Mpb)rLSMByK5NHdF>R*E(St z*%j{@TSqWp%FBGXvOM%6@CsxXcjiP#H==hQwxZ;TlqZ;1CT}>$!@IzOLqsl_KwAuW zFwZB?hL#qeo@i^1l;k`W_SEvm=8UL4D4F;5!e25m6t86$k;|*=p0SN=_`j?VbU!&c zRo(aA+R+Jp9$rD;Kf5<`RgLV8r-|z}3D&ImW@-_%^)^k}GEVa!FGuw}UPg54^vPd5 z`~5>(&7+!Vtx14H8FdD;J^1yxftL*n0146WKyRV0MTwE;owK%$d~!850J=FpAK;&9(#hvpJ3CV$f5+xfMFDVwztEKfUlY#` z2^ZdaR`ktk3(!w%{lZ%q72c95`#>fv7@q=@w?bZ4Ga;c&A1WL2&f&JxkDhgAL#bY+ z4wh_`SB}fk4_)XKDqycgP9yZO{ZnWbA6*_4!(A;=-*2 znzmq|=3YVH639_y^s+Z1;0{m)d04z|9B&= z&bLKiK{31t1Oib>xQxSDzWIL^XTcL|bXbCi#o%7weBf=0pi3)vxYtepxN8X%9J&0y zu$2E^Ig&wEP}xqb86X>`i6Da))A`EQ99ss9jJ1efoI=i7L#WrkVx@_`kXAr2(s-cEM4di(1uhsr zK1lmPfNx}oq*+W-f6aj!L)47lT)l^FcS}vQD->7&(Faw%)rNQKefA$H$KI z4Q_3T?I8a2Y$}4rV(=S1`uh2-k(f&)_cfwoxJ=o6{9+Kk92DE_u6e_dO=9>vnI{RR za(XPr{fS|Bw3-ok-nSzyju)d>Asuxf3)DWNs5zPU_KXIPgwR|0Ath!a4tb`Vy>0z` zX*MXW3cb!oOAo!&iXmJ4fP2rKsEu{ ziL;-pTU(Lr4-PVc=UMWiGpNI}p3y&3GP`g9@FOz1HA;*rg_l73tTppL?Q*2uz;(2-6x0qI{VQs4U^q zb32HS^ScojB>YurVGZyX<_cb;0{AtbRQZJHlmz&iv!>MIXJ>Wq=R5qo9P-73V@bHA z9hnvC8k3R>zc9b;$&=CO-kY{5`2|mTuqTd8WjZ=M49+=z8!gX}NDG~(=fu}d(#OKCBUEGJAuiDvE)Hjz}JGD}@~Zqm@J3h{MFTW2Mw3L&;*PF4Bt zfDcixkau77VL3B{IX^b)pGI9|G1XXnBVICvxSm%bYL<)bE?WC3Uq2ViHarq;U4)nD zzQuTB!2aFA7nFW&s5ja-s*3y8B-5<(qBJjY#`93KmNOC5N_L!;A$vv;{m5fkhag9Tn6q6k6 zR^tt^=+&0C^O|5M;sO}DELlp3?X-rOxlxgvw}rZ~LiMkei1;8$W-Y-UBco8-VPP zBAc8nw;a3e>9eS;Qc#AN9Xxl+pX3>8U0U^ZxJj$xi_2>~j7ZfaG3^)|CnjH`b3K?b z^&XQcm-6N@MjCL~;?c)bq$NC^?N`8^V|beUY3%kK(3jzm$GZzOg`ZZJbqk$;sO@~@Jg zo}My$YFs%zLmcEYG1SA{JvB00o4OIi#KbOnTK($DU)>gHyb!>C1Np?XVar8{OR2Sm z^LPP%*N2gM{FqcnWSJch{3S)y#@u~(t;*yUH8zb>6F#j@L>*Z{t^Cx)r9Yuue;f}X z4rrG;Z65DwU>zaHr+4_UD*d{e1*Y29u}r6KYk1|INi@2(HP8qP8TXE|O|tebGKy9< z-lN_YB*v7*ZmSkia{B@hmOh@&P_z7oL>v0g@h*ht7i+H6%44&8)(%#equ3LGKw6Z~ zxG~&F#O)(-){VcAE3UtQfHR=Pn>E?oT>s9wC2^`;vYz?B!1PGyk7p%{+G(imYb2%= zI(hxRi|R_|(=Xra#oGgW=M@zKA$Q3v7)-hS!){xCUC7Ai2E1F*Je&su<)^(%#qgZDQKd1uHF>LLP0 zL0IlvSztAF))c8gS*hV*g!*-&|M}&c^0-LScQbQOL#A(uG9z_baYFMJLjtT#la!MP z^VyV*7#8NrZ!tpkk_<}(^I%7Z;Q2tOx}IT5rD0z&ViFSQNxrA^J9x-^05_CESRDiG zc?e~yCfl3mWY`Dfdnb~e-fw6beM{3x6FAZ{WtY;g?^4?>tNLl_t*ZqWJmBXj!D`_k zjClbO#Id)dsjohm`4r?XmfyJFObq6T`IR08Jt`pZwU8NPUiN3P><%Z?S=wy;l?X~l z1@KrQ~6ayCKbVcWA3X1~<)0{ZJs3n9WtRyH+dnzTcQ5Hl!aaV;IT zP%{G8aTzQf0>dZ=T>NfzytVsYUJ|0LHb?9H%gB#N7MP95Xkf)1nKyk4NXzqgvtNI> zrqH~feRtn_i&ur{zd`l&>aPg=V$`Aww+N`GAI(Aj=h5?N?^siy6_DF|1o#I~;%h|b zQ>-qo*xcs%-)fZaGvju&CnA`a9a8`MiJk5X0e&snaG^YJ=^nOg#VCwRQ){W;D*ZXg z)&gl@U~C$@kN$B7O#(ee7U>^B`t*R0vlCZZ_u3Hs{A`_H^9S0jDa~k~yZ3sI^6SLj zOJR9mT_yjxMya5>iEok}*NgT>HSF-IrPPE(uGqZN9|joe^+W4T$zLfAaQPP#UyRPX z3a8#0%fUVSh<0K}3|)`AEdjjX!^ve>_+Um={M0EJjFf1v@GGSAbP{0n;^P;UkJj0Q z{qeGYW2RHC$YENl+IDai4bx!SHnLwHH;$vKT#}KJc;GvC^J|+aY}=$EVq+Z1IUR)F zJ9-BuS-6L#ajuA^7Ey#pM`1Z4LYqG8htzE~;Rmg%P2UoLN)sd9`R1M7+I$ukLc!r* z(LEwu1zJiK>Ez@&t@WD+0pW0fvZDR4RkHZ+00&rEJlfj>D9RWI)PXNQ$Bm&2l5}Wq zhfhfH&4q>9FVj8L%jeU>^V@oAB!$(%+O+tL?O6}QkwBa1!$}9Gx*Y4^307v}M+v3lx0+QNzYKn-!VYe#uWcJ3V+h^4>>~ED^30NSv{Rx+vexvmd-WbuLXmqL6+=y+$pcyZab8YuQpjod93RACf4Tq zhSVN<-3s>;?nqHOwK$~ZBra7^=ztnS_6>2|J!yonUq!Hi0Ry0OpSL5Wf{(pZIJ`JR z7D#R7(rlfteL&ZpnpK;RAJ~*FwC@K_#--M;vCGj$OqjJQ673FxJA3H#4D=(0V=y2U z@Q4a{gZwT%yykj%F9hKd2p!$o_J%|^`9y%?dw%|LN$m%{Hi4bF(p5oc?3t0WrtQtI z6IqJFh7X61f^D$A*nQ=j{V+RgCax+dpD!3|pX(}Hv@7;-=tka>WgP|ghLlUehw9Ov zI9fOSi5=xD7F|gT?IYm>igctb!8?~kQOO3|yZ)ei04K7?nMI4}-sL5~nzb^zqs09r zvW|kR^HQS&`xElg+>%UPV?$%QN_^3D>r~9eb~zQJHYIHqvve{8g$7d!1)GO*PL#CN zNKkh+{*;|O2WXkF+y8DFmI#4#t^1o+pp}o_f3iEed;2l-C$QQRRC##w0X2gPzapwM zBo&u4;OaH2I8UrziM6HWK4^s~w4jMR!DEoe(?`K;xrU%V=@(J4oVaDbr@%bX@1qp+8fW!COJJ zvIr#j5;=5{=>zFSdebppU>>OH^N#-^};zY$x=m)-;oV|KCKI5 z!#XlkWDGTjUu&q!=1}(7_X`{upanCel!+{w@Nain25t+xK(qgko7&~3u86?z!nbc& zN<+-2qOFbMIv)36$exp%djgFL8plG(BjU#jrm^+&KkjV${d-~lm8e85c7PmE@jYN%hE=Lr^EnYokasyo|(z>q*=`)jb_$4`Qt5; z!)V4W_=UwP-aw$Ibn?)^QD`3_^fg&syeu%(zp51b)AmbF+AG;>hlsIN#AsRj zF67$_pA5#R&1u`#1jdEgOKWL49>&2gEDW$8Vikr1OddpZL?TG9NM`t5w3U2oA|1Nc z1Z41m#f#;LYd9)6F%ZlzpGL8`S*o(w4_*pX52q|eLWHvEhH>`7q+ax0UT#i;ZcGD@ z-J*-&GqSmV^K|-@VeYVmY$`WSv%iPomH}b@SL9VDOmb9rB?hsd7!AgjfrT@4fTrzj zYtk+u6WF>uH9SBhl}-HJJB(tDZ+Wev`4q!{v!Z(rZ$MAr!dg=zlmJoHytmWk9+Dq*v zb*;e}wC{MWxSqXqWlm=&nzR5fH}NuOWyRi=Qa{)M&!$wRk@yZMYe0e|oRZS}Rz1er zm`C`T;mWw~Op)YK5KZ_x!{jo)!)?!oP1!F@IQKbBo|8N%qyRKF^pcP2;-XmvxCeNC z6vordu+iJU!ZGlCCpSshLvntX_Z|omrU9q5OdaT~z}oYMuioZS`1Sm9{1}!YIbt zpRAN2R9``SdWwR+IO9nkEy6dSo-FvOC~LPCw`jk;=~?_l8tPQ8^SX5`jrJ+TSQV|7 zYrf8li(#-kmhNmTeP<5g{L7bcAQ#y3p>+hOJ%D3)V8H&u_2?^pSv%=k<-fYbo9?lq zZ6K(OH=ze?Kfsk276L2$9R^&=&23{JQ=C8|{v6}@rc z8(OrAcGegV&aPASChHD`KCbMv3loahKo1`+l>Y0Olx_bTmQ{|ImwSq;zTRFW(d+rm z%LZx3&7|e)BX%cQw1UhGohfm;9kJ{;dVB!x*FR%u7SCQg^un>`p-WJZ(Bm_b-R>VH}B0k^%~yCfaSZv zyMOb$Uw+H6J_jk}3iafK>Ka`HxRP`qE#;D4AArpRYv$C#A<9;L_e(hPd4U;6u>=d< zfx5s%DT70uhM)I)x#JO%&?|$(R2!=a1Ire#~rY>_{(zz6%rR5!KIWg@w zLFPwG&0i63puZJcG?SH%9`9T-1Ln}@jJ-IYsORVA&^kIgsskQ8$%9u~9VnjG9D_$4 z*9Z50Z1@7^uKM4$S+-L7_q%gLhY`sL@G^>gm(i%bHK%81nI9vx|EZk3jvZITLhzKs z8ArafKqYifzM(9ZGTVWBxXES5N_@J<+Iyn_ zqxt#bS~(U;YcF!QOE%UX=4PD8L0eRJ5CT zo=c@2h+bi~c5OH0ac}-cKRDmCyooFZTtYF_Pf7()6zm8?#bh3E>jnsXW=!JEgN~W( z?jJ>6S&sLdQ*@OyR*1S1u4}83_ysy!C_3UdwKJy2XyQp{B_ua95x_7MRe8u`a+%~r zL`29&u7vSFI-O@y`H8||V>~tdd6spK?FKP7S`Xw9iDalU4!VCWrX3b`|lz6@b0? zCUV`btQhl`kil)9q?i-09)hjh7>bErhf>^qYmy(fLJIA{|JQB-4i($jE`^0`3*h+> z=WkW^ul6$~e^~U}>c3|RoX6d9322}$cct)O6FOb*V5^my?U!i5c3vZ3eRi(RA4iS$ zr`bolU1xnYO*bG9BL;pPHE;lT_-YfvY4*0<3_z(ZVr8NwUpnQQa$@Y1)-+%kY$o~1 zP2`ip==Wp{*7AzUIB=m+ewThNo6!!w!!wE+@dlj_j*ELkwJv9cxS+x>H{#rC-QZ=g zK2StNrE5@+jN*;{@AErrUz+jJ(cXPK#J47`vP+|>58;?f5dQ=QfWSHJc1LS#>#kQd zu5s?n2vLz^;`p+V^`58m_?u>+hm;T+GU-x{clL@&RJ{5a-ai445J(VfhgWah>})Q> z$<*j&%P9L$#8*82pLM@~=7a!a=BlF*?|ON-wHUt%7dIcC%us#uPB}}0A`3rM?Ypb- zKfHO=M8ti5a~%zqx#8^TFDCjws^0m#&i)A(Ze!cFZ6}S|*lw&Q*|BXmwwt73W7}+O z+qQM?exLQeXPrM_|8nnH^SNd&j2&D1uj&&%X<+%FBBNYXlXvBoNYtY{A4g18yF?d0 z##J(9N~TkX;&)y`BA(oL6&tKBEL&IprCWd8Z@jViP91IOQKaRFkVA1Y8hSAm3xu%{ zsi>(FT7SpsaY>gJHY0ZQ+m&S&?5F|h@bEmaA(}}pZF0}`XV>(BeuZA+HvEkuPKN&^ z$-8Se(j`v{n}kn>mYehDG>jhVGKK#bVc+%@UAUaq%w9o3OL=81MUX*$!oujW5nrk- z1oagQ|J&&({0V?LyN*cZ*oC%~<-UpsZQQi6x}h9t9E{h&4D^^_9{$l=wd-BMA%uku zfBpwLe_B<> zZRl+a;T-ZROugC5{K?bV#UuT>Nxe932H6g<30%qv+h2LFUXS;!0u#J&Q6y zQ#`q4k**moxZO1W8f?X#er!E2+HWT?@%158*Ilr-kV) z&49FBUG>kwt|kuBx*$wu1Himz@>jmuaPX!`w1pL@Y7MD>!iq+qUb1E&D;8I zJ_g3}NrsJryoS0eVVr;tMzP7I8RWERrozgAA%DiCYAgHpIgN>CV8kLJ^R_l&!^atw z>uIgW@_&`&Fs{Dz<)@i!7*LJ%8=%27~Ab`?js zGN53Pa80CY;iV{b54WRGW>hJC^`y3t;0Sp1beQcP=p39vFl)OTb-;85S=vTc6R!FbWN@~a zqE23X_87DO>rr3dPr1N}hJB!e21rDN@BgzjN(nWy^&Q@a`80iztj7Pb#c=1ct1Oh3 z8iTWexr2(QI0sCp(Ar?F36Tn<{+?pO6&~ehMq2r$Kjn2Aj)5^{#ASSZd`8wAB0*)3 z1RQpLV*Cik1j~z}k0U-RYI9or=>?Lsly=D^$Kx2c5EXX?6!IiK5eo`KspTFtb1N0$ylNv<7hFZ1QNf#Aa8EGAAJ0-lmhKWw0n}w zB$u7zeOnEVU*O|sOuBeD^vY=k=N^@Uuz4a|l=<`UH)caUz?B%-mX;13;`-mZzcemv z<;DP7=0+RdY}12Sn#velvW)zKemV71%Y&%6MZfpOw7~m&^&}}zpo^cE9%#Fx(meg5 z#}2r43XflKbEFCKW|>n8TKX2XTKwQ#3usgBCDtYfBUuR{LadCo1|$Z{h%~RhRI3Kv z8KKV0NNA2$_DcV9iP|aQ3ZtBfm8}@bd9`u#A!Ih(QMWHT z0;U|%1#;XR=znnJ%Azfg1}^<+fe|(8t*WWn1~C7R&Iz%6SP%d}2m;sKqVY}mN1>>8 zj+)%v;vcjr22IF#3wLh)XraE-0eR%br@4Hoqn~~fLI?E?(^^j_12^I%zlw_H`TQH! zj1Qu->`*Mz7Hej-Gzgbr#5szJze*{|^ubOItmd<_;@p`pGfMhAd%XNrXt3Jr+c*EX zt-XB;PoO?LaWvkGFL?4IlFy+%P=D!0_WAbF>2!qVjq_#rxRAP)HqE1I)W$^i`cp6o zT`DnY9VOl9vnGc!qb^=_EL-6o`d!$X#y|{k-8nqxMq|AYuE0Ju9S}7jr zhVX^n_9kuEnwjR~Kc`MgVZf?SwfjAt2Abkq+OiD# z-o)jC9={QvCtkO%>l$o{Nd#r_=SgCyZTtHRI1;OsZ$QB}97`BDk~bA0A70)5?7C$) zRv_#$!*g~?g;M`2Oiko=Mrp!u%J+TpO>t#?9f^C*>jupDe=32`0JZf|*TGG@mnC1s zJz8VrnJgL5Cqx9qG5lk;zOo`~V?UR*Zq*CzhGdEJ>QC%Pil>@VB7=sjjTTYE-Zs*@{QC zII?5h+o{8sml?gP0?7Ch4#1Kv{awY_-v146LMK1jDx{QxE1;)arYc)MSfng?${D{6 z2Tj2SGb&n1mnn#AU9T>VBxj2;7bS|d>G(_OnGpzSMLUOt83VrRwSK1~f?`OQC& z-My^32gS;~g#)I0T92uTE7R-(Xi;J%4<0iHKSGWGQ>zm9KcQ9bM~%nz?l9t3quq|h z+&mNw?ePE`i}W{ zrhjlhB#-kk27%BkUQ*idF;vp1&Dz>t-J#%`u9Kr^>~JDCdAG=?ZP@!=#Nm$kKPKA4 zd#PqnQ#7P?5+$jz>tvXD__P+Ki9D1yR)0*q*&U1hJGuJUs%iNdwaAD?xj=Hm^-m0 znT+-a&#X@?hk>FVa;^tfxr9%n%9B#qhT`6=es&c-lB}!0GPkU9JNVnF+%+UwaU`<^ ztdW|~Hx0zq7~(n)Ft6Qm75$o@9DcP`Nr(M#RC6DPFf8kPOJod81k1`|T%q0|O{~dY zI_0=Cw6W=UChYll*J~?f<4L|$kc~~5@oH&pPR`Vmj&gAg2F8eu`b^%-f!yE+v>CWp zRLGQeHCjgnjQjDYF9LCXYPysRl%E68L8{m3#mEZd zfx6dNRJE4Swf_GQ3+hDXg-4Ee`fCg>YkN@Q@uBO)9v>PZpKRQOu8)j2#b;n{RM~rhxr?qf7*aIakiDHou8#``wY@*K*!{wT zuQgrN6`x1rN_RvQAgygST^oI@Kllm%lW9T&*3)WY!;k-qOX0xb_(6*0Zk-w0RU>Qsb-h~l=~gO(Ue4Jz;A6V%UlPLqgJ2c{EeJJQ}w+AiQ)}x9PP2g_N#MI`qlj^ z;uz8#E6aR>c5+0P+uFsH2vg#4@g-b8n4h~2jI|Lg2}Vn2FYBFNg@etKkqov~hi zD8ofC&)&cNVV?a462RB<=O$9HfgE$%oQBuu!iOEBy}f|mM9~=aYpiTsUO?pFcaJIx z9WGn$1{ttrN9#avF?KH!vXLv;xDue^@I#%bB;ohfxlODElyLUEN}2$A!?cE_rDklL zTmVu;V&2mlj6?X0@T=sYJk<|cRmk%4ZwYYfOC&T z2K4ufY*M8mrcNY1$1ZjCuzh30M*@jiW6Q{l#A-n9ehVM((JpuD*`0N|bN8`Fy_Nx8 zj)w~$E9U}!zOu69kwu!N=`KlH1<2zvi(PkHeP(a@Fbiqki8arAmbXj;cC^LQWh)H- zF}loUI|4f~Fb{;$MNY>omb41Qv%zjv7wH)mz(cL^zsV0K{^)A6n^+@i^pJZbg;)F~ zOaFBn`|`~9iHqP*pU^)C@IrJs3f%LbjTiPbuEpt%3pjT<;2gwR(vW4&{6u31cq#qL8p zgC-`vU`RFfT}?8`a3}n}ZCaSGd6?KR{^e~kRBAk;{v?$2gP!c054C+?{qxhFd%<=Jg(gedW@<>sf?Egp% zDFgam2LCAPL6YhIWtKD;Gb7!mSty?Sv@3!Ee)=rgyZ&Y7%+9VM>4Nz1bY0+;()(<# z{cRR8pFDq5(I!Q{i;J>i5!0Hde0dpxQbHGL-=NCbWAs;yb9}^Z{>SD9y(r@yw(W?BbfTL9-r}O&npF>BYL|I!3HxcRRc$Eyr zaAyjYVY(*hC_4uoCRBD6kgAsyI*6IeUaXTDsk7_0TcAczAG5~ZgyyR;!QaXro& z|9bWZg6j?@7YUNfG(pAJcZrQmA-tFzNvZ)_R>Ktb5Ju+aaan@!zYrmHk0r{5QA;4!WV85ZH)3LQk zl6Y4LY6g8hhv}j#Yt4=-pJgzW;N3Z%nw$EJuA+kXHeAARy4sO6C9%a8XI&?LY z%w*0_Mm8_J=MEbOZ_SD}&#gzRl+Vf{eB*8n`woN@MX>^!4ki76h!{A32h(e!cP7D< za`W4%$4s&WS32U@&w8MpB$u~-;?q)CYfTLmIkDLwJHF|l$}JO5+HP-xbmx&l{A0RXXO7+3t$ZG zDST-VK4f;sQ34BwenW}foHlPu1kvP6M=Ss~pbAjdHVeWLXGD#f?F-E$One#+ko;@5?}R&4SlGt6(OB1p z5E;oioss^t0m!_IEbY_+vT{o7C%y_Pdvo&fm68@vqDi$R17tWl6g*}sqSw`~%a)`8 zN`ls$1r}IFR(094k;K3Z=I|I8yrmYN*jf&tW`+rLhjG(JkQ#%+z_)F)SDkTxi9SOr z`|Ku`+hF;ppDX6dTJ|UJE3+p;oWZSW=8Hcn3D`-8O z#AGEh7QQxZ4kNbVyT0i-xpR-JCf;2YOHWK{k&akep-RzM#*J~0xdxfX7TWSu_cY9(K|61(XS zBihu${@HUFMMoTOOu+&@%A3S_ekQ7ZQIzxf za~O+OR-zg)HC9(|Ie7b}`KKjM&tWn;-E}3U!57w`uHObH4qy#HipVSc&Zi68z5DL2 zpZWLxuAXFw`vH23nf-!eC`%$gKC=dN{nbI$WxwM1`H}&7Ak@@048(8+^`0s#f}NM$ z*HUN6Dx;OZ2qpchYJdW=5oI&7ouIz$v)l2$q@fNi@0!*7ABRgZUY!9r`Pi{2ZEAKB zeL7J#C)@?(_*r%G!Y5eK9G?CxDb)uV@ z@S_UnqAj9#oaFD(1v3H2f5WN!rK($|=GLA>A5wN?m&`8Jtg zGDa`zIjw8v^62HafU8WlZOeZ zqs)-k*5Q1}EY7@;qfVzW%+QaRR0Mx|#2@spS+ z{_NZ5INz?z!FF-?c5`U->bhk~Bh&#pcgSb*tSbZRIx7Tb=1rBtz^m&lQ+g-#E(n6kh&-7AgxU3puK1w z&Wc4)_k}et8P_IaN}{_ND+uQ++q6HEU#z?Z`w*?%)HjGcX*2$$4pF^Gf|A5$VFxI$ z1q4wGnex};JrNUj&IVX2G&V}6NzOmiafq618M>Z5?zS*&86FgklE%5~GDb`o&KY{5 z1oT*ubsV)sOQ%0W!b<&2c*xVnZ&S0fB=+w7gy8W=AUK>Y*<|gMw7RX2r z_x%~7ssH(jfD`_d0?61V*7KD3M^%$b7fc(rLpppa)1t>P@T6fLbibYYx}~%6?sDh1 zdOn4Ub9zw`zX0a{>DI|rOv4-+BDUA0_)n9;e_sHrhf`XP7Q=M5gDWpss=Tq#V!|yJ)xsMuLhGIch zKq$+%c^FFpVTLy%MWMYDoMYDB&YFz)MT}Z2Xlet&j8GB&3}=);p8H+Fe-&E`F7;!j z=~pNA;r-}{%$_EpEweR5Wtf$VH`*O){gpuq21Wc*^&W-LK9|27vHsRwHQAtvW(GPK zzF8=+h;Z{|e{K_M_*H9Mk_gxay*UE_>gg)-XFM?6>Hd@E`fX+Prptn!C_RtXB#Jd+ z%j0O~N`4p5AyTv+4Zhs$;}HCyI)fG?eE9iKcsLAqV_r*P~X>1TYF z3?VO4ODePb+r}zNFkDAL7gsvC>cvPN=fPVfm%VFESG=iDD!P8ZNF|+|Op&WCV@0O$ETfb{1!N{{viOn5q@zOdF zsNF<_RK&7Sqc+p6>Zo()#5v+|qY_VU;o71)(G9p*)6%&9*afyx#q-ZuK=_ZHFXD{; zynu3#qizJxX8c|{tpN>%%Q$)XpI^%CQ}3s|zg&D&ysFN6p2el@?O7%$=4sadHf&6r z?-#xwVehRpyqR-l6kMpQ0yOTYi>!}DzVFmLE~h-+f;>Dh4yOr+>7n*_kg2$ngiS7=qcnjX9xLCrd{%MmD z1#(A{bo6u{8?ju@QcC?3dwyG3N5#sFl#dX$j^YKZ;|b~mkw3dWP~A+Rp;K)R)9>`{Y;>5 zofR~ao#ftxI0`Lm2K_9UL{ZNP?dGW)A1>#w9qJVw+G{AO53!D8^9y&#O8wc;BXyKf zClv`9h|+S~T-qLP56SKtcr;8V2(8Qac4B2FI{mJr!WYK;-0}A&p-7(XZE#>9`XA#I z-tw>CemZ8Bhxiw#vFdrzF1NQMN!mS^|GPLh+ran?LcY>}@4W>k&}s%voM~2Q`CsFO z>|iT38&rbc+*S6Ec9<*z4v-7*l84fFM~-S>ri z%<3n?0Y<9}Vt&C_=oe4UN=$uzKDM7sifme$*_mhGW4gyR=6~H$*ZznFm9u}^v5oAt zw8&*Ea+mxX1#(G`TMAD#T7VBkwUCc-iio`wZ4qjzj&mlFrhrM2rb?x%HOA-Ah?AxG zMHvKf+hhv{oPUmq{L6E}4mHFhjgpj@KAV!n0q>-XS^TQ4L$64ds`~omV}C(Z#0)M$ZJwAtzgC8O`7wmT+XUYu&_1eP6R-~d@gS-!f$EyEUj#(%3TW9 z_>4{O53iJgZ@e;hFr0PFlU13pnTzkp<|vJs!0W#@Q=%y%L)o=Hbc`c% zflf;F$9{~{78M_W3bA%!I=1Z+j!iQ_V%8YZMtW98uKoDlk`h5 zRVPuO)_Vg~qUK&?NZ&aA3c^MGuU?-Cbg@?{Ak~!gu-c;Y@(>g5Rbvu&RW zuoNyIL-TuXXflM{>*(roN*MJ%w?Hz7ndNbzW)gYynb<7#IJw#BV9#7Vvru7)p&ey> zt`uf6eM31ie!qUs58{#R8ED7BsWW!C(;k6F!UQld#NpXYJWCtGJSRWL zZdR1G@@$az`l_1)0-3H-Mg|Lev`$CZY1r~=9sRU3pSoaoj>yYd+)`0fABkD-Oc%)5U2RK5F)EX(!Os85%@kVLc{;$2Luu^1p?b9Y zK@55tCeS#$)3@>uP1y*lPO&P`YDBtc_ka^+B-QRv4U(l|{88S0Di|-(p&99sOToXZ zZDe^ct}0;JH(Vl#n_TA zGXB^v+lx;@UYOOP(m!q-Ce6jfBnVe4>kT12)oUMOF=T^&MbfzWNJenj%It2HqzV@@ zf(5s52g-kJ_-^~odN*9X7j@QZf<7GxgWx-=Xi~Hk9itnG+*c5{-FBT#h-QBKKqw4xD;JyB%A#k(E#&fQmR1>XE%%VbgEatf(?$6Ls9pfj{;)*NdI8 zZ_E-*eVvG*vl=;h+Tu4#EQHi3v(%#EoZ>M#Ulv{2{bWYKtw$fk+{(&Ud9GA8HWnC( zFuE+cJSCKh;J#LDBy34(WZ+~%5b2Y1`G7J;l9eE|8p;Ne^bDC;EgB#p>%PQ>3doToMy+8FH`{`(F zz~zO1!sVLp3#swV(}BK$iH)(76NECYS8bUj8Bu6MgSzCnn2ZdJ_KZ<{7SXX4T9hOS zRul_g^44X?b_X(wfp1FHLqNe*`|E1uX->_IS9}WUw|N4F8yw`{5c>t;u=0Pf?uL}j zuz?#I*uPa6q?`;4J^?WXxXnT{X#u&pq#k%G0g$$V7f^UodbP$efB|)7>YwC)u9_tk z@!F7$sO<4#7muBi3;}e#OM{`4*8x!Y#f1Ku(B4qmZx4L`G!l)uF_E0c!Ccs%ifAlVi(D!4(@20PCcNCSk@87X?pg zplBhBJjlXq-@IO!!I%3qEw*TnJDGP=N3BCq*BBaGj(+xO&H|KxHP9qiXrg*L`ufbs z1#Cyi5TtRIfjcqrLJZ5JWkAKk5AuP`+Q`93p}>qfsi z{Ha{oj5`5paPw@8>8k_2En{1Q6x-6V6o`Ig8KJrey z@6xq6*I&fK;?48??Dl&u6`S7Be;KWtL=tZ3%Xq~&)Bki2?||-sO6032bhxO+^f3eT zip&XouT3xDf<6zcbIv$kX?$RhVU+*UjkKilgV~xf%=Dhb#V0+OoV0&`B z3I?)Y0zY1Jwt%#c(hebqAj%P1&F|lXj0gKDuaO0>Ab!Tgusd+ByY0}Bw`SVC-7WBC zTd%CU_6#MwAD_(82ijep?f|y@$2U`*%61nBGxMjV7m82kEhq9nxwd-S9oRNrtU>R;j8C?GiriW6>ffgzpM8x#wJh z{?qwEkGdIOE-QJj)r)e}9hdqPx5FV3dWhb5jLb9sjQ*E`mEm@JHFyr?M@&Nnn`UKd z+OMib&Hn>KN+yQgd;-Yjd=PYdKDq|Tklhs$|t8*kpuvVc|bci}C-~W$s=-;F>UdX=4NF5qT zS6yn54V$xF3lFH*+Mv z=RBU)fmE13Z>+kqW(!1S@CjF&T>gkNJ9m!s9sMU49P%{B%$9#>NXXPfjtoU!j9Ak7 zr}d^ecHU;Ko=|5{rY+^p`Jx*5(;RlQud6RYPx$} zs=;8m`w2A361A!>IF-hVk!SQQL0nub)>v;?(OL`v6Bpb?RxHsjsq;qnpwYAl7Vd$H4TileATmy-9L#1VDkDa!Kt$G63adT>Em3pQE537y=vdNAI z6WxuSZ@(Ja85D%u=^J8PE8CH@^|fB@ifRgt`fS@DyE@+*m*W6GWboPWAA^bf@d|lO z>}9%yo;9qQH6j)0tWLy-3Ww%4|JDz!Z^iJBzm+UDmF8srVw;K$%N?Z+sSTQE_TcPA zdW?QK`a9%&;P-S1YsXuFEGwo}yoFHP|7{n)By4OE*M8*sJ5!?$iZ%mQ)=tTs|tO#?{C4hJU4L! zKTQkwZdjVii=9S!PQnGAuA3QJ3IIRypp_h`s%l?wkAZ=IS=xq>4_JdGfIHf8X`pQz z6wjqHk4tierN;29Go=g<)Zfcu0TFQR{NPt7(x(d=Bw;-@@zV{R6Ms^fFaj4y9d zp?VW?#x=t-E({g6TDsB|JLosT!!+?f4B$5ka%$L@7DMKWc)TO3h`YZQ3k8!dqCAT- zh!aK2EIA(9P(~cJ2(PW>$Y=3k;`p9c`@Z9M4;fX@60Yq~*H>J`EQpw~uK$JSL+C(WLr{`XVVd|@bWDiij=ENHxVvVt+mFE1$U(9ow z+{O`AK1l=cVhR)jD(d@ck&#_TUN3t85RCp-TdB^{(^8H5h;zWCQMD$51E6wZeK>D@ zU-H4*yeRar|}!@12AD*JJdtnCIk+XP{sv0>9v35M)lg=nTj-@^mR5B;Gn!%@SF z=4u=nh`nHex~i-bkt{tEJ8?jAQr8_ZqeX+J6Pmp8c^u(WCe2^&PfX)z`tS%VLm>!! z=h))djnmfFR)IzbuWR$Gh4sf+xoS1=t~w{D$JaiRYq;oF@G0FiUR?5CnUWaq7xyr z;yiUYHPdEQGaX5#w!D~5P1qiPfQrbiW4=v&1`&w6)|-PA?0is(B_xD<#3Mvpe{ulQ zqCo<(W|oB8f1P&}ckH)6sr-VCsnn~LoP-s7DrLLchIo`2B0S^OY&Mk4^$f0!m$%Mf)zt5@VEeoAc@;qf>paSrg-5?fR>LQk_Ov9W%sKJV| zOwzYE-9*Ojq z*An*;jvB-F-;Q6lf%3`5<%ia|Eeq=2Vcf-CUNnHuJj@J{mKkEs=7UQ{54JXe_tvVd zhivhD$rU_US1Q+7B%7tonedde0{Gwc3nd}b?R3liyi@0j7aDyZhlOaEnxibw_AEx0 zoJ4(e&RofbdY-DgqHJ&_4{Z2Z4+`(^r5JFKw$x#-J)ItXKdr1<-gE!R3_E)dlo+es z$t@68LpA))_$X$T9`BxS7Ad2ZdcmZ~Lzbl`NU1Gyz^IGmh2cYGy+2#Sb`xM>+4Si? z{`u=iwdQfOwUG?0x3{;y_-fCZAn-U%RY1Gs7J(FW+tI49dm*BJ9E0~a-ThVKk2a|f zDEWFx!?js`qgecRXqW#(K(`Ga1CxJ}$Hm{49nF=4Dm$-0VYaS^Bzi$!DulCQw3GP04g5m5#FR=g?<-!%= zf&u~4Z3x$K&!dq@kv(HLC;Jpa;SRn06vDsaVSF9NdNpw}Y1Hoeql$eh*;-`j%)LOz;#0J@9uj_ljz&3Il9LtHtD$L))q0QzcFe?9VPkSOg?lYX}%=U zme;+wjP^KN!B^cVyT9-t`mn86AE=c{HcW1S*B2b>e2wXevi{TU&ui#&;HkaocEK?E zc&<%d2A<6qVK8D>&0VtxFL6k$4b}c8Hn}4F$$UIJFo9YgVt=WAvQC`_i(Eg()RH|h zI($Nq#_70PGulTR?rhTM1?>U}q-N$*rT@c7<;towmpMAd!;g@jL0^{nZy|26tF;k=z|qOkF5un1>YP|I}+z>L4qLYHm|w6(J+W6~=gsJd8aj z7Mn%7r=W5Ej$ljavF5x2;T_pOjq|_Gf_Tb6wY?_l?W%cRGLKttj^7 zBA${D4R6T!_auB7jEruY|C);?LDc{eQ}iv~(|q!EI3_M6MX3<*Tv3a^P|L^MT# zvOc!Vcpfe~84oc(M(QV@*2^cghhU6-^h>XRKh_aj4hL2zH+&e~jxR!l|H|=DHzbXGJ34MB! z(3y`9yf3eB&g?xQIgJSae=dLyJ)vOYWDC$L&M(sa#u9?HD-v`W?edBc64KcA)iP%! zmWQBFtS8174rS9G7E(ey&lK1 z-Py~S_j!1u9df{14m6YFiMZJa$@zK7j7$D2m*jWhJFr%$$iEpiTbr*(u?=`y+SgJw z_KX$2y2Ob>lnZxDVN}dZoGCV7>`m(S$C3oa%wtfzvO1ddUji4XVfTvLsQNrY-hw-M z=H`~}Qa4A8syQG4%z}2^{CfB4vQ9X|(R`wyCcIpacpW<3<+!eZ#*p zzQDl1fUJI_YKrcQk8a}cke?==bcy-gVARX?k`_IvozJ**(?fh8Lw)^h1up#_+k1>$draE>i7_)8{d zS;4g%mzggi$)dI&B)7N79xFjcst3DV)z<4|=kvb;LFD)(oY9ZYrka=Z2yv{mJa4CW z_+9>k;8sF!tE5A^ln+FVDvoSwDbgz5GLYxXjPisHOHw-m+xx$7Olv8&4Gg$a8DMi# zf0B&>Fe6ilQ*xNM$C;@6t2iMo3U)a2rEF?;4zG9!>7gMjDnDCF@J%=&e>U6@ z(c?b1Fe8mNLvn~g#-ei1Koq{db0Y>J@Ly9p?GD9>M>robYNz#2Eh?*GmegZZ4nooh zClZJqG|_Qa(QpMS!T6|wyjgjLds1`Z3elIrR4Mf%suW0FeNUSZy%B(=NU8MdLA57$ z!&RpnSc}gN*N`qN!{HZE$e-}-afq>I%;O<}wf#o+iXF3XO~A`0ITf~zgP9P2@@zZX z9I(>2KT(jMAK127#{rc#Kn%CiHZUUl*zLrk8sWnxp`IqdqV>Jm23*Gk3Dw6m(u1ut z)OcWAP=M*1-AhRcts#AITs?U}$G-yc-{F}Eoe-YLh^$J|^zY&ML;{BVBAJu+9b^ z^JYnO{=9~J*4MDXkGS#njY!^Hx+j(C)dM=t!X)zM^_E!1Qf4ZDFuL~&Q)bIeiG@06 zfyV8b23wnaW%WDc-z2!v(Q(m&?^oxVOGGUy+SRr2&nXO{9sZ<;NBA&LzitW#Xqsmk zC{AcJ5zskt2DL!v=!1Q!1e!u=YVDIAa@?bDm*3^MZdUQ9}`~@fTz(gG-jNC}VaWL~RXv2Uu`9%}NIf@VKW_NKm~E_%b`3Km*Zu`MW;% z7aPog+HhLv3xFT+ME~gC&)T`1%v*ssKjJT^LmnFqLueDvvP0k*`DJMRvDY9`N?S$dg%ZAGS&$ zpvDQuliVQ2!yFL83oA4xZ64`=ZKE0L65!#Z78mzlMu$))xeouEGO}h>8qXZ&!D=>A z3#5BN9t;d_tv*7?$|bcyaiuskBQ%SmCRb`h>#R3mR&?&!G(8XK7?|{$<@(D}*;@XL zmzfZ+Rq7E3jYDH5kb@FhO|3;dk29EA=RH`9?d896&IfBA^jLB#eN4y8q_f5qfyUNm zwNp#2DX(zh_R$mUi)U+!1z4&CX!xb&qYT;L60D-1wPRsjIeWcG_%aoi7JY^UM1^3> zf595X?Ctq_?N(`mJ9cVP!Z2dVh*h})DD57QmeotLpC+xRAkwZ zTnAZGr~Una6*(oYM1sJXemLXI4s`*o&LN&;{WDflYHwIHR&LeM2vk;|N5*Qc-OjhS zjSH+GtjPX&6yTIM5>Lff-O)bImGL6i9_)_C{^hlWiWLt|jGM?POPhp|2veEddby4g zYPmzbiLZ&siC(bRVID{!M;iap(uB5Q- zWoL|`ma!_AVQ}2}UR=1ho>cB&iM9-No1xe1Zr_|%Aro8~$`q0n`D(Bbh|N!hKYZN& zPIaQ4C=jiWUSI9ORdwVCJo>XdcdZQHYt=~#Ny4FObB}c~RE3nUoUL4f7<* zUe8-E(42sZ+4)y7sOK(uKH2X3&~m&n6c+=9a1UmL5}C-<) z_TB6-Gm+c85_YdTQxuACTAWSerea4`xZ_;ydqKuhcxdmNm8e2Oy0-oz zYxcKMO1faPf&Ix#D2@jUmHIYH^Pyh(K$H6JmE~XE zA?I_Rfw0*($<2pr<_u~BkY@s+SxvfX0>%VDwD2fDB}zs z5foX*6X&m9RM1fHBb9tG8kX(IJ>*7BR=>&|rVPEI%iqu^GeVa$gE6I@e>RIa$B+GB zy!UaJBC*ii5)o8hZaq0Q2QN0F(VLE#((}xy(LIf6^{dFW%gSx0U)5Uya%n+Z8pxL( z^~cX20%`37JygvCTQ8q8jypvk&AH^am2R?=@`ScU{DclVSK{}%#)_X}1<3_$*ubw! z{<3Oi;t(ivp;>9-i#aLs_fZ#NA0b~!9kUuI3j6{`I$a_5Le^5bkCOjrpmsBfUk5!JTFp-)YWBK84kw4iN5JIoa<>KhN`& z6@SnO|A(s&{rrz-JzWnURS2aB%Pma4>Eefx%bG=i$NUqW#llrf}bt@t`4Wjjn#a zyWs=8-9?eG+`6~5Tfc*5c2AqLQv3R!WAZ(4)8a)FMiW+8Qn&nz0jveye^7USfFW72 z^Rh(9#TECQZw)DnIR%m*SF%F@cF?yL{r)am=BU;YhDweZq9lYFY`=8O!r%1ZW|ALD z#5p$WEG-aj^h@NQRwvj@V&w5DZvnOR5Yg<46O{?;u6Zzp9Pui1JA{om>+!U}=D!4q z^q7_R`|H;2|A(lz45%tzx`$PyOBzX$?(UKhq+7Zh4qehE&7r$HrKP(&lsI%98l*el z&Are4zu))A+3UAv%~~^T+|*{%e>Yc5D-@3cCbIN~wvjq=-T%o_!2k-1BFev<9BEbE z;50nSb8hvrG%$Pu!YU4qbw|`!@M%_I2x8EQ=1DIr7EeE2_Yixu(l|A%6M=l$! zl+Bhar!u=bBo6Rowf{&3aWo|8mCWaSmtB9N=lnt8yxdcdoo_9qKSrd;+<|lPe>jq zORkNrDj*v*EZhICAV+i<+PCSvIRFJE3Ugpk94N9vx$5@k)837Ct9DN&WQT=?bs0BW z*o65C(8STHrsgaFI)U#0s*7N@s|aZqhF-|w9@{7VG*ietO7_RyqGIo1+V}L#XGHO^$&Xxqnoi9GO12E`6qE}k0Dzw>k z_-|ZJI=E`hII)pCS`o=1lMV(|vy{1&E(FnG3$U?zKI727^so!dBAc(~IqwuYm|+@y z%5d1I&n}8+8lF0#EO)K2JZZ^GX){|5d7p1TtLiq7Tf-C*U1r<*bLH9D<<-HW-N^OI zS{LG`uPQsE1Sd0pg}AbEbzJYYonC?sT4Mh__WjI(7G;m(<<_;LBN1mR(zqh=G3n~+ zDl*{a)|JyMqO+W}^xx%J2`1=J7DWmc4sL_!&=>IUmKuJ@fz*m#o*$t4_Llf8CyMS124*E|u(-V`*1 zfyJ7JY@LPV{@O!^1QH0hKO+&;7k^==S18=8eHf zf%a{O3>QD&;o!f-Q+M-nksmPs(%g9Iz~y_H<(x{3wzcRsQZ&G0DC?jh2FgZt{iu{x zngmvTebdXBEiomb!fInG?36kk9VebJ0@|pj7$hiN$uEhcf6V>6cbng1)Xr;LFXGSl!_wxbi)qSa|s@x36j? zBC7F2`}FBb^wx%R(a*^66p#sYZdBn!7B^VFQOs3KK*2F}xW22Vn=Qi{@9=vwXkba1 z!;8BCXu~|^Kr~-Ur4n4~tE;O!HgD6IoyXQ}D)N!Ti8EJ|at(!p zMBgIWPN#Ve)_?AVWyDkW$!bHl%7{x3AKg#=MW)n2)0{nKN)NkmG%A^Ub0HhceTM?}`jRL61AhL!u3gCz1bO1^w8qXv|t@xzhTv6)R~i)hq{+ z^4I-Ph~rzSK!05l`&y;~!397%LiUWOqwBA!!>*RGQR zvCj5i%NIZIhnqs9VN#zx!`Jln-jk4k07|-~WRA^7ml3n^n#|rZ@6Pu53+i4og1zA4#4K zwEv-*IdsqYrFklHHz8yuqA&=qpxx1`3xzOEmA>`EB34nf#F)%2W6%w-qt!~w^7mr8 zXHr{Ui(p~i;gMLB_|OOuUi3b zV82@7M}mbnrRj=}UCi_vB|1%fYG$U)zxAeJorDGS;}f%f;5c?raWM^2#8haf{<2dt zfM`nfx6J3xEn-_*=tMxX0n$kIm|h0vbb=wIiXfE44QaJb{S+oq6ji8pB5Hyiz;wQB zALAfGtz!-g{~tDe1hDDPwbdF7;2y4;!pOwlZo9e+K5x3&J7qk6%U;iT$G9cs$*SZe z&OgIq3siY27{~+M$;E&1vBY4zt77*LIVs~@7{Z#BSy${Ve}8rysgj-E*RjN>_YVSyD?=$~xq5 z{+JLPH916i;NA0-;tWeeTt;fVDhaR>q}*( z@wSZa!{{QUeK;rVcp!LhP;xA8oJ^`u)k~$AaKV+CG$ab$wQI3zZzZ+@y3N*hvGnoB zp01-D=BrJ`>&PYCY8({NIcHTfVZZ{~tK zC0}$rm^UiV$`K4&&>``-hs$lWd*g8rPu8iZpPrHNQ!E5cv`7%9*^30}xYGy&;ITK` zoUBwYX%qt7SkJYex#frD`qhTXm=b)Md^T2+yZX@G=13HTJJ8pKk%~-oX)OUL%r6Cp zt3{{aAu#23nj@1GuJLasRZcput0qFi z|H2JZzRYmppxi2$F;7vnf9nhM+r6R9?oN*BhW5Nti!?9)A2;K8DhYDJbmq-uYm;=J z4Mv_DYjh9okZ>Vli}qS%KHodDA$`eg9%Xlo*qY2q@m}M6uysqe~DRJ1ru%bAv1>xSc zEeSew#>8;vsU*$iW!%v*9qe5bbvgO) zI#U4WsL}}%qIvGElWEjzwVBDJ;kkCcx$(K5UcJs06BDyvNKzX5J;|-F!{DZmtkQYN z+<=q|tK3r3>iduAgBSooxcOPb#C4>$Od==OD3||Ia0X2FR#=fCRrEd6$wMoD#sR{k zwwQsd!Ic%V%KBw;N9UpW8kdKQ1KxPS(lFz5@~Fp>VN|P|@kNEci;PmJ#!^4;2H#%W z!NL&SYCq4`IV>O&o*p;sa8+*Orp;-2b1I$ckw;WpPVe}kq$lI!Weanem3>T(7zV32 zsyO7kluzo{x!|+P+gH@7SNbDrfQ+0@Mz|h!KAteyU>8Lt($R62dvMh&u^ti&Guj`< zP*_^&L=XnnZ4Yb?beUviK#f2K(_cq?L?nv`C{zajmb&G7yw5PpSS)|AE8~FWcNM_F zf4DRkx*)k}nKY^?fCmN)Y#tAN@lQ}d0gWq^dEbn9ik#zYwAI7n{|>FF*cl_O!A$t- zlj!W2SE-UXjn1tR-8kWJcHkB9dH;d*FO_kcTWg}r5?o)>{8)4oy?TU9&%3r9pbpPa z++Qr&hHG>kn_B^Qd5`@z-(b+Q|QO&tBRS&-z9u7I6sbT{j%NbXO}*!hQu-}^z>CZcOlbL zQ$X1-POC)3$Reh+5!F=<&9hhjP{2IU?H8N(+XV zcI^}zpFC$|GKw|pTsJ%(9WaP$)4RHH_~~>*e$NTNxf2b^fkz&Hd)(I4Tsj9~t!9-i z3YP`O6IIDlbC+8#@ue7{4m*Rj>J`{q(=WB~Y{H~ZlqnLBCe=-+`YMkvx{ZbfR~PNS zXHWjl{WklIYd#824fO|p;qaG;3jgsw)}8~GdRCFoi%gHA(PYu3KN5UQguac-R7)Nh zqOmdUeR3xf^iYj?+jSAp2MnpOUu&qrX64%FP19udEFjZjSsSr;_s<}hGsPkUBb%1{ z5)zeIu`8E>cR@@~pR3m)Z(0W9GvMp8igwj!-K0%Zye&iEB_d7GPYeJ`~3Zkx+< zIkPbaV4tY$OnL`+R+@N~`l+Q!xU*z+CZYn*H7^*y{g8bbm)OB$WjYj&il*pdf;(K9 zcO?s`NT*FJbYL7wB4ppt|DGIoc-!Y?$QF)V=nwwOsq_KIi$P$gBa?3a!wK*IJVOZ0 zj)#Hcyx5aZcR&fi4gg~0>m1go6c3`?h)UwIx1sg>l^i!5Hc*nRcnb>nJpQnGm;!Mj zLu}d!kecrfRo#%=T*v`&rB$Z7J>^>&6@}<`uHT5s;s>3D=8?P~Z3DKHF|2SmBpUR` zdn>Z(tT}7JHj`ccI38|}Dr8IYtw!eETMRu;UtU`JmdAc6}8G>GuJk1_r9dbGb6l()rg~>P{jmxg=oF zUYNt?>sEsPq(TRA5viw~qT8^K1&s3(z>DX!zd)5{@?*h#WZ%#F_YuAtN~q&b!2jn# z(uI*NBEUmgld8ZN2W7}FNkt|Z2mBW$gp=7`j6xoMf6YTMs zuA(??U8L%O_cbCQCEpa3w{OC?R+JB~PD1TgMF*O}S9of>-QZ96GD_~!AjEeIkF#}q0Rlspg?iQ6XWK@!e8ll4F zda>T0s^L6;(9qTjR}1-%zI@SRi17^JkycqM;Sv*7HT08M-Rwx-Q8TNG0}C(k@W&>> zaiNXD#Sce0851dAH6OGf!Q4Ca7+=!ZFiTsF1XLJA3#b#B=pezbPvwfe9d}!GjA&~I z{x!lsiFh))?mz>@2jDIG&*eHdg*;jWI|SN+J}Esbc`M3gC05$zqaUAHKVKSm-{PJt zrif)c(ynC@@t$q2OP--C&}Jv-d^r!aM$yT7Q)c|Xy#QM5qT*=IFFTnRoy+{M4LA`F*YcQ{ud%(CC87O93m9%8RoPI zom70wu55GFi4?uMF?N(B-@g}@mudZikWG+WyKPAay1{*lY=3cOq-gyu-flf%V4RBm z{R}?kZm59z6k{3^<{$W?UXh)gSn@)tJD$fmLy_w<;iqY4B%pURD#apwh!=K`7XAxd zA!*k|ird-6 zmCrL^7ay;86Pbh|!^5;GsadET)%E6eQ?uL%GQp6pp@C5YlS{TeLanzl>c2z@=S`eY z4+koehYt{T*MlqlO*f7B5_C9S3B2sxw;L*O24sYJ3>Z#+&-gf7(U0p5O7piIE)7AA zK2w=bg7<+F&W?-9HcO55>j$v z4-;mjJm;-{p?_!nm{)}vPmD!zZtr9Kpb9eS<>c55Hp%12`4qaC>?Sryx{Oev?kWl~ zKMCkqd$Amj47)7*js`gUqpb0;*`(8Brs!p$r-5z*ukeL-Cg|Kp1q* zE}g;uYE%^>oAnHg^SC6~afY44zomdjI-Bk&ab!Y%V@pB@lAj(zBf=msSiZ$dY_s@f zLDe1yhQ=w81Q9A*`Qd5-S)W9_J~aU07kzmJE_C6d2F$CAIc+;w61z2@{2XI|5WDQ0 z**5`1jykRzxXs|TfvoTM+G(vq|8au?Iq8$#J6o4RY*(A!CNX}*JYwQFa3@)ql1W^A zC}Ii7_x7O=?I8&0%W?YZ8_E-X!=lDF~4J>}3{#y7^3i;jO+;6paydNT(i?AXn*kg`?T?V0XI5e&8 zcqKQ|8EKy=)kPNI^RmS=yRIOM>V9+90ovA+0-m2fOslpt%Uv<95TKYrWb0cc{3;SB ztQGU;7B1J`!f~6i;ZpW)(Xqz;P}l&P*9rXHkiSx!F8Eg;i-UJA46u-+iHa3p_bO1bD-Shv%RfZN_y6tM4*50{vIxJ34JJm3QLyV0G z`6N%~CTeTSJ!0>pezdxY1f7Zut2u2eMs0-NEF`DoIs7&bK94>pAIrYz-?6}eWrKwrbF{(?)7^Jds;{c_Z0aoAFHIO9A8&8);^l4%v@0)b0H3rgfV0 zK2P<)HROwd@cwrof|VTa8_w%Rnt^&AIQMa8Yard5V^!>%88I1i9%6lgu*41rvtaYJ zR4WzQ)d@=dx%y9YZ;6$DegdtbX99h9LvgT)W#`UCkhbXSc%c&$OmA_meO?ucajNCt zfp)^B`M;@)CMBH6J9IDD_UZcY@bK$fQfu%9QGvF!NJIBVKV1f>sbI8xE&yx#IkB$d z-ri3mN$TH?<}fXQTG;aHPH)yh3meGSN_T##muQO`DBZprd{fG)bWb-lGuT_h+iV5G zd39_>iyg0M8=Qym?>>nl%liJq@rzzg`nJpgX)HNpnKhPh$hB3lYPq9hOc|mak;Ft* z!Y{HmZs8=s8n;c6HIKXy161bp5?CdtgcXV3W)XLaQ`?TAGsyc7*@OW?=WPx#4&i>n z=Fe%$vb`7`UrYf%M>OCEB_o`(`w-`dY;9?0#O`AFgH;U2NLDeri2I`v4pmASMp+g6 zKwsB~qbDCS4XHe5YiMoIcm1fE==46XQv73X8ZB+DoZp9UB7Lu=hE{4YT2>q7rt%*Z zeQ294tG#FlW`}Tb*u!Z^RfQ6CxQdR~c&JpOCflM8yoTP5-S>Yj%movuXUfD~unzb2 z{k)lcs=U8PCA8{yIX?NFx`S7wNpP4}fnN+ouIo0Dy6rO|va~Qzi8W@kTHZ>l`^wUd zdFH?M8E`U1ron$E?@T0M+QWdpjs2t<>JKVa)J@lI%|hI()MNDNvI5}hYG;7()fn1- zc`jqWtLsKEx_JfB3lVMjOkd|(SLW6>_<;_0cMPTkUsKA4pi&!_524M)do<=xDkV+-! zzeK8ucVtX`AStl5;O|+sGkdyhWC4;7)gvYNps}|!LhGaK%H6SO9tqgG2r{X9K|mc1 zg>Y4eDMAx60_h3hw#M*bix~T`IDUBV&x?!1Tn_I&eB@`R0u=&h^BzJ1@?Ie-RbAin z3i5Vcp<4+H3^P zz39#sQKZe}53mh8<8+?Syj^5#4Pz!#SCfen+)VyS+q_lo6(d{u%%YIarHOkk zO=Ih%U@qZh&a{0GefGZ$P9^53<$uPlGju4UYz$Q3FT(Esf-not`$;6hw2*gVy!lRI zJN-XQO7G_zg?~^t07I`wRCB=bKo9~T5pA-r$H&|B`Rk(<7(3s=CFX0>QjD9PY0uuj z%gP*>AY%D&6n{d*g0z*JYGw`=Pn1Z(=j-t-AA^`^ZX{I zW0Dk1Uufbfif|sEn@OVR=|BG(TFP1C22HCJ9tn;cysA(^=)F{naA!-gFqrn&iZ6(I z`~5wZT81AJAMQr{bi}3PZ9!<=cS$r-3=`6qY2hd0|2Azq`p?_@CqKza{%b?Up^ptA z^}z4AEo64@)OVUqWSN3&KOJ-VG%bbTBDr_(7zMQW|mS z3^GQbX|o5Kwtv&7eO1^7|5kBtH+JG6^SF^1Coa@O#4o=vRRRQ48hRtenhvQw_&9se< zQ=>!@Y(&T~jjA=p@s-4tts_xwJ%v0xV58#e8;*`E&+$YJ>)#$Q8G4=}NO^v=<{VEY zet3(UHlOFUw3rk+R%5f1rppdlCQ$0M+S%dktQgiJhWkDmeje)#lU~-2ViAwWFc&q% z{}^(CFsU$w?Lr*ZT5Y(lOjMy3UeXPlzDATnC)XWCtN`l_WYr!}yMZ84!8<_xQ3jH7 zFkylhW9aKyp2t$ant&jDb((K%Oo+PCpMZ`&p6df0Ukj?L1*lKB{QtdQxiw4S(wwzY zV-VWJjYmjU@LzKuhONWrwH6NepzKzo8h^RJZdwEjNzD2rG5=Ot)u+l2M8*GnX+RL) z4qZ@bp|cmNPRY`%OsyyN&vPO#V`6rYt(No;_3&o^{0<#dr&*-7K6 z`B9RcqxwID8tQC{z#XgfY+o9qQ-Hdi{cakMk|%)V-0OpLj6m<9BM=SqJ4WT!VV>7! zz?C7lC)&Mxe)h3zouqrXIf|6xAxD2IQ);t^9F$6{?5)dFsC)slKW{Ga&?v^*_e@yRR$ zard&v#csBGR{C(gl53q36f9)gg7IzZ<(!kDINerNN-u zi0%qI9FWW(>1Gsah3Hr}D{H&SFX|^=(^`_|ZWWfOqLA%7(YIW-%M|lsV|)bE&~JHX zat%t67eQcSHsZ}0IND~qSrrdWZXF%lNb(n~bQn3%wq&%}_9gc3D`wmD^x(z0AXP|D zC9O-S3Ua$fi8+?$-@~!H{sER$c?K*_EVN%qINQZQaLR$;mZek28#zTQW<8?BsiuQ+ zPW+A+TPu6$4#RlH35Ykn<*9!0TZeg*g+~E+V{l&epjty`u}`dx7H-!^ntS{EQVbg& zIOVb!-1;ZuqpM&!KZ4?|TIdJ5mzfG4t416(DeMZbrg7`|==S$2*>_|-gJwS+l6$K3 zQ8Q1PB|rw`ULj7~j=KXa&V&m|44Rlfyq+K3MFz96@EKZ^_~;HPWR$DkD)rHRQFhEE zVi5)ma0=5UxKBKSE4*pf)|Nyw{herFKu?Fp1LHgg?NOaWBpe=W8oSqgpAPHy99(HjxT>4MR!f!b zNa1&P!S%;Lg0#`KuhmI;-Gyy4ZFy6>9D5Bcx5E?cWMJ)>h6u!)W}UQ^<~n=g^{-C) zs)RYT{V0oK}Pw4HsDcbUto+x$B2e9j%~1~O8;BUBD)ywO%x7Q zF6Nm76Q{2O?Uf$l$TrgDrL$)heWEnWMtreC?-$>y8}9f~yqs2ujmBX>R)@%mIckBe zQuJ$0SOCe!ND^R{>>R3c!@e+9v>6aF3N|!h`iNUl$J`EU!)^0ntM)nG)`ES%F}1rA zgArV=TUh80jxQf*ohO{%{PeH)OI^mEGU$hKJ64SYEm~Q`*tp0*;Un{2u$@+o`vujH zyKVKU2`<2C@gvk0Mkc@c<@q7x&H7Ja@N2ue*k^`x(8G}Ez-fh{nj4sxrf%Yc*{mo; z^D6gz(-9e@lVEuc>XDDPrMIdDrVaD`cc|N%i!N`dgc@OXd^ng&TDF9$N%&qM={XgR zpCZ4K5mA43BL>Pq^&*7I)&z#ijSh}dJ&gW=J9<0WIW{(&{!j(-o%_3L8wHZDVP}zd z2=XH?dkRx9@D4FX>5oLkQEwB*JLr_4f@XLq)!$y#e1bM;bcMTo!Je7IM@i|R={C0a zNYUTV=<=o;qTV}OnAQ)IO#{~Nf*YFRbkDPja7tHC_ z+R0h|9qAsA{i>xhw{n<*;ZJyQLuU{Hf{IZY{j)&a@^_9!(v~q~pVYK;S;h}(L9A3YU|)Ioq1j`c0O&-g(iF%EA$eXZ#(>yU6h%7gfmf(7tTxCaoFShgZQ>UG;@kwFT>}X%_-J~C3~4%VhPpC)J_5B_@cBPHh# z*xJF%$#q$S=!Gf`^2i0YHGp;jAxmzO;`xsa#)a3bBO9dG2S$uq73djoI^_1M32>#HSe=Y=VXR(dHmHE)0fZ(C}NU{I#$N zT%JFIFuU63?_0ZcVkNj3l5&_QCLT6ty?V9!t+lWwroB*5nEcgm+TMmllLU%|tp3tH zdERREA^2XQx$AwpJn}1X0?#OLXW!1m>7~A*0m;}<@LTnD@UU|XIC?xNt~?JKQWslF zX=Snpp*_E90t!f{!l#2d5O zE?+(%9w-j!097l;G)}F~y@{oS226W$B-@5F1;H8;)ZGLokl40Pt z+`MuL=7ZH48r=*c-grk#u>@=J^fu3~lJ+X4@GO$bBjr^~dTiidzeAk>(}y+b3S{W z5}j#q><$9q>W?91LasIeWS&01>Znp=;S;s+05tx(>!IF|gk5C+PWVllg z4aky4(;y-i)QzjG*Eo>Ofbwwi(hl_$Z1WFsp1$`Y=7Qg{y)#!UA3hvCZ z4OSZLF<7krtt>1PlT@U0T!&xoTzI(5uw0%F!k5dhVMGCTJ;I5|6|?~ZahJUd2Yb?k z(>$7$R^xKX8_RfEKUErEP{(`@88?~%EJW^KYkdnR^zwGd4tg?$;T{mNh1)pPOXi8e z`rCx&^frt-+vKX(eHeS?w{Xlg7;(~CLLYY}j~aNC2zTdIuA>GHQMN~gCBUQim2Q7z zieut#9|)8Ye)o4-RCCH0t*Ab7*S^6Uj3QJ40}*eCg=})Ko$-CfyHNBn9_{}YkbrG& z^u;dL#LEXbipSAgxl<;P-!^zY922oK3I-4hIw|VCAHV@wK+DXL)_UB+9@E|7{ZPP` zM=(DJ{^f6q;3(w)_AgOs5y~o;*C$P(^FvFrWz~2y^8t+Ra^O%8}msqcS0y z-UKxtLbp9swuIqf<$@vPb$x^$|rqN*a{?%Zkn6c)=ls($3(D|?;O5*#l%?zJLe*3HcO0@zx z)q(+t3Y6U+b4o9#rG}HZX1+qsmDs-0IfYXsS$FID2)?!dBoo0o# z!PAhGD8EUR-`10Cq4o$Vx0UE$-<+60s4wvXXqRl zlhJAuKpA>URgB>BE&)5X=5sJ~BGHqmkd!i+IAn^$xJuY~@@{9~JqnJsK=S~iV*;G3 zvh>~6=&p1f%bBoiZ|RNCN9pV*2b!HWy$wiZu>Z?5+1_m_y@o!UV>a36IDVzw0h64g z5V$}&5Mc6Ei3;I_+uO>X`HCw!V@<{>KdfdvI2@Z`-Ik-=VKNB4S3pYqEKeTpIIE$e zqS9@5I``CDJ>ZA4NT3wTS*jiFMWc;kJ0^}YYeW##xsG{Lj{)PEy$Nb&RnxW2AXEuc zxC`@O?4HP{QAJKjiJ~c`g$K>^8lJ}pxwhds*&D1q8(^HoF(xB;0A%N{MWxqLqCZN< z&C`jb+2yGidORw~+q*qL2>#s4^N(K#1fS}*WAQc-M@SNy^)?MrGCfEb#Nm)d5xVun z-YaVJ`Lo5KbNZ*=97hkA1qz~Z1;ld$v?fN$`GNMs#j&2uxia#*D5gDPot+g^n}0>4 zhO;elEKSa^&R3Tro@O2X#TqoCzWTzyG&P@L<-a4OAryIN zCVAfp3!{g5nw&II5)YMEc!%~3*ofoGT$Jovr1XqiU(Qd~i16vX4=F{2(JU*>XIp)Y zrELGz*nnlGr!CrO4mA1ma|URe<(GM?=;;*YCQ@X%f)6}t3X8Q!^SVH+npZlX4wx!c z!J~-LSog8Jl;U1o%mu53K?gNjw`T{|Rd54!3rFk$u>g_5+2pUIZ%_&`=3h=6G~?ye;_inp2%j|5vIlYjpJy4Nw6TR42Gmle%WuW@^=DB zoMt_BdF=UK;^kbdfr63*+E-u_`91$4{h34_v75n%b2qBAob2{C__e99W2E{Oz?q)^ z;7n&1{D6>Ip3zX$D3IE;ZjjC`&Vp?|T~nyh5O-RCE<|LSln{jf>v06_TLzY_q|bIaE<<{7Z7?l?PvBLe(+wZSBGu*pk`yhj{2}T{{N$m&Htgz-V0f3 zz%d^p@N#(o3vRyfFq;IJjh>T!HQ=r1b-Yfgh>452d4%FxoTdHc^L#Kg*k}2r(}*~y z>qz-aqmJZ0BuTVG@h4#Q9QtjZ(^^g#9GuiOvXRKrVu%gM6ov-&ANctAtx++0>D7C1 z)I;@=o+gaf5V!kH!Q{UL-C|H@dstGVNRcEBi(#DlRGu(e>RGuzS56B|6OP<) zJXKEMGe~Vw2qE6!s8*5$#%B513su9e58_WKqpBn>NaQgIP`w-e>&UtWkS?)sbQthR^j;yRl1Tc-TQ) zKVgXMmg-TZc`EI*1%s4uMg`j6GYW;Aa%0_>yC}btvDT2>o0C=K_Lnm*i^JhMYeF2! z`dB%h?~#Js!5B9%H%;JoEzdlHAYk1?p2|9Oi>^d(Y*W#(-K)vn!MF^#WGl@|^Dl^p zp;O{X2C7vuKf~V1bB(>662_B&5C2YjjZ&DbG7N`AHsyjz-*}g*=-7c>w?e&T*CyzFys1Eh{LVnv$-5A09JvW1+OG`uIuZMo`K4VUj z@j6=>YD7|4TYb^#G)O6_Z~%^>!p|N$ph#z#2-UhaThFO-S~24n>JIxx6>1+^sJ6qE z|0$@c{H{=4Z_(Fc!v2x0p%u&_Nq%6C4fLB3FmdBfAr=;4{`vrmHr5H*a!Q%L?dltG zDBgDbtt@r~?d=DOw=g2_gHL)S=Gs0VyHjR6Rvsv+PBohVBze}@>{ z=p_|yChRabqCYDB4~FL-`a$Rxjc?3w&?%d9g$EZ_|U#XqfJgG0Au3JB~+J2de7z2j}%2=v0Q8lrm%p&8sS&Oawzypl> zwrBBi>5;@0GVP93@yTI5U(>?X%f6Cp`&kRL4CY`Aj?b(i1r0YF_|Uwh$PRRZFeJHg zuYCYuiF9a5kjLCD%}^+1&1<60mjR57m@`@E2f-FKXuV6)&UU9Qj==sy*MA;6F5)Y| zCK`f?$)EE`T3MT)gX1JGdW^%lHVm*8er z&@Rud8+)(pIqfF@YP*I-<+!a@5{mhA_@ocH(=1X#X=#i58(P1}@V|KDhho)KH>lIBh zZ;$}-TM`W1SXkv}Nu`s%E8+6R;ACPen(Pb&TMzLN^>E{HGZZ^N8qY2qt+aBpbT~ju z$^(7rNB)lmJ2rq8Fu&OY3pw-*D>V()zTL_=nl@>$*;7kOefUUkG{2=qsg{C0Kz=DV z5cOOAlsfWGA?dvhM)&H8`fjg*NWd-XuGDSC2*1w(68_^O{HMmmd5Q4qWU~EtMBKq5 zcdJd7@j2dm>mnjWmwHlRAj&+D@E3og&|Av)N=x(9LbCM3&T_gLa)V?CszX-xxo z;^)t)h8u0@h0T;W2?St5rHpwSU){s?adL8c- zeuLhfQN#Wb3>sYipsx-Ey;(BmosRx57CF+3)nNGzd)&=0S%L5?ZOdr2)n>-@Vu%a z>-#gk!9TwMm!6tQ&K8}+BSDRDU%$yuq1Qg??7Z#Mf>Xbbvhy9ZcP=^PyMw`xoDX!!fqBr*HpQjsmN9HuqC^dgx! zfM_2gn!`}F$!#lG{wn%$-f@31bo2popp}G@gL+?u_W`r`0GL{7Ppq_(kt_I4**#j! z`A-JRM|eQSe>CC~Cz)Afo`6|DJMm`Dsq?t9q7nhrIZKAlC;m<+H6CDPE?&BWzVAPm z*Qi_*Cr8s`++Aku(&D1Q(;~)6G2-7lC07oI3*6Oc%!cVPCK2$mNrI4n9|eJicIQlXO8Y?$DsZwTYMcpltXS^ zv}FA{;!58^UHjq0C4<=^k3CY2cmHhu1^D{<%m|e5{?*$2yyjXy-`C)IWBY^svj3fL z2F0NT8x%hU0Fj)^3K|{VqeZx06K|4HtoZ%BIQqiFFCJ+NY{_WIoXz{Yz~)AYS*o<= zBBMW&+qX))5zjX%1z{==n**u{52XPo8hlJ zZJeo9F8u={-Of2{D;e_TLk?Hn47m9WRE)><;kHRX zofw4R19yvTD8j4cGTGOV_Xp!6p&3F9=Z$a~kCT0wf`Gym{p5JFoV62+c4?QhJFXeM zDNlB3*PjtyyI<1UR4{i@wm_?c1}upfx7KLgTqJC7{e{X%7#uah!~suMAgsUDtALV8 zu!zdNN`ul0-2Le_`Bm`00+~MR6_1oD zihG{=!hJ#hXodo=)b1Tl=$Jd>oS%;>Le&C2Y0s>_~ef~q9Z|OFxv(p4hY@b@I3fG=Jir zxr3D^A(1@&tg<1~y#u`7IGbbsap_U|)36T2k3J^XNNKy_+WVJ5@ zB7%;6j|CgN26V|Z!pj=VDRho2JURkMYEK+o)n9RcVUt1nzGO7*5=U*`8-EoPAx*`D zDt)rp?TYQ)OwQ|YUGvt*_|FQ7&pw;PCkPZ5z2?4qPhO9$(Y^EY_$cV;Vs5*S4ZbqT z4E|A3XwYHqL&;f(i#c!7XkR^=P<#thI&_^8vDs~o`0p&pzBHDb9?BnR@sZdhO>$x^zCHxK*+Wco)xS97;nI0W96bAkM4 z4;#DK++?OIN%r>t;cX)DBF61`(YpVLoYT_T6U}`?dcO`IWN0O$2GDo!idQ<T@B5BdGf_!x{!pS|^&K(C ztkQoD$cf7Q#dJ;5d#6a;YoY{AkxjJk{&1zKYi#H@B)RQ1r9XuO2UHHjH;V*y`rjn; zp1wS(f}R2T;Vp-i{IHF$P{Z}TO7E#axGcMF&7qBr{0R#`x4s649(o z&RYId?C90}mbnt6+5CP&x0xu(b`fP%y(;i^Y0=R^@bxvymLu=p;lDtfQS}tTHPw>w z(z&Sy+a)>_fVZN!o;)jE*2jFpc~WUMjLyF_?E(!sxxf*7AGN^us(OQ`*>#ts;z@n= z*e=G_e$$@*I9|9=^f?4|!Aojcky2T)rbL^SFL7dmRyJphO}wzNZr{C6g#SuzHT*nC z^*FR>Uj@w&wnZ70tgjpxu6EE}J8EGZN=)kuCBValRFMh|b~*N#)ZU5DiN&5(7ag#k z4lZAfRd&q-w#-f@{MYv8uPwUFee+}ZXb=%PvA}yk_QBjLa?sz>*3vTa+E|fVcdOw;-oaZn&_@ZdlB&&Ig)Z`>&;v-$+R-SkIuviZ{hPJT_QQ~io(xMh zVCM;pB$W<{D_3m)6zlV3atUPr#P6>4y_ER)4vqerlgBVBb51`p{WK~Z<}JY{k?pzb z119bhMDdR-A@|zdCN0J(vQ*4RZn~tgEiLYtH9Y$BDd#O@K*{OXX@m@y8&5v2r*_S! z&07B_$s$GQ`#h}BvP5!nQ+%cHa;dO73A9VrOQDs-ny5B5HrKa7EG{-x9>jRN_e3a3 zQ6&POA*N(+3k5jhqqx#1zkA9dh>5m+z^D=#2|}JF#PgAtmv?%crCW3 zgN7szx5%bBv~|w%C*A)n55|0{$ol#?bIfreFpuP40Tl*~YOY1rGFU|8TYs~uIenA@i)FZjv3E}B*wqmoj8J~qz$QXLC@hW;y zS=*$%NZct6Gq<{@eoA*gld~)TQ!ThHrdFi~q;gx_4Lf9SZK&ePqEoN=d1-GJ-h_lL zs>jvy#Dg_!xqu}B5Ml)&qbpS}Bn~$AG2*Dsh5CH_1G2bh0#V3DsXotUzn<`h=y?j} zIBoWYRVn2H4v-dr`p9*io{s3~>#zN86%>-ohcO?)x4Vl#x`Qox~y?(XjHW(XPby*!`a_x%&@Is2Zy*V=2ZeIzMr}em>X{{+g;vVT8>DZ)s}_U2f#4utP+}vHU<|0)^=- z>)2UnvNk)J69M-3iPjd+`;f^C0)fGQ!Cr91N9ZfqYv#zjMLi>nmyQZVd*eFSJVU{w zq)DImm!$J^&EMA8BSkY933JD@plUzsdI5W#&q54#uu2!jkXehm75Ir^iNzg56buGdmRMnO&>=8XG*3b1n@sAbyIKo#k`t>p@E~3Oqjq zo2kF)&1qaAGI z%g-&oh0JXC=L2eu=NbTtWq93EHC_GJ2Flo+(I0x$I8a212Wy< ziA^GkoAYL_H9w6eKil;=#s0)hYe)=(Z=u0=SKk2XK{=ug_+KianYgTtbRptMxKy91 z*B+C^wy(SRe>4m*nw$2`&>r?_o65mY2(saiX5B|E3aQ)M_BWQE>aGh2ThmjR=eq$$ zi!_-9AqCZAhbfJ>%ATF~elYJ!> zlWyApQi}=Q8hpE3iPpQZ*wIVS1$;C^WXK6))J7QnQ3E|XeX-ae-x2ED=A{x7yaAxc z#8ZkB#J2iCh>8w~C8UKXlRTpK)ZWrLOrZ*Q%KdPZ;BWkV%-acclV0#;-oE{Ee{XRU*DzqdE;3fcF@T)^Rp(d*#>BiXYVvqyJt$-P#@votTZ)r zIz>;s_G9Vn97-@i`yWvNns!iCZEeTiM8Vp{td(kkm+;$EEFw&q@^CiOSK*4{afKvd@nvLlEcY#qroFUe7?;0Z$PkSk8UiQpgoi zyh&IqFl=FGY$;Nh@dg%tS6tV8ezHjL#mvRe-M8hCx6bLEx0E6AMZKN>ua-C7bmO~- zqIcD)#ooqYLpBy7a^nsffd8qz6!~niApXYNs}z+w=Izc|S)%0WC~5qS$l$c+>s*aB z$0IYQxXZyu+vyGgz;>;09wT`m_fuc<$SGRu!JI$Q{y6b@yghCH*HX^8H&vR$Dp9o^ z2XBC?%e=NO1G?9`Q!_PE5p3Nb&Ct(3zf^whqHbl8p3aFzKKo3dS>s``eWf8JXXAcG z;_J~je(F5*o^H!&&^d8ZL(MvRwBsQ9in=)|VA+FY{*R)ReWz>4n_h*3V>GwXl<1u5xwTi<*4t4Q1@@W*+cU`SuC zs}k{TyQqNaJPLQV--Xjpq$vNeXho+{0a_H5OnuH_v=4x5wLf6@>k!0}z4$TG19&-D zujhUKHK9Fw7|TAW_${>z%pS*G8_yR1o#`oVuCpohnpE6>A*6~inG_%@sYP8SGlXYn zVLm48Tk&~b6}LSOZzL9KJDdo+q7MMRnrwqb!T%7E^eEJ-2bl3n^+*% z%D0N{Tx+?Lr@MEzt&6vF?RaJ6)J6Q)``_`mJHwS5ozie@fTodVpkPWQ%lo;{a{0yL zc^6lNnWtH2QCI38mc8p-+gC6Qqm{W*8x&QZa?0SvA8aTBUBTm{B(inO=T6)+8+C3) zEXSUkeS|CoeIoXWNt_m?Qh|)*v#((9n?Xvz*nVKTIKQm4?Qhbcm_u;x>+{mRm#_DG z+ROi4|7!-30?Q0o{7l~f)(=HpU??v}vazo|t-8C-*#8^BPP3+-MKLxo-UYVQSqi77>vT?xm?mk23$n7kOqHW!c}&!|M5xs9*}FW#5n*`TDs=o zb=ox{YxcoCDx#VRc53c`F*7#G;Z`X$)%f=uQ9DtxUk8#)8S-WH0|#C9j9AAe7;w9F4eYu zUA|aCxtry;T%VhKZYnlKq?Dm4l0n&V0L*e^IK3&0$r~GzGt7pq z21|O+)Vl+6Z{QaA7g_D8+Pb@>w z?KS&D$djYDhT?@t5=YU8jc#S1HDSOqMXh$SkPkVJyXu(j=c?&J^xID?^J^{`W z9Bv5;#&K*w1mVLsy=PEO&t_-y*M&FgKFb=)7#~IEBKb2TC6w}|7AXN;rxDi6;e0{a z=yXZ2$~fZse#U$`$)d1_TgzvdSwt7>>7qM3eP^J_{$Ay)cZC2CukIBeEP&mzc^1zO zmm$9X>p`>&j1IHY=E{gza0q123J28SWC*yRns{zaeKX-qzQt@y1>^+3h=3uXr{+}k zW=KegHO=-{SEBT*zZfS-0C<`F^Y{F_0gJ@1Jv8?q#jY1YwTD3msqfk#7I4S(31Ij8 z$KrR`Pg6{QRx>3f<-#{RD=TDfPX86xyT7oinrbPBM?7}ZY7(%iFSe1}z0j(ip+mr! zVp-4+n`tRsRfkf4j<<#%*Cr1vNjG8CIb7Goj6t}4F1~9SN~6!}He!Tcqz(YSee}I` zdhs-0g<>Y_KfF!l#sMULF1wSig*MDee8ZQxs9S)S?azjo?^JyGQV+(4Bt8ww;{Te= zI$PcwZ%CG!e{`#V_h`c$A#-OmZgU8}Zd8QBSSOLNrW@8b{i9ua%XqIEBB+=OT$K>G z*dAi*KwT*qge^c#mpC+bk_gZ90)gi|T!xK~&LX**Nk_>@NgcOFFuQ?2rWz0uFs~&U z+G7yy8(keOxI?)V*S}={lITo#)id3C!D?2wtcK8Vb{3XgL07_B+vG6IpwfKRIYcdl z>oRCO+b+}lx265jm&x^Rb1RH0I*yAMS2D(C>N`q&VZZ@@O+3(d82v1X+fdkPAy{a# zI?&I$oh?ziKD<^xLBy`kHZ$DKQ1K_tD2UTp5X@s#zCjjIxp%(!7>BC*lY6) z`|s4unkWNkmx@HNsIGrBx)N+DXh}4NvzWx^Z@hmSG3aFw`rcm`wOmK8{Lfs|OsCXH z`&ODheF*u=Tja|&&uSg4#|L*J{I?Z{eD2-)cnThrzA`p7%3JiUA*Ym;7di7{NcEXh zN=6zyZK{7u|3u1DEY%1}(Ca40;fnyfVKvUQZQTo<(iN<{^8?kWE(3*fFrcZqek_;kl~bulX} zEX_))*~o4w^%XhIVMhEN!di8pD|)O4Nuxu;Y{@E2zVHb>h>q=<7(0L z(dj^>V`3)(?~6N^B#MsNN_Q?`c?G}LB`i`TQ`pt#<69~vqU%C#%1}tszEO}IF+&|U zpnsO#|6$0V#ev0)TeGZC4txK{YbWSw270P)_C)Zi;^sRxlP=Z9o%CMntLu*l$7YL& zkCO--?Nuqe@Sc6VL4wj%i0f253`YWa7p&cZuHB?q! zyKtL2Fjec%fiXIB`+89?v29p0AcRZiNUAk1rS1W1!79XDZ?NZn$H5>yCFQh6+~uT< zL{ztzSny|w10HHp=>_?;EZ7*QgMs41m$^3=7ue$e>++A7a6b1NhK#p+1o{4IGF6G{ z3XWEw%}@-PT)sbc#|$|p$!l9qVvq^`ulX zHP(*OjmW>ZYrcWGOK3o6y^QM@~-1a6;-PlxihmmG%&*rQP5 zQn(rVF*i$QuEM1_OOv36u@ez|aZ8ZQlgPzMTr{ugtF#h~T?vdUq5fyP;=doTy&p_-j$4A-3_lD`H&W#*U5K~@{h zG&~(Cs$?*$?;CY2($Lk~wTJb=0Z7)Fi0jM#*yaeZK-plZrvY43zgc6EX!tx9G->YJu|DP71Df@0YkqJSZJW+sPW@Kc1M}+{tDaibqHs9js zS1=xq@vyh8-JXzU#V833RTS*6ChtPB)sT^|lboy1ske|X1YMUyT1y>8GQWN8N)`0F z_%iTksm$Lq(0X|_j$Hq*JT^9VNzNKRuY+S8Ht*ZFxu~e9lc%G9)A$^+$SrL9xW{gy z4h(fxjx`5Hn9jJ^6sef!NtUo+_@SR8xGpE^*=F!>DOG(QS*yPu{g94XCytMm*m+wo z`Anl>e0xU&he9M^lVOkl`g+r)c#(y~FF)mBqjk>N+4TB~MK|yl&&O-iKRSedum*G9 zW~WetQ^gZH6KzMUGVX@1R3=wk&PADK@kXmf($sUb?LS^?hJ_}v_~uB4gQC*S^0KzJ zN6$>Bu7J78*(y-q_oJ&V@|mqhe$~jSz9Gk4p6#PxM;@5p#d>U5rp7)#y@I^_mv`fd zvtH<+a($Qm*;&1!Re;yLvM~IWs5_-UiK5x>Qwgm zc_*;^_VeUmg5IRW+v#jZ(vbw%-u=r|9nVnbVM|Woh$@kjil) z&Hd5($$n4fb4he@(_Ean;42Kt_zU`!q||PVQC)E*=MmO&I-E&=p;CdtD#fBeG~D8) zhJWALlQ|5pl)HI>ZJs$}b;tFWrEna|JF5bvi|$DZ7C_A2pPbEuIq^uM^MT z|9WVArIeLV3Zga}^ZsTvRxo5MEcm_9A6JGqjHMHuO=**#b+(3iD5 z)Gt0T5xjXiGxOJ* zE?xylKN!rgga!WAWKdpTIzzIg z*BfGyBZ^)ox=4?@VgP9wfiiD!_lm2S$SL>6o*$vEZN0DJ^-me7Et-S+G@7dGS&ee!kdemc&>R#FLD0at3|xC8kS$kqyQ9x4_j^vB$P2f@ZPv&Yt)i zB>qp`RDjee+>o{T`1KsU{-1)sNFwG6hjD-I{{c0f{GsSSIll|8FyN!IWb>*;dNu!#bMUY=Wa*oN{8b%V~-kt6w8#8A@*hyWoeEWvWMt#YOH!oDX)EFs? z?k#6lOwr)Fj^(Oq4AWnyF_+ale%Om_n7(%waiUnH6%aRg{Vq;_qlNC4&%Abg4!+@GP#gFZIutTmH8uaa;!zM|8L z3VfA>80$7J6i3&t_!@HPR|H*J4Se6&*jA^+s4=9O?XE6Ltqi|3?Cp|Ub-uZ13X1b! zUYV_~pZ=6ip^R5j2D{&k0;XoGOawT`YW~THS2Op9$=po($6>N043n_q6XA7Chn{b2 zf?<$_z(ZH~B&d*?)dUq1hVA|_z6gX5aYiK%OjLMNjk5pDNm=>gYc{0C-2t&(aCuO! zoes7Wl}83r6XONy!$7e%=mC*xnN>u>Y4mG*urE7dER#dVJTU!V)wAuErkBu6toH33 zVVAb9EfK+(ZaW!OCFSaEIEyL56Y@TjpL?o8|Bauo&4CII;%inOCQ0!a0(0uLw=k{c zLyiGtpP>83LIm+I=Q1;eBW%-qxI!|qK%9N-yHvZo7~#AHOM35hhu$MXnzJvu zWlb8T#tlir+?)Pr)M^JargCPEXK|e6m^MPPn|1Z4R$wojjBGB;_O8U$ez_?ioa_!Z zH|fse$`!=^S~QbiufBC#U*i+3=(9A@$(t#sui@T53to08Ye`495*qhvy=>u#dpzw$ zkKf{3uJMNyBlibeaL*qh+pA|QLUbuCn}eaTU7wsDx>1apF=x?7p4+nfL*8zu&>K!t zYf&KSF%~Znh(-#Sbe7>+0kUc9$A^2bt6O;yVDoLXoEL#%?ArLiF3J+HQshT3frSUQ znsCp%GF5XIEF2en9%eq4oeR3>YAVC~WZvw&ft|P)@vh(-dXhya7`exz2K~;c=y2r2 z(UA&_k&P3TWyYQeCd6XR34am*CgC6hYs0>Cg!Q!2gV;J6DsWgsC7q zXIS_a;&!&BTU4!EuB&V8l4sz8@ScQ${s1Y@?W;|LTBO-~j_7W6N9Sh~C<^3hJI_C< zcAF;O#sr23`LjGuJ{;8G`o_(QT#RItN zYf?N^D~n9L&Be)5>^XJYDu71&`GBApMQB@5WI~(g(IyyYF$z%|0dL$nn=DND#6q0u z^rPy^9^AM-oCAOHf6-C{iJh8WX)QlbA{`}1N0VVkT-U(VmVbI8T@NnY4qpQ=4<^$T zu%+AuQQ64?yhvyAs%8h=8Ga8anBCpoI5hl@KQ*rbm_9YPGa3xiri;9O_m)-1i#&a6 zV)kvvkw0yIbVguwlLL*mdZY}V^9~(aQ%NS=629~+()X6c?aRph>jl2Pc_Qd3CXJTV z&Imgsatx&Z!@bzxqVjveF-yhVPmwrTccq)f>K(X6+g&j8R4;gw)e`L1eWSd&&LCg2 zzVmmzp5L@@r91!qE@AtqkjlhT{t}8HbImR|XCLA;&^A*WgBP&U^YrdC-^4|}gUX8) zq(Q=)&Cr=~`xTk0NM3h4LVsz)I(O9-h&BTi5nxGx}PNQuQu0bf#QGZZeSvwOqNdZ^@xBXKEnKA?ixL zx@&MP9jyx^dJeZRAQm2-dNS^Omc}b>!mHLKza2=5StIGmYM7pz$yFQj&4a*{)^7pD zHY!QnG%BPOZrF|t)}l#Z4MkJ@ev?G1Zm0z+?r8$N;>*sPhh$`}c_DX7gLy6B4eUgxUB&zvz8-clTxlNqH`2M-qq{DE^0EDhGNT|I`6fMB@|p-9lR^))^B>(NbYk2leT(kXFqaidbREq;%F_iebo zv#&kwX0>dJ06UpqX(=hMMAlxnVQmjuU|%hMPHYH)Rc^i%3N1RVu4d@g?nF`o=Ex)mUNZkKB<&J5= zPCU=Kg4ryOp+C zcB%#L%SsHTMg7-7H-l~BTCZV=lg!QxKKUfPUQ=XUmiO`)vrD?%1gV&+sosaZzArW> zL!N}~D>1jN^XxpSCm~XXDm!Q7dF{3rBLyCAR(h%+e>T<}(WgN@k~wQsaf@9v3?uJn zVP&V_7Jrw2$0AIZpvV34;~e#;*BNO~!B!*;ldJKs)4m$3!r;m=~ph`jEpJEix}}wD;CHED;+&de0|Ahsut-y!m61!Lhi+VvCXB-wGZ-C zEBD(~l0~pc*~!ytP;q?8NNV`PxQwrv0k;ZNhptBR@lB6rgs$|Is>J{lf^e>OSZN-< zO*ZjWFs}0Ag(f;Xz9lsBnGgKBQcy@Y>)WE5UR^o*RMlN6GhBHcet<2K*ZHZqv1!c-e zYzd|a{+=yU4Xb4049^DPd%&|ry!#oK0n{U*MEGcstx5mKW?M`;y)Agy5&oU3QX4%7#*TYOB%h zmQTaTDJeCi5G_(t*2|3&L;ozC81fiOSx|6rv1_wPQd%Il1A~OqkMF>n1%6z!br~i$ zq3%mcN4Y*@D!rx=@d%OlBdM0toN1C=8QX;#Ws%w=0k^GrHU*;>tjQ6b{{<0RpX#_1 zdXbd&wN?%3mGU(U&dzRdwI=>k?3%-}l`MCob{DO@lJeH9l%IsD@J2$$!X(;7G8Qvbz?!T{x zMZWex#%OrzxP<8)=EQZvM2NgByfAj|sQde+KeA z%XX(Cc3|6A?3Q>|(Otu=fOgp~Sp%$uuc1f$Z57O93kJ{*+mu3T^P37y1J zib~qzsVUJApm)WOQvd2%Hkr(~C*lgamORTeQ&vrJJxJm0iULx4DJ$muym(>{sZXo2 z-mPa2#r^$|G^09oNqgbyq+fF8_Q226NYFLY7Aac{2#{z=tcgxsuwMVFG ze$K)N@(U%Sn5pm3lpJyQ6wFjRa?T6_Dp^%BWB)vHAL`IpR~g1p%l~jnv48#0VZA(# z!YE5s=%Q{&@#R6s^1&ovQn&fbOSzDJ@rsl)A2Vq~#;v;Ep=3j;ziZzl&$Vj4VSn4G zdH*)kPZDfkhi;GqL)Q8P#N zAnSxJf;(w8zWG|qkzC^(W(043CH};gMAdGF{ehEB=JRJ{Ow4#e`PP5xRc&oP%WpvW z@q#xE*84UBgyWlgriYbTuX9^0!mDD`J4HMWUZp9@PJVR85Em%+saE~ zNmiLZ>%=qAGrcfB6|Llb;Y-}Jay8ZIyK17nW%JV3+8G*-B9i4`yHd|627tebTDxAb zte6wt!aC3L=We<~M0TIQGkt3D8LKU044!$&Um#ap9bKqQE;YDMh?M+SYY>|D1G|G8 zJtF}ItuRgas}c6F>7S4gxdK1J0t3}gLe86CI1HoUEyG!7K`Y+xc8g+-_3Yrr^Xo#Z$?pn!1fU z25y%(>65>0R!TSSiB44=r#fW;Ju}v58)LQ$JMn^KN$vSNy0rQ0|bqPB4zWsww9$tmZ@dz;ws~ z4TYm~w>rImYfjHh(XBVS8@^@_9MqGB4HYbRXyF|hvNxWU>^se2KHNJwW&l{nG4 zvNveqZTNQP`i!JeqE+fi^_d3SVmKniFKk~DY#S5R=!hS`)HER_yxvMV%!y-A>k7=qM&dw zuy^rSW;qme)?7kvlWXn#VD2Koe;YtOy#bUB^M}D8lUL!%oW{iu2Yk(ExSgW^u{80Y z<|;v^jRr@{O$BaaW=HeY`=zy4C5oId>HCXO-^=5+T0_-OHe8<-RV@w<>Zc5mL=>^*( zrtxaOvNv+*b77b0@?&^t|I5BhRa;kTz>?Ct@P z_s@sJk;jZ(u-*JG`=-n3T&GJ_3v)QFin9Mn#HKmse;H`aAHI_DI=i1_LKHkg7U-S^ zR0Y_OQ`aYOEmRTS^R;N~fGaAEg?TiiWWg;b%@#i~*^b<+h*^bNC{{Hi1#`mIrGD1s zfmy&3lu$5?V*4kvHB=%!S81IoJm>|ZlRizW8@{7mMXMHAJEFz>7H89yCjN<$z#{OT z$g2b3l439bio~0sC)m}th>E#oULEwz(dzpWy=NU;a5ymlHpBZ#j@;(SJZ)Ye1^vbE zWixLMiF4Gj2XM1{pOBrBJhydwPl*{_`orzbqRU88!*O$ZP*UsEU?0;pq^z=cA+mm! zz9A*D+l&B`z)1u(`!^9#Lx1CxqyNea1~?`dxrA>aC+&vg4Roo(f4G);&5+0Y)PnwU z8xR!iZfHhkVeb16>M@)`ncgUib6<#ZBovQ0_%&PHR=O`M{4f8IHMpN3Y<^FcZ>t(C z)VtZ(KqZ>Pj=py(PPNMv6uYko%o+^pfPNvWPfkRIn$gae>^nla2JFsZKH&QoaT_cu zRcXu|4?Fd=riEbl58@mK!qWzIB7SX>ybd2s4pwlsi5{bb#BkS7UpK5x`L!jkvloht}k?I+gq~fVsMe7?$c8NE8|0T9Iy(R@4 zpy1dTk9+NGCL4lfY!m$+D>PaZ2j6=_T(nUpcbZyTSo5z;q$UGc^hviNltES&BoxFUrae@kN(gC&i9W>$Q zIZd6q2)sAXift??h+1}DrAp4}a!U8H)C8f()uiQZ-W#5mt4Ai#)D`?aJ=jv=s3yqh z1@T9<^mRvP71M*@)p|}}3Nv{DMykn$#cEoFcfWC~F=LXMCFc>r`cDr*GY5|P4{gW= zca;1zDx7US1;s})QfAK1G5!Y(ogZa@UN&%@tfxIV4}nZsj06N>V^T8*8;uo zng-5N!kyqNPrN=$)~r^Ae&uKEGevoM`CX^)$AA5<<}3{tPNIiLYMm&*aC{cp09aTu zwh?V9sg6B83fgQdN^`PdLzzv(W@@VJFLu~zVlo_l0o3h{Z4$h1{rnB;Jd`+0>XkBm zr{}B@{pVA2pg-!sW)r1M&npybg#J!30#ilZG6SZO>D*tmg<|U!Eg1>B5rCD&^8S;1 zYe`|3fp0#zyJ1=HVKqpRE`_y5J@mzfQ#u(>N@v+rk;D?P zVjxQ&XHUe9#BH+e@dpiJ`qUNHTbI1m!52OMw`SANho#yC&gstf;eDAss!VHNFaxWz ze}4Iii_%X;SB^7Vk3jYJPF3m9bXmm8N{TQEsN)l4r=P6NrBqFkP8(Pa~KX@H~y*oQ|s`#;+7b|)tmhkMU8VLq!Q8}lcOm|<&>{(IhUijQHhf0{6dRa_l zj)cGqLBK|;Pap`-8UQdnS9;c{;SRllqpt{J#>mVGFv3c|v^ZAp3N9C$D@jiV)rL34 zVbd{lclR-A9ciLq^lZt!HFXr=m%q|ZWPoCX*2@PlKgTyz_P#VX?WrhD)7n`M?RGg! z%%Ua8^OFn{w4h16-WaabSRDMx@_{qT8O9V4`>m)$k7iV;HWDcUNsMK}!S5oE2LIOY zpLYwNY!L7P7$Q;Z1IH8;Y>!o2e4bgpH+$Ay{lwO5xxuBus+MK^hQ`iY-c$PnWf}z> zLM7uUb{8{(Z>X>Dxn6}AF5n%Yyb|sEZ1K=OZ8KI>;6_rE355$+uQx_c!b&)`*@l}6 ztL5$X_AHAvdsH;fceped^3JDr?-15)?I`<`nyT6ZNgM#q@kCXg+~cAD2vFjQxARj3 zauko!8xQ;f8=yp~N~E)y4d)Hn^jYclPAH|hDX@}KI>~$^Bw9MZ=LhZ9ptVWw_N{)> zo#eJnbM@>pf3fhvIh>B*QEys+!+gXLsy8IyQplJNIiAwMS{P9+KV>K2<4yO!$xFVG zE!G|n-i{<5*vfZbNU8a%o$(y+5%iL%BV@!no2|s8^>c@Vgjh)S1vMHv3{Po8Y>z+T zU$Je2%Z^GMw;fYj+~~m*TmR;Q<0K0L_qH}Olf=fI@wT)gIpe<2_)}cl{r#zE*y+JM zwNiwNnwMs|AtnhrViPNGqC|&Hh|`o0u|FK83Kudr4a}uv{73%;*UK#ArmvYNdfLL& zZWhVc`99gGQ*kw3)7v;;4#y@co+2QYNru!_3pCy~FSIHnTd@By8_|mCN*&(RU2{9v zb&iW|G*w(mNZyOLgc9sG$AyZ^NB2hlHS%Hd11eNQdJiK=Jl3AnIt7Lpg``@nvOIea zxw=x|AXBVjI{sdvSnv?9=|g!l)zr=9OtEr0xZsEgC{u56LUE{WD1J|}%pZ9Hb3P?P z$Bk0hSXhNjib+)_cAJrzIvL)+2W}U=_?N?~xWyeOlp3Kch$5g$@bL5HuTaY5_vbRA z%XlS>!jZl_&65q@RFxlq;t4lpNI7xVoqq2s^*iSf3ze0f6#tk$a_>O1EBy-o$!vLxF=U!O{u^uHFJai!I^u+hSuv@SQa2-ov>bE6Ay+m_%zJ^vRW_ z0}CHFC%@C*|EfAk|K8JuO1JGUZXFm|&atwcKCtsIaDZ-4@?(c$G-T7v?E+J5w~^-Y z@oS+>wjQp{_x0Vc+SNtx>juxqlYTFSPJ$Ic0Vz(#B(d6`K>g)(j*Xh=YEkwaAEZ`E z{*s+@W6mleF39muq(7|J6WQ@aNg2Hq;C0EoOi!R^+=NbKP>>Se7#;+YR8XWo0n(qfcxY4 z?cKVTTtKgw7=hmLJkwdM9n&`|K8+A(Ot)teilEhkY7RCEAstK z@X~gfuNg6vaO`v9LjzTPN-bzg%F0WIMx8b8Cz$)uJ`RPS29m=|2S8O@TyEX^rT-AQ zHF=efr&(F7u;>Qvr=K-i>P)-@CBA`7q1j@pWEnJJoUoT)V?F7GZ7stlQH2Re^f(Dnd zaoHI@V%JI(za}ecdG^bb5d=`_(|8>-gTy2x8pg{pYazar`;#RpUX|Pl0HPc7gg?q-3ad+`TrEXx%A{>H?rwDm|o|dxkFEI zFlGPny!VArIBw!yoQMsZ_zq06wPxt2CdzQhJ)*ysUB}f1+1flXAU$0AN6{@Ju5@Tk+q5eS2Ag;+!x0OcBA~QqIh0pUM!C#Gx`&1rVlo zoP8Ph*k(1wi`CUpym+QgG{I#8NMCfZcvw_~JR8Wg&vbllUcNKN;V{dv6*Z0NTY#Nab_;X%1x?Zd@>?e)3I>}2XugHCw5CQ&N*yQO z#CFKgIJCDPUiIUPq~zn%Ti~?l(Ggu-7k1Q!O)+TWve@#XKv<{#=fX1XEfGi*=W{Ulel6$Z>XwWiM#4+gzD!A}jP4Hsu2(%T~( zGqE4a6toe)TZ- zC}J)dwGG*A;|$txya}w&f#=rUh2&pNjL(zSc#NmM9(-;~^0x@t^m9X8>84>Fex=4R zR9r=#&(ABA3r>q|)H`k8e0~;xh_up<*jtPvo%xAt+}l015*=(y^ElfxnSHmHopeXz zwfpgMZUmykp>Yn!C5HU%qtc*4*G$q8{oZMVFqwA-)H0sDPzSOgNY?kYT5hm|<-tis$`Fg`Etz0Q zo;2;2vp(f^;F{rdVV^_e{8`5JI`wZ~KK6XJ+8-pJb{AOr6vZA+h!E)`g5CU zLqJMjB*APOuCW)%)?x{;|LtNAR{h9^D1o1)l4jEyhKt@FR+`esJk{Lc0BYztOC5oH z9o_*%Gx|;gK}QRan|3PA*DrU9k>1r>AC9Zzz&PCY>I zTEdLj?*~b4I<4R@kd_`Ly(Fb3qXT1*8m%nQZ|4@i{s#1lm+b!1VN4){ne9KWk=Q(6 zS9n3G8|a$++Mg&}{>?>=E<*o@bK}*GjrCI}XKw1GDQ%YNi3uSzvt!*4*s^3F0gY6f zAR6~)HwRO`LLiL^8D%abE+aV$wJ>@J^gG;(+>llJM>7tD8c4o9;-4TN$7%+I$bSXf zeli|bTypuhw7-1Y-|*1~m~gY=FsrmKSR;)ycvi7T+K4h7TnA#z`?%@Fs8`(;M?-hf zaFoVp!EJarZ|34G5W;D!KAiKG_u;U_`nvyzal=Q#p@Q-Dnq^eMd~`P_L+vdq;Qh@O z#AEbJItkAhiC|&tZD{(&A@wy_Sh{#o^tj3$5gU>1(1tl9qll79UT@_3Gs)S2%m)f+P52EjCn$)vK@rgwjM;4=fk%`j5p@K%+i~j7va9HLjG1iPrFwt1O{xnw zdCxkjO9UZn9sZ0sCGM-vfA)p*wa=?LTUbT2?_ckW$HD0yA}Za6So`994aN|a6qvJd zG#A7-eft?WHvy3>ZSTrlqKif_Ms;#+X39iT0G6{;0MIh9#FIcTk#tH8w5_F^KeYoU zIrZazO{hmhv!qo8@xy-`N+-N}Ljy_%u2juA9*}7UHnGV=6ytmyZ9$=U$Ynnnb4d}f zwmQ8?DToLs8f*4}WX;wflXk$05bV^RJsGEyup{Z1B7tfV?kZ%Go zsb9Ce5Qe;fmk=8nzA3HiaXUGo`a`S5V?+dYFG29?iNYOu)Aaibnt<5VK3n;fu~47D z&us`DL_c%m{a({p3v$-*K625s%|MG`a96#V3tmRXnakE_n2Aj!wmg>q4!z)WMn%mS zw}WYX``110&F7gF98lWuu&}gm(BJw0nk0z2WZu$H;DEE!1z|P0epHcj#q0HTh3&TVG94DH9|FQZl*#sGYs#+Bp&0&n32oiA zhMhXb7Rs-}Lq#2ceZ7p#|E%BErHz#=^hm_2v#1THRCm%&?|a>(y`H2vHww7ndjZT6 zmq|6$IR(Fs0$rTpDE{=X$MaC01I2s4U^c^rh}w#3zW08);2(%K2}t~2&uxJuo=T$6 z&*2<0=PbFzP~hOpY8$Vh#D3s?^7lLMXJDm06SH_`@Xto>p*eS%7bTVLpUouhtnE{d(0H;O&xbd<%!sc{tNjXoS= zMu8O8^!nTi;Wwz0`ww41Qc`l{scL<`={~jMGh_TaMEHN?mKyNeR>2B#`W zQl-DAYi%>5xxbA)=)=nNwURU)KTL)i=+(x&pgfz|;!SkWfWTAfNILz)3NaiK1=uZk zx}*VC7@04pVkms|R^-qAFsH6}pUyZU_kBXuf`v||1rB{|T_XVZv~4(Hzb?|m{6wJ} z-<;oVX|;g}MCclLL; z0T6)H6C2XQt<-~O$8>Z1_^^_#`X6oP69H^NzE_5R!nL0rO~(E)jN-OglE|friWB*~ z7{9NM+^3cpKwk9kRqPIlqQx{l78w!y(`L56Vu$ir=TV2zBr3i;F9OP*PSKw3Xo_%$ z&%J>p$#g06pWFfqbM3|seprZtDQ!iC+??&aqEaH~_+fpj$b1d}7v>ez#(RMgm^ktn z)Qh*j{>IFa^ObC^XIuWW%TUD@*9NhJ8!Vls*{SLga}JXYvt7ZyX}7bVx-X5*6UM-c$*_REV=d|_yiLngI|!Hra0Qs;+4ZY z(~0rkvNP(F6@T$pw9F5;dJ9H3Fe6z^)hL zC3x=+KtC)tR{T{bp=CueF6`@CW-jk`rxe96^K@%(7C~;??n`gAJR#-AN9OD%njtG* z&YXm{=9@%_bh5nRY);Hse&6@{j#^&F<0I$% zso_5TrZ&;nK}MUiq!*k=2_j^E#wI%%7M6AALb3ndek*)j)BGeE~_WDh_#AsG0m?nwkRBnPYllA(haiJ%n1f|b>I}E>P z8#zFkGkHZB~`#%9mt z<$70mv)%N&nqq%D-JY2ncsdDg$i66!9WCr>zP?2oM@V`)D-oE*vPkk*jtZoqXGY-P z!~=*vUUYhqx-Y}--7>4-3GLoD2X<=ZD}uZD3^GE)uK$mxui%QZ|GK6_y1PpRhLY~? z5G14pB&4LJ8;0&~L}?I^PLXb;2NYz0p`<&8_rm-6zh7Y1nsu(5_rEB2=xUQ`{?qWi<*&DeUhYgTlAi#hnEoytSY zx0?!lWFWQq)?ke*F5r%{X|X<|)oB9)+_Hm$hN8v3kZxs4_k^5eW#MwI4H@LGX&lW8 zv}ONdR~EG20{;a-MCuj1Q&Nxqi zbD*-ZuGauJ-4lR<08K)0TA5N#6hrmSpyAGqL zErRD+u7R8W&m8^TimxmW>`mu^&$L8~`39xck*V@3EG>!#8VnsC2ssV48@i;C?>hhX znU1Lsc!}YXLt+3V5JYU8<-#t?%R6(S_+#w^Z7>bL?`m9_AUez;PlPAMK00(m%`M!} z-H+M5d1jDv#s^)6jFM{i`;s=&iIS__M=i#;8|se%Tj>UsTVuPIv4FQB#*xFYZXEab zFQ)n{u{Iw$bcyLk{2hfqxIgcT6ul9Yh&-|sEIcSab5G?a3%c%t5v)YlxY7+zJ0+l; zywuoS+(UTpH+x%rnA6bLC$Q*WD{#By4gA}bE;UW!p&T}jo%W{Si2;Mqbcr3Zm2Myl z)Dzyfwkk(%CQ85!cORywr_b!sL&L-2az_0NN*^CDj<^N3yYG%%P*e=iE4w?=#C&3g zk^JROZ#RK(RfRmYnWwlT@)(ytBeXHACD?3FcNQE?G^cQ|De!|NYGL(!Zx~MFhY^=z zJ24^+1#cW#nVzGG)baM%3Gt@lt7^BcM(7Ro=QO%-y|eOQNOEhRb5zR{j9-!s z*R4x+DVNZ2B&w`e@l+LXJ)Jh;-RL*#+;)=$2bh8RBIobhvVhR#pCJh%n8^+CfyL$O z+seK&7~>8ET6Dz-65PtRuuDd81v#xW*I2jsUMTE64GxRS!T*Kv1Ul4X==iq#^Uk4Z zhwau|vPm7&unPrwWLY29M%@#w6Qw{Aj5(=$fHLKD#4CH|y-tEa<@# zp!qg8Hy<^Tp7N;p(_8FQsN%l0>Js?Hyjx0SNVK6BUli@}qnX6%XTK)W4A$j_v^s*r z)JV2?y8!Tp!a}N1HtL2h@`SUhg+r%4cQvro&;ZG_Ff9+jIX++2)U-)syP4pGd2d?9 zzSxNLZ!u+Sn(21HHoA;c(+ii!ZulXnI13g;k$-&wY3pE@eptflFN_7fG>;Q*?y*{c z$)k5n$6{gZCYk?~v3@+8w3uJnz^iod`?_+j( z9x|Kly@|+6JEB}A-ETB`c%jx6uvWmdGg>1do=S)?yW$9g?>_D2d)5_0Q%-|#Q=;8P z+*XtG_?6=`@jedK_nyZlZO+%Q#k4>JHuxCG(tyP`zC)J!m5_N?q%-Z&xO<28yPJRw zf0K1%y3jP^IU+@{O(Q;w2`A5{l<)7Z(^<0_cgH)Z7=i3Sy4Tjx4X+WQ@b-YnHpW?dHg)*4| zjCS7(7KiCYINiQOWC@~!p?g>DkrF}X*RS|&VBBfJ%4rE10mJ8m1(ul%un_`0y(jotgZKP(}?|8mQ~436+`Bp)Zl z#=&_g9LU)2AfXoZu+yi74@$;!A=z%{&C2R~F%pvg8x9zt@{64rA-3?ifNJdeVd0S? zC3?Z+k1y@9$8PAAGX{7!V@NpW(4{_d)ZdI6^r%|5*YO=Qn~32%N{;DU?O}80$(=R zh@@maS)Izwh>z*l`1Hk?j#pbJAx@@04U3o*o7=}Nsg*Znb7OrJ5Q3mt#K$JRG1q;D z2m{cFg1!vslSW)*GGFY<7}(7yodGJkFO5Bcap51}5+XVVG*tsDZOBYq@}@K^iZ5+wbiPT_4kT(X5r@|sUEzN zRP~mg4ktM=(@H6Y$<{GRV=>q6%nz;gGD_hG;8$(6)uknY%B&-wO%?=5<$^ypUnKK3 zy-1C+7zN5&(WN&G~Tduj9)5si6Ct`n5q~d?&R~3q|Aj;cDu3EQv|uWe7ff9hn>GDo2@Iqy`~m% zD{bO>*stsQVs<-|I9Ho5X3Q7P`QcAa<%tlh`{pT2*6IH3QcpC-0CnEPx1ZT#jJy8>`@{_5h_=VR;l!Sfa)!T1eh5picVVX5xrc^2obS%zeoN(qTFF5_5e z*{n(A3fZOny%`^wJgGMJk?m(7_*FDoquKizAc^>4@1teYmyB)NChUo^IH6~@1AI2a zF6mRGpY$NPZm%_@2V(x}*w!V#S4yPS6Z1ZJ-c>qq1*$sRx2*f zi3~zJNk$M-EX`XTEv58R>xwHnTyWPaqdF;fiTE9oj9QI~4r5Nr?dKx73kE4Fq&5%E zXNUiiNjORj=a`vM4;+$mAFZK<-?1F};+n7UhFeDZO?@*-lRDZNWB7-tRlh>=yz%A1 zFz*ru6s`Y@=#RK5Vf-Lsp>=Y|vAsd9aT##MPt)V6OG#GoypHp$h~C2SmVah3QpY|` ziZZ!K3R+dutFKBR+MtU?w;LkAZ8}|8Bf|U3D5$Y%jE|SD9aOkDa|F-;F}_x7-3zn+ z1m@WaCat8YXWQ$e$;R$kOYR5zo&Xd z5MrhI!0z~e;fkBcZMipkb+Vbdrt5OxhYVT3IWgJ5gx*URsCakL?d3EUi7T@*3?5<@ z3(yyl1K`T16U`YPwExA-H2B@qz!%KxYg7Kt`lDgML1s|)@KM*1F2Mx7*Tu}wNZ4?SO| zH)ck@*BM+k8m*5cPq|)Q8!r11OTe^OwN@Q%$@B)06#peBf)eem;7J1#hsbfc$ez|2q8OJ{q*JqPDbV#2zaIJuzf+#GkS_Al<6tuu5l z@9JaUU47;|fmY-t^kBFx1Zm!P;5HF+-9V{tR8aN{2y)mn>r|W+3hmMg#8o(yZ`fZ( zb(HOBm_Dm!;I2aU8fg9LS2`A6_I1lR`f#ns-1`9uGXszq3juuIExyL8&TCN_0fquh zUX`{=kR93`<(weEWJPI*&Wve+e>hktQIoc5JJq64&+vzt;R1?Stn)lPV55g20a;~V zzWv=>?}S?8mfCY#iLKJKSnvzR1d3~QMki=wZ}!)Gme}PO5lbS>T6u@Md16dl0R8@4Z;uu5vOFqnKeM5Hr*9)t<0{DDt#62p~_?g63uPDU*eMB_(M$TMZ# z#`WSSj`@7Qfe~e6;3NMBqE8l5jAa!I+&J>?iOXEw|4MP2R|wZj9*P>?Cp+c-4mVuz z9IqPvb9=XO7EoS-i^5JPa>eV#d-^6h2z5jCDO5Lv%e+Tw0!VL0G=2Lhl8>cP=tiS} z?mhrCAR`)Jmb4aMX?29<=feDN&VCaEm?_=6)^GhE=4G#LTeNn|3Jls-c{-wt3$LX{ z!>mzoS1EvP2c~>$4#XRV?8bOOP|Rqt{Rx5cBfj@C9R%P3P&N`bkfDSRfih4Vy0MUgGX^ht#(r1&nkvTCI6-;Y&?J*p`N<5A z6B)gFEBruDPMfocXpUZ3!%ze0pj@HiK>kxJ9>4Hs-N;UzwCnHNb;jJ?5Uu@h!E@-9Uy54NNT+)gtK!=YZrQJjupU=+zI{nW-KZhE4!*i*m=6 zAO?j#w(nZ@o7@fd<@18WSV#Ks?v2eH0{mCm&MplMR%G94X^u8bD{eTRlp0A%7E#FP zxc6lxZv#KU08Wu|*6-&{QDxRcb67~saPFHMsySY_B-h~Y1#;EGMoFi}Q>`V5|CbkC zH-B3EFG6fVP$4iUtorhR-TiU0kk=B?0vx@;Xn5xE3?^^&u56Vckg0N%#9flcU6aD0 zwr+@`eaAxp7FV1y(Vx-PpBTmgBZ!?+-Qglm^md)e*}cZY#U*?ri3gL^mBctn{H|7< zRSUz@)K|b!pt05EDY%&pJCk#bIVs{wc{8WxfkwA~_Wame6rJowwxsxC*F?%7h`sh0 zAO!%uv)%5)($bO~u%IZ94NzFO&z@$s4WXbj-N)OfHLSVTBdLprS|QT>;L13%+%%?C zKe@ng#~16eWlDb9@j(4M zH@!~hP8*hke-Rcv;Sc(bWXVqza;v?kv`ao0B6>>F;_)@aK>~DHuPi%Kn74+qGM%@8 zV)5350YY(_ejb`H34aa&TNi)e42Txhtr=EoIhFYG*(x=C3z+WidM;|N2;M%uLe3%J zFjL{4#8(GcEdZp?5ajY#xpVHr4DWRlzHhB>*8g#LGy!3A0646^4>QfNKzt8A7>7S2 zRoasLBdA13x~225eZL4$U_OFIwnkZO=;=ZjY{Y6coU8mRHLkVQ(tdctsY74559C?x z*UQ3=>)$&JQNWM5K_hG}*L51lf8^T-J~O{YelTq31RkQxZ*fN5~<{Hq1d;C8~N zLGLExtTQuU`-A-k*kW0)Vg>|fvTILI(+XfsuQDlHT%mID?XxdQTZ!J9-gKUN*N#Ns zxK({su-nilVnFuSkaiS(!FV$MHdl*$*cV2Mmi@HG^RH>)p9?{|(q_A%a4TBE5KQIX zk8mvFDz%~iR9wlD=?@)ZtT8DZW|_~ez=k_V;A69{wMW;s4>uXg)5h@Uj>ycRcPTb3 zT--PS^3$3s_Dkwg@*QddCb}5pXr^%ce5@0;{KfPXvWRFXuC;9vgE?t1r^heFG=$+d z#;h5E2Jhj4W2wfff`Bzg6@0f4zRUjP$HVY8gQ-XNah!k3zikO?&3D~6evf#!Q(I5{ zrEO&g8pdD7jNGap0~&Jq%8J_6^V5ZZg++o#N=^OiL_EKHN|W)8vog*Cn>MEKHwEwMI=V?bmwzgUjd48v%~qn z@JpHen*e2z#diM#D~W*kSeeOpp*0SgC~Qd6$=9iqFx570i+%hz!?<%X_-E{ugFHs+ zeBJJyMGLnr>nTB`c>h=GN8k&_&Mg1#d4?@=@6uAXS6=l}2*A>CZ`sI4>)zRmX==%1d( z7oXH+(-eLu!)xMi>T(?ShU_QP8#@~67y-)t`C7c_=Kd!9T(K$g_uH*s)vK^ZVkPCx zs*{!9;TI&2;hZvo5~_Z^qk3hTn(p3Ql?Q0Y7B?@C)*k6pih$m``w8A0`Uh{iTyQBA zE}hGp3%0J5<{7|)Q#$Hv%C-DeCK)0nQYf5I=oS&VbAK?Bo$jOEDBgRDOuI{Bq_7Ar zv56uC$kH3nUMu7ULU!dNEhKyp+O++Wu$RNt{he-k_iTUj{-a9h7RUoeZoFfs_eiq` zla+LEh#+1iVdGY}PHrA|dU}tZM4k(O)JEGDU{-YdAOm(Zkt?ibUN<9xVAP+rm#B`? ztb_rxZAE#FWs1{gm1GhTIEDnhh7saNrj11Htc`M$+LL5-7y&RYQ7S=2)0DMqUq=iRJYs)ZZj% zYFU`zBf=uNyW)05i1DcS0WevpRKJ)?W$?#7bwVneb&!5A$Z_C5&H5T2)ECf(-5I?n>RS{0k3}j8yj%2mRcV^HpJ}3l}Yr+g7WA}Hku@+hd ziF?LqvNr+>eYPnG-48CQsRqezb}PS8qC^S`+60CCk_BOu>+ z)5KEv8e&F|{+B@jnL>8HhlY3LrNOo4Tn&bPuptUflry2B2K_YtOj?g-p71Nt7HnJ` zg0(<^{342;aGu-jAPGG>N_B9m51eWh{*SK~V)b24%a)0$TA8>%D8leozPV$M!2P?JkrPlX>e& z&e`7`*M7|-e$?B&`L5-@jvP;eheq#!)xIdUFJG_ro`xc7*Qd(lYT41e8RgT8`t@M#WX;nj=x`?8pB3QkLeNiyOiR+>J zqsE(p*lKt5I2m=A&FA+i*Xh|&SmZU3Ud~d5j=~r0b%OrO^S!UeYk31XHWoV4kUecpoR}&%Dj4#Yy z%3A`JVDI@7}D zg7-!N`|6b7jb#!}N|32FRg@^E)PByFN8RAk4Kvf4%!+6~0g_+0oYsiO4B<(G&EO`D zun89#<$UT=VFgQY#9u}b>*YCBrIMF2+I!*=!Q!rVZme~4#}4A2a-sNn|KSa<^^*IG zMRS8(p-gT~`05mV6>%dI=yQ{_`~I~+4X}cM+E@7~Q^*qF%8#^ckL@iaT)4Kw<-H(U zHkgO9O_=Dt2{)rLjAv)WcIt_i7;k-z6diJk3`~)KAP#kUW0~A+IZCuX;RzfP-KmqS zl*3^bxnk~Z6sY~o0TxMjkbyX84*w5_Yao&d160bckwM#`se%!YtOa+x^;MOEWc{0g z+SI%AFO{2eZqb+NJ1P?kG2LOKnKM>%1tix;FK&BTK@Bnul@9ECEFJb?KQC(8X-9~E*dS8XaSh4%wDx#Pb*+W4oV5H>B&N~bWq0K6Id6b;b#!L=0OtW8 zi7@j3{H7&osvA=xF$f;5<-c{`DJexqJDDvb z!Jw9RntZ0(EIwrW9eJpZ{FJK9H+_-)J7~+S^V5HgOoI1n_vfp2wp}NmVJ-Rxsa3+^ zEe>&r?A(=V4c>@kLpdm%JGXBUb1!stnyx`8baNbE=z_6}4Wj}PB_Cb(XFcvZ*6tqG zdV>GUyXR|vY`J^x8(Lx;TqKTb-pr^Bio8P>X-w683$J%ZxHvg#ig2uj5@YoK0AFHP zgN(4~otO?Aq`ti!EF)CLCZ<~Y5Gbmss5Ea%2j@v%^L~8T>kUDENh-W8xtenzb4I^3 zIS--E6_`S^bZbk(4mtCVP@}$T<0R12w>^N{4N;mrE$LacTJyL4)!Sf0bd~i)+DbIV zi&>Tr#9sE=UwWO~($px={JXWXtd>1$&Br>-+H)=x9yvWZHVJ+C=iV?5>u+*g#V_Kp zG1K#8E<5TjIu^}@$n5P;;K9!La?gWFPlbX<-@S@5)o!&+(8Oa~A__o*?id4bcO!y< ziK{|IvfovA(dEHlqSc|N2cXvEk33V6+A#f0I$~jl0+M|Cs96!0nX+dTkN*hpDdUd$ zmrEL);_O9ye~uLQit>Yw1T2jHjaw>W2{O+G4Wit~CRgCL+J0w)!cfvCl+{Cd+v-Qi zSghN%zmU~~v1E5nRjCRMjWY^?Tn zXA<7^-V^Z_5(}I=m4>}G1mJ%DlmH~zg8}s-%?;#)DsI>6R9_LmMsOx&g!{L0j8)?3rxjXvsvbM@!mAHN!M|8(TTFW=Szy3v41jE zn+Vwve%!se;cp^BprLR;q|yXQL^xUc%RWiP*>|si25B++N>w?_6o6T65CH?uTLCL8 ztIv_nYu#N0I7)1Fs%Ls1Z0(6tZ6Z?FQFz+@M_~FyqI) zN<;n^%M=wvejX+105-qzZ!A5}P5L>wdp6Qqj8|eK;iMk}Y#9f=qV>FKcp({2b$1?gB zt-Sf*x5C)E{dXK4hRimRg?#{GrP=Vg@BZd2DDl54y8dBpx2(`i$LW`9;fG}>4=eG- z*OQ#N&+>v4x)IY-$p}Re2cEj3R6GxwMrnFl#Rgl8Lx(q75SwWx{M_nJ&o|0q!-f#3 zVYOkK&Thxo^4+p}8ZOQT`g&^j;+yb;kTd$CrI+dp6wt8@H)jwTn-W+6R?BBga-SP+ zXwrY|StU9o9Hb#}mLTf7j!};#lX^`=q+RpN|3Z~ck5KAE++2e0mhNI2^lE;nrP6nL z4WH6>Q?#2W-#fPc^Q{WCb`(z8z@EuRF4n|DyfYpF1T{;mj`;H0!as;UaEIA18vW+% z7pPD6xjPP}91)EO-m5;aTCtpWOhB5X-h)i^>Lsq3`=WF%LQ~KoQ6V4 z4B_w$!5-Ckwk@rrG9(9w#eZUR-)i8+_^=Kog+>_{Lc6lorat!$<3D05`Kn?D=G3bC! z-8W!{YA^c#TwD>GptCzUY*;-ZFX!1q&q%O-kS>de=+{zwqhe*gSbfYvitnDcY~Z0pi6l!%>)YKRJ+`NAHt|; zIlBslTz=y<0th(@u-pj*49K4-LV@dpI&yf_!bM(3kYC_I1A(P#qHb%g<&iZhR*EQV zqlTjElsq}k6s(aa*qj9=?+NiF}UBxAxl+!GyoeJtL)*j2VOkcIb1q8V4Pmr+rQB zfpQRmq2LNM05~@NKJYVIn)J;LJ7Ede@T-q<7kM=xIcri|<6$Lhb!Sp~ml?7_+uOO< z+;Ia%^6PuX9Oc-~6~}-dMs(QIN(=MXtel)%UDK=03^tLo+TzL+^A?dta$Z@hg$;9R zP%=T7Dd23mn>0?^9l!|*aZRfP!SM6#!H&3t%6Wph7@IDu#3IArBFA+T84M}`(WJMtT)gczvWTQ={`k6@mlVx znsbD;o4@h1T|PDDhBaZC9-elO!SdA?>aegddDdU|N%P-6Xo%d~Fi~mJeqtp94B0ye zSFZ2TGByyiK5{Z%ZGwe+0N4kC=VAC^A_NMJxlnc5a8q7o9ttY{g$~$C!F>qnfgOS) zU@c;T(EoO}N5FQz5=$-q0j|4N*z_>dFQ#UEiTG{+qCdw+F&^7H-!~#clR`0uBB@N8 zQbmZQ`NY5hW$<&z3xv4u*qg}h-T)(4|rTvC^H@JPx;h{Vwi3`CPOIlq_ zkW2R|A+kr5DlP6;R<|4w)aOpI|LnVB9@CfksZd2mzVBj`*Kv`|>QBzI>%+T$ERO%A zfPm@hSJp}-4C!6!>a^_Z{bA1cEN;brr+){RbWQ2*fYHH!)Si>NWNa+?Fb(P@Z3D&7q6%)RtxbGF#lJ%(Ef-n;C$xi9bgnDQt)m$Q@QsE7*I0m7mWR|7nfR#N>c19rLEEK(ZW+6>mi$jRp!I|@|M|V6@%Ayi!}SV zKa;wTFRCn0a$ckVRJ)YC5iukRLH(6x)#K&(T}1T_eh^EL1>0@dM_-`RNsg9s#ReC4n=6?a@Td;P- zcW&DvrPteA33_y5w6gM{_M0mMS-D|?sKIW#LCzrL!Lt-~96b7R_CpL@+qi);5Bd(=w*J<>OSoi0}8`X|TjdeY4c$ffN-;iCw=&AD2N zzxib_+AFtvDogDF50f0AOzN~q6hKfn-{Z9a)!^<@t3tpVywlK6!lI9!$Llf|>tXMH z?@t#O!p)hb0hGB~`YDdb`AW2JYFfO;wz(RcrE+|2?dzO504uH9{-h&%u}RnDfENtw zPZ%?9n$vk-5eed;bSjFbZE*Dcvyre{t*d{a+#Q>s6QirTD}g^7i%!CHbajA;b7`8^ zJ^Aq5IP>%HaqxZ^SRZQr%JvxN!*bhj;8LuL+64K!i< z?;8cZ?`(U{r@#*X;z@HVcB>`zaGvrPx)vaQVHOb#6IV()a}BS5Ptv@_EYJA#nWoZ? z_&b365QFQ}fW-Q)Ggcb14Z(HBh7Fgg_+TueCPW>I@rhOjo~0Ht*B^E~23|a!IuW57 zv(gN6v`&--t)1{$MYT$hst1DT*p$lML53{>dN(VQVH~7YZ3bK~men00YWF5qLLo!0 zf68+(Ub9^Ry{S^7l)yt}MSg8hSU22r?%md>6M0D}>Taig1Jpk$?@zI~CPd zHca{8Oj+8KcrD)xV$WjgAofa5eV{)=FtV8>PQ?raJkS2?0E}#Dwepk$tZ14~wM)z~ zSiH0HItLp94ytv4rJH4{Hcd=ngkkK$>+q?zIv0JzU@{^}m=5z<1hE<$vI6nBq_M4L z4}JLvd@4*g4hNeZ{GTAoppu=(%%7ryZiZsM;6K58H=L?dqahy1VOWP8Pp_m#N+v z9{)jwT*@6uwJ;Z6AFA~)plfUn2p1W3JnTgTR&q|A1N9%o*8VNJ5xQBw=Uy|mw~EtB zS-Ah~a~482Dc#odkqEDy0_F@_P=kd*=>Omjq*EEb zPa4071hrC>f9BrD`h=h%4Svmf`5_R%TSuU+b|aC!j?kT%Pt54(xt$BC#P8Okic?L< zUT0T5Ye@7vBI3|r^GszvAUOpw;KmHKx7u+H)+Z8-E%q!GWbw?0ohy?fv6C`J&_9D! zSCf%_#SEZSJ=frM`=upbD?J3+Yx;DbZNtwsJ<@632`exON7 zVqcBP7;JwumuLp6*W{U~8NCU_EQY!R-u?!)Whq`1=cP{TRwScT|DvKhV>2+CuG$kK zG1PVSt86flHo|Gsve;i9FW9jhr8m@;2-pvqoHLui+=jWix#7-_6IG3vvlzUK{j(2x z@kaA$R=7-kPnx~oX}B?%gXxi1Nln${l2q+bHErpw+g1#vSWE2u2ujbc%2ffd()EwCF~p6 zDdP`tJ~c~BP`~@_BQPU5tFt8$8PkaP1t+;*)Oi9zW}$yJj&r?;13-A52E7~BUGgA< z4V*nJvQ8%iD~zzfav^D8R-i^-DaSLYHB>nWyicWT6v3~?6qLJD6_Hudre&5}zc zSDTgU^39GuZ7%VZaXNFc+JXG<3%qkEx!+7q%y}D5bn?Z`h5)-+GI7emupo8{muvde znyRNaV(y^}a>7oS2>Aw%Az|-FX7TvML-mQ1)y63TzN6bKb1lm!l+n*z)a#Uj}zd6Y)5+!=Wuj#B;R>r-LzM1~PULBO$!%>Lllyw5A z?|v`}Hr(`T(9z!lcP4Znpi=NpdK!YOl=Xzn{c5RaSfa?@uGG-OKQeyq8ID;+~s=QTkJOS zmEz+&H3IYt$wg0T5$!20{@`l)o%6Kq{aNt|E{b0TF|fAt9v^tc8Id*YLivU7UBT%1 zVMUwwN#k}**RN%}RYV8Z(m#gzzLk!Bid)dXxTP`;O~u#J)h|P)@rf2tr?bO#NYKDh zZmlW03_wng6`^2TBMU+KP{Flu6r|T5hKHF3?$}1A`Ba(kCN7J&+vS&G=a*g=bT+J- zurN)GnCWQgwG(=1CW+&#gM>JShqz4!B7<`o1TRgPar8Q}0K}0gW>UsCl(C{^YlMsC zZoZ0Jr|@Rn7MAoxs$pVIE_GZ*ta02@0~YB`A6ui#Py0&41ApnK^o>zT zT-{WLMx2s(p&~?v#`JaJYF2L9_og>5?NZYVBOQ_LO*95!>tbm=wQbu*z~LJsLZ~sG zIDIq00N)lr;<7d-!m!c?PXNpEJKUkrs*o|j`=KAEzY1IG?$qYYvc!GZtNeNQ=_+$- z;@5fw{$k2UKB*$f>N`WPeS3!iN|T;2jFj41N>8yW-`*z9!seti5@aTHmVQR4{zO!N zGW5tp^zi0js~oJBG|(h+r!{8~Ah0*2uWG=JK4t(|aBSBK zjv(B>;AF0t?{jfos)%6aL~i40VUxh6NTd_Ai&?=P{&@+n;inf1I#r`}t$ zhEz(L@$q4sy`Ywx<0wh_%_rtU>%EX-Rx6vXq-!H#=wRh+f!>A~(JjE{uednXkgRd(|xlwuLd zt_y+PVQZE(k*g-Sz(t3a1-n4mJk?<#m7(hnLKkZ!?O_f-N=uAX#B!nDXvZ^Vh?_}E zV1P>ZBUgivR4)4Wh-++y%T_@~3MAN3=nEB|k>BUb^q1<@n$qwr~^K?#A@5 zXQ+D}mUM2XFC4%mK>2GWd9S`yfHmwxGAwHm6O|wpTYcXj#XdqRE$Z#nAJL94>Xu-K z{C5_`(Ch$@5!K>Ui`Pvz@Tmn&K0ZI2)6^E7oTU(wsE_XdcyKagK=h>JkPQ`jLPmpX zb^y@>)*kvw;Pf!=-!fOvY7w0eaqVsVTf%Q^LXA(u15aMIlK%HVcj4A~XpWtGAGSUM zj2P~LbN7u6DruZa&+EgFdXR$Qgrt=m|SM$es4 z&Y(~&u#m05Ct}IXj*=~+^*`pK#GoZvU|q#wXDJHeehM5_ff(HtyN4*{Vt5Z+lYKTR zNa-A|K=hNKMf|~*>@PnWOyRxDTk7AAW2*vrX30qLGd)o&dp~D%6bpJvCDa2nFD%RO zhr377v4${aKw{NbEei}2YOcR-_f>JGFxw>{P|*&|U2F2tcJwMiw!lU5Nw}voN9F4+ ztmP!!5yy2ue{lY~!M{5B_`E;&ZBeYWWs(eMzBN4^W{RgBs8oq>A{f}i&PQ<-Y)H=_ z>zDU2VJj^@&PRxXSh3^rW)!){)9stQW@CuLV5bW$UQ}*>5e$jHMcCb=ue1z=$yvT5 zk?_z^DH2jRHR?!isb>xRvgKp*QhRRr@KX9bFTM>LORpZ_huQL8(*A+?J{D4^VNR z&96)tq|O{>e&IB7VA}Rp{y7k=RWoo!s+rb!x>=*Xs>d5up$N*@HBs1jw>98GT`j^@ zOe=wwJ5^GU!2WTAau=BaccabGO8kEMhy0hcTjVETG|TfT&$2tW{)r5!udmmE76LYn zik@hq#d-ye=*>!C6~XyGM;%ETvg1>cQ>e;hVtOP`oemH|W9Fan!@aKbf=JA2gy@?o zMJ~VuPIoUozBuw0?2y{w1XZsjAUM?e*W?iJF*MgFUJ!w{5){1jWO6*i;!-ibEuFL) z2z{St?y5ZKN$O6Z;AU1#5C5bQkcX2p|0=eIivd{zr0ubRV9s`$$OIAgtHA-p45`ZR zl;!DA%JZ*zhLA^u@k0}Ro~^h~NoKBv7{$2FY6$VZ`j=Z}zXmwQ6T9eOP+Zd6lRJ47@o>#aio3>^41%)nj87da{VbF?;O=ZL&U3ljVxSLGLxan z$X#zeZ|^Qw*%EoD2iA`_65)zNiTuG6KYx43A(}T%Sk8sCeqxb)aV*^|&;mb5}G!QDi|cBhL`H zPZux%Y=cJ_FGb}xDey9W0LO#i1;ZLM4b+9&0~w#netImpUpkd!a8MLIc?p(s%4ysj zH>`fsDvnVq7(7`jkhCP{W2sSXs_mr7w)ZNW-J7KJjk-rJSkBtw&hz^CZIk;DZj%FS zabSyT^iM~OW96;0>ho<629%YaK*>!VHqv0Co1r9!=2E(3 zvV(dwg#PJ=x3qFNgdU-IA$OcAT5nfQH#1T|L8{Y7_mfAH3^Gru4noUyHQ%@=QAe}Y zjL2sLf_NdOAF(`#<9_N}l%IsD)v%UF8Ar^5=gA=mM1`!)3JnBycVO8#SS`x|DEXPR(zTPh0Il43cj+7M|UsbEP2H4}y}Z1(w)p!0uRoj=DkaZ0(xWW`fFlJ(VPZ=wJseFahuLu6E1{(BXWkZxxt| zvTV0v&6B@(phd5YYUuv}{Piu)g$;z{(GE#2-hiwwC=JTwRH#B4#{r7>$IU$VPh(#&4hbS@OFAdavjiBzCT$E4pIy?K2{}TW%6e4KQ`O_!F<{9}({|2wXC~?_j%LIW~}Ii?ecU z<1C-O|H#D~$xEPw>JD);R>ua)gR*JqksZyWl;07O(;L0tH9E-36?1Xq`+;g!KEHT<-!-)eRQMVOEEX1+t884QTDx-e9(_(thcZBnc&|Q zgr%3P!D5VP@6iRv@dzrFHlKAKIs|z*L2n+e*0>$N`Nx|eri2%!b<)=^p)3IPys6%% zi5}wEd{^FBx-;FxBdB`fWMlK?;d4A}ib zU@?!C66Xg`oTd2n`r@OD)WVne+(EBUr8dQUlwX`eiey13l@}ANp9Sa*#TRNX>Msqa zDcR88V?o@TzFBA((VZw6#pTE~zTMYEB}Z>ENcY=SGutz}{h9e}MeAY9ynQ#|PQC+7 zQI4}kJ=D=Ku<&OwrNsMvQ_;!5IqzP(g}vJqoIS7tGSJ{|HvLi3eMqiP@sm~;iUg^s zouigQrXm6Vqml4hTNo&>lyaOkY%7B>@?7HEZD{`L{_)LF0O~sBoh3PjcP8RcVu^oQe2_g1o6RiLT`&b6C6u7SgyBwz0m!-rK*Y zO;O8H&SlIo;tE2wcGE`?J#q>R4tM9;^7mMWV244Vx{?T;PO;~WY3l7Bu%G7nbTwHsPOSbHbl%2iD#r1pZ^ZS0k|G~YF^FHG_UgwxNg_ZR~R-N{w*#prwk7_ za<%;a`4cIMt-|zfS z*(0S?PdsE8eZegB!vRum%$l6u_aJw!gsZU#9DaZ%ZjX2p*yq=vC0W1CSg4*gEthFBNF8s1iHJ88O-XEo!jCW_wm^^Mfb3 zoJi%VX>r5Hg)ADElVBZb%eL)a|3cg4tht-G0IF7Q8Kzg$-bxk@Y-jaSTASHiE}QXp zoS;WzYc2iR+NmR3Q}(p0PbL~F-SIDR>_6!XfKI*qoAnsG(ob9|Hm!xzoff7NLIh3o z8fY^)^GDQ!N0vL{aAWAFS#yEy6^T1kAq675u+Fr|FuswkGEXK)u+fmFac96}p~WfRre26}HpyYj<}Mhc+@B7`V5XkA>=MkYR@%M9>t zywIx#JWX_>And0eelg(u#cDsJ`Za24&YtzBHd{?R$4-#}j{W-5k*+N549uG3^xqFR z^Q1(i$96CFjqj*UBm&!KB|jqv!-82^dl<93!X4@%@?DNQsBuDRZZt1Ppc!MhW>#_W zuKz(yKr_{8hJ6LgR+Q3u`Y)G(C)O8t#T#D^NMpH~I<#z95076x7P6Fw^lWOYfR~Xg z_&XtKT{$hf_qd^ZLZ@_8qC{pXxh3MXz4p?W^W_Dn=Cc;q4d!ys12}#J!;lU!#Y?)f zhHn?kV3dZlre!)7_qc{Kv?!RYTUbtdCQz$h>~*y|ZMi#3GzlKPEsYn1$R{SK2ir|} zwxW5Xf0Xc<_TZ0C=i%Mwv8vx8%QP&wzU5)ZTx5Up&M%=I{GaJ*E^>|3S7Hnap;McNxp-aW?h`s|S_$hQQs2 z*?`6ON8Gyh8?n9kU~`2iuxVGszwAZcH)r}WatL?F^MSak&{IE-??{?NCFKa)$r49_ zPkM7hBA8Cq()g)_>VnRzxRgm14wys-vk^2M z4-}6rxQP9+jx&1EL~4gjxoujCm0HHfNhQty^Hab@u3#Qv*a}(VylQ$oVp}h6nz=s>MaRo0YjBoQSy%QI)3J} z?}Q5XA{Q`Zi}a#-1h!Jk--sIqnSciMx#o^RtjXfhlso^nIKFTEB%-+1E$7@{aC7S< zH@&a-hF@9q6|THRM@yj0AmdlT3mnm$_fZ$74bA?}q~h;D(IP-@qECimW`N=(1=gK( zG;?4?1|tQ{pUm%F?e1ZQGJl;TkqV`Yl^sKagRzq;vbW?b_L^hjgP&%_`wzULI?K{@U)iKJ(?J{+Qa`J|Bni#u53?Fm)mYN~wonmv z`tX}!dqK-uTq~;Z<_{}Iwi}%yeXV_6TN!S~sH9n3+-UxRVet91QNV)!8<)@aRnDVB zRThz}D&d&7=hLLHWiC4#J|4T6zt%f&o&M+QA*f{crbGcs>sr6nsE2kM8MHfS9qW)TWwoyfnzeoicUQTJ9yjDUsh&D{BCuY$(~==qen4u_L_A zkwY)8CiHEU#MyQV272Ybm5I_XOGGbM?s(3)lAI3~2b`_~tImm-Q$gse)^=|$)n1bB z!n$SSK2dKnS%h=n!tkw#^~BOtju|(2P_d#q@t1 z@H0RW3qNhOm%k|p6jIRYWgC9q zEv>{z18<)hLwDH!_CvVO1tzLO(>7!$u3HtF7l*LP9T$*;2m5c`sQSw5_%FeT6lVW9}Px zQzXb2g~>+r<}W*|rDTHsGOOL}xX!~^!M`dqXRlO7NAx{wB+1RMm7PmJF*5kP#)fKM zo4)_{KVE>7kw($I18_*+pY^;}u!$*4GR&gGzk=lqC$&+ZT(-1a5xLZd?*O+~a(*E$ zPF~~4V(777C-!SY%;cT!r2D^g>;=*>et*~F1_cwbe{KH?IaD|AkTTBBO<%9rs?XdL z=D;N#++(p*N`X+E)>kzoK92)ljr9?nfHEiWo0FAma3#$061l2$Kl%Itnapei9FHl7 zB`|R+4nE*39)dV(i)pcm4*Wpf$rn2}THBLLmHKxkZ$Y{eVB z-tI@Id_sn57g;e7p?4(rs93DxUyMs z*P`jreOqBDO1aU@0nVf85)4Y(PhDZI#rmv7F%RgIV}yF8U_^1!TD-(wWz-(k$6tyN zSrUHYvCpn!t_-x}1MlZZsS@h(x`>yQ$VWuaYt`!1cfXoPPTZ zs>=c^Z)h@T24^x*A-ECfeJ+_wBq)@{c4*%`!PL-*-zQfSc za^SnKS3u$9=efNW`4y`v-lr5(S{SJ(6KSz?M1av=$OgivDZ-U}2_|j|T;ww8BY@b& z?9C)aF_yB-5Hp7{0Xf=0Ngw>WR7O95Wa-=5 zd)DX^*PwmbofDxEnXj!-pxbXYC_D`6KC);x{Kc3kQy7F%{q$!&y+U@%XuY_k!tsUl zdRFy9S)D(|F&PO!myN^@qetI?7NRp!>2=hy3wM$hof;P$mXt&qt4Kf0V3Mz%L|f66 zxUp%x`Y$8Lrlgogfwka|i5aTcCH_P>XtiD{Qlj6 zJnD&I*ma>DGFq(ovkybG?$y4nU_Wss1>%`3f<*CL=pOFc(>-(gw(=f2H{3&P&OvWS z2(9MGUNUg%mBgYRN$7AXLU_By!0k>uSuSBG?ky0YHOx;;=ya`p_dooOdB=4NL(wZ* z0YaXaEOkN~45nIcPgX)u!Ora$&FW;tQIpRp`B?w!hB-n87J;>ekhIrAmY|s&g!Eyb zamm#2-BHkiJ=hh+!Qv55iMqLgl) z-30!j-Q`l2x7y|U8feuBlOoN5vcfn=>`$AAx|~V6%Lf}LQ1`mN%F<*d%s>89>bZSX zaC-5n2}8}4Lfw1QOp5`^YFW@zelx-~3gL;|4?ucCjGrV!aQ2z<;6o=N(#Yc*nUpo0 zNDI=^7|mu`<_6GQKCI^vsRcbSsHQKU1>8t41pL8gc*?T^*!Df%NM20Ls8c_udi{VK zsl`QLw7F3^U%H@{k;>Ym009TQ{6i*bO$4NAAtqQSmV!UH8n5obH7{k2qEHOW;rmej zYav14w$aNZp>$ke)MRI5tk*uO0ka5w_sUTt2>#Hw8iPYeqsJNJ# zbEXLFrg2L$gnJ~*GgPumhkM_}^EdvpX`d00)abtRclQnE_|0lv?Cq%IH25oSC-1}; z_p1Z@Vw}K(wijKsF@(t5*pjP3OP}R6E@!pPZ>lI;q)v>3?eU{;%q*dq%1lu_w$%Dg zILvr82ZFKD`S-RK_WbMiQ4Ox&o3_fE)?5SUEANFRA|eS7k-Kr}M#;PQhiWug5r5`* zw?0rIY(+jzq@hFq^2EI5ckaEOe;KEG8bEgQjV~q%*w?*f-}}JEUoFd8YbkDEYfiN7 zy!2(1vXsdtRIlOrr+wmXl?!rJ8@(VArPOe`NX@aBO#5rpHM|mZ9ybu?K+YeY6t^!c8q_0#(-XBo1QcN% z;lDn=7PL&&v7E2E*SItL=b1K{zt+OC)AY9FKeFFlA)>y2YD996+dLs}7Gj#J!!VXk7x6?T0+;*}QBBeyQF$*>QZ z5Cju*8LLztZ53VJ;7aH?MM0^;0=|On=iq)3bB!l|!iO%Lq)fWSfMit)u9t7;nvWy< zI?lr`io2=+`6C0%uUGn(J8S26qy*!B$ZKam_Zh4P~lM+jKN~!)+p&aV! zCSsv zV1g$_el%)H?j4$(k0IxGZZaXA_d04aMG-j>V~d8X-FJEYY9K6q()aIOyeJBgLU=*D zSLDRyy%bHl&$XZO&+M%;l#%o|6547%^|&2?Rw8Q^k9v+{Y)j|=kgT&!Ga7P$fxl)4 zPz6dMM*$a~15ShMTFS=U0q&>~APo2mqqN=(|BfjXJj?|^7mo1b>n{TKPE3l|u9Db~>8=e+oAQ8mQHccr%1i7Wb;G4*LAzsdNwbbz{6tB zch3qq-SLv$QeY|RI`3YG#+EwPkm(Q~i6}DQGr%D(CaC>k%m{&=@J3_x$!u zKHh35PbqehYm4Hm`pQ}9lA|vh1eUs43$Zo1kbD^Px1}K;edrSq)lw5_a=X4DpfBNi9= z^j&Gf?&zQlB0dL^MWP!siCt{It%uU&0}Pub)A8FH1`qZtv|HZQAH_>3PV}}O%_PJq z0e{cJl5`hYYd2ZEwROR}>gZs!CyOQkN@oX(LJdldez%EA&OMn-9tVaU9=nI&yx_Lh zfs?P0+w#ddF%d3o{uKHa1>R7DB+xy4TYrW@SHzqWvR*aL)p(^0{yEprEtBiZh!;kZ zw{ItZ6oPrZe3BItw4HKN-}l_&Y_U|jHFOt|_g?y_6M6KPjDncCEv?+`@p%7|%+Zt* z>%Hj3ZE+X}D;RbjisN0j zRw!!M`+?pf-R(S`Eh)FFG4kxd-`#E6yC_hxWDGZpO$9d7Q=l(+{{Ybo8P0P4aS)0YTUG<_Z&hhi^l(kIfOlh(k>_^7A`k0(N$1F za9ce`7*6iy7?lR$c2Dpv-EYWqNoGo!;M59v+SR~l!#b}zOEPh%m|`+TPf5&s>`<@V z_Jy?X;*;IqZC53g@@y<6IuJfV@4GQM&M@U7aTYPvsfeWi3?7uJn(fE3YypmXw7riv0l9~VVp7yj1Q|3$asQt9FY-UD*Lbr zlxfB&a9cL}A~5F(3}x?J!FgM2298Pv7P5LV)0+IzYAY|O(N~~)Q=-Wjfxwl3gak9{1M}&RxNJgJ-$&xsk0=U3 zkajlVOhrnlW}Q0yu!;cKzbt_Y)t$1&0l#zK-!JBoACWX)?=z6PU(lNQ`M%Iw=5??B zvL{!@tA5-+$}%OtCypGHYw8F}lFJC+&|E1*0ZAyBdY~JWrbnPPPznEl)&Gl}pNDRa+SjB>+ zfOx(rBB!N6^qkuJ30DevY5Q3-hpK-a7PO4%8(KOSKs}ezr@2VJ3wK#n^%Sdh6I)z(>F{Xyw2(gA~U+Hp-^8FB=&Ou{&IB*`Su{!xbqLl+|@YMcS#+i0xxmS_on5 zfzenR&QCj~{LDBxJ$Wy5DRIwTYslcq@h=(31Jq^9srb(V$3G=23JqqYiCy+Y=ze-h z@@+!DdAVni&;PW^l4DP%KjRiMEwMN3ymuA5@ke#d8ErIEPKg9M1{P3PbDDSb7N<5) zwL4U2?bj5Kjx6Y%VW;V-P`dXJrj3C*(F??Bf#x;zn&?9hp2liJxc=2c9X7q!e!-+k zq+T_2b21e8NZB1rdG2l6w-v@i5@VhBR%ihZnbUx%U9bB&QqaoPa#*#aJ2XARWv%f| zEclKi5W~16`(#I7GHPp=mJh~y-Vr?&?4il&HRGUpC!db zthW42O_tePbhj>EpLOcjdx2Qz$uTWo?M>UJdlvR<><~dqnuc#lHpx6cm1<2TEIGG} z&!uT4&*ohL%+Gvts+6QGbIMy;fW>alNU<_9*~qk0gk~<3&-i1=)W`cSMXgZ8D!|x< zVo{0VU5$B^0lI+Iu||C{BtWYMPo?)xenE&`I-U{9>Q`E$!6396GRF2h-`-CDOQQ#M z?tj!=U{_C-%z>%w_@O{Nz5Ot2cRnAS`G!X{yL#h$ZI}NCI2d>)kh{)r_5K$3=V1Zl zjjY!XHIu{E4wLtj4a>t4=@)%wyn|AV2Ew}^g76VWeQ64r>E_O58g%qF7Dq5f8%<~x zpVEaa5FoRi95NL4>t}yLm6nm}nct|QZ;>w+iYTWcJaFg^$JzNSAkidI$See*HiGUH z$412d8#)d=C=1hy@=oJ_x0HQz#ZaH}8oZP3)>*9(;6S##zhOVDB&*l!1$9kM8K_G* zC4@Rd6y(e*&U;CM&Es;3wKFR8C=Q*Dqu%0k{2Yq1nXlH=yR9wv5Q=VjqDp?-8#7e! z7S-0nPZdP6d#ge|7v6ttZmTI-2(ShRjMzkbOa6_1=Cu9AZi2~Zb4rRNXpb@^Bkq|JO@I>Z^;p3|*wCX`9e@`PIegf5SOPs3tI8Bx zY+~zaaHd*5#6cv)&~rlW=wX+4H`hfK3Cx5+cDG*AW8#{z69YEaLZ_(NYZQCTcD~?D z-~XQV(-X6j@`fbS`$ZDXU4~BbKnF_@_6i*w9O=WYDEU^|pd)8sWN#j&b&XWNk~7y) zjq7C%Xf{CDeUeyJ_V2#lNWjb_tuK=^EyKA~*W$U66?@`#N7 zbKZ9Kd72ooNRV2T-oC}nF-cg66A<(_K~dX*kk|}WpGHTjPS|7)Q7$+_mahFw50MFF zK2!}EU>!)1+l!cxr)jhcGBT|)6-OD>CY&gOd1ncXyn6;A;)xG{@jbtOy6Sw5jpVL~ zA}PX;!(JVikwGq7t_;S z3&x}Z2Odkm#sY}&{MT8lGTCT>8JEXo7Ff36`&GnM(Lm9MaWUV4+Lh1qR%N-^U4mMsO{GB7r|Si(p%|M{5=1?YOO4>p$| z^)|TT;Sc*PA8cmd_-;ujrP}$r9>@avL*5R+02{3c185JK@Uo4W`8maDMq7l*<357a zG(`EVM4*K3Il3S6+gP`D$yIbn)(Pji9o7C&jE6I)nB7kgfeZ^N7To zZgfc-#=h9A<3)VJXB3UbS54tDDYDu7k1mrN^)k_NQuQJaY%14u1Z1k!gevZM{5bM& z7eN0A7_a>Dt495tSaI zX413ZHxx7?ZU)+X58w2g$H|#Mos0ExV%cY#s+;Q-#i+RgS+B5uY=n7c2q;h|Cb9c(A4^9F(MLLwlr6? zLBA0Jnj-?3rXMp3?axYCYT(|}S^kYS%vXvpRr;vmeM+h`*oj8TiEs5~XfkVpVcBmZ zrWjt&wy5Mq(cN$LTVWP^mAVyPdqf4uXcvx`QWm!{E5S7A!RS-FMwIA~en{#{wR+3>b+|G;#LiZ~T6_JB;f6*qi>-`;+qe z_Yo7-C(tsQ_AoDw1Q*F3<6O&5;~rSFHzd?2VxPe<(-XLD2?~nU>y{UxS^0ea1$M9RJERlQ zI+JmEZa6aZ>0#wZfkDRQxEpkxUw{oJ@A)t)K1Nax+r3pkT{~f#&0(_vhWDsV=#eq4 zUN?a`6O3sL-+_FF${sMQ*`6;MJz>13#sYAD)7eL0Gwa(nCgd(A`t{}1a5{zkbR}rE zz40;CPR!)D1BLV2hQzYea(Zw{Q+pQSPT%J(py7Q5R*QA|eh{lQYI5&D)ihokYMzp? z+cVJseF~>qxgw5atXaV@Sx7X@#{TkCAZ&Ul^V=3-h7qvc-bJ3<%VSGARA%Oelck+euDo$%BG6CDX zgwOkpJcwhb(D)lW6-BS0seGGY;Pz8y;d^?-aiH1BIe>GB+wH9F`IlDYK=GqmDRa91 zq{z^`10kyh3}UW6r`vbtepvASlrld9_{>@1?ncKK3eTo?xdnsMKqtAiI_3=CL}n%D zZ;db~HcPPSq|f|r2eF4C#zgaj3TvkBPTtGR%p>2k9WlC5u{pi+nQ~>jiAFz>pcSPW zs5oP|x>l8ZW7htnj;rD<@Ow?olWL}?O<89Pho7%1ZRTzg<`gq+&3gqm5Ict_Mm3&P zLn%h`gFYn90ctjZ!7?o56S>H7G^fb(v^U)x6@=!yZa99afl^cYC5i5uPu?w4QkY5O z{RQ{E#zlol|FnEQJ-Q1#jZ*M1yA1pQjLebkfSwC`c5`(UHoM@lAb_GL+5cvY`?XIk zfGN*>o0Ee*wI@S+`w0q18T7n#(VtvT_LkxjOJ_EDlkWD=v zcrx;W6Sz+oavA)16izDH-2ZFO@yk+U z(@iZ(xZmQNy5mYFEy$N(QrZC3Y>l|f4+Uj0)YSJ0sp3tbTcm!0*bwX;@oOh|(klja ziq46n-!%iSyW#l$=Gd$AfU#??-dX#$yBR<o8!8HOIiMK8T5~&wn~$;{EIBuq?xh zdMCIoSF3}Hrz+z$N3X?QefI)0{TIX%AuEgHLi*>X^Y+OXOp){s5rOX6R<2V6BQOt( z%23aY%b_H@fVdT|rOzDg@|KkPlck$IQ zAh&VO(A94D$P%=4HN}p1pd1ynsK#DSRD3>HPquA*-pL?}A}~>UVu^Q0D3xJKS;pNa zAhj^^6fcOInCt;#h6Z_cX^92(&@he7qR=pZv}d!487gn;?m zN)s;JV7R2`-?i?Tp5768G)uIUcl7=*&=3UEZGIRKCJW)@UDNrLRlE%ZQ{eO{Lbxxr z?fMtChNY;sjLa67>Z5$rmyB^6T4{y8SDNK`VpwBfP4J!hhVccrX(O0XH^~Y98Vi~) zr$I(o(NK%O~Na1WIq2qv^1ndGP!~x{LA8wYx^hLr%bAfwYhJE4Np{!L!0=s~nWPor^ zcCI@6q!f8%-72)#Jw-%SNHK*cnluWqfR-^h`wRyv_rjeP!wNmP2&4MDBPP(7n0X;~ zR83sam8<=1okztSdQ^T_B0+MkAlo0^cN9jNF;3n4&aT;+%1W)}P4!aJ$Y->*?%Y{U zpQ4O8H!kw+)u?qvCGI+_Le=^AZbi8MuLQ3ziafGqQgJ_J@$vy zsiOmH8HM@Ln$H66ne-#!Wx4gzm(d9_;+h7p@0J;L0Zhu)o1&r+)-~dHyy8-S3-dNyk6{HwqdQ;FYCs4 znBe_mtq}2VlG(ty&C4~vJ)av`^@zWEm+$-@a!O>M%S2uRzOH318}KpjVaE6}KQI=k zIu^KuiJ39)?;Ok329lv(uqEi{%H=rFKQ-l_+KqFad|AS@;PJcd5mjIxM_nJqCY2~2 zt&nXVeN!&J*VFFs3S7;K;_C=LZmd{U)B8znsT!e6Ho_D`j+JM-3tNDZZr&n+WlkCq zx~7l`)e_h8Q+oNsV$>;y6iZrd6RO^DLM)v;Frs!X>r2mk!LF%3qgd`^u24Hu&qqHH zgC`9pgabs-Ndt9nrv2Jjx8#kW1FqERK?3x_KePYKW$GJP!d7|PuyHrjGVE(^t?Au; zdxBXw*toACsW>m!``-jQ%c`xNUwV>^r2PXeDTy+S#M@DAz%$8M28%o!*-mNgIuay) zhIV2ga%v(J=fvAB;`q^@sU>p}y#9)w>f5n@Zi_qtV9-hG_FDhSJIHXj zFatYGq46EN3sGdw7hvoav>f26v9Y{OJ~Ie*S&m>cr>lg9&|IqJr1qT7w^)ttF_-!a z=j@tIt}(i=PqcJsygG#Wwu$;gUxwmbQ1K;%HxuRLHC5+|e|6=~M6XaIFNFwPms7Jd zJ1o2xTaibKF%0V8JR{bKCDDCfmL=>|?^WcAl3dIe29U2#5nbarCw}-rdC-EuJ0#0? z4U*w?cwsUR!m3E2k6E3>lg6%O3C4g$UW8tFa`2#|@E=KR2s$tre+bHK2}uB~PQo3e zyM+zFja`aK)dq@1Wb#Wd%>AsP zk^WFaBlQ(?%S}NQWm$J3t20;WGuM4b2eCz$Y8$m5pv%5iem8#CQ&Xu>vY3~4xu~!3;bL&8?xpj~xr%yD&;WRt-y;eCu17Rd2a$e@@wDm)*)R5yv zN1CTvM7;_p22yDab$XzhJfzsTPcrxn_s8pu&`>Ryqj+z(b{M#{F|7vRbDY!Ifn`(nnk)%=1)q_cL+afR=zI&jU5 z&EE-TjsE0{ow*h=)y7xB>0#CcZ0!H1sxbDFe?~L-`5smc%nuF@c9SN4?Lx;c_Ob@8 z1s^{Vvtj~&epi4nFL?4qr|1Ab=T{!4vrPxEB{thwm z$lP1tM`<7awBV?5(n3=T`=m{P3ngXeN@~YjKKK>BO>NTIsp3s}fPsm&)tdPY7-L`s zLn)UF9RU}5n_WoJzd6FNUbssCv$?y3z0eQAHksK;(g=Q+;ImhH&u1N!uY6RC1Vr2V z2GFjqA&jHs$7UconJ&8*yzV%aucL~|x-Bh~Ad%>dA7|oK^n>Sj#;~`hD;OZd4Ka!_ zfNzB3HX#SOe#Mp92Y0IfR)EUG)d`8TUI3Cg$tu{P_KHN@+JgTrs62`wJMD^orx>ShoTAXBP2oh8YJ%|oM>HFp5l{r%* z6VtU_d^dugdH$BkbNlf#zkPFtU`Th@{_(E4ti@ld_JQ3A~AU$N3E+IcJI)QPp7kVR>UpD?Lf5r~JLNX@*f>2B^b#m+!8t18un!IN zjI6zM8EUhWAW-<^uQ~UVq0D7>C0}_@LCoOC@xmf)ZJ$S$2pw+9VI!SS98LVo@6BS3 z6F->TcqSO>#4HI9?VL3nH*lBaBu0B(G@f27Z%936#cTdmoGs$SwG=I$@PlGo|L#ZZ zOzo+NE(}0dh&t2{?X~_q7VLVYdMp3^0E+zMqZAtdvAbV_$sUw-n>W&$CG`d{Rq_gJ zW=<_mGP-tC0g(FE-)h#&J0S||CR>ei@bxY+=zS8(IG^T zLem$OK_TvVR+%*oxWL0QK?2lZo_c_s3}ToTo=3L)AevqHyN(~v*;4;EqP~+%xI3skJ*LmhQYXl(>!(b&F3g}u zs8VPUtKGJABfv0onh-}Z4I#$BO)%@meQPk2OkY2NdIk+f6rzRM;FTka@bp2$@|Pp* zBMt|BLoEt~-l%VtTZP<(_SL)Cw`i8U=%zx*tbMjgNuJA-%sT78G%7xK^vKrq35Eiq z!{^WJL~&=9T04KRU^JGNF@Lu-#fQX7y1-$v06c~yP63=HJRU4O@L1`o>Pj++!OO zs4M4}U+L|ECbB6b+otWI?EEIGWgHd3Hy8L8HrKzHurFXEDrON^G6s?qyWD*CcK{?Y z-vu5+5qT#*b13iZDlC)+?^WFe5^dzg(Y10I{I=&EY|l3wNl*4Z0`SteYZq*Z?vo-fi&Be_}fA4n6k5fY5BRERTQp*eD;W4OW zF+WFVyG^~zIonv68Euu9ABc+o6^T>Z%snMR8P~XYnlLbbo{X|nx^P7X zF6jvL$`w7hVBAoXZYucWyr2DjA$Q@@rlr)8Y(@G$YUo+;+9P+tn31*sL&ZxLKQ@*E z1tYtxZt$2-5;7i+yM<+zk^+rYn@M^$PlAPP&*oH5z(LaK{ufM`V}yUMY5nfew1zT5 zCdD1>Kjf2YWCCXTy&U!zw8zUbvOkg9KI!!lw_+aP25}`Unxi z1{Ddbxp-5L$RwjzLIW=}PD;HvHzHheMe%-4FgXXdikOttRGf{x8mUhRSfcSiGwpIM z`T#uH>+1%lnkw;I;$};(4JaYLwOAXEt$o?Xl6lcHVGd<7pkDn@zxKAFFb9s$PpJWu z9jXr)xgA1{AQqphz68Oo#Q%OvQOK+fvUFz5eQpNfYOBVn_KuLQ zQ!JJyI5NZ18APns)eCH-?5-z})^y{C_fJ4Thp{PzJEnBJx8jav?*mVEW+v>)v2kee7Ay`Mq9&G##||qj5oqN z4`qs40#uX>Rbzq0ZtJBVdRvN%re6pA{j&j&VG1h9iz~9+*0fjSv;KUN%c$53);&yG zdL2Lc6HyGOPO#9a0QnB%?G)FVq zg?n9PXz<4+io_C&`i;KEp0y%Y%b~YT7TV6WD44Xi&oNFDo8)OJ#o(6+rhoZjt6bthP|!ot-(B<)o3oLG^CHr>eKHr*HOmR@W7utkak6jd@Qiw=mDG z4VBf13W)9O$ym#|hU7RuT%{;UPr#WI`#uHIw4?LFaa)Ne?kQ>P^ZVQ5V6ZOO1P< z+PxKDBor;0LF^oVg~5;Mykwb+-^h>G*61tSuleD+19rRe)-|R!A7x$L&qTaH_~>t2 zG1};X|!0ZjDwv9Y<(hO6s5xX;F zvRJoMX+`!zw$yYt5^VNDLtfRk73Hc_B&F)HAlLL{E>$?1I@b(|;T<8co@ z3z__y^*t6$R)1tP0*VEi6E-y9VUrRP*6XHNc}v96h-P!Pfcwr{rU&3HC^5W;RQ z2gFOIN1dRV8nh9FEp`3FHjoTxMTIMyD}^hgv?|Kb&;ekc4rm2iaCo57B@;aE%z zb}^Y;W63NOW!7oO~236@zj902~Xm^0da=I3q@C~9Ek4P z5+b)EF!sq>^KTU(V9ym_=%HUIo6#6?GCpLMwzJ3qGr@05Wp&LNWUv03{3C;CQy?I+ zFZ~M?U^dIrbddVj@U-_UUe4vLj{nF0axmGAqt%AB{r+S;^qk0!#P{i{EvsY@{Z}nl z96NK2AmlU1XyI7IX2T&zZA6_UKdR<}-VL8dd+lIT^4T7-h zhqpZ}Lp>=U+I+nKioL^Tp7AQn=Ii@`v^b+UP*8aSjewNB9&t0_m{0T23=qJ@3Qk6~ zEkYc2j^_+t0u<7Sh?cqnXqY<~P1;5IyX%77tNj4n4sF?d@XvyU#K|o#zRYsfn^N|< zeX&fq8(_M`6ZmxxKz%(GcXFBw1s;$)4@46NulhSjZK$frH(0na-$u|#dmtc=#yBL+ z?eouR0Qtd2;sD4`c+c0g^_~+&V4j)2BjhfhkQ_5JN4`5#=ES6xQ2E7>(V!BVGg$er z$uKi+39o=#R<^Eq^G!wdv6u93`mgg78CJV~3NwoINLCiWj5U9+<>#1v4vU(Rt(D#2 zpmQ$T=yx?oKfR51X8}Z@Q2ny>%-s2*Ot+^m*+a!%YD|*I+X#x7nZjCAvS@*yz46%( zKMZXrJl%S6&`ksU>oXl)x3Jrf)g}s%25Z&?oV;R)gztM;FrP47TL^R~fo7AJYXGBi zpYc`+UCva9j57cuOwcpM?XYK)byI8(YmHU`IP8Q;gh}_!`~UGxE1=VKeco(On2p{R z`;LPJjA|Y$H{Ftx6hb_h20`npNOFk&xO2>TQhB=4h$~XmiB~zcjS37c*Ic^E+DOh< zQwER7 z=&ife@!60xBT?DkwXLp;d)^!D&J4AS=%K}r{}H12y@Xdyp1`SDH*+J0K39R@uO4bC zWet>d&5~uuKdy0T#y+KmyC}ERVrNocG6uAKUZrRywbHRTJ%TN{B?-YZJ}<;UuF)rU z>d%-6Chss24#a3&V>`qH1gsXr2{9$=((3O=j=qiEpKHCA&JXt)E3dA`ncbh%LFiiX zNhVm4GlQHGuh-NzFfb8DG1n~NWtAebsg>ED2`*H+(48lUiW7;)?w{H-x<_KxKH;os zPF8I?cX$U6VcS_uKmaMUYsqv-HQRf!(QQki?VrJ=yfS7cb_#eQ-i8g33o~`B2Ky-` zU$533ys4L}u<}1q{?@XvIR%@PVIl6}MaKXP%ufc=8oK#r0yFLJ|2MQCWtr(L0Wk&< zM-yG<3_Rm`>Rl&QqgxT-@Kc9X?p4_%o+4}%_0zf1IIbe%$=<`q#j|J6CE}xry;Y6i z2oLUz(8G^k2723Q41Pdqj5czn5hKfdwL%<~7=N6-g<6X+OwjWy?+N`}UsDXD=DPH6 zAqN@OIxIfmn!rsBld5rhII63Q*sy)=!|PLqV%(+yp|<8R(R!br_W=hC5C6dm=U2e4 zjNMxg=wxp_K&9O-P@oapmO3TN8y!&%FdG6)sWznzCYBtHKYwcMIt=j$E2%;n4n`S9 zm~=A@gT#yOMDyT9a~pgx22#?%vEkFrV_5;h{w|pd`IFpc(n;39(_B&}gRz9h`7Va( zHk^<7FS|EcLZagNc2pTB6{JGqQ63y?_WH_rZ5}Nb)=8Y z6nEe8D_x6$isx)^d!8_=%51Bs%rpk z;T&i{j9o4SuY4<$R9~pRwP!A$%B**eXZ{hbmuGpzG4w4C7}JPs{vT0a;TC28d`*Ld zbVzqdOLwCPNJ^J1(hCC8C7nwNh;&GIEZtJl9Sewbg9uA3_1-++>vz3>!hOv>pP4!5 z%$e7npBF@rm5Mn!{Lb?rFJPQCW0p0~UtLY6=7LA-(OzkP75pjYb~qRMr4Ox#{|6R} zY4poH6Vt8LCVei#l_VBb#f-cVvjXW(&CkQW?6c&AqIbW~eiwiT-`%6ShaOB32tQ+F zK*SO?=6VS2e0nbHNLp>J_f8znPJc9XrA|CZ|6lFxncFlE-tjXQsJf_{# z-0v*cx#@`+%|n!L)>Z&g&`!efGd~F+x*1NbDvSB)2DBJu zbJh5lo+Z5fadME#*1n(iU(YqmI z@~niZ(c~|IFwLP2Jch;YXw-WuZf^EW)>xCc0X6i1C|CGX+=qKEIu?0n;t9~e`VI)^ z5sQ1IC4k2Q6tIUc81ZNw_+uaalfKEbK>iEVr_Hkh0svLh3T;>9kG7;a&Is9`rvCz{LjxdNNV^uknvh(FK<(~L9cQ!ZhUN$^kspOEjTkKYzqJ35591A;QgUFxo`t(jaJ370$rE^vbyZSo64Xin`a6?Sb>r`P}tp> zE}M`>Z%@r3|Mpvc30O#Ai^Y8Hc$qzj7A=|AV~K2U3E^I9l?Y}|-c?yGe^;C@2Rz^P!UZn;b! zIPWp#l)g)h|Bs{LBV!MVNqf3F^Emsu%VB}X^UBoYXRr%OC90+|uBrLZybYzRfltQnrMly2r<=JMELV$HE4wdndzPE=x9II=&ibP)@2SrHpM=#$qd z^)m(Lz8HRg`n3GkN9QQME3FHxX+NnbwXgsRihY3hewx?xWH3Fstrmj%`D_`b0ZR_d zkcPF;gru)HbfDq|!hvb$D%o&Z%2EBThGF}DU;-4BTa47;>;#%%SR(I+KcMR6hFP=^ znbgHx6HJ;g&mqG~rJe!^N~8*C<0A&+0!;6H`IG#MWqWv`VHhz_1;!`aW>l!53{F7*ZtNlgYhBH z9T!et`^SMQO89wk1>ur;$@4oA@CvhHhiAum*7$$SaBU5+s`P0&*!SS;e_+ntluefO ze7TGHkGSdp58&8BL$n=voyuG47&z~zdLi_`g$>Ha{*}oC0~>k%k>zt0tB|oKQlTJ| z+FYZL*p{fSOeI|?8N8vC=A~M29D@2B<=elbR(7{X&*2H1Yk!k&B*$C6PdLSlzvsX& zpwix$0cI%O%^5tTF7e3;<m&H@c&vlz!710Ej$6_+E6IOOqc|ML)KUB%pp4jP<9Q1CB+Qerx$e>Z2Kk5_oQrBIJ>&- zX2-&8kv#nh^w&~&iTKMb%LXS^^Ak6KnHEBd0J9JA+cgXOxok@8p+_Dm~cMmr}fF_8^ z1n>j&$4K2Bl_X4K5 zg!%0!?$r{Wf5X(X09Mq=lJ$Gm&qe}L`j&i(CBJXV#5jV9 z4Br*yc;7eg8y`*m4SaVIO8gFMUR)*K1!IgUf2cOeRWjsCI|`J7D8}0TBlT|6UiiVA znE(|o>pO{Y+%7H1Lt5xzZgFA$8tdA%#*7N>x-V8tQqWLg25GqlzL6WaIRKHLz5R(F zF!{aYNzT?>up8ZT8ewLb6FZi1nw2JlxCq*vAl$Op-O-vw@h55ObZ?-z-Sf)MCOa3; zg?>8f)GL^+HQ+cLXMgPZHpt3K!~)PHHe)$IrfP6prdz3%Wn?s zC?EH7ZOSM0)s~#4i0?WOo2q!*olGOXsV;QiiR+lfuuR+{H(j%3ui64u7m+mzxtS_P zCL16kl@|pV>1)#Pk-bdlrpH;nQoe+E&MRKS9FbAX_Q4WvdR->8EnI}xJr^&Fwj0jA z{!pbF}7kf(A?TaDm&wFHDEe(kB~gi(nD{TPcrH=64rAd<^*xfD!Ms-A}aFJk7edMB&2 z6{{-IMO~lZpP4~1yC<(czh5X1VpBXS-ryK&)Y3sNuZd*Q=XSBWLDcOzA663ZhD!S* z$8k0=Kx~l?T=Aj{KD$cufVinM5B6n(fOWE8^GeBO(d&D+$lh9qZ&TaBK{?g&fBNh{ zA#|hq%}+WhP$E8;VcphuM6N=Rh7!W zKWACROA&%Is=8)mRYLpr&!VLN*#1TkR)@3ePB0?DCy$#!mkn*J;?~X~k@!%T`;8L| zprdAOX4e%WR`PyEP=ZyzaS?hbOYT9Z&8jV{!Q=eTev=o*@lzIj^tV4sz!P1-q2dJy zoXcGG7}L|AWN4Z)zHvLaDD$j6|3A335r?wil}O;=n$AiX_-v!U3sdbWsOY1APBJm^ zY4392FBYK=-`W84D>hf{0XYe(>4h-IrP?>mj_QS*I7|5;gz5+3N!g=CAHg5$M8#AO1`Q$0uSW%=x%72n=F?w zEy|F(Z%&B@(nN=qGO0Q4Mn6yfrrNAL@xtqC=q1@{gUzq(Kq^&i3Wt`VzsXzN6#d_f z&C+%syay!!)VF^}v@wdTS+Z({0Lr}?TSL_R;?VU{dyR+kYU)1d&9Z%kv!!*1tJ6p- zw-d0!5-^cc@0kW51AEj@ea`qJ95e9m#DlpNUTDi$hOow{m1oCd9LyyCJj^koRzr`A zZ+s<;it)Xd>J3L|BlL4^ZTXPA#C+2_rZ5KHt#H1>FzYL%=rCcqp*ZB@cHYy#b@G7D zsr#(KP9~FsmKP0G-Pfi6pV&#q_c>+^pcXz0rI;+4M$^3wrv0gKvA z9>?**w1d7fZ1xtD?Sq*%(NPg%gVbUVs!`wVGh@XIK&TSjA`MZa)%}&ruZ*ICm?O-o ze83DA>O>?D|4Z9k$ROTA!3!Ct=#yTLaWR`VXTQyiKptw~7mh{O0Dwr*UCO4Amb+-q z6&(#}p+udK@r8onp78~i^Zdp=gFYdN9hCM2?t!X4{-x_+sVn%eYwxLXA>qL*ax4;O z1GYA*C)N$ z#)<`0a2(cL+Fd()3=2Tep^Te@>o1RNq}rySz)?nm!teThG5h+$k!5rY9tCeUlYB}# zf_G+=(K6a7Qu;0(tc8BW2K7e~3cey9d2Kyba*|2Gvg5`Ow8Q=JdCY`wQNm!{Y0@An z@BoxaGB;WmW=s}742Iu9eguE}&1`vgh$x;DPpAhW(+VuQB?*x&ZDTX{vN(qc*1W;9k#*`6(eh#@7y^e zf#hN(8ZG9Ns;(rR2Q*I!-(TU!xTJ*(J>)KM?$`6^0NEFJDm<8a@cN+m5>2m-GGZ%k zY;Dp=(fP|4>oC_`$)Q1kFT$_?1$m+TsqV-wQ7>?+J^+!%k6mzgW%pcldfu;^ZjfVU zx_#4o4>c8iDv_Z;iTpeeMsBi*CG|_@>m;e8oR&?+V|oMdxFp@7inS5_)-;*jxhhZs zt4xyDa$x1i#tO?DuQ>b^QOz@`L+`@Cwbg%r($5><}NzdGu=q zOM>iMJL{~O-12PUEH;CCG<6W=+xS9ax#}>{5HtobHF$&OP@aL3&8GqKK6kPmq$C!u zI{z931qjCYO4Rw>r7x60i8E0{>akbD}u{3GMX6w`) z=;}a&&zl17!0>L)CkDYyt0%P0kH{H}VOo1OaeyRa zsy5QWL+ulTaS~5LX+74f3ji|z2&vMtuQudxm^FCJ%pnKg4(7AC3zMBI0!xWci`i{g zzkQV?Q2IYY^Q5vcAl%v<9=XrMDI*dJaO}LxB0FBK+Stq!&We)W=Tf}EDSz3t@hI7m zxc+A>zRey%KN>Cg4P@Fz$u^nEHYVkD551DZ<{$i&0aAjqfVBLvDjqDT3pL=VMk!9* znMzKn8Wk)k_w4bJ{F$J2B>D#~5&M~vWd{U>4>wd?Q!3=tx9N28+i4RjD=Jk0HUZx;JCz`Mb z*kO3J+d;ZAl(+8e^##WPL~&I0IfD{2Sgp{q7%&fbPEydU3Hv8%F=+Q~FoeGLM02bb z>IKQi_@HnQS%wU3M)1lE7Z6dr2H~yu&mXw_5vo|g(oz&s&yC4DiMPaC@NPCU)aamF z4Lk0H2$G|Buf*U2?{$l6^a|sZ)d!G=s4a!^!PJHIuh{j#;t3X@6P$LvHi3#!EEMx zfLm_h3wyFyQ#wxy`55~~XaH** zEQeQqg72!!%;NwAlSy4Q#<-fvUR~J1^(UT4B+q9yJD^JZH;=sYUOhBp>(ziwFz2Gn zo(jd*VtMvOG=J=`$5{$hr=rXVC(9@^3R!$3cx3ZvDfq2B~7 zX7@Y-B@2t7K5-9x@e#~B1d5|X3h<#qT|_)MrlX@~$^tM!T(z~p9L{svmqaIz}?0N6QEZoeaT zFE2syu?C$Yg%a3o-GR~E%yy6hmi_7OS?@+$yv#c{+dfAW2Eubq*8(bZ| zrs0?W;b|fM3h+=cDs6tk1C-ANKVPtUd(1BLbZuZ?0VF}jViaYuyPq8%1OkCNP@ie7 z)ImuI1XXZ`CadXxGrD_W{>Y@%{!9r;x=l-NB`Ed$n6Z4=@ax4P&ZSK32Q>hagWoB| zDQTM9-E$8EyD^DvIpb47!7Yq}p;gf8wEKo4tsgaaM>}-%6Dt(g@38l|!i4H>bY0C@ z*R^c_A_|za<0^?xQRmFXigabr!D>BTKT_GvPu+~mLr}&a+1aKmUly8cuD2DB-3-iD z-Gq4Tj%na_>h<42&B;rym?%9WI7Orcj-}mhwmY}8dlv4xSAiGR?de5z`|Z)Q{P1f+ zYi;NqiesW?QVCu|-5!NdNZ4~G)!B?moF&a8YKEE^P*vq3>m7;ibWRw1>i5kw&;QVC_v2B0>s?LE=>bERJJYBr-W{Zzrkh}{bjGZ~tK=S?)}OpDD8x64y`8S9 z@1EsE1!aL$i8{uab}vi}%;u|H`d+(?%xlX|GSkp2bmd=^l=d&eTb$#gf-X@gQ|cPk zOC_ca1Q{^S-buO?`iKa3g)_o~JsQYoG&hT96R(YSs3jav&6xH3C|c(+^UW~-Mt)d& zQ7pJA*|J9CwPC(YMt5ak+c&PN;r7*aGW~u+(e?7<>aD;Lb`GM>7XA} z-A|qfdYSC=Z@SogHoQ_CElNuYM~4_My}tLHTwM9>Gj~R3cBdUt&_JR#T?L2LYkQ*O zA^fe#Uw|2w&y6PSnaMtJZIF70UXXswQ7V{25KWg)Pv3atrq`k)zSj53>1vnm)}X)> zaD-lskolLW)CYk6Kl#|}Wyb2Oes?`tB>o<|dPV+I!ZTv;P`>fV;BB)b_&J*TG|~{| zOHQ-+bfZ|)Us4)M^SvAohBCaci1D2*Y57ffHU1i;GP`T&?9GAdD(}>FUmPsSM{w2) zt&z^jG|(S6THPEWx8listz~ob;vas()gwq_0YndBgHN%2)h(Bq`;({jPt>Wvzcc{3 zVIrs`?MIOTFk9x&$|K(ZTlF;C3IW+ckvdm6UK4XM|8kqB+&M1oO(+*8hO>v*IkF64!k5f`T+Bg}jbpN|6x(bbY(<^nz-2SmrCKu!8x0QEYa+^lRE6=Jr!_O0sa&Om9o>18cUkuXRrm_pqE#?4gK~;XMdH zyi650Zg37=jpDpnT|8;orM-@3a{x-=(Khwsveh7FN#hG&vsR7c$P&LqA0U$Q(}$Z< zsb-&zHVx7`Isbmm-$a{9YV}g<{hSb?eB$zBO8M5lFc4FEIqCPpm&NnqYNkRw`JIJ- z(NLs4n@+gj5G!y}X%~?ztpR)S#$18kw46UX8E4TtQ29b92a#M;pF=2w3z~gWZ176n zU(B@KjU53_K`RK}iYD^z5bk%%iR93JbYkvGU~NXcd9tTXN5u&jkP8d8CThr6H7{_S zy1Q5rQw;ka;AD{3`X5d?Kg%E@ueY0|>?tCUyMLC4S8p!yAJqnBE)014BW*X{W;UOe z$hUQ?I|%i4eqi9~)#~i*%t`I3WRcCGPG-iZb^MN0b~kd%EHb)jODD^L6z$>#ti#~O zDEDWwv~!*F<`XaQh9c(4jQlEjnE#;n%UBrO{3XsWkpeHCKkTuoBu?tj@ge4ZFq(Af zTzigzJy|3Dvgf7<3deGPsPt?0O%0z%qWsT%xeWWXNC_d^kY9s-4j7E@q=ch6kP!O! zV&y?l0l%!ba9%IuS&zEsiz#Gc+^C=fM{~P4R4=cWjOyivlT+V*g zP@j#-<)QZ(&Er;nyQ2h9#*xMxXO#_q=bQG(HorD_jWIX;c}GJ9i+u`ghF@g&Km{!h zke4f$0LX1C`D7SeTG^Z{OYzBeG?KEdHEk>rk6C_I)3f#0f`802yw0jHc8nZzj-^k@*bU6RJD*cWB^ru&5zuv+U*{`5YwohA$;FpEBFM)C|U=W*{A}m zR)Es&=Rcgns3+-$z&<4`GiSr-t?Eb=Y54~w65<3zI^04Y4LR?pW$>hIMPJF>NzMn-bakbCZ#OH18NzBK0Wq}F$?EgXG$ zH--KNr*zk-_0lTQ{qa6tVl5@W`sF0TVE zK!9Kx`>Ao!|9zf)75TX-!0dr*qB(>Nr|?AzR>aVYYS!))qP4d;&ZaR=FgN8Yb8K*! zaBVXN)z@(UC$!(U@}H7=Bf~jZ<0esuaspE(rQ31W-oEy1WXYs%1^1vjfk{v{neu%X z5`V9pabC4v$xBQ60l8TPdVY?NahJX_FFGyzu|I%@S|Frl2vH|Z={Ex|YeRXlV(ziC zw6hq;NO>^&AEt1^4IM@czr1VGePRMaK6WG@%godAoml1_6yao>MUUoQY4?mC^CG8} z=F%z8sW9@^)wZj zAt7Bllu8!Rz2I`vZD}I{mg!u?IwS1dAXDo*S8j$5=v%&z@X7%5y)xDZA@kSR4NkA( z9i0brZ&icsm#rrxH*jFH?azF=*&AZ}Ck)r)Zt=@0{cq{8?zEAR?1cAfHRarbXvL~O zEDWk~td@fz96q_x+90X8aOZ+KC1iKo7Le!O#UD7){sdINp>m8kX9nmyoc@3z#2#p?V$%=1pd!_o^M5u#e}jyuA8gXecsn5 z+%>=)i+QxjU9chIY0*~Iys>Dg=#rQxx5`E;~`@bYiDKMAowj`g6kaZZ=hJS-Oq%3yPoMm;l)m4f9TV@1%+Nv6jZ@&-0Z zC076Ct-GF5d+EX1o&2$-f(ItAl zQ9SOxU@meNXe$1;0sZZB+n!LE zKBKO#E`(USiSrb_9nl2>Sb&Nl!`WIud-;#E>QlVG#C;t9reco6GP{K918>$h=<9wR z6IDAqv0B#)&giaCOgO_NtWNiyC4TO|Y&_|I%YDwe4;C^82Eg0PlQ5ShX?E3kOX*>g zx;xx-RN1SFM5x`C(+t$#+vs6Ps@>eSyA#LXYN^XtOJES#Uwd#?ecgC()y~u1$_kXk;#)a+&wJ|~hqOz8*lHPlcmJbhr z{^qa{ z`?s;xG=oXT@bt|rbwYOHtMQM#M%!dr?G;mvk93_ZN7}M*+jtN%*l%x&?bi)ce2=z~ z+2}3Tp_F1Igk`)qh?0XoK9vrBlR7jYklQ*pN!L$GFjhi{+P44`(w^siv+(aQ+H7Wi zw5sdD=WH;2yd_>2K){FRv9SMgu~fLoJVUvB>X(*IP6N@q=xFn9Z1(?JthrNx^3a&O3a!vliuD zY$O!H|MB8LIA7RPqohmV3B8uJDzScaDCq8Yyi|?y4<5ydROY6b`~E$fOo*n*Dyl@o zHx|{%9|oGuh3USE7gOAmO7!*9meCezVCkF1VK^>}U#Q+L`ci8zrb)X6+z%&4(NgPo zs}d&Zn%zwbM5cl~3+-&7AnkO^IJY-%a?08Ze7s$I%>7@ZBd_~j=z6SU;F+!V?60fieIF&%|;GH zQK#E!CaQt!$xjS1a4cn?NO$*#)Bv)u&C6$l`YNVEJNL=SoOutQ*i8kZF=h+qz916J z`tKZ+-5Tp0%-WJVdee4rv)T;XltJTiI~rreAYJ85P^^V<{jk?P78 zJsGNnTpJ+5fFRMiMBdcpZB^KX(f|n<`t5F(T$tC=_w#K*FRh#dp5s>C<^aqpQi+3v z92J%7ny6R7F;?3$hhAsYP1bM!;Jo)qIhD`-nN65Z*K;l2C1Nb%ZOmpAq4;Gz`scCu z*>}gt{6Y#wTbD|`%s>j}7#O1=I^Nj|G_evq7n0d1pG$vxgusMGpuOoj1&-CRg?9XR z*3C0u*VCMl8kmrA3%JO6pU8fnz8<;&pxe_SmKlS2dy#mv-peHn9b|iUdKrOgslU8*drtAIm1LTS2tJGeEpci%_*GFOHj*V8d~^N^4WM37TGNSO z7s990uGCyRLtR1@Ab`^UL*S;^Q02|Sd7X*eG4|}lMh*2STjr~G6Rtnuc7ITWkK+ZD zI+spAUa6nDJ)ZxhBWv7y_um8iwCAlnaQg83lw17vXhCp#&13oaqWBuO#a1r%Hq6n; zdnuom;5WcYU7lqyckqNaQq0*h&Gu{4`BF_m*Kvf!dW*j_li9JS6IkLx#WkM%5|<0& zrLn;;Cdoz#VT*P(=^1t;RGO$vHuY=DxK`d}Zvz)n2v{upA=8#QNKvoeN==($%N3$! zAV;*vET;09zI2TBnmn8h^CDN>yLNI@D-E!sF2nyacWmUxqfJMkKZ1|!t<{-8Q5rWk zmP5RR2=?)j&pdj*1yPKR?^8TX^~ne*5*@y{Xt?cTlUcGgZgDMqf;`@lJ{fq1Yo+x} zMAJ%o{iO+*EwAbvE)qv>)cb2#LS85K>QYyV=~DGP(y~t!V1*h3#?I7_HS%VEx1rpI zZvpj4BFiM{_2BfPIqSTPo1zGEi76pE1ArUkR1kFO4%r* zq=psTEYOW={O_pBviqjML*jlo9~13o+|S-zp9_Nq+C_{YkOU%~J&qtBj@+VL<>v^0 z2P-Bdqxe%gA)Z{)C{cRM^QfMM;sy#WPYa#9F!1pJV@}(;+n$Z03?N(dXN&~8*T|>t zHSu3v;8mUZ#d+X06P=5IfB^AT?*()!$|%{x?N=zhZ%hviG&b!dv3 zaojuggt>_Wmq9b`a!6O(Z_KXxeLF?ZW>$B@P^Mtfb;|7DpI%a&=G5sKS4+~F*-R6! zd<20lO-6oYVF2>uWBnED9}nG+omb*7fCKJ%VisufNMDh#H#)9#coQE8jvkC`(dpzR zkfYJ=8|2#1(HtX|zpOGhV9SMvHc}-`CVatWt^H2amVwq{PL%xc<_rBZxmOyvDx8@N z3aiDvzi)LbJxhe>Ooo zerd=W&huDj7^`Z5MTdk(5%uiPaXl(WG#A5{^_BfFD1)3OfBQswP)jI7G=FM%zpgTT zoQ8%yn7Y^IJs0*E2Sw2=1Yh#UXYJpd&go<19A=z*l0}Vd!=i3>9j*L9mvzVMv}p32 z!%K30n&45B9e-D0HR8qQ7Og7qPR_oA;_g^ZwZ1u9H6bZlUfCO>j7i<9tXJD>T@MR4 z3(=jIFbDgyf*9j}-JggP>eg9bG2AMrxRFFT=Y=*EML8j(H>Djr{(8675xU@qT=I39 zM%JXBND}w>BiO^;JxDyG$x-Ak#|;|seN>pjGe^JnP{AWnjE6R7zyv-z$kDjS+))ChjBX%M zhG5a-#VsT-qywG4lOxcAR`5ha85avR29Z8S8mnp5I) zOXIn9N#}dSzmE?VmsOA>K$D9c*{Z6lT4@{Kg67X%rm!@uF>;AQ1BTe;B`{7Sx1YrmEn*h4LKeam_XWoL{#IKkei#}468f39TJz}VJ?Ti zFs8d7X6ejb<3-643Q+UMnbEA+7}>+gDyGefal7hrMw&C-TyOOFa!A)GhRfAKO3)XG zT(sMCD)#onZIf*E;oYj@#>;5b<@lSy17vKX5y}Pa8cf~MC6u!l*LjyNdk7L6)R~5h zw4`7(;W3MX%64U4f>1rhq{Yx80h^PRkT_`{d7fCqdYh&S_Ca;U;Y%$&#*BLI0TcH1 zO1u1wh(ASv9#I_g-f57*8;X5@c`^mSb8LK&EleS4K8-&j#J{=|@zQ8P!i-tkk#I;3 zhEbK~^M;zbf*Yl&-#zFDfdL6$^bk`iq?!f`KQVF>E@C#(k)KykfEugh7{q~Lu%d+s zqlrfv4C}pUKR?$0;F}-M6VUQN0%P3ZvoAO2jG{0|a1h_Af0O(JwvC7~nSdzDsw@87 zu=JnB$%@%R%%Y>U*P%+sLo|iiQeu%oX$#N%SS2e7$ zKxY4$3q*_Szi1iKk@W|!x0=1OC)bqtJ0(0k*~oWa$Ud%h8mNDA-U&u6d;C78>G`ap z%fh7*MrJ{9JqDr%S-3ry=(qIBURvxw5Dx^dj`Q8t7}f?BNVD{7m@juRTq1`fNOv$D zK+#nnT|C&;Ij1an({c9UhmUM#Og=hE%#}BSFXRZq(USUD1+#z)pEuCz0C;)Eg(yrZ zIR;&1|ChEhBbA=DV~ic;TQ7(7y&d-E4~@02DxRk;4j2ug6D>8MXtFg)Fjb+St9;=2 zl>MpK*X<+Kyt8b4<1s(OA>(#c{&#&TE4h*Nx)M+F4x$G?eu5&)NXACt5rT&|)aXT0 zZJr@@<5~r>-=DK8z6U#8E@HSq97z~DQNxa-0&b(Xfs=tU!KDTZ&C;)266hZ|a%2}@ zF5=Sz-PW1Wk@0 zl;};;*6X*WEQT7#|BSRqZN~|w@kMN~_Nh4Q>+~ljle2d$M~rQTFwr)CTK47cgcmLT zF1cb5afVBZ5IK#jC0M~C_Fktx+hj}70NuigHNLoF+dDS9lh1{RfI})4Y7F)$33lC` zlSl&TP!4gW5whQ5WQ9zHv62_yvdx5Xll!3ee;Re?({6-y`DqGd2l>c^cT3z%!Z$xS zP?aCvnJR4jJo;%}^SnssyXmdBX{lz@Fzjr$y4jyZ&q&Yzq~F#E9#|iE3P;>xJa+iN z?JtD#-*R|EO6ajtl!2Uk`)TRp8ij<)?MJ?e*DHPWvsm^>*SmQjs1dnEbaY7 ztGFm1HuJk#;leoNCvNQWDPXmwdA)%P%0HmDltnmb_a=s zTKcBC=Y(}yp(I#_ROs@oOL2L7Z5DU;uRjqUUc;~=1BZEcI6qvX65YY`;Ej%VZ(^XYbYJ(&_tw5pCBsym9T$J0}m*JftEM*Bs3is2HcE$v$kx7zJ8^E`TDe=cQQK2O%29un5WFPc`MbEq-2xK2w0)OK!u zqPQSWo#r2w!|JG36<{wB17~8T#hzzVV9Kg2sSNQLTrZ##R9Gk*T=Jd|&D`w_G^W{U zQ`?szosCYX5h#-BpEThx8JF3;#vL4Xjn7Rm*A!M0-mk+KLJ<2fM*j@~c2YFC5&|Iqbi-}3{de{* zl(kZU7Y4AAvHumK%R*RnfMSw(P4?C+hM~0u%jx5t>nt>jn}O`R?J|n-{%?N+3DvG} zQk+e(hvrSUoTk&EHMMS|f_rQFL*la~9wU|8MtGzbyF8Ye-Z3L{Lv5qvMm-U4LZ#sa zJ}%M((=@ZN+L3)@O~jHDX)XUUp5-Q%_j7XCOA59|ZqzH0?t`|tKaBG(X9@HR4#T|7 zjpRp|1dLgU1h(`@mfJjg9->qD#I)ywp>eOtZ)mR@mK zY2af-*VNAh5sF1nXJ=Vs+`O&vQ@Rx;h#BSK;Xr!$N_r_cYFf(GjjIB1)#*c5?~gf? zMpJ>>7DH}^1qkTjnFx4wpsDkpA1pzxUS%YW>+B}GBz?#ErZ*LpvCCu?Q>K6CDELg7 zFtXTU$8Jq;Frl9Mbdfo*{9rqE{w6HVO)>=qq5kdmf6+@Dx1<}egFAl)%Ray6fuK25 zX1{+%t8wy2s14FV6nMk~E&e1vRPRRW&Ol$gQ`;~NeId4p5Ouu&5{)~Ex%OGghp}|> z`GD;a^YO5+W)^e-d+VuEZ$7FIE2w$M-}Dd1g89`Io;j~rQ50YYQwcA{Esdjp{nZ7Q zDGk%D!k!}>n%uzqzddN(Y4R2{_wMD@X|TbDTesIrsZ`NSiWhDO8ekuHwUv?Uv&QmeyKyT z+CCB-{V8J4h8&beu2`ZRy(A8Ae636&(Zqr*J3U2dE0g$P`|2K>0c|U>6Ak!zZCNfD zeucKfaFLZ<1Oicq2UwTBly-tBLtWr=kr}Y!{=S7?|D=EyvCGQSD)M^-{1+ADS2WLu z5&DiuA4v?lnk(nl5#ivm0eB{dxc;q=?;H+q1+wwLmov}E^ANc?&xdyeE|$`22No_C za82wgcSt9bG!pv4&5`?@ZlHjY^G`cN14#q1#`wCkorrez{{mDQ_Y|NFy3WV@xF}+c z(J;Zl9u%lGJUvxP^Sx0;AHg5KO!PXGGwvUMtwEfPe|CsMju{6Vvv6knmN7o(XS6kw$zge@5m10u)qv$R4VN^EnQYL-0+Y$G|{<Qp|DZVL;uzX_0ml|m%fL9exWd2VXaBE;?Ysi+ zOqPpK$svrU@D9hEJN3W6f(vXyd1Q33!<(|T`1s*dGd27*P#cK}Yq>HDeoG5VLjoGs zdKqR`krl}1rPoX2$W9usKS2l8otHwIoq$FX>Q#FwOJOypizcMJq90|z6 zxl*lVfTLwCGzAh?R_)--Wz@x&v2@6R-W0EpqyNcBPfOAw&eG*aJ=pVpf#-iY75@~n z&Di)Hmr~l9tVh@4gVWP*A^nqF$Z`KvQ>d0e=?E<6T&`Trk4D90YJjuI;*a_3W^%PH z1wwlO)+bxE=lX+!B_5vQMmI<;jG?>K{!zezJQa7~1M0^dleAZz{BLft!rY_M)Q;;K z;lg-5t9WcK@eFCA+DNQ@201zyR1pCkv_keII=*}B5}lCEQ0m=;-PFWY6qjX@s(gO_ zx{1DGu7`nrlyvv_1Pal$Kk4z;KVa7WmeQ1);fp^uSipjuLEJ(7+m2IGBNI`VEC*AM zUL@_xg8t$cPX;?Af@Dwq2W!&r&j*Kx5*qP;1|Kg#e3;JfOAdW;VM?z@pdZz|mR{qw z*^>7hFc2GZDPuc2QI+x5&VN)2fPneW9is`-jfV%NFZqRhE^IZW9WEV@+-)q>ElD^D znOuiS8u{T$jnFsNn-1#%{xwDuq!p$9&k7wZVAvn+W`7NCN#n27>m47ip&mS&Lz1YP zt?g%5{W|9|T^}XCT4{#yYa$x@H;V6G48|qQd`puSI$#&4 zwJ6WMYHdv6e%#jxj5gKZ7RnE%Zy=Qz20qI{S=ks)uIUO=~W%tHx^wX$v0qa~@kT{})5-1ZEY4 zSuXn08zWPJ8ID_wdMzpI0K#eB_f8+b@~?|%L>yb%+Ut4HK!rvlRLz@(SER{Z&rR3R zSR;z-N{@`j_`|EJc-+^we&tH~Q!a<#OJfaV()<*9|Di%LcE#tb{pMzMqkxgTF;+zb z2F~h8L;@vN(MYW1B>~@f+d?NU40}6>hV9#_!l(P#DSeCgB3-&v)m_i}Jd^(^&7p4R zhE}QeE6joWl&|xSJ}!fDKql4h8OoqCj8kvzT46`h*e_M!k0al>jf=>5On!(MCNe+s z@`|O$l21uw7S2l=HLv-TTM(a}fWv+NUXQbjF^`L|$`q|xk!Z=FIf@5UxF=4DJqWLX zyJnlSjAOYGsx-qU?P6Wk+|)!~8ogXdW~1wm-6&nxyy>U2$TOh+mD|yUlu14^cpyKt zu$kP%mLKi>a5L~|9W>X2NmJ3<)^@c_A?+thkZaOtdyn5BcKdoj>Qc<&Xz-OCqya>v z({nX#q|3$!AvWQa!$T#I$#nh%Ubv&YqN`2e4)L|{9X9V>^pv|I6bMomXw0E|ydJbz zXj{8KIp2a~1H+np|M!)pr5hjNK3xIhdLQ*=>ZZDRdErhNOXAoduq(ooZp3G*-qWdF zE!&Ue_K+aMj+-0da_M(`(zKm8S~Lh6E-lV3i<5Z})%4w|FkI9DUF3$a)X&`p9iJJl zg->^zK+6esGv7a|zO|p({5MChOpWjmI`VfOgSf2`^CJ1b!Fru|IX`+XCva4;4QuON z_Rb1aTuJ85Nh@hZ3h`A`_DSiz9W))`2sDt;;ZrXgdRKwg=s4Hlw|ogci2E)em+|=+ z=`HYjy!@}QZEXXs`EkbD9V=GloOzE0VDdxHH;Kc;MU5ym zq|40{)E2JPVp=FM3v=%(k+=+GGZ1>3@u=4yDemL$I0^NnnxZSzmioy;O`f90@4?fH zd>B!pI)6pbLD|UtSQbW99E(nDinV?~)M$81*nI~w&ie2(qWlE)xh5u!Uk#_p9uwVQoHr4Dl^%*Od~!qrXdj`1vey+ zDbMt!^{DyYxn9%u*Y5d}pSctMWV~h-dJZDD6WM|)_Z#GoKKNiI02?7l*GPAi;^X`4 zEtOy=@_SLZn)H32-;bqE=0rR?)Nf+>6Jwu|w9#X}24{fM8+T!!ZcT;`9Dh61^_`Ly z4A%wj&n)s>_oC;T9BT|@p$}^&!1Y{+eJYyWi5B9ReqihrEF?bA9Hse_AG`CK^Nsyv z{+-B1lX%LzOLzmW^`fshi*?BIlyMf5Aqq4SBSIN_Y5 z$^z%lxF(@$04j2h1c*{7a`h?dgAfO0zn@n-TNi)4&_sESV}DKNXQV(hqa3j>31jd>GOh<49b%;OE}>sJklbZ6 zkb1LKmOa}yX<8;67OK$Q`P$OJ_Up=X#TJLeF~;LE=!ckjHPZFh!gc2HYjxi2$ir_9 z?0Wiyak+}}D@jXz=qf><-WZ)fNSOVVaw8ggVS+BfqfEq13&cm`DrOFuZ((r&PJZ<3 zz5MbXzs05L)UnGmNBDCKmk*BvLvyQFJJmYQE%14hvFvPGA?F9b|B86C z{6*1Rd(MPIIjX@)*qa zxt6=IbHtbYo9px87$-Lq%`lKuByUsk9YcYKw6p{1=vN!;jXtc_Y|q;FuG+@Gg=XIz zESEff55$@5EPl+rbiC)a_&F3ms7IQ<2uh6Z4ryV8(jB98bcmD^8=HvIDH5aO zchC3d`#gWbz1Pk;*SW6ioP(6x%G!72Cgt?9hl!onu6G#-(O!uzfb6Vm{~#oT36Xw0K@${x<#3c~jg!|l$wo5e1 z#!Zd!E^a38nQR~mqfOFw^N-6!Kfm<28=&?DoMq+D&-bEztsr3gJgj;sE^kt^qx^%N^WYp@2^6?0h{HBH+Y}zew_+^baVBm977i$(|xN~zvG7dATfa| zKlLn3riI^LEm3A2m4wFvU7Ae+Jg9XWZ+T_FfBVG%6lt`K>DHNx`F5bYbUc1kYZT zD`w$y17L{zLogk?lK^*-drbI|>RLzeb@|c!{Cpu8az>%|L73Pv%Y0H7!iPHR$CqLu zKrlvQBNc@HXxdY*5-2jJ1oG=I_eB&v9FXdv-flA`dv=q|O)&!8w;QhyW72@w2IV6b zo@=Ox*_`JSDy^EK*V*mz;#d#vZ2IS`FrEQiH=l0f^X;ifIh6|;?BSHQe(*7H9GbT~ z1V?KaWQ(8rPZT_XO>(`L2=Fz(JZai)iQl8Lak@$S4_q{LM`Tg=x5d{o=$q?5eSdrU z6N-;cJ?JnJ*wvKawA2A=`s2kXn>^e`qw&sCa3BwC0xd7KP?>@D`JVl23uGobl}S+bgvYli+elxl-aY zeeq!hH2+}1d}pd2`X*|vg#Xdy??5{np9)lc2cOwK^UUD$s_*9s%|mkDL0jjRzXD%5 z0OY<&oVXC>XQ(xB(tIyDIAPi#i$`sr7Dsrv+`0ZXI|C8D~eA<8+q#6y)-CuwYE{b$AG#Ndgm! z5Oe!8wb;bB6yQ0u1>e3hEQe|-KVrwN{S9KH|?ohw6UkZ$Ywyr_HwyKt_r0n1499{}i7kCViLx!J%#4ta;>PIFt5# zu8z4BOs}W%6in~fEa?r-(!OQeO<8;B%p0RRdYF2Us5tX+v1F6r;U0a+7J67x$)p zPaOF{MK4QXMFqoASox@5PVjpnm;H-_>N@Z|_R|5akDGQ&*sr0;s&BLSm;yAB%SvJdr<5kOrgfsZk#{57?Eye*a1v z4PbAqKX6aTe5PiqEZlb^_nul>exU&n83VY;a6IXu4n}#QU$T!yVs7GaXn$!=kR4Dp zPc(QIE=W)rRZCnQp^Z-W8~IV%f^y{UjqFV|LPd;OW;fcITn#Eb3a*kL?+^c2J8W^} zuE`uNjk7PcEAo7@%Cp0~D6KyvF8uvL5mq7owCz0?`=C9?<*NV z=?Maqo<+~At6L2@aX#%2xrxVBg^7!68~9=@CKLk`*x3&W;hg6NcjqR~X{{9cBjo-E z&;ESSrk`*1SU_UkwL14yXBHL~j6RFJP;SD`yov=AIeoggH)x5xEZVe%mZtp??Pl&% z_AZKPfPY0(+RBo>AI(H0?e>288!86CY23Oyott+2962?^jIUfneGSZ67E0at1u#ju zhIjl4SBK^pONJ88n(SX0o(DHDh%@4cCUhmQGQD8w+uoUPW!ygQ*k(MOhs&Fc#+?S~ zW7TM{hBCT^7wHrZyVm``o=VPX-xwVK^(?zmZmmMQj%J}yY!(Mn;&N`xe_^LdOdV~^0&d^3f}JzX0*&pbFN zp3qu}%xyhvWcjTFx>FPgbc?EI>=GuAXedDB%^v+>24Yyt%j|v)p%iJ8U`o~aKiywU zq89W5N>%+9eK9IcF_WlKD#yFND$PK|q5Wia8Nw z7Z$U@;t>H_i$B>>NSuqTAj4=fwHPg`x_=~L@}I^HXm0pwX`@E!^Eo@N{@wzgzs$Jz z7ce?EeAhAKPt_cln!YW@pylQgj}5W4!4othcdvD|4|f~d@xCvMylE?6!Q0f{JagEp zuO+R*8hqhZ_;b{>X&TKKPZ#(8>}mCBU?6?XN9F1*`z`BQGsB7wqT=+Ele=C&ekVrE z9(F-7XET3luIUY)-F>LzpS>n!Hzd34=VaH~RmZ-~4zMZZLwceN!qAdU{RR65qsG-0Z5h3E^j5>_I2Ce@jCTcZ${0EXXMVoY~9=a6-+uVb>R@ zYkGC`5Uh2kUHW^c^R%ZRlyDTv>2Z(NVX|)*(~2CXIa%m=ghfi&(I{ty?ni|5$*y!c z$veo;#yjtdqMT+)6(DV%J4V9l9%>$M>dal3wFt@A4=17`r0J zJ_*IUU2OrEBA7fx)q9C3|Am}9gZF}J#mo{+NqfdmJ0tpCzB_~E83>H1b?(uC78SSi z4vEe+PG8;s7F6SEC(lA*^s~P2m>F`uUXqOOrHxC+z^909j8*x}{Sh)d{0e^?AF4&~ zBd+42CKjl_G7F*@eS6B0Ff=(^z0EmOZX(tuT}5Tl$>i2&k)~Mg02%`Lp3z)>faGBu zzs5(w_T#ND@ZagatuchyJI{jSOsMU4EY&oSD7Lf6WTP3%e1e0Qi=A61%7#N6`R$EY z*A`iI5gUp>X0<#oDa%v6hD61Ajx@)wZ*i%HJXGj8X**1JQyzFR^XyB%TS>Go;!y_0 zQ0V#SEwGlsxngPTXQ%u1Pk?38I1&L{+W8$BgCCCT0TKYRRp=SO9;-R$XHdujso5@_ zm(B1lxRH*+{>F3KIUCbQ10V;9kbxN8W+u;<>~xz^a3L4@9F?hGZD`)6L}@T3UjR14 zIG-W5RA-N)Ons2*Cm?|8*Wa5MR7Qq)#=j~#;#t#HXmFf#Kz)Ea4O?fsL_kc5iHTpq zIy*ZE_p7}EI-7ii>f!9hls9%6M?sP*$)AagnzI^=g0cHJe zC<&WE*Xfvtg7mX(tN>X3T)?c%&dod;Z*=i!x+}2dfpyI&iAMStcdl#kYp2A}q1h7| zFs!EE{uY70yrK^(3^-H-s{mR2FkrbIzue-_I&d=kAe?g~d8}pT4cmuS2|s9gv-| zV~=kJ4dxZQP``nbtqn%*=#=@DSUg%(nkVOo=i&=2klWY|Sn|{yOzu?lLUC@5As>~US*9CS+ZA*&9znA6}!5}pow^8TKR<2vJAgIFDEi&-N^={kJO)T22 zZewg$Bh3LM3gm&wMVucg?R~%>Kgpnj5dp<@`KvPa*2sItDmS!%h>=A`K8ulQDO5-R zdS(C~x3D`3DplnDkb^%YTDGeMGTWU)Y<|f?&iN;I%d1<5M$mH4hvv4OVFR6N7PqSx z@T>dN{}WkWUc}azQXaYiH*+?XxO&d4W@_lW#{qvtPi~POE%FtTmAxo6W=6G~VCA`> zfu$frt^3j$2~c95-wLW(yJ#=wt-cc*+~2}FDn{;K7Z3HhT3WbPuCdC$Cc2zU=fMem zssE7y5bZSXmpsQ|VEL&$tAijp?VAW*Bk#E|zXYN89`5WU5?RH6J6$q^-lKRX{mnT;s1LWZFph&V0x~?_pl7JeVrBWetq# z??IE5L)$m$Og=fTkNK#wU25ro{*JEpqT=Abg(Fb--mbS*>8Ee!#C$Kv5szw@dRvyx z6k0f5+U+yH852(&AQ}Z3MSaVr;|||x%O=J?{t1_(o*F8?x_-vy_f*KTL&F2X2_gb{H01BTJm+r>Zz<8OW- zXW)ve8;)v8RvT6ka}77Okf@xNtcE6*B*{ED_B&77DZGhf`n zl@?uZ^69CEUA$V|QPsLl9W8wrE7B%dS%}D;5oW+*+|b~3JCX4qJandKvEeL02{nf9 z3B;3)(IFnJ?S@hN_nJMTLv6yW&5qML>{mxE<`4PD4^}63zd?YCL#o7*?i9WpWGDgX zmRMBU5W03~tj){aqSZ!jX)$kKJHvcVJo|M(O%K^pt>mfZ<{jdwqr5oA@H`B<8=Ht( zQ=WC_V~K!mQ$7+VvqXo5-O_v){{goL}6q58bVQ$b`-Y99f2T&k z{2;0U=z`gyuf<$o*yKTl9zjBWKK9|4OKe%QNnkg=i1rvttOE(`QLj2plg2U`eLB)E ze=hLOWI>orrJDg>m2$Gq5MNujn_q3`*#P=&Y?8*0Y>~>F^mIl@ah}?%LX;uiceeh@ z`2=!JdOFm1V;1dvf7bHr`Q5;0v2DD-(@@@bMLzj!QgWwtz7$lwFzL&s3#?dS2`*|8 zAD1_DhctC3)YV2M##Y_5)f+;A^b+G3m5)~f`tn`B?i_GL4Q82eH(?L&e&Dh8yupV% zY1OfdIPV=?wu?5gMxT7R$gPGd*X-q0KyCe_;~h1Q|K7OHn^}~bTG>LE zOIPQ_yTmXHfl8x_~UGXM9WjZo}P^mN+Hzlj0typw9Z0+7P42CsAbLVX>U^_(pO8G7q*69@kzgFT!$z+`&qu zZm2!Vv*VfH7TDNu*DVPnjf-p%%1Sl{Izz^k*w{)~OC)mgj4W<_OLAq3WSpIZp03`} zlXxAn`4~H`zagOP?UO9$AC?<1@kF%G0!I%-kplff$vd-@9f<6PlZ@k*3+M_B(0tRa zSQV+5in^S!r9A{S;Mj_so`2<=;{dO%b@#bCT?^lT2OPNzW6vN?{5rtUaIo#JF>!J^yv8N0NW0AO33|rRkoQDnVTD zkZo=E<)(jbwbabM{YbUGT_aJaj(T8311tDhD61Q|2}fPE@)b6jSN9y&OPqjfZ0_J1 z8=@ih;EQt}Enp5WLnS__q9BCvB$F_Yd!RUHk!2@33VHLM-S%JU0JM8KyQyG&KIYScDdusQFk(Pr!(<+++1$`P` zRnl*^q6Q@99a7&T@&u+=`vC5B22i`bgH#ikZbb0p)l7Sl)f2^rOM!H+qWpPk+WVij zU>S;I<#et@%l%C(3@k%3KdA!TQx}bO>E#DGeL3hPk$kO3qD&k@tFz!mVz6^R;*g$V zW9!@N@zZT-`IP^FLGKkZuJ-Fq<;px9BMZNq^Uz1!JUDHbxM;BdP3^EPB8lXFi=7>b zQjD}GTxg~Mvld?48M&V-`UT8>@$1^)9|LXOxGaV}0i2{x=cB*L+Jk)IOBLAc!ybpr zyJj!y8;#Re2R5YS5-$2r-q&0$fbqJV6t?Oeka^j@}gzXZ;T>H{M%`3*$QLe-D*q z?KSYo`g{|qVEi2!=e_`Eeb>r~a^PneyS>1-V9=iN8J})kj$&03(|CryoexR$~9oLXS1StqV8P21QQKkTVO`0XqwL$^bkF z6YVdb-_HGTETf5M4G7xiH&y3iiQ#5uGg$G-S-#+bK1MMfVQ);~SuQ67sm3VNkBfPt zTA|j7XcHN0CGIBZ>J;pTkKxX)k+t=%O~B6I{z<>P%;8rNNBIs{C8RadCR>CZ47$Aw zj#`oriVr^9drKV2UB#h0tEiiM#aX9n$i=yWw%@+pP>Q@cHt{*-%p#Swc41u1OB zZOscYkQl5M`FRqlDv)2_PYCkd6)xF;U=W&`FfoE=ZCH0EAcX$o)2MJlC`9U-!g~Fr zs;=iL91w5Hudaf0e#Y6PmztpBJUEJgHal`pEL|C1n@FwHRv9r#9G9XLL4(iY#KlwO zu~-5kXMpenSkU3mLA(fpbo1>{&+pXHsMFsJD6PG@<`ylN7YPxMCzCe11hhCwc^VBY zmN%hGi9fQFnO*B>RR#$$>XfAJs$=+M=?PRKscENjo^oR49VTD{%Xemh7I{B>$hV0y zzFg_S_`Bq|heeDugL;@Bg$kKV2w4NicFa0no7P^b@j{ z^jPll#yYU=0{u#7M2o3@R)c(1zUTr+8#ItT(pwPucEe+<>X|NT>{yYE_cu}Y6c{6-yvGB*gT?~fjS^^vY*Hckz-=^TIKGXSo=v*9xgD9s zZ4_rWlC8c^a4|`4b^XU0Abj>gB4WbBV^hNq`h+~&eM{x$j)w6+Pr56PGKobziA4Fx zWYWI?zffaDnjUqj-`=R&Vu-ICa*i1CyH&}q;`>SEMXB{WZSrb4dUm6%{(F9!jhDa6RJAzhgKHCPM73q@=#-{| z`rfM9LyUFczR2|Yw-UwtLox|-kO%P!6-!QEe~odzT~(kGi(jr8Wtjd0x zRN`Ve{FVIl-M9W+&xiNFOPNttFQAMbWUjp+z1;dM7G3pim#OCG6}+`-d|a!Z{lsBB z{a*01yI_e;S}(64Q60!oA!WyY7qOkARvoqG`rAnak%mo`_cio*x2vqC;a?Mkd#6F% zJNdr%MZbh;dssNO14tXQi6upGSCS*lHW@z<@hHVZrkAt&oc3&KZm&1(ZmC$F^=VEj z(=Dyaxf1YCT@!z-hI&EjO{yW{{5grPZkt(<-AP_8g&+=b(o}zdyxRNKdRodxpgqk99fY22iOjQ#c##g$?H8vT6G7x7Ayhj$ zkx3JC3{9(4u^Z@58uMR^Iew@Y9=yAtPAB>EaiKQ!zIVGjM}@1!tj$`8W}{KzfuG5< z=*`VdJ&)jX%rWl_o7fSlgzZJdr6U!LXla$6`uiKqR&E_nw$&UtsHS7x zTtt-0so1y1MxRGFdn6v6?*fN`Do!aF)_J}U-Pcx6bKn&f{{P;^BIuOfyB4weV6w(H z;0Zpcs4`4M&7mr95Ys^l;n=dZ)olp#?~j^$zDco3eyRNcu^E?1lBXyPR;d$fhizui`y}~;rJ6Vo~7iqB8Xc=Mwj;+O#;L%UFTfMP$ zYy-9*8#oLr2p>~!zwQ4XSH4fVouC>*7f9vni+HbYxqEV4Lr;Jx~0t0@a(ybIWY3vVT%^G;mU8~ z{XgN^8>bn(5N<#Go+M)R*0$CSi{xsiLvcS~Fr@$a3Br*5H%CW*$;M42ZWvc?!e|zm zdE5th4mE?PwVZn100(Q9eLr99e+{3(r*O84)w&tPXZ@pCDk57)kZtmu9AX~hXQClC zU^A*sbBhooxUsuMKov#BeshGd&;FM}6QOL@E=6JCE*!eJso$W7)oosusLU5;V4hR? zRonW`!&>y)#G!GuBX9l3E}eYI;Go*EZ_l)K*0$ZMfb-ht+Bc^X7V@g^>Dg$mW`adrK zS833#5_W!IfzeIA7dfCE)fps`VnkY0vv#zfF)a-1wa%o0Jak;Q%C5CNW_@}{Kh$v7 zYZzlN#Bs{*{O4+iM@QQePgV|u9DaVr=#< z&SZUCBNG`|_RWrgeyJ7_=$+oei!=v0oC|;nAD6J;ci;T*;?;Qn)~+^SW9t@!T%*p- z4la~KQgJ@*T;N3nE!u+Nf#C3is5pAAcYGPD-&;TnAl0%v*z4!SSTd zJ@)+W%iNou2s@E=2%+@al{C*r|7`Fxb^v)`$Sk*-O}yfYxltI~>uk>#VK$=}<@)kQk+_@}$NE)-oT1Mi)|`emVx- zwXoMe#P3#h(;sFUn2v3OB5d3!*sV9J&gBj^w8QsVWqqZ($W7%P8fH;RiC?hAFDN6o zOq?z$H$kQcuS9!2NK53zoX_1(W{piqB zNuj>KPm)Y99qy4k1U}fZx?9W)Mj$Cfy|8NSlY@7o&7bP(wC97)ch1>+iyHui(@lX3 z&}%uu0BHd771&99x(zrK=3YK|avCi*n){@)Cdg1-Gob z0p!K)6F!*YrSo88o%}U7{C8gz$qRHPW%gfH$c^qK(}aV;e#C@dowWS~2{K3zQvSB$ zj63s-n`uup-0_bwGm^mZ+j#)0 zct+!_8l>DnpIQ0NEN$L8I9)L~SbnB@h2Q*zKK{X34VN$JT`lmv%jX@QU5c0~-!lzqsF6u{ejwV()GHs(GG*t*?*j)t`F@%H$ZR zcqbN}eB&J87YubW-Qr`M5Dg}ndko(YS8;?PqP^+A+gTLw4%PnfoBw*Wx62$KB(!sP zhHMj0w`vAXYO`cjYVz!qEVH>ZuFJU=x{B8I0wi0z`*r*SNhD54{vZn4<(F=QN)DGB zZZUk%j=pe(){OtpT#_yz3z$i!sisPOLPl_9{$92yKlJTexRw8-G3D@{aQDhPY)vkZ$v+6 ze+pL4ZHau#tCo528swZuv;{_*#4R?=kmnZp*>*&`QRXi#+`!G7)FYcJ$r;=}AZ&(; ztGgt55E>IZ_ZsMyUb;z^G1B+vADH7YgulF_663~Ti@ipc<9dT5ZWzC z(Nt?qKh_KZZtnmPm5=_$QVQ=^b7CNWZQ}CRkp*;2f;D|yMgTc>X#CN8b@XLbZMd3V zGWWK9&|_Aj@#B}JtUD46y(UJOulen z*dg&qI%9|DB#7g+UxtVW^iy0;5G@WeGJ{) z?~RP#Pqz9mePyFH8`WC!oT$F%xoUUwDmT-k9`k_4rl)Q%!5+M6bdyp$I#QGJYG7H3 zdaOIM7F{wcMq}g4AI#A+D+{{PlHC#ax!4;D-3Q|T`IFP-bPqHIKr*>`a|{h4oz?^S zS>}63q8 zwRDAwb9iY&lu^ z4lxK83#{jyCC_C>|Lnf&V!xHn#GZB9{E|fgGu``9&EGtAe)5Pv@azB?e2Fa7n7OjT zVzE?cij>jP6lEs+OZHwT%QCWz4-O?hZ7w#3Q;CNrGS_c=e^EOa7W>LKtL^MysL(9} zsJ$L|V?$!k>L*HH;fD(<=I0&6hN!f^@u34@8D1;3SibV3*xf0lpm??a9f_{)&DB5- z5X(^g(RB?5u15y`|Eqi0zxQan*cT|c`tzo%({gvKdaenhmC(lntZGHN$ASwHH6r~t zBy`tA3qA$#G}`Xz>CpL@zoKZNO`mJLKHBr^4bUEjT6G0|{zKW^Gc2rUPmv)w%K2lO zeP!yY4(WX!CJb5jbScg6{sFs;rwH4=sER+ewU^q8GJ&JNH`mFY?Otny4p?Dp)OG9! zeg`0KPiWC)f_gR` z{Lnmfp0gh7lCVcsd`zh2GPU&3Tz=7hF!Uwc*moyYHg8fs%;n2MP|M0$UkjIF z8d9p!r(CMJaJZqjRtV@dZMw_`MnsvB*9mwrSn5Mb1$^_7e-*|}{;@Q!z);t9Aqbdo zBXWd2IoxXB%Nm4+;o2UJV>zr1u z7%eSWsh`2Tsare^72NcUZ674D9nrcvau$5RSq?NJSt;fMidYO`-U0u~ss7*mS9?p< z@_rUoN*80ttlE{(#RH(sY#E#QEoJ+0*X#NaC%YB@={Of|xr?X`R`I7`!I|iodT|l- z;p7T9+vN2}dTqJmeVo@L=W%eSZ8wi55JKc#Y-24FCK7Kor^$*&3>_#;smbCK7zt#F zIg-enB#9An)a(Io{~S~rPV8K_P`Oskq|Ye@B5C6KW8UK_&Ne1T$5$AM#gUfN+!`E` z;rad!dwJ_^z5U{YX`&~&QETwsc7y4HEk@)`m91p80Jl9I{#TzwgNtetoos(=1NvgEmx0>iAEJn(!)TO5+kGF^DEc=+#@|ar%UtEm z`BSNyB}GZlsI&Xx0^)3R0YyHbfn)*(S)$o8oi$M>*$+_id65?PZRz@FmVw_?$}>3g z<;j4Wl7i)=Z)%05rFr}q%dCUg%Hp_|c z`c%t$RN+Q`nzw0|^jj8g5#Y{V9{&VdqtI1co8Lf(TD=S`Fl%1V@}D^*6G%_zo+C@Z z0WDhqXfeGC{6)b2cA-C(ceNuw&WmDI#HF*Sn@1b?-P5|*ghazNLuvv!Zd!ne8BsAa zbPOUyaM8b-fqz@{qb9`c2SXY)^CXLWA4O(7ck*tezn7DE;MSN;oilBJ|Ls!^SN#|r zx?))N+uJX|tZ_E>o7^rO<~n!NW&^K-^mp11&|g|-dDD;DyN;g<;@NGB22X3|nAjXO zJd6V_u#XziiiYld^bz^5YyiH#U07^4PNXFDDz~)fMY>l?Joo5mDe*0xN@z)G`9r6u zUt(7{0s*g4DA40ECO263rp8-Ny{%q!Vqp0d6?j7o$&@WrEhwH%{ds#iUE2tdC&>SP za`ahj}Q(QEjS-89M2n%r){Dz)n| zd?DN)U;bxLH=|>|cchJIMIV^KQ{{au?73G51Dw_8O3=uW=Ya~PnU+Zh}#Rs@? ztx3h7_G2p@V}1#KwX`yY3S2sRhD%37E5;Ukqe#SAi}80}DF-!P8tuBkj-4oiyr%%- zmE~y+J%b}iNoK=%#B|@(7*pJwtS)QZI2w_e@PVlWO<6~6)=8oobAoC@ja)uSjS2fI z3#0OP-jdt!Kt*XErAaN;q-t7{Cgglj0{`^Abt?uPMLW%OLhjU%#8ue;L1O+UG1A!i zI_;Axd9cYH)upq7$>0|a6KdUraKx3IgyV?8pzw?3+v3|B8Z=sH@}@&&Cnj zP zMU;K6(Ysl)cDj9s{o3m~j|My_JUBH646SYYFr7~@SYuLs1le~8r(Rfa^)GhAb%$8V z(SNL(sNS{6qEO;52q=E%_5ZqfBNrUoFEOj6C|EDU#%NeD?`*$7Qu`UQ&)g=*6Ygba zvl2c;@Tc!rv*5hb<-$hr7P7_|sg;Aj`QW24!1{{e;1mrm26EqDM~Zw}N~;TIJ%kQI zS}S%i@bG;jl01!pe)k*9AYi6KGb0bpdV%Ll@F~zX-Sb&q4-v@DCvxD$tuxgi`v%>x zx25Oed%(Si>qp0az(wOits0paBzFEPqM6z?!ncqv%l7wZE^4N&ox@Yt9^1Pxz>u!|GcZvpUItZLkD$NNUMWk@LV%f zc^ayZ^UD;9WOxwgtvt`=%BGy=Cg!@ZNK$%v;#EcgZ=$Bij7Z{x)F3u__fNTjJw)A@ zBv#q!`8NwxBZ-3|zozDHH(Vta>8dnXh9yOA2>S+;oQ_GtQ(AE9I)cD48vA5jfV~pA=5zd45Q_CW z+kMOa*rO9A;Va1sKK1Q7^q27Oc{ddTl%Z73O;}AAqgr_48WIH0i6oie+Z_NM?%RN5wInA{yG61Fnt* zT&=I!;Peb{4B;se-@D5j$dXE&oWg&OzkPfcVQdg+;P*|Aa={*8lf?ze4`s5y)r!gj zC7H?gh%~NQ@Z(GcW_NeX7zh4NLY>Z5x46}K2)KYpP$B@N`6zMk-S#s3#eO<(<-ffY zZZq$tz0t2s>c8L~0nBM0$`39EuOxfwkcB3es}3X-C2J2y>YAsZtYwPrf*2coKWXKA!Q*c291Hl*~{Nm$xX|@jwrM{wK-%#xMtCEK;V}ehAL}Ry< z4Xp?Xu_=gIOkRJs*K@QPFn546AN@c8cPS5%RqW4kR5c(W0H0>yDmj6 zgxXpJh$GA=}L8Rw7rQrS5%y>swAz26jRm1lEQ-#F=jOtZAK z+yuyd0<7m(p;nX6Mz>3T3;c@_tEAj+Iz>jjj;Cb7B3QW-x7~}`Q$(L)UZ`_xNTV-D z>CGtCR+nG_!3j-R_Mz{f{c>ts)WGu$#+^P=zhvS*88)!^ot?M`t>5ZzGw>EWZXnVe z{>nhN4$Y4jJZ4QoKQ~$ffMb|T4cwcu7Dgf5_V}|{rsKC_>&hWPT1_)Da2h=w=8H>C zog%5zqsB?q#Q3UihDNp)&Jw%QZbA`ubyG?=o!(#BeM2D~@Gipp=f87CqtLIrzZwlk zfL7l>qNlMdkR4Z|;`t;l-M*9fQ9shQ;=hAT@eHlNSB*Y1!1WfGxlKlk$4=6 zpBEhcxK1p<#FSEx9ay$DInq{w3Yl|=*Vk_FEH6q zH$c6wSfS1*C$x0iW(CB|;7ahV@z8(noDSz76tcdGu!3gkxi($^{sqD!CR~I(X0*PT zc^Q2CW`UqjbP0}`29mFWpKORG+)mH%TOv+tTS)Oq>_hP`6878L@eYcp#Ja94g)1C0 zKFzKc(aOyp^#v68Fd12EZ}YO0OHU0adx(Gk8dxNxEdvm&>u}Dvamu|OlQRkuIX5gHx$k+AYO|PMx$!ZPsR4W&6hu97sb8FIADY?p8@)N#ec^3 z=yhjPGKe(n*3iRT;#uyU2kiLM3mWH`(=xhOFcP-6x2DCCxE2{$z@v6srF=Kn^kby3 zN7HZUf8_wt@FFAc&vDHzZE~W~$8xvVJbqM70~zU{Td!FurW)TFiG1O%f3p9VYqKC= zmk67o$F7#P%&&uUvf}~8oaUWgFxEJD-V11B!;7+gml9pi;X8$&Si5;F#VW$qqZBh_ z=OB8Vc~$ej7MYt|OBM%7g?v{SvNYA5rh=(Dyp~jT7G~h^KAD^vt2}e2^ZxaW=EX~> z?Vx(y5Ue+6a)gnp1`5ncD5QDPw##PPSMS+ikK8Kj9QCw-y{WD0~u;Emzj|OWPJ#SNX1ew=H(zeTp@5b zhDUvcPcfD{MctA{s|4_%_|HZ%f4d33Amhe!B`6a438^|mttBg&K0oN>iQj`xoW_0( zH@w$C6-9{6e9dwy|1*PS7m6X72IeJ*(5=iS*6lT~>%IFIgQ9lZ z!4_vME6hpTt#M@MotbxDk1!bhWTG4839YsFf_n$KW&k)h=Zc1I+F0F^j|>ca%PP>_ z-J3oEc0s*)A22T6{`)zMP|W$ydpJ}AA9Pxo*7cBXt{gh+OJyYX^D0KIHGZCNky$q} zj)mZW(M~brv#AwBMO{hK;|FWFUVvy%OIQoSc$Ce=p!n%E_%2To)h#wY3tF^Yd_%Sf zZ*caBz4V|zzPb7vV@W=iMw=yOK2xDwl$A{$?Kr=AQct11gFPJ`Lrox;&DGbo4du}L zb#rHLpiq~-F_tY@uwOnW?nM;9h&pfh9>r(i>l(*EX&u zS^DN`{_*eQKSkr3qr}+H1cc8m`s@HI`Pe?<eKvv?V2BA9J)jjOB%io06<%1p(R z079h^3WCd#@n+BopM$~0SUj6MMS(B4L`K8=*nSOK^fK@HZ$@vyKQ_0t2w6MYbN{K}!r^CS1jCj&AyCqOiHE8+o`;}1Z8ljnB^AOfPJTf=L@$1*JMrNMN z{Ssi9)zCm0HIEljfDd1Zx!2{L$C;k&Dyc~yG43aIrzkii52wEBSo8Y;0|CeoJpliO z0xT0Dhq8akcCz-_lKyvIc?VOV{dWD$MS<}xFDEnA2>zLFqJ4e)hn!m{OOs^MmDtlrnGE$)MitWDh-a(_jy=uA+xk&xlY57_;Q>d9VBhUvdIVIxx}w zioL5Ej;Ae%m#m7$C3e4#=1?T}R0`D#Po*WSYL80RA(d}6%)5L8d~Pj<+)x87J?B~N!!LE=JcgAwqh3lztp0kj7Q5ulaCEf`3^rJPR)jVa zp}hV+X5*OP9m&-HZuYBR!ttba@+F(j?`4TYnT(7K(f|`bD}jh}F@-J~R*Hk1nJ>OO z=#RA>o12#&N8e4-xW72qJO@634_MGisEEVgSDU~#a1z`$p>6n;3crL{RosM;y2BLj z=UJQ}mVSw%V7AAMlGDWJ;l~TbNT~^0DW{RU$mB^vq9|Yw)931;q-UIRgC>z0ab&kL z#-wfYrk&j6iL(n`=%!dcdo0T(Z#KUrXW_BSXqR}Y@%7%IAHeUAF0h(o{1oGo7sQDl z+^kLzpr%?GGGZbm0~5g;5Q6~Uy0c{%eBNq&g9RqL`xv{k8(2oLjr;8hi}a@5M}#Kr zJI-?5xKnGw5XxJwDq^1J?;%_&OfKf;*AcU-gGP7~*Ms$q9`$^SXJMfOaT%v!H4@6F zIpQyA-wK3Pe!gQn<6T7#^*Rqbl=W3&XH?r$M%8h}2-E4b{tz-&u4DBgNSDP7(2WV7R)^u2eQweMRJ3*AhzlOj(?Hytja zmzzfzk0Dx=(T6N9+(@;es1opV-}wF2`bvFh#<(ZXb>}Kx4;*H6ALe-dY8rX;i{!uo zBm#?|Gxi#5E@*%j=hkI2sGk%vv=p8Ejn*DFMYnlzF$cR`gJFVRV3|;9NCVzYLSYad{Su`?2W ziFkmZvNWQcE~;k2A}sNLUI164C8yIf9q`>v--HWOp89$Jtr~@8S=?&4&b850LJ+QV zb7AE{x__5=Ubp*_)4ao%iQML(ys;jU1F7g@nsWgD_c>@{kf1nda`ry4-KfP*9=r)| zZTHZeQpwGJgKnwoe111%{~f=6X(a+7_lx3SXoo^kPf027!6adB#WO=Ciay$g6vzpt zbNcVKER0F|Z-0EZ#fz}RtRG=i0q^a#=avx!A$YNVCX@!ONhl;Ux&7zVZ*_dbTRKL1 zoZIvn>F`^xsp1=xElHZlz^z(chB!p}6P%^D$+eN!^^cD1!8xi4!+<3AISFu#Gj3}{ zwjJ)(?~sFZ<26&%YDwM&SN@PP(r^*LYi_`*k?ILkFk%P^`tZJZ721_4Fw)R#Ipv84 zDg8O5@0N+i_X^u+p7UYA+cReIpGiNZ1ZGO(29HE>J%? zp`keimgt7zoQ7BVSGa6{&mb2))}CzhuQ9;eiuNVW)6WQ<8rxy`e@uOaSC!xMH7O}w zlF|(#-QC?tHv*TEmM$p)>9}-vbLo%<=`KM)x}>Gw=lc2n)_U(haGy2joS8j)X7(sp zQaikbK7&*uvgS4be-rPO+xo-2+dg0DV=(|KCc%VyCD2`S)5&YQyz*eV5WbdP_ zV$4}acr~B*W<07sGI`HkvL#1iv6k2?FNkyYLl5KTc20U8S6`Z8Nx1^>lT zO8hPBiOl5%2~r-jiUie9y(Hg7d0jl}?bC)|LD_gxZ5cfaoo`ylL}`aek*a8~0g5?NVj)zkt(P`pwNm4)~fl*uCggq{H_>xgF$eRfn?#6&(V|$92Oj zK+fj+K-KSFk?H~(S0#?r+x=Cme>U2GTc1mmf*jtnJ~$xFiI6EfZVyDbg zrfds7tx6ZrQYW<<OS*l~$K7*T@Our;75~EhhS!e;~5bU;# z0jwSiG;G+#`vp@I;D#NfwZs}laPTfPO48MoJ$}yzY1Hk+iLS-Lf@tO5Sa*vIz7d6H zW#c9=>*Y0eC?M4!X!!k(3Os;NIH2$8MEoF;vc6ElP(a?+rZ&<5R7tX$6jLf(!Bhs|TnWOyf>O))ECQSYW8Y%W+BBY#nA<;iOo*3c7| zeYb(55kIh?BZUedZbh?6*sr@?Du2{Koi`b^VR=GaV&7~k;O|Df*8)9_5U^xVoyQ3M z22^{qfJxk-mls;K8l#@U+DeOwyWT4f_z)f9KR|dpehJ8kfG*T9?tC2mVK=+0{FVom zS()#mDWs2X@Yjev^nDm;P29g-v9y4(lKWX%BXF>$^WtJ1gGL*qjDcLh<8jJVM^n#!26j`;TWcG0 zWHjyAUDirs!dn^e%*un>HuB$_$bm8Bjng8q6n_CtdlC|>xwg%hNVwLZg1%6SMVBLr zVNvNk`y`q=tM7xnb1t6eWC$T=VVV>GS6uR&8xEl8FNp9^0@p;QD2@;8mEcGgCI`=v z8J-XFHvmn9X#|KOd#jY+k-^3(%>Pb;(T?|o?tr7@emVGVKapvL;GHfL3Mg9_Ax-gB zV06%`4JoH}AD0>PRAvqdZ%!z}>}Q>u*MnbzW%M{#XWbPVCPxNK4tKzKV z7v6K3eH&)Zg`P8xwRW9eiaClx?+FJ(pLAn>T)lsH2ywpEzurUX?G6pe$@J(T#xG{1TfE zN<^+1)l%LA1kKW7)F-?<7VbBtU3AQP%(BkWj=ALdW?Yv}g^YS*)N!Ihi${Kw&*CS` z^Js_K?iDLuyN&RcoLuO$!qXRv0zK+OIaV6ME;r{;CqEr}TF@UoSeb9M>BieeLRW_h*Qi$yIOfevcud)EXKiWYXCi;h) zt4KB?7}z~Hn9D~~^&uy988W;9D@m;)@2=Gv^|v{Z$_!@?geaj!)QGix_1-kPN9u7_ zy88-WxOu~0P|o!K@Y0Crp&k^jhNhHw;9@FU`k3G0N*=;kT-Go>umS2#u!G@^PI(P^ zCr0L!q;2=Lwl)qMROvB?gs%uVbqH|$I%V%jT$hNhV}7u~?~DS&czA0WniSzPgVYa) z)7Ja94$5YUywk99tK+1 zt!KcZ%X;fx@GGFNQN`ik{0#2gZ{RQzcc#=h0_AIIKN=JwYoVM+lk~=`ng`n&x%ORo z{f+vVH-P0RUd;&=*cbtZfcQ!+jtH62p8Tv%1fpK0$$h^+r)eP~*wppMOZ&6!A=%4b zR&JtbP69}NQ+T-XZ#HxcwODhr0)6CFIB(#XRXNnK8oGJjFqr_!ZAYZe<8!$E)v9h@C0SO z9A0GL$w1^fRvT7!_RC%6N-#P4g|qe7-Dd>6Iz4sBt(BJe&RD@60 z;+7MfMsR}UAym5^OlE(YRv<8@Uj2N;=Z5GS?4r0EsNEH*dNzNA(^_>d2Ub zG#@?@c)kTU@H9>t#?1tVGDA2|F0s~0SwKE*IG`jwUPlljr6P4?=2(2POWd& zemU`$${Q;Mt7ek@0+2ZVV3cwuD*_Kii%WS@>7drmePG@L2J2_%=o^9Xn4sEc4A*x)C2Je*XN!aeo4{;Aw~Ey_Rpv zcyl*c*zB%gs9F9_hfSuuejRyNP?*ubNcnz`N#cV+*`12kM15s~PA;tLa$>*^BC)B%9UFwKe(G-T|^Uj5BgiHH3Z|%_|V014{2_- zmQplko~lr~d2>g#VzvFt*Hm981#nS^6*aI9$r{W_8W+$MC{zwg4)N6jI$+sQZE0>_ zsMhV^*Eb2n1S2Isqy*g10osCowRlTC*Cf*XFU`BqN?o)BGR&GVrI8WP!4aApkJAeJ zsIQ*|FmK%+=0Q!{82>C3xkX+7w>KzKsp|;{&?XygZEZnf_~x9a7KP)4pbkacBGyUX zjU};{h_hPvV+6y@>VJ=*Eh2Q^osAm#UoCg^6d(OVPSVdz%;Zwq=+xr?hqMW^aI(+O zu9Ht5A3GJHi73_=hNcotIVywizD?y_1}E3~m9O)Ow3s8NnFxBz&hDArek%2RneU}- z7W%YmJX&8U{O03Rn8&QIJCJw4mjhL37Ct${jOUwj7F~8zz}nrs zcmNW6JbCwVG3~DT84`^Za(kI4w`ImP-I(he1?w`{TMxuDUzDF1M(mja%$;w_{Fb}C zjONkt_!l2{ZI6je>Li z>^y9Vhu@r^Tm59}%unK})M)!_w9^M&`ZahlepWac+s0U{PLP4 z_>SceO`Cj_!dB2!0vz8Bqc$`NrlW&ceeW*^MrsoqWn)P{{6&-6TS9NP4vf*{l-lJ* z8htiI#jaS-zRxBm=2S84+uFG)iwL-6P?8d}H^Xk1v3ZqQAC}x675Je$^XGl{?28W2 z$51?(273tAh)5NFI4*DhjseB1SSu;|RI6~E0smu+)`Et1HMMVkme&wUpXjj|LNC1O z<=xk~v^H=eCYZzg{)>3kMr}RO+|%Q7&eNMa{b^}5!k~*Owe7%Z^v=9ZRaHA?y>{N{ zZ^Sso=ccO>(@xrCXMTzk&pl4OdG6p={F`R< zLOl0bf6C5m+EHb}+*J(M*V5eK@Uv#(Lm@~Clt97Ai##l$igXZIem?!#VADOUz8823 z-;>65Y5f&V?@`(y5pICDpx7)n&Jq5BO`nKUV6ru>)sOB$(t-+Z1vTvVb)^{A@6jWV zn8zaz794xpy1O9|0_WWo3FK~(WyicE?O}Yug3vgW{t+s`HJ%(J3 zn858vYpMP|_zvr?!+E-0Y4v!y6DcW%NQ7$Gll_Z~%}Vhypq21M zCJ)uP|PXdsk_;@lzIB;(AX>a1$3Sd+MVJtyZMunSvsR>NF6>66deIFzK8ibt|} zix&&kg&vo*!~5D(g_D0O{k*!mUMwIWpylbwON`9Jru~yiHqe5c+P3OVq`ltpnniP)hL=>kZi}Dah4s zE=_$??3s>VCxhJ(oqTltCJttSEU#?oB?cXX2ep29Zcv>-p_66TIObbXV8cc})U>g5v3l zk5;P;%-&U}(ZSKeC9HRAlZ;bifi?GOKwf)rWC>MlVF_{oN{P_04b~F z08jEIAA1F$1AEga;g~Etm2z3SMnIGUIoa?&b3W^rr-sYLG2jd)w&mmK176J$MVdSu zr%{4S3A#6L1b*}83AI>kx_#`+QA}e!Y_~9*E3HX$0zWbR*|5@7lJ5B|Y|%c)&E)!y zA!m-yG}zFLH2WX#2lR$3XL{vBIkUJ&jsHfblI1Od-fCYS!MA`5(0?Aev+w82r?1Cu z7t=O>KEcD}j0HZd_%;M8q{>6`p_O`4{XcrF^k0w*O5^l&9BSRmg#W7CdD=!v*{hz|&vegvd5yFN<(mFi zI{VQ7m*t)0{11ec_amS)!A-x`$!@>rW@Y@r7Jruqi94$kB!IP4u(Q}kM%Zm=w1`E~ zR{m>c^&=$4pvUEFR&7eth@U9SSCU)sQJif6n6eA}?B{VOsA8OmE+t+m6yUq*k7|Ta z_!w+&P8Xz1c>fugnmwGir;~#NLoXuohnd#zz|7f5-rt(;!4NJipO@4irJS0~{zC%|)Z_>Em1lu=5!Ys;P1VA^;RF^yjY=2sQ zVU~5IcN)=bQg>O}zO=&$+`OnA8qeGxuW*6gr17`%_M@yWF^440lXEgGN-yN?k3Z=K z1eA&Ta|fvcDmVSnO_?{JtY3_7&!;3YVe{CPO-Xni*W`h9W_APqQNTnfKriCU;V$2t zta<`9yPdpUGXM^Z0{eMSuz*~|rjM4+F6QkB=%b-lD=T2by~!NR(Znd)#(5VbUR{Z3 zrU-gHP}0P9i+i@S*J)(PK>$2^7wLlP!1q}72n+ntl&Y+*b^R^7-EOE_+~+(CR|k_9 zLCdF3Pr%P3F4{PX&e5NL#%pr~wAYJM<)LRR!41tVkmZA?Vs~phB((YJVl#V{!F<{NKbg2a*rfy5Pj%`|e$}#cY!EdrU zO7Zno_P2svY-BFytzslwm*-DTH~h8!8_-wDSYGSd zq3XD-pFSQ10jWS@9e9Fuez)ZO1P-~zM3gt)esp=b6tHS3sZoD+%Za)7KmjTI15_E& zK#Z3#osojn`0g;jsNN$)u^dQ!{FgWAh;LLS4a=;&!;21PeHV!sUc+auzc|6iFzvDJ zw+RzTmGVS>TkVny`mxKJt5mj&W}cUzZa%11(HMY6nN3LhtR+3xw^f?a!l%^}D_&{w z{VpPo#hLU6$X(F?rJI-^Na`_Eu4Aakx|umYE02!x>~>O z`XA(e`+4DK@c&VISX_W9!!uH~e+I0IB*!cvmTT}BZc{B_fjSVE4xLnpGc6>*$s|-f ziX|#WDl-!t(C4g8Wt%bs(Vu$vV1a?BTtdNZ< z9zUY}@EROthgc$!-X9(je-BRz=xfSqN9?`FacX2?j|o2NmQLO;tAsN|wZ22gZzdYhY^HCEhR zZhCz9S#^{5^$lZH>cGj#9 zem1pfhKKt%8A0P4I;q{?kDF+zd(}P4{Ho1OCv<|4k*i&rUNP%dYH`|(!(DejRXGWJ z_chuEp#Imk^%hHxiUe5PThaDXkGrgNgLK|^JmXO7L7F=_HRxtY{pXN{(kMn)-nWUG>SE_xQnRfqn%@Ey>p4-^_boCVb|_3JOxefRzH zC`eYp4v?HZLx8sK)MDgH|A8dVujD+P5&Kuf$p`+z7=TmQXlfDTpTT%IPV3 zkc+4QW)mxt-Tz$iWjkE-F{l@3c}AE0HGWH^m6G8j&o*H}7et)|Kts#xJQ&uLThztr z3k?_QpWc%YuKL6UIGtXe8NUx$^TiLX{Wii(xy5j0k)Er$Pq-|W6&3BJ=X-y1e^gUJ zxX_i$a>js-@aouhBP#-F9 zCG?*tteJkr7PlfCGk?V^qiosFpoo*a>G@|08Z{@-l zecZ$>tFBfVefn7tH`6dF!d&E2$66N5qw$xfx0Ex|4^v_M+q1^&lbSB-Yr*|^F1IHR zd9B;HQXhcS)gS?8$}~RU7axx;V$08QCp>8mtjz5wb`>J$*SOqyQ|OpIc(1-Sg@*}r zgTW?&q5QOLm1^TiENX0*>pe}SKi46rz^JSX>sP-tYM`=Vi;z2d;XYM%KpFU@(F;n{MA)+Mz$)P%bYbf>?-13j%wUk7C8R>Ka(25QIf>p7`A8?%kxw zxrjWIqDzrkC+ za@$cd^~N3xeQO6SUMOte;j>X*!w|Ch-2@0ZDOv@hdy*B|1aH0ja+%FTo{48bBsi=KkT#V&FgKWfIBi!|z>LCI zn_J+{#1^8;|MOvtOPBfodI4MK*?H{#;#~E`;HX76hxQTAmEVYE&v54%y6vcbdMXe9-BDQJj$*%aU*SSt zP9t0?Y$gj&9G4=&ASdbV|PYA$lG35$pkGESTtu*)IdIr5)h zu4X=JI&JxLh<>##6 zw46oa`4H6Fs6lq5R6OECqC9f8JMYOILD2;cWQKS=;_lk+3?2sRvPRT*-UgKpHFw4i z35TA4C)^lvwy|nqVZ=tDuNa#$6a@69HqE7B)mQmC6eSs#_diKO_FSnv>JKj97Hi~E zqVUsmz3QboyipG2Tn#2PN!ZA2{4=dGS+_1ZazqDHAfLzW4%TvMz8~PHhz%ARRj;6{ z&n?V{?y7y~4{7ORUb}(pU`57|w42{XpRlXp>A_sO(W7fS`toKto=h+h3x}1$- ze~?$sC+~g}M302qPC8`6f$;HhPt=C+Sz6p5gCvZC30(CjE?>f3pIc{@FPW{QXE2PiQ+f1+qL!6dT5vJ$y}TINn6|}m+M7dtT~hFUfB@VVv&(IrM5%qdv4EV2%wNxWU#O# zP%BYUvRhK;JA|Ex4?_rl`WS1SAl<2p*!d_;m^5B{Wy+&BonjAQj*-l5nDZEPez*gs2g>y-Y2^=Bovvq33RL!r2h^* zk-D6Z!x{iRVeYdRb-t`W#QXE2Hq%5TmWJ|*pZ{c|SBbj3+uL%MF|R1AiZq_nMrfwu zn#a!B9P7jq8$P-XN0@}GM&M_EikNytT^}y+V%(Iohy*^n@6#=GW*u|ki3?{G?OM-`rxEiOv%BTTSSrc~X$NripNm`3X8KPyV zo2u$&L7JS#`q4m~6ua&DXn2(wg5SBDVZW5n4M@7*4~f1|77fJ=fJ8H_%?v0rYZct3 zl&@_bG^}5k3@RKZYogsdE=mU(4yeR&dD^PBe}!Na`@27V%<;P!@jpW}=crkP1fK@u z=(P|8dyOBIM7_T!)-68Le-8%{lIY>Fov|D#N%l!4b^M?sp*0MAua;Q{+jWevVSg5M?|BR``)zHvpbUNknHB+S^A+qXTN(4t1)%L%PDaW`skp-yL9KDL}6VO>#s9SJOs zU#=A;PB~3`GcW9{SQk^ONV8Q zRy{ZTY+w8zW+{;;!@Bl>f)Wv!ts z8OIX?q3jzU^m)^Temkjj%5+Y>Jzmt#XTF|DqP&E61yaWT2>lPUCI*{n@`8J^T51{tl z2_pgNbY?G6hn(EXp1uRAo7qVeSB9j+l)XFLx1f6)26>e}oWW*b+GxW;vN%Njip=bR zh18V9fQO0xm!WYRKBXHRXqEMDoSd2Ap7By~-iHcr#?J?8hBr6-F>Y8XoMlZuP+jvuG zwxV|CR;iwej5ct?1$SD#F_m@X7$gnM-Jhb{1*Cb5|+!V3~Hg-QkIPcGM#x zJiys+K|6CfmgE(K7jX0#wMb)7P zYl&NdM5ml>m?FV*y2E{NGSs9oCq**)*_@!kMQTSVT4C&_wLsKH(crunwT#pzRbh&N zn~wgj808R96y_X2u>qqPWEn)FmRI=7n4?h%C?c=5WOUK@R&&}SU}xjsOg8_CaS3L0 z;oERKIk=$ZNDtb#*JwK>4TD!hUb5z%NI(DuS5$X=n)|xyXrJ(3!ipmn^zDSQg!^A2 z7~_ou0KAR8FGR`8HmNQzI(2OtZ>`Z*su%g~e(|$X!<_5J_>o`dyxiq*0hx?O>o}Nq zHW(4D@XGud-pDw^`KG}T(UIGPZ|-LKzBX}1x8%~3Y(jVEn)uTm-GPYneTmXz=ZvtV zkq(V;^V-U8F{$q0@Iv12^?>4vf+KRXW0w>oh+Dc!4;@u)C+!Y!vT}$3_Wkzutz}}Q zj|A?0+&1~~)Uvt8RjyRxP8oR(kL}=W=;fH(GF+cg+;XmX2q;IlN?+Na*&%t<#Thbi zfaNSuk+7Tje)HWXDZ9LTuZzbahB*YMs!Z&$ocv1b+by&v*Lfb)LU_6O0d-j!irFkva<5r`nvH=s?zN` z@I1u_V9kE*4f${QIcw^^iCBKjq-e=`h3LTD#O?NUy{PCNEKA|@_4$6WTj2mAz;$_} zf$zirpv~aS%pGsA1KY_kTQi!n(0cDzW{C64SKhxG-qSI`Pm}IxVKB@-?34m?dmn1C z{e?U>0t34v2Dxp}rxYjSC8Y*plA=$Da6F!()li$!KyCI8h>?dC)z1X9*RkvLF9C7kKuuU zl4kg$#!nRG*NXaGQd-+4C zMSJlF8%!BFf~jmXfPi{UjCX9W440X?wYnctM( z`3<5YFKf(++-^Da5@ZRt3Dul1n9=DmDXD&Rw;(QLoyCBMkHCTe{V*7qBr1N&RriVNNKbM~OXi`UuQO?^ zM9d_luwMCx!iYO-=k&()W8YlQkJ|@N=sp2gu$zq_>yYm*De<7gb<#?44Uos1TUekg zBIGU`UNcG6J>(nug4=cw>ZGpWenkmcxOpr{7P(t`c*0(UG z=hhJQSz9^07FY$xnsm@D|E9dx_c0LU=He z_lCQ)YoWqSO3_Y9AM0D%l=8uD>CTzyZ1zr4oTPPeOVqc_{i&zqY8{#O7?IMneKTq|u8$2O@aIEJ7U1|jc;*wUGauUvkrKJ!2wbezf+ zhp=q^S!vTY=ELI>0CPoZ7s|%WmL<6jq3$7|_8C{lyjul1I5hd4E>w}sYc0y{D8M?h z6u2F`oD_XeANJE#o+l~nqKQ}p#qQ){bGhEgAD|z*X1&4u4`rxf=%sLngFiNSoHihdgY~X>ZD*tyjsEOg#7&#z zJlR((a2jB(JR)hZo!P*A|25dS6km2KgHL~I)1E9~5-_Q2)ROJNBJ=H|x#3qQ+T{05qI7` z5*mp1PP=i&4STn;NoUE_o91;i$Rp=dOrOj`Fl`2pk@#t$yVY2sp{eAc0V6r99L0&$ zS>ny4$G}t^AE}Zd*gw|`SF`RUHwx=s)2fXXx4oj<{cb$T%X6!PtcLoA&-v|q+#Bj5G{=V# z)p}QsR(;8Qo^Wr&0Lsv)@Rix{rIiz}$CHbL4)M%X5a1i-KI-8A6BDN9fO(3UJGlxDv)WB~s;XWv_ZBK8_A@7c- z%|_ML8_BH`is8&5st3laSt|THmIf;;P4-2fNQ(;^@P95W>DCjO1n_{?@Hj$=O~+uYNO`U zvpxU1z(D}bVfJn)BWs@l2lZQWv?*4d5>kCx5o7Gy8=IMNaMoh zm2?=RKALt*F;-1$dGC&=hBjTPm-0>lRooe>h7m?Lz74f*_urqcSNj~9fyy1LF=MRy zz_+LcL+zu0B>@3+fiFm~>X$c-9cRr$4#R{?S&ak!VpOpzr)c4sLs*7Yu8+H{?<}*nmhS~>)0sE5#1Xk** zyg@eRc3ly`vYQ%vax1=~Q+FIr92ssL;F8aNIFPh)Co(hC6}Hab8s!xgiBZ-1O&R`| z;0?J0fnL0(vU?0O@CPQ$eQA8zRX;njntjhT270aFCauVYhya3baW*ll_2r*r2JCQWi&pk^zf|JS6VY70Rj3SeapCoB--M2ZfhcXf}H%V%1}3+ z&di*w&~N^S4_3Zgx$Th|or^%D`(2YNXJoYgm`>#*wk#<$fiyB`23>P~fq49onvw~d zz+Cb9?UQ9)Lb4|o%E@8a;=(q-5vPD~2+~Po-S3tg~F?jWca~)3t zf=xZ~4W0c~yKoK7Y3@Y!nY!~;vr3cPiiXlLp9HSv$3Z?O4uiT2_*WR;X4V1ug|*1_ ztaykA_tRpYtH!~_*5K%ED?)x#*)P(_@`5$>7)5?Q^MX$V1P~jAmK3dX{dJkiVwVZ= z|A-I*QJMc)WeHn?=STe)oN3944nWN+gP4TGc9q9=ak`#X-nAeX;(Yd__)h~eEyG$z zAg!4>&!^4Q_hyo6;s$E3Fo>WC%EG>NdqU9m=`&}1i`zC)={k)1s+QG{^us)Oht7@5 zNu8BWTiKCVg<690k1<#N-ZdMr%{%Tp32ep%!QBB&2Cc3ut1GrQ$IHvouh9R| z{coTJ5k@J%7n1r|bfZm(n!Gpe_$5A^VocIPc%NHJhZA;lcpb1hSFPdo@EPypf))$xyp z=$aiV5&QOE16gy}AZfZNOAx1xXX*b%vueE*cMj~I2glDBJIo)~TF!xl756lTbVd*q z<-pif3d%lIs!L-nCG$UgH+?fgpQE&w?HZfJmiFF?2^fafR^Sb`GBqCWxzp3y?n|Cc zW_K?~I;Ov_y^L{t$ztp%R*#r(TZz%Ay|FDAwJFWYNd%>yx4QLy>m;hTJtvN z_+B~qVR--%9dic(L@6u=q^LBnp<#>>ctwrlK#}W**f3pRC&G}KzL{L^%7Q5o>f7Oj7 z>=dhc+-ceg^61+V`9yk~jgr8}>~sXU=#014oF+~%Ykv!s{-!=IU>5=t%D005a=rWA zaqs~kt(Z8|Cl;%TKhZfvMrzoqLD*_#$5eKo*$1*cVO~!frA66uS4Wxe?XbScBH4WU z{x`j?9u9d?LA_%zOLMsULB-UGMge9&cC8Zc0#H1fZ@hj*sV$}m%Jwl){DxN9Ohc{-H0M{H+8<;juu_i>1ZlHv`vX;s0 zq5pR}&R@#i-Cbk7Ve&cI{{g&VH}Kw!QZc00K(0!V&uwS+II-e>jS@21p0gsS^Wa!! zi08arcEKtA^fOMn_NEMb^vqnVms@-J9pH~I&jdYH%nX=(S}z&)er$Q*4!g*+MX>>1 z=RG{&brfKdzbS{VJAgne29zYW#<9?NRV2!wE-?4j`qJZhT9$&fs4BpRHald-3d`%yGvd)q3g;)xm7v59g8< z3Ox|tyQnU`x_|tf=}>*8P5*+H)D?uY=6v0!L69`5L3BLwDjN*r1D8cnuh$#x_1&$# z=&kjv5s9XM+S}_E{#$4)oL)3$E zg306Mm!&dBQnN|-S*5kxwU)x`W2zDzeXSVv&kCgo;Om<~Zep+dDrLQvS z79lxzI$EfLrb)@LyYh#fnjbZP*<{OaW?wsDU(Fdbfx9^9ydFv_(M#L z2Cy(C3;Dl_PvEN`^~RL>dC+K{w6vMK_GC*ck6TasVa)o|I*!h&zn_ab>WUkU(bUZV zyMKI_=d`p&n;6KXa?Lw0VweuqvQ@n?pIQY}B_SCGQ`f2C7YeoAm z7FcgP?5XtCyh$R;H^*(mg3Ne=S%+s|ug*Q3#d!9v^1_M_@XyIzm1|qUn<-Y@iu_Ph zy@HyGvRDONj8{LuXd(;N=aKi`2|lzEv{QKGD=QhD#qAy^`9K9g>deW@gbDsJKINh3 zlaxWUQH#tYCv)T$_trB8{u0{`XzKW3%M#2fyEY+&`|f36!Q>YI-V z4)!wnr<71p0Jx^cu4ebR_je4GrhYPOJQ;GrYf2lh%4K!-`2v*5o^P5Dk~CFPMp220 zi9hPDvN0M_!RAAR>V+8JNYEyKV@8pk*F{EJYw!1N?U-J9BfX=|{(Sz-0!$hlYIxbV^GwmrMQ} zBX)vr0NXu|bsMdPn;D=Ob1t zZ>QH8gpCJ-vf++1IhL}@YHO(A{KNKHvy}o_%rf*}F2>A1ua$6Ad_q=i=FCQfauQgK z8|HTaKi<@O)MW-5O~qFcJr6A zGbv`^FgZu1m48QCCT^EcSNzs`ds1}2Cxm8i0qoQ@lEO>%kuy*pa9brB1Wow8kxOp9rMcUbkiq3n zpJvu72tOh+_ue&pX&w~v|dY9qBPGG|qhm&nrv zd8w^{uK~_4A4qZ2BiJZ`8mv{Ar~^BS zn_eN`l%FKXXz57p&3?(EW0g`k4uI&6F6HY`IvF`u|J3-6r#$y=7=Ihhu$#R~L7*e0 zz-lUUp{~}5tjx3+1V)z|Y*ZOpPn@4_IX!Htl%_N4x`oGFhboX+u(z7vV8I)o+fF&d z9PTd6=MU#>H9x?vDsK--{^Lksu&{pA@BRi#(z}%h-}zlXet$$<9uVtMnb}p8ky4EE zbk%gego|yATF!5yUz^bE!)a`-a_R|$aZ3y3dR7{jWaEkE=tgG~K0#hGYX19Gi-o z5bQj!7_M&VvWdyrj@op`EDA69%0qqzjkf~Kl0-FQ+&H7Zn2}I%- zj(lJx*1N*f)Z%Hj>VT9L4NE0gu#eeSlKAZWo}mS{XBAfc0s^ykh920FbCGeInO9kL zq4oI$KLEzV5HB2yw+RAS2{pjS$Dgap2h;c~+<%Xp>WH{gfZgLudz>EJZ&p12Dqrsv z)6%Vqah{P>6UdyZx(#BkG(cXWQ_fI2TIi%q2J^U=do};BYpDkY$Z@H-=%H>OvMU{3 zT2~j((*){O6O>ya{gGxG>8;8ukJAsTKGYuDag*{>?Wg>Bsj&e?p&RY{RE$P%Jyg8| z`W`l8bfdx?m@K_hx&zeJE{lR7IwBvQu|JUISiXp|`bD6}-IlMOZA@edHoTl1?-wqR zRW#pxA}mQDNgXn+GwhDkcKC=Ywp( z=|{$ss%s~CTc)p9{FdTi$FZn|ZJ7v5>25eaW#qisY9kM`LQYf?`g?^fbw}r3;o1Bq zhA?|$|JrlrYM?=_VV+Q|V=$SO&h$sYiifz=S{9#KFK)9^8qEKKr}!rW{m2LqCcizt zx=YwE%ae>IqED|*J9$rTq$u&!$KO1rpjA9|hV9&C#qvGAm&b2>dI)&@mrVezbj4uD z2{zLh(76!`>gwZL#on=(3Q|4#*X|FZyh+(GrQHB8*^d8DVIfFNUwxZb`jhjzno@BoANgh_} zA#wm~5$ZQkDH*9!b3OLy2>u^eUl|tV_QlIN7J^EH(j}crcX!B8(gG3!Lx;4|jWp8T z9YceX(hWnGbV)bdJskhfz0aL*ev$Xx@7`;#^^3KH59kU1%*DOIt3279^M8y6lQabF zt&C{s+h$d70|Ia50$OHc zk7hVw0{)ppvO3xcM)_UMf0A%|)yrm>kO7NY&M61R7jAh_Ezvo@lWNtux~-eY%~X1~c`d5FyWN?ZN{8c(61;Mob?bQS5@{%R zr>w?+A#cZs!_CqFvlv6W$}S}-?h_De*=pV+p6bI_z(l`U0?5d$?FyWLo{8(uEx*m+ zQ9c|+A9R0(=+;GGKhb)}YabONbV5hPt=k)K`8FS@3mmL@rwDJWmtceRy6>0jUI^~u zmeTM^#&%1+o5By`;_1;Y`)*|=n7T&IY%$hQ6ju|(#iu&<7BHQbZ?4C#tN+&pDRrU zCGTUG=3izNQiT684D^j3NPcLm9jQf#cq-HTwOiiKO*ZaN=47@5?O{;pHU0mY6=blU1P&;^n;A+ZS1AXT45V=;k&@Pc zW6%p$w#6xx$n|5uyrE)JTZ~<~mc_Jbr$c2a?jT5otO98XMfDUtCR7Qsz$asY0c{#}Z-V3T( zV*EIWHR_MBMJ(HWhAX<)yq?kreQPX5gjYxbDA%OtXIgt3x_co1Akq(>l8Zi=HhvE< z(b76CR;~2s2!N*NztX9&Ee4u%N&K~q?wN3yo<4y(6C?6^sP!_oSFu=I2d!E!>I8&V zlLB<;4_~DJ75+x}vS;GeI}pv7?NMyG9$8f4nlRhRqO1fwD4Ct8cB&vOh^lJgFJC#S2DyN(=~U`(a-^nN2U= zy~ZeAj|(H(ImYtKGA?~AF-w(`DS_xsbtBpB&$~qV+8K)_se{`uJNY+(OO)41=93qY z;5K-c_?6X84}W1RvEU|w+Hf7&yN`}XttZzkAn^4mp;ymDt_6Qo6siAa0IT)|k(u;F z+pKh%ST=9wY$9^D=U@J-g4O;oCmBgb`dCo4Tj(#E#Xw$)JZCn5k$3P-5+HFZls7)F zX0NuN&@h=k)O8-8b5rD|o%k?TjuYYCLknje$6kNG)agr~NtZ}j7GuhVt?Q{!W{iJv zi+0gG>XzFyf2G?~*z;PtF;>uDwlYXekDjkIJ6nA7{QpmL(Mgtd7;11P926)H1**mS zgUg!oyeJ3aLIY{B_pfuLljB3jj-+sGuGAU_%Dv%NdUq#!_C2)JvYTEFd(DXeCqNHc zq@LI(rw$l7Cy)s&@Z|k9kvO0}A6(-!drnY`t3PM%vBfYe!{({$NI$&iB4|peG+AZj z4eR**D72aCJO^l7bGcq#Tam@Z_z4|wKq3@}vaI{yoB7v%hlXrm8 zT?3fH?s_8 zATXdW?(CG9hROH*8|1V^ndVY@CIjiPNM|TI)T}Y~$S1cHltC9x)M^0NqrCSM654Dl zP|8@=Z>}*3rWNm@J5dMRTy+QLt4Q|b-Hr$){!C?95OEdYU~o|j#c_%^Woo~oHf;i+ zlZH~=k=wY)Jd2Nc(Od{4|)STLbJs%*MINMEN;)K`DB=#hENyV&Tp z0-{u`<#&&u5dqWZo)R-32s!FmS9-)(8L(#pcv824&;wFu>)Sv~m#!H<8Ps4-A$oN4 zj9mNZ@BykM_A-0E97gS-?@8W{Lkczd;yjOgJ>>^1)aMFDl zfeJubM<+R&+Q-6a&H=9>ZQM9C!?MM?IfBwd?=^{G>m%!N(HGGpJd>U@+0rnoG`-my z^qddeaM)oa)9ro08;zP@4ThX`fqPC(uL^&&F==OK7LB&0ynnx>6+IXG0SI7Kd9b`be4v&9I>b2jHJ?U%&greI%`Ji;k) zc0Mia$&qhVqxrC6ok9)MH8nN;CDH6aPX1d>O>M8nakn1l?Iz>Lf$!+q{YcP=Me*<5WcM3^Bh z@>=tf4Rnn`lL6fR6fN#xMc;N|_f`zxE_?j9kjP*mkqFTGQj+VSozFhKJ1ms!kU=er zqm*wZGggjrWKCQ=>T;Vub?#57t|~X8Fjtg*I!)uDG?Q!m=Z@Sw)#miv=EYw5=@6)Y zpr80%PQMMvZz;)z;Kp(FKlQAkT(pvi*oR=ZveO-2KjYE0m_zAGPpz-35;?#(;hao? zyXecgyE~?Ti9&D`S!Z*gY{I3*y5EYFxV;q#9k`ls-7&#gUMI+oOk#Yf+xbc>zUSZx z-uDJ@ScW7*^nNgk`oG8yW@`M#c=HRW#14CzWj9lxhS$_eAq11gkZUd_$c^uyRB?4F zYbELn&K&950jh1gURZcd`9g~>|4lGFX!<8#P1UMLBi9Z^Bt;dOa;bEXxltp<5reDP@}OH9Eg4(!LiB zOHtP`RsoF>naLBB8a!V;gjv`w(VGWaH z+H6!R#qS1UzdCA0e@GpuRJ zqC7bUt9)10(2#=Ak~?zkC2K`1?MKN30)jSt^+5xe4_7xpA4g7|r&8l^niTZ8(Y=xg za`G5I-O_7JW48?DJLJ044+jOIYz;U0tGw6|Z#H|1U4XL;`TZ)!I&_w6212LXo4dWU zK7b?m{(o1+lg@eTwxhFoz&-Fhz28q+DCML-D~f^xH!#OfGg?bw`5khqp- zyCeOyaw|p(c(8BX>Nmvh4mLsM_O%Dh+HMCO|4Uu=>--%ZtE4y6;XMJ-k#BO67vGKr&|@tP>SBn~WQ?r_XdXta1;P%VAH0Es>Os&|mE^&Rp#g`oZA zKni~Y{4~9-92snMp_d?UL3;NF6hY$2$qiS@!0ah4-p+x1ax(dINlj>(klZh$BBm)m z^jtbWjKxCW@D~L%HPvjeom(y+6i306qp<0e>oxUn?fABA)_Px5e%5ZKP(B(OB9Z)uEu9OPbD)#DRm zBh{0-vVeez#7N|{%9*@7@uU10TpylE1j=(e?z=Tsb)ZZ&PR4 zVbwx4?mj!}XHR8^j77$b33Go@8+ov4sAb=-`+2|M3%ESqjG7Zs8OoI06w_A@e|E?0 z@VPPW0rw+O^pc2l5+gXrGX%A0iw$6jAIS?NBO?DRFj4|OH{9LcZ0Ul{vYsV(zuUgK z1VNdn5iugZ1*w4uo2R0k?Je2;M&GJCcqC})fcW{& z%V!$3xWDmfXIL3@R|Xj6CQn2iZh_|8bR?^LN{T>%sd4e&hUixdUM`22}+C8ffp_} zbDYs49Mnm9G$kH(j@FX-5G7^lm|POmZJl+&reJt2>q;2Q()7`8BJ1Mz%xU?t2}iF$ z(`iJf+|wh5r`x=lg~~DO;(#9=B*Xo{!Nyj`i~Re?X*&3#KaL9jB38TQJ`xqvJLYPbX)D!D^ET-Z}r`qmdj7; z*O1Ix$i>8gJra)%61K-h5!e%?82I_k#~j-j*l@d~G?;`42JCh8YL94ZTpR#)w6is? zW!d~40ii!wCqe8jp^Fb1YHu-~ufp(j0QhC`JIY8lZYj+A>lP6oEi7B3PvU9VfLe(c zj7-$;+k5SS;pygJHR$KwynRM#!yi+sbjvkcrO!4lJr9WXO+6A%tDI!qhl!LjD%zMU za);zRYiTUz>K!t-63m*Kf=na`TLkkCThU9Owoj}TJc<`P=D;8d|8GA%MeHX>g-QQ*JvZjOlBUO=)}tVJbR3!;Ph`GbQEJBKj52S$!w8nLnuD-kT<`KxZ&*;2(Ab{xY| z*M7S@q4oA}W<}%7(CgA$!2k%M){|-kH5x3&S#1${_=RZv>NA9e$z`ZdzO{Axnl;EA z0v2V(k61FZv`I|{&#lq!3I9#5pp+M>vYp+Y6i-sWG%p?6f?mA>kyRH-o({Xh*X_^` zHihVAyYo$2GW&B4HPNwegWNfMPHvdha+w659VGnG>rdrO^%x%d!SsWYy!>WlXm(-) z@sU0v;`*Py>^NPRMR#QGn>bzDK>LEvQ#kaJ>VFD3dSWSgCIF(ffIzfM%g^4a%DDFLvY78DinEdwia>T9EW+~Z3HIo|N^F>N0#0)vPRkSH%{ z*#+(qwO~Vo>FeuAShZ+Trk5Kh6>cu`|Kc6$>di9Y{Fm|3Ouf^s2ivcWLPo?^Z=3QA zq!bf7l1rsLF+Vvwzo#lgHSoRmvmf35XU73qCn*2J)CQWMC zOweZ-bqq8nrr^Se)gioJo&KGioWAy_SQP+oVe3nh2E*^t?iB|~(#w?dzkjn?*kkdS zq_!qmyWm#6D!Kzx&=Pi!qJr^cjjqvi!C^9adE)niTFvW6@$phgP58Fu$fuWC#LVm8 zZ9V8`l#wUl6~xoa))R%>aRZMJC{{Lx4J)*Sx$73Mk2=C5+&Q7s$2os*yB2ACjJOc2Vt8;Rw&L^}pToe_9pxIQ$^yC-F|VsL<)r99ti`%wveKOdFK7I&Rs-orb8GI zb_1L)kR+Eq^75usn2?{s9v5S`WKCSJ|1MpzaET_kY(2A%uma3jeb>oeS0Cz}+Mapb zcG9`Uu<}p=y*B&FUj3t54}C6l@3B?MT3k&;&{5MEkaX=BxslMrdhuh;w|{CEj|+JH zQ`QC&<9=?bA|3^4QLK?7NQ#<#S(@oE@Hxg(P4g{}W`l9DJ<~U(rYmY+2xg@cE$TET zarW-a!Y#*1(I!(is>fwz>TqFcBV9J0Xe^m8z0|TBMSZ49KE6wQv5Bi%^~fHYqg2y) zsJzNqnwv>GeMa?#-Rb)(qitN6cByVtw1dy5%%F@5vcSoQ`;9jWj%QyG*~+1<9EMg( zaPeUFeYPorNCzISxh~v!0P_$Nq1$Oq^J~@D84&@D=xWU{NDsYJB-cOw@r--~r?@YO zlcB%9kpZ~fg#PGq`?dy~ak^QuOU#u13R?k1`J`iQW6ehiy#+t09fhN>d<(gQNtgxbCt~x;X(Z^VQ$t1?h@+JxN;y zmOWsD5djfv$KLt8NIb{umOqV`3#yo7+84r!R!WJ3r>z+|Fh7C2?-bD@ux{m?bIgkT zZ`rcL3+73l9s3cKiG@#gnd{Pd=HZkv!F|U4EnL>TFUU)Q$4Et4*^pjcM@OE0oIT}00jx~CY7xC`*Y!fdrDP1C` zy`49tnt6am`nPgBPBt1U|9&COSeUa{dI^|FI250I{LcbJ6 zeVHS?*|9XBBkuY0=k*)rPHQkUck%lQ&;a31`=WG@W;dO27-xoaVJOJ}xnFq`jVNZa z85ID};~6c46B}CRlRu;it{vSwNBdEtGup$WC@__@ki+njDd=rj$crZ?CU!iXc4x)4 z1g1q86E(Bm1O{JrPT_j9gnBoiMbcy)yEJd^hgCq=c)sIH>JSYyk`7NE&iI4c#zie} z|My`pQ|4>gl-B#i1auU@tCOPX!ivZe5?0~x%$whh`l$DkgX%Sp7O2$&QYT%YgJO5U zzJ_@AUpKzKzc6VpNJtC#EfslP>0lcv4mFICzr&v6x`;Q zOsdML8xPu;BvA5<1Fg?mb&(#g9O`r!&lU~sZZ@7?5LBTDT|(5F$XlYwq4f*-$4V4mq zMw;>e?|Kso2%rJGre9ntLP&*Ue`D==wxuCvJN@)UhF9%FXv#D_dC{-tb;JqP_q zgw_6#1Nc2_X5Wyhk!i7h42-$d%ZJ?5d1t3M6jkWGJ;}?WxFou$TL^Zm$vEzC!6@16 zc_+494La^41V*}H;`b%*y*?K>@(?AjNP6>aeO#)ihqHtjg^ky)_zC5BeylNTB0)nN zvD1PA%cJ!W!cV>ET0vB+^9S2Pftn219Vco;O2hS)F{f@7T@%wl)kmOlB`xltvs}w8 zH@>=+gr1bBN$}Dn6V^Bg1GpF`Ad%fwK3=^eo88|q6}+zB_IUUoRg1*p7w}C)EEjWl zW`GCGNg+Y6eEq{J+FDpE?KBA4s!y zgAI>bODet%zCZI_T=2evcB>i@pknodCx5vgS65=V1N)&+B%s2O(CNtWyOW(}(`R+< zr>j1}byb8RL}paGLAK<3s(rW<=dLAstj>3>c+DTK7+~1YDfn_}=r`$tyijwB7m@*c z$U$#Ww8B&P^9m~Hj&C~xE%{b#KPQ?_TIuL>^H)2v3^G8Sy`gr_9hZa2$^nVHqQ2Ii zU11X^e=|O$f65uQUy+NbaI^{a<)l)Jivv9^p#Y&3b)mbf$Fy3tUX30R0z8w+#RSqD zq1XuDqe0a1JB}f>`W0H~nxq}plOv)78qMJ8)ZDh}AN{$^vuNOcd67~250HMpLfj`l z0~@S{Z{l=ZHmw0<=deAGeo^J6_X=`KIi7AjT|yZ&)foGHCbo&%&E?svH)1^=pc>7t zqMR4?NX}LYil~Jxzmyz!Jh#+NYp^|)nX5vzxpCP`q|`R`q4fn;Ms*oL;Q2#Vl(Ynd zt_ZbL5?SAk$4OfJ1RYFNR!`HN`jP_g6Kt^H8vy~d0X?`cX0N{34b(=m>CwU8v;|wg|atm@m~sXg+rJ zBXn5c3VbCjTN;a6=HellRz|*nt!IYEI0qK*?X9H+m7NEj;u);>ibvtDV8)UE#t$8! z+qT1#?XA84$eMlyZu zZR-yV8B0tnmNAMC4{0=CiH6+Q-!qbsOeO3sPVWzvv@&tk}S~x}IHMRv=c3+uC=Etem46k^uBy z0X>~jzhlxr;Z`cOW>nUFTFE1ml>RiuC_bJmMX3P*)c4e;Rj@2BW`Gi&?agWUOOQ3W zoJRJ#DURf`zQ3zk=EwFo03PdAwCi1`L> zljts~nmx;wI>AG$JTVO60>`sqosR8pRQ_0EZaYN`3qz?(!X6Swp!Nax;c*Ce!j z_!=E2DyByO>fp*~#74?`2#6}Aa+aLt+m4RlxQ|<1A^M4))&qpV(U^sxR`>v<&5I*9 zgBus$FE5x8A5u7-SDdeEMZ0BKol}sUr7trSMJY*Sg6dSey0S|$BcrCOj)4ESk47JI zD$HVVP|bvBR^?Qw9uN+vU=0!D6u2pC`LC&$qmVVBkMUx(UNLIHj)^=+<<Rvik8N%}7z7-7}7=k%CThezE8yMn*<9L?EM^2*jfLhCbi+ z6d61Z5>g}(ca#G1J)=T?Ne)|pqkQ+Jqre}3GhK)!jLN1^iTV>xwaxBT#ZNLGd;vEu zozFiXL0IX?KaT#KdYZ0fO?O(H9)xvTIX-$jqBR1?Coxwj%E{*loaD6tmXT|n*0J+| zfC6=G)}T3d(yruyX3(D`EgCdnKtku8)Vo{J0zEe}OU*>)04T@K&Tgchh(sJP)!McF zkTb}fe2c_w>;sTuR%W*xFUvxv6cy>9!ZW$?c#mxq5-7vEfo$&MZu!hOkcf8gQ4&du za&iaBHxf&_X zz5MYp<}hSHxBN)h{l;Nx_tzIEQe*l&!6gG2A8@|gaGaN~fS!HqOdshVo7C*l;Mp6J zhV>YtRn(a}3O4*4dNfRk&qWaRMLp3APLlh17oj8oqRsEd>>M)A-1Af!%Hm>b42^)% zdnbd){iPl*zrKp7vwI7OPHND=Mg5I*(VJJCmV8MT;$Pw!@vp%$)H4~#4!@NQDa&TG zaID*qA=4g?Sc{3NDC!TnNfM{@i(s(H>kQT7UC<6!<1e*H`tyD4Nvx4ZTi{0h?5P1qJIBXSlfGX} zFXzT8p2m$l`Gj5RYh;C=QHf&!8NzCIgv-Gh5Jx!y16)=8=LTQOR@@`wxPt9-i zsU2>6eL1A5A$B%Is)otfUI7!JkHa!%X?0Dt@=@!W#Y0ugVWTkGSR?R6gZJF4P!A$? z`9@RH}=kZ z>rGee1;otlzpk6wxxcpBq5w3AcYA{-OTF}?)oc96voHNO1ETiROjD&(#LZceC+!`! z59Na=9~vauVz@)OD|PD7M@VdckuB7jOfcMI*x)okLV?sNV7DW{6k`&t{DVCLz20d5 zQ+YuFz5Q0UD<2ilsQ95=)=NwBcE<#Plfa7qOBr41+GmJ-O8gdLq{x;k> zKI0Y{31N^#Ih$W5l&Tl)=$a9XwQX0+_$0}RJBu;x0J#pvpIl(?KjYfjFVI>_C3C&^$8Z<7e^x1hhA<*G2O_NOrBV|AWhsAOY{=^#MF&&`>@LGsHx=?nZOu zy;B*H>g(jWrxRft7QXSg)vuSDX{uI}>;}>igdv?MXoNBRn2#`RqgFN9CY~|>sQS!Z zZ@=o?%sXg84(tfr(!gTTjO-6XQUeRO0VBO0@Q(5=S` zq0+J`!th&CP?BLeS1-M4FZt5(5r2k6bNvC&0>674+rng?k9qxN@R}=j>E;%lSkcEO zgyqH*OF;~z)h#E*S0sA1=);rXfe>GZ97cdO6ZX`JU{bJL=lh>Z{ovsbS*m@Hg%j}y zQZXcns4y_5N}AU2VV!{SY-#hh(Rwu;yG~&#cPu;_-UIaF0-hBHsO}X_(EUHGXAu0G zQV%G{)FA2L>nKB=S_hgML!mH#v5%_%(FtN#IW$?u5}U} zCn6&5b17Ohc=yLQ5X}+fw$5iA3s!L30+4@J}^ zp8e}lGqZ;6?2^Gb1>SEidUgdWOfNEOpE&JJ)84>`a;-?VMjOIaV6)QoN3)f`RD@Ob zFD$2N)jE6G4@Q_V+;@R@#;C*G>+K++u;)du-iw9uOoyhwARTzt?vFn4^4I9M?5g`r zb>{~79$VH0`S}rtUtC8P{p~P)`=$Skes3R(cg|lgt0saCGWt8^!YoszR_zDVyL6K}ry?tr|UR;MiX98;AA zT4sdKNhGLIf+?eP&TUkF2275N{Q6%XMxB)AK%X_FnacPNH8yaU|+TzBjw1@b00nJn} zTF--yxMuj&)J4VrzW*z-YYXxoR1A5@iDsi~_mhZ+O)VG25W`W85go$)8;U4+U9AX`r!X@#T|OdF`2PfLVek}+!4KSPy#5NX^Z zq2d@9Rr>Qcxk3pO=gF!sP%=3{Qa;RIU!YfrOBuE3B2<~?)@Re95iftt2?{?lS9<#4 z!8k@_a&M}h0w_Q$XYA?GxBkeMInaPV^oJI46F`FBN4#msr?oqqbE3_xUFjKwy%tTI7+gQu>8;6gV4a<5?0Y1+XG+X}7w z3qSXpr*?#!BCID80gEr+y0HDNkB}DsJ$O)Wr12oYRA$fLA+XbRzoS*jo0KOp7}jIG zM7ZvREIO<9z7&W)6FF4rKQ`Rp)hKJZCPqK$Q+Dsvhw<>Z_wgC_(o8Zz7Tupdv zIoh_#o2nrXb#gCI%IDh^nm*fFTC@1aNOJM)W6e*vfg6d_3@jHpLVz&9qjM3Fn_hW3 z3l?jg`9)K|WLTOhNT%S1aSzydL4NtQAnCozrT6~bmoP%Ntmr4# z5ylJR(J<;^6TH_CCU#-fu+4zIszQSr4Agc5cpw(_Fz~`=^L>RsT23%8NuN&8q(zGt zwIHcCoF%b1IdT4Du>}inut77z`0R6A2)gyyak?Yxs+sopcECqIA>|1A|u7 z&dZg{>+_Xx6LrZo40@XVmi^|8b#d|ctuO;}4kGm07*2_Ke`V75M`qsZyX55eDe7pH zqJT7L^YrbIhFY7%p##T$M$yBI`M#$N64F0lHAL+UV5RwHn5a?%TsP0oXP!km3W|@N z#wF(U(;Ap_H>%MZ9N94f%}<0Rar%0St8PzbQmM_>812~Im)oz?|Ckkp%^eRv3ZFi7 z{d>1v?{XWS>g-Ne2XnZW(V9F{s_C&D11)fN_OLvjHYjS1rc+gNnxlijpFYo)R6~gATUqu_Zu3P^|s~iYQx$T%n=UQ(mjllgT@H zEay_JR>jP}c~aGRp{FP_UIB2GAOEQHymVhbsc}|W%{F_e;gUl$dV94PguQCRFn;>O2vIX=~bhh|8VNS8yo*riR*;S>#N9*x~zw ze@T*uxQ%VJO-yE*r)$LcU8}`){J(mDj#%spLTFCz|LW1p+R#Xi@Go~fZaKYlCcY$! zgU-N)ccv;g5heXUi2==yZQ-7LP6!tH{z3*H<^wSh$1(Qe3yDpxdVGsR$1uH*k7l~j z?*31Vr5e!4x40`*|DbIwUBA4@%&GSS6T0bmj`}bxhzuHr6M>*W*ZoA5c5vLmVEWjO z@@v_p(n-ueutAX_V+X)eD*vp`G-p;gT$lzCNcvw6;g)(2NJ3EA73~((+&mNL4U9Yu z>Bv7MlH2G0_eguflmKCqrpTyZ)TsD42$1tF{$C?9Wc>wflC_xld(~VZptOAp(((?er(_OG6%iReu3y3C}k0I${xesN^R5K zfj9aTxEK$GtVvB#;g&sOP@4ew!_uZxeEEhGHCp~bU?rEr)BQ|#BAC_^jfX2;d)9VL zUCngMTg}-te^R%cM?7XS?J2by8APx!0;?^Gk ztG6B9aV^(ITHEC9b=DmDzrq6-%AdM4OCM(LSJ9T~#0FE4JHqy=*sBJcuiAOm(hW^_ z>RidY2boJxzi)&u0386VVdJiS!QOGSrx`Cg)+t z^OX=er$kTzT9$RM>5-9)r4#iO#I^103l~Y=+3l2fjqsn%CgWt=@}12dvFW#pX;vCP zk0KbUHoWFlBGHF9Wa*&OWK;w~C89zm_oLqD^*)8ypKZ*){t&!1^$zZLuJ!uX81!@y zrT*ZW7{CO2JLG}IQX_{d_$QGtf4>-{yea-bRS z?j^%R(l|ZGI+cOvRGl<^HcTPy5>vZkXj${>&*OSF1FoA-rjp~eZC`sb^! zPXsPctt@;S7Fa^+J&lA6{8$3c?XFID5w1{(iwD7QUh|c2bFpXB5wpwXnIb*j`!#rM za3hE0ef$t2y}xq#TWW6{w}E_T^wyfG-NL%yf+F-qB?PmIQKvq7?>l>M?CFmOEgADy zr?EYkWYVo1SmZDR%2khB>mz?yv6$=0miW!qrEkOBCokPsva2`aR)UeF+HZ{{Wo1$M z58AObyB0n5Jh*Rw6!20rwp#UnnHXiP9F-j_hP+=qqppl}Uu^Dd4N<68JC&)qRVHxp z`ouCg%k=cVJ>01T`QYGx`BtsTRokG_`d#CwYV(ZxC1jsKqMgT!Dg)Qi-hQa_Ij|=$ zSuMjb*h5E4SA`p?#HO8oC?a&rJ`WJ`F(EN|`AS9Ci|jbhee5ee(#3)QX#ud`7_`5# z@7y#QN>Ali>3PucH9nNuVtw-e#!j!J!Q2Q6Nf{$~jJPsJ6pTcz)i(OrN5v`F;-S1% zHT`uW0f)uLv_#d=B;sJw)D*FQ9WAYP?AN?J(z|_jfao>#4IS~lzx?ZQ*09ig{o?`J zvvK+N19y8)pU(5!@|~>SMiljgR`K+XFqmr9T9frB3bugw`0uR4WO77_7aO}ry-Ose z!BKFDr?c2Y4vauXMJSY!2!1D&ubs4b^9KIXhuuROi1*YO^dfLdp;P2mc*1ogr33uy zvp9kmn~MH_MVFu*9>7+%>I|iS^&+8ssl&jA8^LnANZ4 z+heQsl~Lv6S(NHNgxWTUx~(KG{5Z`Jfb%SQnhtIy>rktCI-#HNtjl(8p=nh~JQAR? z3AecW+z<`AFOzStvsKUd^yEJJ@5@>szAVxsNn&o(mba2gbsA!25c%eE9yYE|j?vlD zLykv`oTCZs<_!X9#BP-GEe`c6OqO0Dn+jwG4eK!_gV{6&Sj+5W2EEFv8sh$hwgDIGlT7+mg`k!|9$vyz3%@Gax@`mUhrNDpD~-xG!ql6 z`nA%3hZs1`T=weLvm5zaZ_E~onY`lM-MxL-QZfbxVX6LqOBjo zExd4ZIf9@*v!6iUqP3fYuO`HUAXSip{`Bh2d(OS}bji^NGN>LeAo~znPj)3Hx||Zt z=368dGqD?vRW!lFoAA6Wt{GYU>7896-L`u!Lk?5E8f`|w(9+yzFAvRwE3hfHc-$c5 zgAi`?XUh9sN-ZXd)#h%Qv%fHklQkOkvMXu= z)e7aw?e^@P^nTNs?&LbqyH_Z|>FDUPDt-`AEqJfE}m)_-RLUe`LD7n`*#g;qJY(ygu`ZfB5fjvFD;b50Qnvh2Dt>JzNfaS4{<1 ze^hR3R@|W$p?0NK*fueGRf_YI&a9Vg3`WTJjYdU528r888B>(TN9cu=AL-XQA0f=h zzPoz=?_9it#!ik-#wNz=M|FTKIdk6o?wn#`95vXD+Q)H3^tQj{ zIr>-FSJmz$y-a_2#%gbzzvsn7jUzWRdNPlR!uevV$2-?yl%~(~gCctu>P|0+JqGmk zf74p+*{^(kQRIuV9%Jxjw{ATJl^3=zwG+H6+7(Vh0ugmNvxCpAbo$1~;xc3CKKMdK z+5UJ)R_}Hs&K8i|4mC!(@;R#hELy(ds`_cWVZ3|D3pev;JkYB>r#pwC=zY(NfmQt@ zC%n~`u*s}aGFZykw!_r?F!A)v9ZTFBm*Wi<^3|IW{gXjaWb@hnXZxyqLcxtd)xfKl^ow*C*o z-#Q1wOMbKZ?N6Yh8@U``+6;-42r_}Ez18OvJab3gAhOXeAEi`RMI9!2tF>rbUR!-2 zvA!VHsv~Q7{&drxX9qT88R)LFxoKng8TxY3s3QI;W`;p#xhJ)`V_$U zo4$OP;PkdI3e)7xhw;OLb1q)TonPwuGtGuq1JH7mnQgyjCRUj0*d@P3W|O4l??uh3 z;~LpE_DS7Q=nvl8ubU+c*K3RGsh+p_?FxY0e-q<3Wnkj7DXEC&Ph#`gfTVhq?kjBQ z%eu>A&~9?G)fl=KjlKW*>fQAlz2YWbo1ZhZxk)4a0Ta0EzAy$I0uJ|8&g7D|jb0Of zGS~52D>V0H#Vw{ExE&}KZIbq$*D-vjqvk0uz+3{ScrZ4{K=1pw@1JSyC3YlJIS~t_ zn?J#+ch|n4ONNV_6TPd?RDlVLT-ftt?r8t%l9t=c_N-x}xEt4()lNt1&x_dFCz4&7 zJL_F{4(Tjh_v%dGCbI&8HvJ{U`?3TVP1fvMLStKelSM#XaX6alx{(rc?@HNOKPYP8e!i~d{v=k_!1eS8 zhW?S|%#*dBS9y`A8C^t97F;VKZy(D~1~hM2GMRRDGN#|m4v-Z`=()JQ^f>njEWZ&5 zqwAwM!Tvx{Gg!-F`}={%o@wu0x$#?1+`-*;%Wa~<%#&W3E;Apv3nYAUE=)Te zW#&{+PGS#uR`uKeU<8)0nz=Xj{}HH|n%{Qh)R@}7Dp;!P`ZHZzGly?kw>r_@oN<0P z|D8ne?e$7r^O&Y*KZrhN8R*8mf<7z_4Oii)GKQ}=48wUjLh#40gHIFW3m;7fJw9w~ zKq+sk(5k@Hav~zwB6AF^y*})1fHLFXoa74NDDdRh+qs11lpYBZEi|%QcrKy||IqiW z@Pr=?hRKF(7n==|bs){ywRkdFOf|kPXP!3SZ#ukFbE=p3?J6_sjV=4r>w@%ic0Y$q+Ao+rV9 zP6m@vJ>m|Ur!;py+~ZZ z)&=)?0aJ{OJe`U$Z)NUPm_BSJTu@-g^T%zV`p<-Q^s5r82#YOZfmm4P0?^XUbzq= z&eLj}Cay5>D_cB$l-^Ln^?D7j)g1NyC8@wmKDgVzbEm*lk8!BMl!`B|f83h|7fO;W zN;`H+z0%Hwdh7cdQux9zGYZ$63+XHjyTYEk?pHe*?0guK*_TbEt;I#b@~yeMJhh}o zG5ow667IpKAQs-eYP%bVNXS&9WwIsk=qfwHEoDn^)|YY!dBh8cc{a`FGsji7@sBy% zVe}7PS!y*IJDk^eUe%PjU0?;eXD=tMh8UW#{a&8Y^ci!h*u9X~Z*%5!#IK$duWa3( zFWdI~cbj_w23q2{#Y2JL>tbJWkNb^a%@jeo(Z&NbfuUWm9!zzdX}=Pgoqv!LywC}R zp6kSS|GwRBxs#2DetBATvV*F3E|NQG)Qms#I?iW_!jDtC@T&~FYd|r5If|C6>pH{G z?bSYsUzVReD~~kqaHmpmVE@JW(pdudH4R;zJqez+{U`}yz z|HXf|HJ}y3wO&@%MeD!XV%c6-U#tc51F~p;FsfM zTlldI#t@o+FFfKE=qwB<+tB4fuH%4>bsuomw)MsB>;nkR5>I z^k20eLES5rM6Qq9%b+-YdnT_u$X~~)P0u9gCv2E(ug*J6xpo`eaTPjg9Nf}8?6fO) z>HM`cS3Us<@JP&6B)0E`RkV1yQr) zw21AQTnXE*-Y60{?b&va4s**g1?8rFJ4Xg)c>>|B>G@Ph_R*@a3bNUwSpd_(N@uF6 zu$amyL2P{_@!LZZOq_U~i8kX*6$c?NujY=yE{fgJqFyIk zxW*-5@1gqzmjDT?m=F`9YbSCFx!gz=zkhM)L^#QUN zsyzeU*I|YqKrmGtDXfc05erW|9?Y1(BQhM=d_QTEOf1na`!(>Q2g2+XFa zH?tY&n~*V3hU`hJ(wGFLR_y2RWOd#H7$Jh0*7D2qZ-=SH?wPaebNSkn8QX3WD-t9< zv08&HFEa{yMX1T};e=g_+)2M%ieBqugW!s2jOuI5%k8AnUFDf!H;DtcUsZ@P#FuNs zk?uC0TA=&RTDEObua|nnlm)#(9F75{J$VQ+rYg(8lJV@447ts=nySf5O|1TxA_SX) zdTcWE_oGbpEjK9i!e6ThHeL++$M8q6?XUyKjRdo;9fXY6DIW$2=6zk3Il)xnXH-~> zY@l+k`WVWUa7rxvNPX4Rs!y5jg3}Azf|e;FZ*7+$(d(F32OL*+g>rvA9SP zPhQ)4TF6N6o#12yH)&T&@J6zgZq5x4K0eHynfb)*vp)I<`3azN$}lZSPUG21~i| z>!WFd>GAf{bM~hWsly#Ki4sss0+rhFvMUYIY$C=!3omw@EhBh>*sZ)9Vf`nT74PrV zDr8$0(2(IV>GL+oWSNbE7LMFA84rk)O4xP3Y~Q~ zBUmNQOWjRx!>xLK7JSy}Tnhq5Fo{vbcdk2;FtyaTf==C-e8~=@ zZ^d{EUpB^F>|Kg46F{+%k1M}sg9ZO~Dya*tfRq~Pfevr}*{2=fgHfKW)g9q#PF@RX$54?1WH2MnV zO^ivzw`j&={N-Cg4xPHU(cKaLzHr4CnD&v)Aky|(;ij$r4{-*1TRH6FzV)&L?XS2r z8%CZu!HPnbBX)8-2z@)tudl$pBHmCG!ko2%_jrUVF&{qTN5hrt@Fk)0AU6Ya(c7je zke`9g05p7)-k$YYOcOa6PPvf8GDAy&1T(mGB1Lq(%*=)h3c!>b>-c;n#>Pm9` z{brEDW-fOt2f&Yje)SJ`(&#M+MyXR@)uxqFP!5RqYgc#(Ed*r$307ef_U(=F96{8> zH}(g7Hs|U?c8!6dec9Wcv4$_)y{8C5Mn%r8ZEt?om?g_$!(RHb1=>a^E_)PjB$d@v zqgM>Q6m!(cXk(=#ke&wc97DHeLlnPmO3r(py) zus2<&y3O2C5rXDFxi$KCDpy2`SEJOmSg24rGrXU`c@#a+s^!=EZS7D-Uo*b#^tc2+ zUu_q@GN@;$_17e0(=iZE{uMyr=p*`Q+oSyMyLt@65=WeF@6;bwu_4)2lxBd`BN}8v zr#9WQB0ft@DenvL16rE>px<&w@^8QS=;TF`vhb_itCXF9E#{5PN-KIC=3WJ#&-6m_ z3{I%hN^56yEEL<9Rqq)WOj1^;m8=AMpv>U?(&Fa&$O7}t56k`DGgqt@UkA(e+t|J; zFxKTQmzthtA38teyVB40yE%E_XV7HsJ^qkXl@Pz-U{1SDCpbS9B}c1$unJ~s5jaQ| zP|L__lk^~ZnQ1)5c>5kHyh*h}uVq|qUOSDxs;#UXw+qkUa6|TT$ZW&?GQ2s~@a{nt zhi5u|R*bm)s&33LPe`^UFOL&8Hy>=S_is#3X*vkKHP0-T6akqY!_O_Z)Hyp&FjSnU-qBoohMM%(c?cku z7EhC#)rXbKZCxDM5{i7a1|aGH`}jbW3NYmjup%sFZxcX(=e1iW&L<-%sngpp>t~}> zFc%03u5A@WoIZUkX+5^K_#Nm}7;=h_=3V_aov%JS<;3D|%PahLJyIa+98C$@X)7Cd#;}a#kU3V6;IS$XcVIF8Fg7UhQ zYhG2^0q#M#6*QMW@6Lsu2|`hUp+OcmY}iqHAL}5Q~ zgy>^Xn-5NMa3BPQ6<$0hkcM=m&|Ug6)<9O>L0YwSR35=gMafT)PC?MB|rV`Is<U@vp)jhM# zIpMtz%BJe1n@6YFLf>GG9`0ZxUjH?88glc`%h58jy`eJImjVX}F!P3nwI zOCFkQu`^tYKbaAG)Kg-|mDk-rGcND9wb$J(Kf|Hw>f*CcZtofovStfhu`{+cP z+AgkOe5EVlM7-L8FaGn}D*zJ%b8=ABmQ$^@O1A&K)W z{9)CRJSr!C!gLGE6{jW~Sq(S(eOvoNlk@X5sIE8Z6gRzj%L5!0Ah6d0be#~T1It&# z)OiBIj2C|tRZ@06kIW;veSge8E*J!d(4Gq;hD+JC=%Mysf&4SQtg=_1vx}Y+CFmiy zN` z;YlkE`w*r^oM46+-p4niNf=3l2|EgbMo)D&AuPJ zwFcgf`-Z684thUi53rDFs$T{2g|sTT-pIIJ>ib)8u=G$>@7mUDQA?S0E#HplG2afU z%{lL#)eTViGF^DU|2+it0n3^aZSTMF&c~IYW*A?$9CbHCi%3Y>*C~)7F|+O&+SZ)W zA}f;M@jWyYyQKH%DTW`@9#PG=s0l{~4>&n9Xq<<8GG|e0O-lyWS?r&=Eh4sw%|{g*J;RthZlz z*zn4K%ZYDcj2an+F8%`moeFK807}do_5lPAIKL2rL06jlq+L|<2&s%*Vj1xT*P$DI zn0kY64FXjac%E?EX=(Fg{N{5ZGv<=V9td^`8$Gz;1v%ea&*jI zPJ5yG6f;+=hH{*+-TGwZdmHWSHiiG-v9wr;5F_kViEAqwG{YD< zV24$&31pN%3DWVjB9){wUHRq%-3z0%JiQ>H#V^@-(Ukp-=EI@x4~hkG@10R2{L}lO zlG)Er|**xv6$lVxONst0zqb~NP%UVJye z0Ud|+MJ)FqNdVJnQR<&_F@w~3eyzv4N8;gGc~nAx2@avVD-)e|(kHjKWWin9_Um!> zz7rA5vLFPTLIZZ?J#|-%BW^|Wb0?U;f2);I^IkQ2{cw{elFc-#N!*9=y{ridvNCyZR2CvX`!|hfFDPT?0vQ-NFCy`8(#02{pst?L&&7$+c z(dch1TPS{GM+C-1GDcc3$l+nn?*knr1pUy@5Onk(z)snqFu`wr4HR7L_!srN+13d* z9wfhQ1)YChA_To!daOh4Wi(|^l!!aYwvVEhL?#(N)=~8-*7n8h8NA46e6h?H6_@i*$Pnf?Ct0G6n3ItQ&!-Ul(aGUCDMgramb_b-Y>pWAAa&gY1lq`*e z3=DFdjD*H7qUeojF%q@qx{@)W^}3}eHltkfrZ#JpfVJQSyr?p2n}Q*IpGgTk_T3G4 zED5$^^3}w{;$0N+Q1TY?n$;Ik3Hg-ylz1kXD?|E9u;W7%lG&@So0V%^I#^RfSzU?_o6x*Tl2PO~7oQ4}VSFqW} z4EZr4#h55K8V^UH^f8nt%eTP_r^H$=mxK|4xV*n5Zw3XN0$gULLw0v#E!@ z<;R#P_bQi!?2p>}{N#jr-TbZOMa4ZJ!|yb7oGLUYj{yV-_r{bvjWCBYQ9!Um^tfBj z2ez&%CW2ib$Cq$U&fue*T{^9I1_OIxH=pDJWAK%tm>mp%=MVC-9OfZuKb`}*IDi#*0ns@T} z@%XT}1UNPAUK?qwiojS1cun66i>6fOdpNsBRF zb??6YSAy>VY*On$vIs$g01nfw7uh`tMvY|);j%R!K%1hW^&(S`!2t9TcNX|WME}7b zL%(`Jot(R$qRnDvcGd54`-#hWgcqrJ(y@0%#4crvy5&&*1a_@!b3qQExi{6ZfIdMW zk`zt%nE?MJM_BApX1VGH-bd6O3ZzD$l!RR(fDs?A5_e8zWVW zU|j(@+bT1!i?c_MukvYQv|qC32wB)}lJ_uVoCsb<^C#IhZ>=7nY2Sx+&scT?pi9rn zu8F!^T`Eopeq)VR70An1JPw1ksrl!8v9OVf)eIn;4m-FXC{u@eg zCaMUF-^tQrz`YRGv*$FO34pn)`z7QW?{ zFXv(~9%E>Bq&3$!y@RkXFRF_(M_nMBg%Us*aVk0V!lU581;AX~8Exv^!ilzG_l`i~ z;y`L>(4a1uZ{;g*M9^w`T#7oAP0llR(8Fc3l`qe~oG_B;Zl;<4NM0FfdWaM}DS7_6 z|JLeksYSl}^9<{)qZoAc1Zus#qo%zh;+S=kXY4m>6Kcfq3sb6P>xkk=n7PkNum7kE zXpc6)?C09e)$FwDtILpukJHl=q#?2z?hMj|08>+w7}lWmyAvpIvmA3yD8=#UQZICc z-RBps;|}*F=?H*qzp-csALjNd7-D(iXfkG$O6U*kzDQtf23ja%R(GznOXjO&*RF^JhfW<-MIclaK zRdE5WV=Vfbl}<=eB?q^a8v_>O2w1?Bwg36l4KxYV007whDP^&z)vTa!o!X3a0iBWL zGj0pc8ysbnTU9c`4t;y3RU+4Ez|io%W9-VK@9%e$Grhr)Rl-yY0x!&FidfKPAo#;SVX=oSa(3) zFQ<~_sK`!Xie@ajPff+{10}ExrY!o3RgLT&{4w&a1Nl>E{+yWl8I)B8BQ2C7OAg)N z=H$2ebHYj8zf3&W2>Z@3mEa`$kC^XzyT$zH=!MUcM6yhn#fSN`u!}+a6t|?3^So#s zQpll|v(@y2A6|%DAVg5CP1vQK9>Bc?!}Pm8_8=8-%U?gk`Uj;j9%(Y}`;fL#~N zH#K*QybU}Xj2{XL_(BCejb+PkZJmIkop8?-I=SDN8a%P6+FGWkdOQl5#D>oVcKG_b zROL%rfXMFWb{RCEg<({XC0r%5;QDR_Bv3|J?SLtK+fb?NL^ZhXwkB<715t{D&Z`N(D)45&Q>*xCLOzqtq`#}1^0HH$g${io~RC=l0C6uEc%JH zCKR-7Ui)P1PkzG6LJ6!KJZeuH!sTYP`pbMPrj2Scl-Pnuqc4yGVj`g2xa2;g)C#4x@p<{W`!?Z*dEAk zhyI z3>YYf-*2psV1T-Z^pu{y=>M92btHtT($pzA0Ykn&MQZ>m8 z5tqH+4-m=E;PiElmi5Deck8lI-VtP3ZU;^VIQzKl&U&J7KJodf`XDg{uUl15e24(% zkK0ak=Q9GIOmmX+BPDXvS=?wpvaY~bGQK&42zSMU4K8SGv#_t55C`nJ)|G<&PPU)k zZe9gRwYieV3b(-;13v$|$Y^C+!A84XB-M&O2ywgsyQKH|g;Z|=V(j~e4r;A4n%_W9 z7Z2&^J}Sn%5iF`J=mecI$qyy+J?yXo6j8Bo)ybS2z&8h+Q(*Bk*wny0Y#(7RpPSoE zYSJ~-_l2-Q45ba5%4dOpw`%NL6C@P`+9L#oM)L(bw{AJ>?=nyJ4M4Mo^s94AqS#+n zh98_!)+LdUQrdC&fdG!RxrqEmj0gOt2cWUd2_*dmlqx@PL?=OLd~F<66T)b}8bI0f zT&N*-n?#e&(CPPVwkVb{@JM2~4s zP#YrH>lTzENzJtL@0ag3bJi3#sPY>BmN7p_V2>To7P$8TZrhSab`FjTfMK7&HmPwu z72L%{d26?Ak}!w^Fn_M}kRPfa%SdFksukHF6BiDdJEM;p`LlV_Gs6>0nV z%d^1zsYMs&x>LX|eKXVx8^mvy$ClnDpKzHZVFhxjJg2l^q{9m5jM03U4rmu99|9@y z>Vh*G9G~jg{AE|F*V(G+Mam=d$;$wgPhCwg5URU>M|>AnVfDwJ9_OXWeG6kS+X5xL zQv@|5hC(j)UPt*e+IRtwt)#Q6vq4&Z2|waJg*Sw2;8}7qZweabHTj40R4s|*az}RG zxcJDFv&JTx@y+Q#Tgt%7_6lqjtO{y_^x$bCz%5(j4x#|c&3B)GluUuMt`t~0MW8rE z$bA$yKYp3!4UIsrfiPj^vVn?VaNj#pDefXo6MPnvKW*;eU+gs9dqbaaXYN}6R-Svv zr4X&Lc`T?Z2qQKIGo1Q9ymb;q#$7`87GMXaR6t5^u_fPf7-w`{=%lg}w%NMV^l3ip zvwdGkbmD|m`OzPN)vI$qYff4FXt+{qg#&2#YHyi8xckNvd;QioO=?V`!$bp0c?n|u zO3|T%1Qu<%myGx7Y)nO}Hk~RHAIR^wGrfeFWu3xqoS`bz3Gt64GOiPN7$?v8F1FA9 zOx}DS<~?TcV><~UP6Ge(%F|w_h2|3WcLFrM?~FbRb*7TLl{OmPeXnS25V_AR)}7+5 z-Yj_6m}XQwyIo7L(#wsKvZy*@5h1_)wJ4CQWaKMpzj*n~){LP(^)S}`$m6^F*z~?w zp=dJQI>Q;|Y^npL=rSy6K%ag%&gb6iqlvRC9}G5Oz@r8TzSg#l)N@$os<~-tX<0R< z`G*#E9M<#g23T1YNaZ79p7WpA)STh6$_>_ia2$ zvb!{;UsYG8y&a28VpfUFV}{x;0!J?et#>DJVq{@tq$|&q)68#pxWIBFyugNNOD`RU zQctsDEGMcz${~JtFs`f^f8B0T)aORe%&*0;F(qYDbV|%>5>X*|kot(uuTMTQQ8d^% zAjEk7D?SRv_ z-ic;RO4t#O@tXRs`BwbW`{4KUskm!yy(Gtq(md+)kiMiy(CnM2veQ5?t z-nflm7_nBc<*G5^{!7L1!|^2rlayM z?e0-Jgqmn>EC`xCK#tM%Nu%jde=s=I*(^J-l$U*|<|EbhFXt(Au8|)MU+hDv4N+Ae zRL)1!Wff;azmNeb)vym`Q9lENeerip;*Xa-dR9>xToB?QpxmDkXbx(TGQZG3;&i~) z?T&!!03_Qo@?5?o+bEsn{_orG{tFij>Mjc9XMm~#l~8}ajyM_``>sdtmV_jfG7Yx+ z&oEY!=_XtYYSVQ~7n5Islq!G*`STxKIG95K{6+OC{(RIX)1ZQ62EmN;tsq^gy|*}w z<#jgeYz|IH$8hg6p>w;7>(zB5h{^9jO7j1iICehvT_KnS0gk_V`r$^(_xT zkg6 zLems~GBKL8AJVbhTZ7QWL|Yh(vXQCVZ?OtiDBv+DPW|)sw$g?iY!>*7;o9DIb>UMc zn{Ge6`{t1uBbXWlfc~9Y7r>a@+AdwU94guX~6pBfk6hK^}gBWQ4z7C|!MkMJ`7Z>z*aZvk{k2wwxBxBzE z0v9~t_lTi1`tAg*?aoPvopz6OK`wb1`JjULlWNpyJ3&R!pLIbuhlwPsva661W{+WX zULh{M)qIFMc?h!EBThg$)%l^daP1*dr_Q{zw=gxKiyLMa0GFrlvDQWX{yQ#k>cZ&u zLHMhkG1QZHV5Hpeyg(QQIDesxsXCjfx)-b}2SiDI-+}fvf5wM&G?Qc;O7>ci!yVee zCZ_5sAe@iK0psEK7%wtT^I^*~9z0X^(=&PhfDlhh`qd6ltqggAw7{QfQj+OnzO~r@ z9)EyVBG-j-l}QQ^&NQcAO>>vt52ftiqYH6vimAGR>Ug|LBnA!Uh0%Y;^*{XyLJAfK zpk}ST>2_G-dTUP5<4!lqpXb17Brt!;5&$h5a+GD?Zk3vfKY z=sVHHk>Xo`3*UrdAc%!yT=`$=S)>3%`l01HcaL5=Z_pKh_@w}MN3!d4H+QXry}Lo( z?AUZF))nEaa zM6;L46*N$Q*B&cohU;&Y$FUW-E~ckz9tsr;H#Q~GWMSlPqYowC$~*0w+oZbpy*5r9A2)col62*&O0 z+1#!e_3tH;sbWyd*k86#3IrYjuQF{tt3rb>NSRzd#&h|f5i*(CdkjQZF9mm|$M_@} zAXwbP&C+Z9UEMoX9OjRHM{gbg64w{M} zqM>+*7i#O=`^8*S)|F2N=ISO!I< z0oNZq<^OYM6vWYx?RUBflsHxJe(LfTMMx?JwXrH+lL&Iqlj)8HbZBqgs89p_v=A&* z15X`F2UJJMXByM5VmT<4zSpu3fgcy%h(yK3p4=ZCM$es7YCHF)1uq1g@6aihQn0VG z{sFCwP>S6i)#pIo4Mc|7+rxNaI_PZEY(KQaZJu00c2t2e!$Ru{&=m|ky-B3@o+#yj=F@yo+ebi` zfOMdseuEmh+#jnLI29HL(CM+4W`_hH&34UTQt-jX^DNK{-8clk8cQ{o;vdWolAggM zQBmK{f^S14Je{&3{<|)6r3ZN(p9EYfkIl4Fb~k;QZZ`wCAf!akF|K+TdaG$6fw13? zOueG&;%GvA4FnF1Uv;01BxACObw;KP>41)8z$u49Uk0knwF0t@Qkgf;kPG@`OI@jz ziv@SYS`$*h*#d}|04Tcyd3p|8y<&8GaP+bTT0(DFf zLICYXGn~WfZK;)dZkJ$f;G*6jKph`5oq1`4yRZayRoyvqEkx1iri0E>Eh0j)W8Jen z`UH&nkbpZ2&jxXDDCdx|U)LRmL&BF1lE{Z=9_@z~siF8bn|017)b|OvE|h57@h#;U zT}*eA`hLj8@@t;^K8Qih;5jv-2ZlHkzyK*(da0<-*|n^HKKlbE5w{jL9Ge#YJP`aN zlau<*Q>MN3mX&~&ZMBhq0Rfer1JdszE|I$$f0~^D2R*SYe`X3ORU3AaZUvtAD{3+&1AaCsV%Rd)4X1m>~(Ti^{?u?plScGh|39^+{Oi3PoX+dM-E9iVzXrGN+?ADU^X z9>-KY#H8#E=uIl5|MQSG5}4!f$c*O^2Bo_Hj-_+8!QLF;oWh|f>Ky_9J`_mqe*iE5 z$Wnim8~9ZxHRAMlxb7jv|Ni8^6#EzR{g+|>cjV>M&Oja))%c!e_~>tAIr*4+Cktq6 z@$x^y{Pmx|t~>-i09~T~j;ni~1_Ye~Va0z(!1KQ_4v6cmzsMUrfcLMr``_tzN%en# dI0&TdzPPx3;rC`hE*yeXZ))AhQ@;P?{{dMVp7{U( literal 0 HcmV?d00001 diff --git a/notebooks/CSSP_20CRDS_Tutorials/scripts/cssp37-env-nobuilds.yml b/notebooks/CSSP_20CRDS_Tutorials/scripts/cssp37-env-nobuilds.yml new file mode 100644 index 0000000..f26c518 --- /dev/null +++ b/notebooks/CSSP_20CRDS_Tutorials/scripts/cssp37-env-nobuilds.yml @@ -0,0 +1,194 @@ +name: cssp37 +channels: + - defaults + - conda-forge +dependencies: + - _libgcc_mutex=0.1 + - _openmp_mutex=4.5 + - adal=1.2.5 + - aiohttp=3.7.3 + - antlr-python-runtime=4.7.2 + - argon2-cffi=20.1.0 + - asciitree=0.3.3 + - async-timeout=3.0.1 + - async_generator=1.10 + - attrs=20.3.0 + - azure-common=1.1.24 + - azure-nspkg=3.0.2 + - azure-storage-blob=2.1.0 + - azure-storage-common=2.1.0 + - backports=1.0 + - backports.functools_lru_cache=1.6.1 + - bleach=3.2.1 + - blinker=1.4 + - bokeh=1.4.0 + - brotlipy=0.7.0 + - bzip2=1.0.8 + - c-ares=1.17.1 + - ca-certificates=2020.11.8 + - cachetools=4.1.1 + - cartopy=0.18.0 + - certifi=2020.11.8 + - cf-units=2.1.4 + - cffi=1.14.3 + - cftime=1.3.0 + - chardet=3.0.4 + - click=7.1.2 + - cloudpickle=1.6.0 + - cryptography=3.2.1 + - curl=7.71.1 + - cycler=0.10.0 + - cytoolz=0.11.0 + - dask=2.30.0 + - dask-core=2.30.0 + - dask-kubernetes=0.11.0 + - decorator=4.4.2 + - defusedxml=0.6.0 + - distributed=2.30.1 + - entrypoints=0.3 + - expat=2.2.9 + - fasteners=0.14.1 + - freetype=2.10.4 + - fsspec=0.8.4 + - geos=3.8.1 + - google-auth=1.23.0 + - hdf4=4.2.13 + - hdf5=1.10.6 + - heapdict=1.0.1 + - idna=2.10 + - importlib-metadata=3.1.0 + - importlib_metadata=3.1.0 + - ipykernel=5.3.4 + - ipython=5.8.0 + - ipython_genutils=0.2.0 + - iris=2.4.0 + - jinja2=2.11.2 + - jpeg=9d + - json5=0.9.5 + - jsonschema=3.2.0 + - jupyter-server-proxy=1.5.0 + - jupyter_client=6.1.7 + - jupyter_core=4.7.0 + - jupyterlab=2.2.9 + - jupyterlab_pygments=0.1.2 + - jupyterlab_server=1.2.0 + - kiwisolver=1.3.1 + - krb5=1.17.2 + - kubernetes_asyncio=12.0.1 + - lcms2=2.11 + - ld_impl_linux-64=2.35.1 + - libblas=3.9.0 + - libcblas=3.9.0 + - libcurl=7.71.1 + - libedit=3.1.20191231 + - libev=4.33 + - libffi=3.2.1 + - libgcc-ng=9.3.0 + - libgfortran-ng=9.3.0 + - libgfortran5=9.3.0 + - libgomp=9.3.0 + - liblapack=3.9.0 + - libnetcdf=4.7.4 + - libnghttp2=1.41.0 + - libopenblas=0.3.12 + - libpng=1.6.37 + - libsodium=1.0.18 + - libssh2=1.9.0 + - libstdcxx-ng=9.3.0 + - libtiff=4.1.0 + - libwebp-base=1.1.0 + - locket=0.2.0 + - lz4-c=1.9.2 + - markupsafe=1.1.1 + - matplotlib-base=3.3.3 + - mistune=0.8.4 + - monotonic=1.5 + - msgpack-python=1.0.0 + - multidict=4.7.5 + - nbclient=0.5.1 + - nbconvert=6.0.7 + - nbformat=5.0.8 + - ncurses=6.2 + - nest-asyncio=1.4.3 + - netcdf4=1.5.4 + - notebook=6.1.5 + - numcodecs=0.7.2 + - numpy=1.19.4 + - oauthlib=3.0.1 + - olefile=0.46 + - openssl=1.1.1h + - packaging=20.4 + - pandas=1.1.4 + - pandoc=2.11.2 + - pandocfilters=1.4.2 + - partd=1.1.0 + - pexpect=4.8.0 + - pickleshare=0.7.5 + - pillow=8.0.1 + - pip=20.2.4 + - proj=7.1.1 + - prometheus_client=0.9.0 + - prompt_toolkit=1.0.15 + - psutil=5.7.3 + - ptyprocess=0.6.0 + - pyasn1=0.4.8 + - pyasn1-modules=0.2.7 + - pycparser=2.20 + - pygments=2.7.2 + - pyjwt=1.7.1 + - pyke=1.1.1 + - pyopenssl=19.1.0 + - pyparsing=2.4.7 + - pyrsistent=0.17.3 + - pyshp=2.1.2 + - pysocks=1.7.1 + - python=3.7.8 + - python-dateutil=2.8.1 + - python-kubernetes=12.0.1 + - python-xxhash=2.0.0 + - python_abi=3.7 + - pytz=2020.4 + - pyyaml=5.3.1 + - pyzmq=20.0.0 + - readline=8.0 + - requests=2.25.0 + - requests-oauthlib=1.3.0 + - rsa=4.6 + - scipy=1.5.3 + - send2trash=1.5.0 + - setuptools=49.6.0 + - shapely=1.7.1 + - simpervisor=0.3 + - simplegeneric=0.8.1 + - six=1.15.0 + - sortedcontainers=2.3.0 + - sqlite=3.33.0 + - tblib=1.6.0 + - terminado=0.9.1 + - testpath=0.4.4 + - tk=8.6.10 + - toolz=0.11.1 + - tornado=6.1 + - traitlets=5.0.5 + - typing-extensions=3.7.4.3 + - typing_extensions=3.7.4.3 + - udunits2=2.2.27.6 + - urllib3=1.25.11 + - wcwidth=0.2.5 + - webencodings=0.5.1 + - websocket-client=0.57.0 + - wheel=0.35.1 + - xarray=0.16.1 + - xxhash=0.8.0 + - xz=5.2.5 + - yaml=0.2.5 + - yarl=1.6.3 + - zarr=2.5.0 + - zeromq=4.3.3 + - zict=2.0.0 + - zipp=3.4.0 + - zlib=1.2.11 + - zstd=1.4.5 + - pip: + - mo-catnip==0.0.5 +prefix: /home/h03/fris/miniconda3/envs/cssp37 diff --git a/notebooks/CSSP_20CRDS_Tutorials/scripts/xarray_iris_coord_system.py b/notebooks/CSSP_20CRDS_Tutorials/scripts/xarray_iris_coord_system.py new file mode 100644 index 0000000..f359e98 --- /dev/null +++ b/notebooks/CSSP_20CRDS_Tutorials/scripts/xarray_iris_coord_system.py @@ -0,0 +1,85 @@ +import json + +import iris +import iris.coord_systems +import xarray as xr + + +class XarrayIrisCoordSystem(object): + coord_systems_lookup = {'latitude_longitude': iris.coord_systems.GeogCS, + 'rotated_latitude_longitude': iris.coord_systems.RotatedGeogCS, + 'mercator': iris.coord_systems.Mercator} + + def __init__(self): + self._cube = None + self._data_array = None + + self.coord_system_attr_name = "iris_coord_system" + + @property + def cube(self): + return self._cube + + @cube.setter + def cube(self, value): + self._cube = value + + @property + def data_array(self): + return self._data_array + + @data_array.setter + def data_array(self, value): + self._data_array = value + + def _attrs_as_dict(self, attrs): + return {k: v for (k, v) in attrs} + + def _store_coord_system(self): + coord_system = self.cube.coord_system() + attrs = self._attrs_as_dict(coord_system._pretty_attrs()) + # We don't want the default ellipsoid attr, which is a reference to an Iris class. + attrs["ellipsoid"] = self._attrs_as_dict(coord_system.ellipsoid._pretty_attrs()) + attrs["coord_system_name"] = coord_system.grid_mapping_name + return json.dumps(attrs) + + def _build_ellipsoid(self, ellipsoid_kwargs): + return iris.coord_systems.GeogCS(**ellipsoid_kwargs) + + def _build_coord_system(self, coord_system_str): + coord_system_dict = json.loads(coord_system_str) + coord_system_name = coord_system_dict.pop("coord_system_name") + ellipsoid_kwargs = coord_system_dict.pop("ellipsoid") + + ellipsoid = self._build_ellipsoid(ellipsoid_kwargs) + + constructor = self.coord_systems_lookup.get(coord_system_name) + if constructor is not None: + result = constructor(**coord_system_dict, ellipsoid=ellipsoid) + else: + raise ValueError(f"Coord system name {coord_system_name!r} is either not known or supported.") + return result + + def from_iris(self, cube): + self.cube = cube + + data_array = xr.DataArray.from_iris(self.cube) + data_array.attrs[self.coord_system_attr_name] = self._store_coord_system() + + self.data_array = data_array + return self.data_array + + def to_iris(self, data_array): + self.data_array = data_array + coord_system_str = self.data_array.attrs.pop(self.coord_system_attr_name, None) + + self.cube = self.data_array.to_iris() + if coord_system_str is not None: + cube_coord_system = self._build_coord_system(coord_system_str) + for axis in ['X', 'Y']: + try: + self.cube.coord(axis=axis).coord_system = cube_coord_system + except AttributeError: + pass + + return self.cube diff --git a/notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_1_data_access.ipynb b/notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_1_data_access.ipynb new file mode 100644 index 0000000..4759f19 --- /dev/null +++ b/notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_1_data_access.ipynb @@ -0,0 +1,1075 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "# Tutorial 1: Accessing and exploring CSSP China 20CR datasets\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Learning Objectives:\n", + "\n", + "1. How to load data into Xarrays format\n", + "2. How to convert the data xarrays into iris cube format\n", + "3. How to perform basic cube operations " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contents\n", + "\n", + "1. [Use Xarray to access monthly data](#access_zarr) \n", + "2. [Retrieve single (or list of) variables](#get_vars)\n", + "3. [Convert datasets to iris cube](#to_iris)\n", + "4. [Explore cube attributes and coordinates](#explore_iris)\n", + "5. [Exercises](#exercise)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Use Xarray to access monthly data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.1 Import libraries.\n", + "Import the necessary libraries. Current datasets are in zarr format, we need zarr and xarray libraries to access the data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "import numpy as np\n", + "import xarray as xr\n", + "import zarr\n", + "sys.path.append(os.path.abspath('../'))\n", + "from scripts.xarray_iris_coord_system import XarrayIrisCoordSystem as xics\n", + "xi = xics()\n", + "xr.set_options(display_style='text') # Work around for AML bug that won't display HTML output." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.2 Set up authentication for the Azure blob store\n", + "\n", + "The data for this course is held online in an Azure Blob Storage Service. To access this we use a SAS (shared access signature). You should have been given the credentials for this service before the course, but if not please ask your instructor. We use the getpass module here to avoid putting the token into the public domain. Run the cell below and in the box enter your SAS and press return. This will store the password in the variable SAS." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import getpass\n", + "# SAS WITHOUT leading '?'\n", + "SAS = getpass.getpass()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now use the Zarr library to connect to this storage. This is a little like opening a file on a local file system but works without downloading the data. This makes use of the Azure Blob Storage service. The zarr.ABStore method returns a zarr.storage.ABSStore object which we can now use to access the Zarr data in the same way we would use a local file. If you have a Zarr file on a local file system you could skip this step and instead just use the path to the Zarr data below when opening the dataset." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "store = zarr.ABSStore(container='metoffice-20cr-ds', prefix='monthly/', account_name=\"metdatasa\", blob_service_kwargs={\"sas_token\":SAS})\n", + "type(store)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.3 Read monthly data\n", + "A Dataset consists of coordinates and data variables. Let's use the xarray's **open_zarr()** method to read all our zarr data into a dataset object and display it's metadata" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# use the open_zarr() method to read in the whole dataset metadata\n", + "dataset = xr.open_zarr(store)\n", + "# print out the metadata\n", + "dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: The dataset lists coordinates and data variables.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "We can also access and print list of all the variables in our dataset" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# display all the variables in our dataset\n", + "dataset.data_vars" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Retrieve single (or list of) variables" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.1 Read mean air temperature at 2 m \n", + "Access and print just a single variable i.e minumum air temperature at 2m\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: The DataArrays in our dataset can be accessed either as attributes or indexed by name\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Access the variable by indexing it with its name\n", + "t2m_mean = dataset['air_temperature_mean']\n", + "# print the metadata\n", + "t2m_mean" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Access the variable like an attribute\n", + "t2m_mean = dataset.air_temperature_mean\n", + "# print the metadata\n", + "t2m_mean" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.2 Read list of variables \n", + "We can also create a smaller dataset containing a subset of our variables" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# creating a list containing a subset of our variables \n", + "varlist = ['relative_humidity_mean',\n", + " 'relative_humidity_at_pressure_mean',\n", + " 'specific_humidity',\n", + " 'surface_temperature'\n", + " ]\n", + "\n", + "# extracting the list of variables from dataset\n", + "mini_ds = dataset[varlist]\n", + "\n", + "# print the metadata\n", + "mini_ds" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Task:
      \n", + "
    • Access \"cloud_area_fraction\" using both index and attribute method in the cell below and save it in varaible named **caf**
    • \n", + "
    • Create a dataset **pres_ds** containing all the pressure variables, (hint: use for loop)
    • \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Retrieve \"cloud_area_fraction\"\n", + "caf = dataset['cloud_area_fraction']\n", + "# print the metadata\n", + "caf" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Retrieve all the pressure variables\n", + "pres_vars = [name for name in dataset.data_vars if 'pressure' in name]\n", + "pres_ds = dataset[pres_vars]\n", + "pres_ds" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Convert datasets to iris cube" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.1 Convert a variable to an Iris Cube\n", + "We now convert the minimum air temperature variable that we accessed in section 2.1 into iris cube. This can be done simply using the method **DataArray.to_iris()**.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Use the method to_iris() to convert the xarray data array into an iris cube\n", + "cube_t2m_mean = t2m_mean.to_iris()\n", + "cube_t2m_mean" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Task 3.2 Convert whole Dataset to an Iris Cubelist\n", + "Instead of converting all variables one by one into iris cube one by one, we can convert the whole dataset (or a subset of dataset) into an iris cubelist" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: This is not as simple as done for single variable above but it is straightforward with the dataset.apply() method, obviousely will take a bit longer to complete!\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# first import the Iris library\n", + "import iris" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# create an empty list to hold the iris cubes\n", + "cubelist = iris.cube.CubeList([])\n", + "\n", + "# use the DataSet.apply() to convert the dataset to Iris Cublelist\n", + "dataset.apply(lambda da: cubelist.append(xi.to_iris(da)))\n", + "\n", + "# print out the cubelist\n", + "cubelist" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Note: By clicking on any variable above, you can see its dimension coordinates and matadata\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Task:
      \n", + "
    • convert caf variable into iris cube **caf_cube**
    • \n", + "
    • create a cube list containing pressure variables only
    • \n", + "
    • Can you note the difference between cube and cubelist?
    • \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "## convert caf into iris cube\n", + "caf_cube = xi.to_iris(caf)\n", + "caf_cube" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "## convert pressure dataset into iris cube list\n", + "pres_cubelist = iris.cube.CubeList([])\n", + "pres_ds.apply(lambda da: pres_cubelist.append(xi.to_iris(da)))\n", + "\n", + "pres_cubelist" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Explore cube attributes and coordinates" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.1 Accessing cube from cubelist\n", + "Now that we have our variables in cubelist we can extract any varaible using the variable name. For instance the following code indices for **precipitation_flux** variable." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# lets load and print the Precipitation Flux variable\n", + "precipitation_cube = cubelist.extract_strict('precipitation_flux')\n", + "precipitation_cube" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: We can see that we have time, grid_latitude and grig_longitude dimensions, and a cell method of mean: time (1 hour) which means that the cube contains monthly mean Precipitation Flux data.\n", + "
    \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.2 Cube attributes\n", + "We can explore the cube information further" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we can print its shape\n", + "precipitation_cube.shape" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we can print its dimensions\n", + "precipitation_cube.ndim" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we can print all of the data values (takes a bit of time as it is a large dataset!)\n", + "precipitation_cube.data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# We can also print the maximum, minimum and mean value in data\n", + "print('Maximum value: ', precipitation_cube.data.max())\n", + "print('Minimum value: ', precipitation_cube.data.min())\n", + "print('Mean value: ', precipitation_cube.data.mean())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we can print cube's name\n", + "precipitation_cube.name()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we can print the unit of data\n", + "precipitation_cube.units" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we can also print cube's general attributes\n", + "precipitation_cube.attributes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.3 Rename the cube\n", + "Rename the precipitation_flux cube" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: The name, standard_name, long_name and to an extent var_name are all attributes to describe the phenomenon that the cube represents.\n", + " \n", + "standard_name is restricted to be a CF standard name (see the CF standard name table). \n", + "\n", + "If there is not a suitable CF standard name, cube.standard_name is set to None and the long_name is used instead. \n", + "long_name is less restrictive and can be set to be any string.\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(precipitation_cube.standard_name)\n", + "print(precipitation_cube.long_name)\n", + "print(precipitation_cube.var_name)\n", + "print(precipitation_cube.name())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# changing the cube name to 'pflx' using \"rename\" method\n", + "precipitation_cube.rename(\"pflx\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(precipitation_cube.standard_name)\n", + "print(precipitation_cube.long_name)\n", + "print(precipitation_cube.var_name)\n", + "print(precipitation_cube.name())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We see that standard_name and var_name are not set to be a non CF standard name, they are changed to None and long_name is renamed as pflx instead. The cube.name() method first tries standard_name, then ‘long_name’, then ‘var_name’, then the STASH attribute before falling back to the value of default (which itself defaults to ‘unknown’).\n", + "\n", + "We can also rename the specific name of the cube. Suppose if we only want to change standard_name." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "precipitation_cube.standard_name = 'precipitation_flux'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(precipitation_cube.standard_name)\n", + "print(precipitation_cube.long_name)\n", + "print(precipitation_cube.var_name)\n", + "print(precipitation_cube.name())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Similarly, we can change long_name, var_name, and name without using rename method" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.3 Change the cube units\n", + "Change precipitation_cube units from kg m-2 s-1 to kg m-2 day-1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: The units attribute on a cube tells us the units of the numbers held in the data array. To convert to 'kg m-2 day-1', we could just multiply the raw data by 86400 seconds, but a clearer way is to use the convert_units() method with the name of the units we want to convert the data into. It will automatically update the data array.\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# inspect the current unit and maximum data value\n", + "print(precipitation_cube.units)\n", + "print(precipitation_cube.data.max())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# convert the units to 'mm day-1' using convert_units method\n", + "precipitation_cube.convert_units('kg m-2 day-1')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# inspect the current unit and maximum data value after the conversion \n", + "print(precipitation_cube.units)\n", + "print(precipitation_cube.data.max())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.4 Add or remove the attributes\n", + "In section 4.2 we see how to access the cube attributes. In this section we will try to add or remove the attributes \n", + "\n", + "Let's try to add new attribute to the precipitation_flux. \n", + "We want to keep the information of original units of the cube. Best way is to add this information in the attribute.\n", + "Define the new attribute as a key value pair and we can add the attribute using **update** method." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# defining new attribute\n", + "new_attr = {'original_units':'kg m-2 s-1'}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# List the attibutes\n", + "precipitation_cube.attributes" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# add new attribute using .update() method\n", + "precipitation_cube.attributes.update(new_attr)\n", + "\n", + "# now printing the attributes list to see if new attribute has updated\n", + "precipitation_cube.attributes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So, we got 'original_units' in attributes list. \n", + "\n", + "We can also delete any specific attribute. For example, in our precipitation_cube attributes list, we do not need 'source' and we can think of deleting it. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "del precipitation_cube.attributes['source']\n", + "precipitation_cube.attributes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.5 Accessing cube coordinates\n", + "Access cube's coordinates and explore coordinates attribute" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: \n", + "
      \n", + "
    • Cubes need coordinate information to help us describe the underlying phenomenon. Typically a cube's coordinates are accessed with the coords or coord methods. The latter must return exactly one coordinate for the given parameter filters, where the former returns a list of matching coordinates.
    • \n", + "
    • The coordinate interface is very similar to that of a cube. The attributes that exist on both cubes and coordinates are: standard_name, long_name, var_name, units, attributes and shape.
    • \n", + "
    • Coordinate does not have data, instead it has points and bounds (bounds may be None), so we can access the actual point data
    • \n", + "
    \n", + "\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's print out all cube's coordinates\n", + "print([coord.name() for coord in precipitation_cube.coords()])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's access the 'grid_latitude' coordinate and print out the last 10 values\n", + "grid_latitude = precipitation_cube.coord('grid_latitude')\n", + "grid_latitude" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# print the maximum and minimum value of 'grid_latitude' coordinate\n", + "print(grid_latitude.points.max())\n", + "print(grid_latitude.points.min())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Task:
      \n", + "
    • Inspect the following attributes of caf_cube you created in previous task
    • \n", + "
        \n", + "
      • name (standard_name)
      • \n", + "
      • Number of dimensions (ndim)
      • \n", + "
      • units
      • \n", + "
      • mean of data
      • \n", + "
      \n", + "
    • Print all the coordinates of caf_cube, (hint: use for loop)
    • \n", + "
    • Explore attributes of \"grid_latitude\"
    • \n", + "
        \n", + "
      • name (standard_name)
      • \n", + "
      • shape
      • \n", + "
      • units
      • \n", + "
      \n", + " \n", + " \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "## Inspect attributes \n", + "print(caf_cube.standard_name)\n", + "print(caf_cube.ndim)\n", + "print(caf_cube.units)\n", + "print(caf_cube.data.mean())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "## Inspect coordinates\n", + "print([coord.name() for coord in caf_cube.coords()])\n", + "\n", + "lat = caf_cube.coord('grid_latitude')\n", + "\n", + "print(lat.standard_name)\n", + "print(lat.shape)\n", + "print(lat.units)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 5. Exercise\n", + "\n", + "In this exercise we will explore the variables and attributes of hourly data." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 1: Load hourly data\n", + "Load hourly data into xarrays and display all variables\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "store = zarr.ABSStore(container='metoffice-20cr-ds', prefix='hourly/', account_name=\"metdatasa\", blob_service_kwargs={\"sas_token\":SAS})\n", + "type(store)\n", + "\n", + "dataset = xr.open_zarr(store)\n", + "# print out the metadata\n", + "dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 2: Convert to iris cublist\n", + "Convert the dataset into iris cublist and display the cubelist\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cubelist = iris.cube.CubeList([])\n", + "dataset.apply(lambda da: cubelist.append(xi.to_iris(da)))\n", + "\n", + "cubelist" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 3: Extract variable\n", + "Extract x_wind variable from cubelist and display the cube" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xwind = cubelist.extract_strict('x_wind')\n", + "xwind" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 4: Explore cube attributes \n", + "Using the Iris cube in previous excercise explore its attributes as follow:\n", + "- print out the number of dimensions\n", + "- print out its shape\n", + "- print out its coordinates names\n", + "- print out the maximum and minimum values of latitude and longitude\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xwind.ndim" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xwind.shape" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "coords = [coord.name() for coord in xwind.coords()]\n", + "coords" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print('latitude: [', xwind.coord('grid_latitude').points.min(), ', ', xwind.coord('grid_latitude').points.max(), ']')\n", + "print('longitude: [', xwind.coord('grid_longitude').points.min(), ', ', xwind.coord('grid_longitude').points.max(), ']')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 5: Change units and add the original units to attributes list \n", + "\n", + "- change the units of x_wind to km/hr\n", + "- add the original units to the attributes list\n", + "- print out the attributes to see if new attribtue has added successfully\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "orig_units = xwind.units\n", + "print('original units: ', orig_units)\n", + "\n", + "# Changing the units to km/hr\n", + "xwind.convert_units('km h-1')\n", + "\n", + "print('New units: ', xwind.units)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "new_attr = {'original_units': orig_units}\n", + "\n", + "xwind.attributes.update(new_attr)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xwind.attributes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Summary
    \n", + " In this session we learned how:
    \n", + "
      \n", + "
    • to load data from a zarr database into xarray dataset and explore its metadata.
    • \n", + "
    • to convert xarray dataset into iris cube and explore its metadata
    • \n", + "
    • to further explore iris cube's attributes through simple operations
    • \n", + "
    \n", + "\n", + "
    \n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "cssp37", + "language": "python", + "name": "cssp37" + }, + "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.7.8" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_2_data_preparation.ipynb b/notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_2_data_preparation.ipynb new file mode 100644 index 0000000..fce7fc9 --- /dev/null +++ b/notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_2_data_preparation.ipynb @@ -0,0 +1,1285 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "# Tutorial 2: Data Preparation and visualisation\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Learning Objectives:\n", + "\n", + "In this session we will learn: \n", + "1. How to perform further cube operations\n", + "2. How to prepare data for analysis\n", + "4. How to visualise data " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contents\n", + "\n", + "1. [Constraint and cube extraction](#extract)\n", + "2. [Basic cube calculations](#calc)\n", + "3. [Time series and spatial plots](#plots)\n", + "4. [Saving the cube](#save)\n", + "5. [Exercises](#exercise)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Prerequisites
    \n", + "- Basic programming skills in python
    \n", + "- Familiarity with python libraries Iris, Numpy and Matplotlib
    \n", + "- Basic understanding of climate data
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Constraint and cube extraction" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.1 Import libraries.\n", + "Import the necessary libraries. Current datasets are in zarr format, we need zarr and xarray libraries to access the data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import xarray as xr\n", + "import zarr\n", + "import iris\n", + "import os\n", + "import sys\n", + "sys.path.append(os.path.abspath('../'))\n", + "from scripts.xarray_iris_coord_system import XarrayIrisCoordSystem as xics\n", + "xi = xics()\n", + "xr.set_options(display_style='text') # Work around for AML bug that won't display HTML output." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.2 Set up authentication for the Azure blob store\n", + "\n", + "The data for this course is held online in an Azure Blob Storage Service. To access this we use a SAS (shared access signature). You should have been given the credentials for this service before the course, but if not please ask your instructor. We use the getpass module here to avoid putting the token into the public domain. Run the cell below and in the box enter your SAS and press return. This will store the password in the variable SAS." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import getpass\n", + "# SAS WITHOUT leading '?'\n", + "SAS = getpass.getpass()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "store = zarr.ABSStore(container='metoffice-20cr-ds', prefix='monthly/', account_name=\"metdatasa\", \n", + " blob_service_kwargs={\"sas_token\":SAS})\n", + "type(store)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.3 Read monthly data\n", + "A Dataset consists of coordinates and data variables. Let's use the xarray's **open_zarr()** method to read all our zarr data into a dataset object and display it's metadata" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# use the open_zarr() method to read in the whole dataset metadata\n", + "dataset = xr.open_zarr(store)\n", + "# print out the metadata\n", + "dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Convert dataset into iris cubelist" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# create an empty list to hold the iris cubes\n", + "cubelist = iris.cube.CubeList([])\n", + "# use the DataSet.apply() to convert the dataset to Iris Cublelist\n", + "dataset.apply(lambda da: cubelist.append(xi.to_iris(da)))\n", + "# print out the cubelist\n", + "cubelist" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The cubelist printed above holds all of the data from the Zarr file in a list. To see more detail on each of the cubes in the list click on it. That shows a table with information about the name and units of the cube, its shape and coordinates.\n", + "\n", + "We will see in the next section how to obtain a single cube for use in our analysis and visualisation." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.4 Indexing the cube\n", + "**AIM:** Extract the ***cloud_area_fraction*** data and index it by a subset of latitudes and longitudes values" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
    \n", + "Note: Cubes can be indexed in a similar manner to that of NumPy arrays. The result of indexing a cube is always a copy of the cube.\n", + " \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# extract the variale from cubelist\n", + "caf = cubelist.extract_strict('cloud_area_fraction')\n", + "caf" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# subsetting the lat/lon values by indexing the first 10 values\n", + "subset_caf = caf[..., :10, :10]\n", + "subset_caf" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# subseting the cube with 50th to 99th lat/lon values at time index 10\n", + "subset_caf = caf[10, 50:100, 50:100]\n", + "subset_caf" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: The extract above returns a 2 dimensional cube with latitude/longitude at a single time. Note that time is now a scalar (a single time: 1851-11-16 00:00:00)\n", + " \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Extracting first 10 elements from time dimension\n", + "subset_caf = caf[:10]\n", + "subset_caf" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.5 Time constraint\n", + "**AIM:** Use constraint and extract methods to subset a cube or cubelist.\n", + "\n", + "The monthly data ranges from 1850 to 2000. In some cases we might not need all the time series and we might only be interested in 50 years 1950 - 2000.\n", + "In such cases, we can extract cube creating a time constraint. \n", + "Let's extract \"air_pressure_at_sea_level\" cube, extract the cube containing data from 1950 to 2000 using time constraint." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: We've already seen above the extract_strict method to extract specific cube from cubelist. We can also apply constraints to a single cube (or a CubeList) using the respective constraint and extract methods.\n", + " \n", + "Iris's constraint mechanism provides a powerful way to filter a subset of data from a larger collection. The Constraint constructor takes arbitrary keywords to constrain coordinate values.\n", + " \n", + "extract_strict returns a single cube while extract methods returns a cubelist. If you use extract_strict and more or less than 1 cube matches then it is an error. \n", + " \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Extracting air pressure at sea level cube from cublist \n", + "air_pres = cubelist.extract_strict('air_pressure_at_sea_level')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Extracting from year 1950 to 2000\n", + "start_time = 1950\n", + "end_time = 2000\n", + "time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", + "subcube = air_pres.extract(time_constraint)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To check if we have got the right cube, we can print start data and end date of subcube" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "tcoord = subcube.coord('time')\n", + "units = tcoord.units\n", + "tdata = [units.num2date(point) for point in tcoord.points]\n", + "print('Start time: ',tdata[0])\n", + "print('End time: ',tdata[-1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: It is common to want to build a constraint for time.\n", + "This can be achieved by comparing cells containing datetimes\n", + "\n", + "There are a few different approaches for producing time constraints in Iris. We focus here on one approach for constraining on time in Iris.\n", + "\n", + "This approach allows us to access individual components of cell datetime objects and run comparisons on those.\n", + " \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Similar to constraining years, we can also constrain months and days\n", + "\n", + "Consider a case where we want to get only a few months, like March, April and May, from our subcube" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# extracting month june, july and august from the list of years\n", + "month_constraint = iris.Constraint(time=lambda cell: cell.point.month in (3,4,5))\n", + "subcube.extract(month_constraint)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.6 Extract region.\n", + "\n", + "To make your analysis faster and easier, you can extract a smaller part of the model domain. In these examples we will work with Shanghai, but you can choose any region you want. \n", + "\n", + "Note: The original model data is on a rotated pole grid system, as shown in the diagrams below. The x and y coordinates are not true latitude and longitude so to extract a latitude-longitude box, we use the *extract_rot_cube()* function to do this. It works by first calculating the true latitude and longitue of each grid cell and uses these to select which are in the area of interest." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's first print the values of lat/lon before extracting\n", + "print('latitude: [', air_pres.coord('grid_latitude').points.min(), ', ', \n", + " air_pres.coord('grid_latitude').points.max(), ']')\n", + "print('longitude: [', air_pres.coord('grid_longitude').points.min(), ', ', \n", + " air_pres.coord('grid_longitude').points.max(), ']')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's try to extract Shanghai region using **extract_rot_cube**.\n", + "\n", + "**extract_rot_cube** takes the latitude and longitude of the region of interest and returns a smaller cube with the extracted region of rotated pole coordinates. \n", + "\n", + "First define the lat lon of Shanghai region:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "min_lat=29.0\n", + "max_lat=32.0\n", + "min_lon=118.0\n", + "max_lon=123.0" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# load extract_rot_cube from catnip\n", + "from catnip.preparation import extract_rot_cube\n", + "ext_cube = extract_rot_cube(air_pres, min_lat, min_lon, max_lat, max_lon)\n", + "ext_cube" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we can see that the min/max boundaries now changed\n", + "print('latitude: [', ext_cube.coord('grid_latitude').points.min(), ', ', \n", + " ext_cube.coord('grid_latitude').points.max(), ']')\n", + "print('longitude: [', ext_cube.coord('grid_longitude').points.min(), ', ', \n", + " ext_cube.coord('grid_longitude').points.max(), ']')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.7 Constraint on cell methods and attributes\n", + "\n", + "In our cubelist, we can see that we have four cubes named air_temperature: Minimum, Maximum and two Means (one with pressure level).\n", + "Let's try to extract air temperature and see what we get.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "air_temp = cubelist.extract('air_temperature')\n", + "air_temp" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In order to get only one cube i.e. the time mean at the surface and not on the pressure levels, we need to constrain using the cell method. A [cell_method](https://cfconventions.org/Data/cf-conventions/cf-conventions-1.7/build/ch07s03.html) is a piece of metadata which describes additional characteristics of a field. Let try to create a constraint and use it to extract the desired cube." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# constrain for the cube that does not have 'pressure' in its coordinate list\n", + "cube_cons_surf = iris.Constraint(cube_func=lambda c: 'pressure' not in [coord.name() for coord in c.coords()])\n", + "# also constrain to be only mean temperature \n", + "cube_cons_mean = iris.Constraint(cube_func=lambda c: (len(c.cell_methods) > 0) and \n", + " (c.cell_methods[0].method == 'mean'))\n", + "# now apply the above constrains\n", + "air_temp_mean = air_temp.extract_strict(cube_cons_surf & cube_cons_mean)\n", + "air_temp_mean " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we got desired cube. Now, if we look into minimum and maximum cubes, that does not contains cell method, instead, information lies in their respective attributes. \n", + "\n", + "We can extract, for example minimum cube, by constraining the attributes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "min_cons = iris.Constraint(cube_func=lambda c: ('ukmo__process_flags' in c.attributes) and \n", + " (c.attributes['ukmo__process_flags'][0].split(' ')[0] == 'Minimum'))\n", + "air_temp_min = air_temp.extract_strict(min_cons)\n", + "air_temp_min " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Task:
      \n", + "
    • Extract from cubelist relative humidity cube: year: 1900-2000, months: May-September Cell method: Mean (4 hours) \n", + "\n", + " \n", + "
    \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# First extracting relative_humidity cubes from cublist \n", + "rel_hum = cubelist.extract('relative_humidity')\n", + "rel_hum" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Next constrain for the cube with mean(4 hour) as its cell method value\n", + "# This the cube that has 'pressure' in its coordinate list i.e. the first one\n", + "cons_pressure = iris.Constraint(cube_func=lambda c: 'pressure' in [coord.name() for coord in c.coords()])\n", + "cons_pressure_rel_hum = rel_hum.extract_strict(cons_pressure)\n", + "cons_pressure_rel_hum" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Now that we have the right cube let's constraint by time\n", + "start_time = 1900\n", + "end_time = 2000\n", + "# year constraint\n", + "year_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", + "\n", + "# extracting months May-September\n", + "month_constraint = iris.Constraint(time=lambda cell: cell.point.month in (5,6,7,8,9))\n", + "\n", + "time_constraint_rel_hum_subcube = cons_pressure_rel_hum.extract(year_constraint&month_constraint)\n", + "time_constraint_rel_hum_subcube" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we can print the time coordinate values to be sure\n", + "tcoord = time_constraint_rel_hum_subcube.coord('time')\n", + "units = tcoord.units\n", + "tdata = [units.num2date(point) for point in tcoord.points]\n", + "print('Start time: ',tdata[0])\n", + "print('End time: ',tdata[-1])\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Basic Calculations" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.1 Calculating mean, max, min\n", + "In this section we will use **iris.analysis** method to calculate basic mean, min and max values. But before we do this we need to understand two important concepts/techniques that are used in the analysis code to follow:\n", + "1. When we calculate area averages, we need to be able to calculate the area of each grid box. and for this we need to know the boundaries of each grid box. If the longitude and latitude bounds are not defined in the cube we can guess the bounds based on the coordinates point values and that is what the *guess.bounds()* function does in the code below.\n", + "2. Once we have our longitude and latitude boundaries we can use the *iris.analysis.cartography.area_weights* to compute the data as a weighted mean of all grid-boxes. The *area_weights()* function returns an array of area weights, with the same dimensions as the cube where a larger cell has more weight in the average than a smaller one.\n", + "\n", + "Now let's extract the *surface_temperature* and calculate mean over the whole region. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# extract surface_temerature\n", + "sft = cubelist.extract_strict('surface_temperature')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Using the **collapsed** and **analysis** methods over grid_latitude and grid_longitude, we can get the timeseries of mean over the whole domain." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import iris.analysis.cartography\n", + "\n", + "# Since grid_latitude and grid_longitude were both point coordinates we must guess bound positions \n", + "# for them in order to calculate the area of the grid boxes\n", + "sft.coord('grid_latitude').guess_bounds()\n", + "sft.coord('grid_longitude').guess_bounds()\n", + "\n", + "grid_areas = iris.analysis.cartography.area_weights(sft)\n", + "\n", + "# calculating mean using area_weights method\n", + "sft_mean = sft.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN, weights=grid_areas)\n", + "sft_mean" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: The above cube has reduced to only one dimension i.e. \"time\"\n", + "\n", + " \n", + "
    iris.analysis provides a range of statistical methods, see [iris.analysis dcumentation](https://scitools.org.uk/iris/docs/v1.9.0/html/iris/iris/analysis.html)\n", + " \n", + "
    Collapse method can be applied to one, more or all the dimensions.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.2 Basic arithmetic operations\n", + "\n", + "Basic arithmetic operations like addition, subtraction, multiplication, square root, power etc. can be performed on iris cube.\n", + "\n", + "Let's calculate 10m windspeed using **x_wind** and **y_wind** cubes.\n", + "\n", + "In our cubelist, we have two variables with same cell method. We can constraint using coordinates information.\n", + "\n", + "To calculate 10m windspeed we need data which is not on pressure levels." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# extract x_wind and y_wind\n", + "xcons = iris.Constraint(cube_func=lambda c: c.standard_name == 'x_wind' and \n", + " ('pressure' not in [coord.name() for coord in c.coords()]))\n", + "ycons = iris.Constraint(cube_func=lambda c: c.standard_name == 'y_wind' and \n", + " ('pressure' not in [coord.name() for coord in c.coords()]))\n", + "\n", + "u = cubelist.extract_strict(xcons)\n", + "v = cubelist.extract_strict(ycons)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's create a windspeed cube by copying the u cube first" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "windspeed = u.copy()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Calculate windspeed:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "windspeed.data = np.sqrt(u.data**2 + v.data**2)\n", + "windspeed" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We see that cube name is \"x_wind\", that is becuase we copied the u_cube. We can rename it to \"windspeed\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "windspeed.rename(\"wind speed\")\n", + "windspeed" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: When performing arithmetic calculation, consider the units, name and other metadata information. \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Time series and spatial plots" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.1 Time series plots\n", + "Using iris quick plot to create time series plots. Let's load the necessary libraries first.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we first need to load libraries for plotting \n", + "import iris.plot as iplt\n", + "import iris.quickplot as qplt\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's plot the timeseries of mean surface temeprature over Shanghai region from 1950 - 2000" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# loading mean air temperature \n", + "sft = cubelist.extract_strict('surface_temperature')\n", + "sft.coord_system()\n", + "sft" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Shanghai region coordinates \n", + "min_lat=29.0\n", + "max_lat=32.0\n", + "min_lon=118.0\n", + "max_lon=123.0\n", + "# load extract_rot_cube from catnip\n", + "from catnip.preparation import extract_rot_cube\n", + "sft_shangai = extract_rot_cube(sft, min_lat, min_lon, max_lat, max_lon)\n", + "sft_shangai" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Now constrain over time\n", + "start_time = 1950\n", + "end_time = 2000\n", + "time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", + "sft_tim = sft_shangai.extract(time_constraint)\n", + "sft_tim" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# collapse the longitude and latitude and calculate mean over the time period\n", + "timeseries = sft_tim.collapsed(['grid_latitude','grid_longitude'], iris.analysis.MEAN)\n", + "timeseries" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lets plot the timeseries using a standard matplotlib library.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# ploting with matplotlib \n", + "plt.plot(timeseries.data)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have got the time series values. Now we can plot them using the [**iris quickplot**](https://scitools.org.uk/iris/docs/latest/iris/iris/quickplot.html?highlight=quickplot).[what does this add?]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# plotting with the quickplot \n", + "qplt.plot(timeseries)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: iris.quickplot adds extra automatic labelling: axes are labelled with a coordinate name and units, and the plot title is taken from the cube name. On the other hand using matplotlib.plot we need to add labels and title manually. \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.2 Contour plots\n", + "Using iris quick plot to create contour plots\n", + "\n", + "Let's plot the average surface temperature from 1900 to 2000 over Shangai region.\n", + "\n", + "We can collapse 'time' dimension of sft_tim cube to get the spatial mean " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "spatial_mean = sft_tim.collapsed(['time'], iris.analysis.MEAN)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now that we have the mean values we can make a spatial contour plot using the iris quickplot contourf method" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# plot the surface temperature contour at the first timestep \n", + "qplt.contourf(spatial_mean)\n", + "# add some coastlines for context\n", + "plt.gca().coastlines()\n", + "# set the figure size\n", + "plt.gcf().set_size_inches(8,12)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: iris.quickplot also adds the colorbar\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Task:
      \n", + "
    • Plot time series of maximum air temperature from 1900 to 2000 of only summer season (June, July and August)
    • \n", + "
    • Plot contour plot of the maximum air temperature from 1900 to 2000 of only summer season (June, July and August)
    • \n", + "
    \n", + "
    \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# first extracting the air temperature from cubelist\n", + "air_temp = cubelist.extract('air_temperature')\n", + "\n", + "# define constraint for maximum air temperature\n", + "max_cons = iris.Constraint(cube_func=lambda c: ('ukmo__process_flags' in c.attributes) and \n", + " (c.attributes['ukmo__process_flags'][0].split(' ')[0] == 'Maximum'))\n", + "#air_temp_max = air_temp.extract_strict(max_cons)\n", + "\n", + "# define time constraints\n", + "start_time = 1900\n", + "end_time = 2000\n", + "# year constraint\n", + "year_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", + "\n", + "# extracting only summer season (June, July and August)\n", + "month_constraint = iris.Constraint(time=lambda cell: cell.point.month in (6,7,8))\n", + "\n", + "constraint_air_temp_max = air_temp.extract_strict(max_cons&year_constraint&month_constraint)\n", + "\n", + "# we first need to load libraries for plotting \n", + "import iris.plot as iplt\n", + "import iris.quickplot as qplt\n", + "import matplotlib.pyplot as plt\n", + "\n", + "\n", + "# collapse the longitude and latitude and calculate mean over the time period\n", + "timeseries = constraint_air_temp_max.collapsed(['grid_latitude','grid_longitude'], iris.analysis.MEAN)\n", + "\n", + "# plotting with the quickplot \n", + "qplt.plot(timeseries)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# collapse 'time' dimension of the cube to get its spatial mean\n", + "spatial_mean = constraint_air_temp_max.collapsed(['time'], iris.analysis.MEAN)\n", + "\n", + "# plot the surface temperature contour at the first timestep \n", + "qplt.contourf(spatial_mean)\n", + "# add some coastlines for context\n", + "plt.gca().coastlines()\n", + "# set the figure size\n", + "plt.gcf().set_size_inches(8,12)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Saving the cube" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.1 Save the cube in zarr store\n", + "We can save our cube in zarr store to be used later. \n", + "\n", + "For this purpose, we first need to convert cube into xarray and then save it into zarr store.\n", + "\n", + "Let's save 'spatial_mean' cube from the above section." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# converting cube back to xarray\n", + "sft_mean = xr.DataArray.from_iris(spatial_mean)\n", + "\n", + "# rename the xarray\n", + "sft_mean.rename('surface_temperature_mean')\n", + "\n", + "# checking the chunk size of the xarray\n", + "sft_mean.chunks" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# convert the xarray into dataset\n", + "sft_mean_ds = sft_mean.to_dataset()\n", + "\n", + "# path to where store the zarr data\n", + "zarr_store = f\"{os.environ['HOME']}/zstore\"\n", + "\n", + "# store the dataset to specfied path as zarr data store\n", + "sft_mean_ds.to_zarr(zarr_store, consolidated=True, mode='w')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 5. Exercises" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this exercise we will analyse the mean precipitation rate from 1950 - 2010 over the Shanghai region" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 1: Load monthly data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# first get and store object to access the zarr data\n", + "store = zarr.ABSStore(container='metoffice-20cr-ds', prefix='monthly/', account_name=\"metdatasa\", \n", + " blob_service_kwargs={\"sas_token\":SAS})\n", + "type(store)\n", + "\n", + "# use the open_zarr() method to read in the whole dataset metadata\n", + "dataset = xr.open_zarr(store)\n", + "# print out the metadata\n", + "dataset" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# the dataset list is ok in text format but looks better as cubelist \n", + "# so let's convert the dataset to Iris Cublelist\n", + "\n", + "# create an empty list to hold the iris cubes\n", + "cubelist = iris.cube.CubeList([])\n", + "# use the DataSet.apply() to convert the dataset to Iris Cublelist\n", + "dataset.apply(lambda da: cubelist.append(xi.to_iris(da)))\n", + "# print out the cubelist\n", + "cubelist" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 2: Extract precipitation_flux" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Now let's load the precipitation_flux cube\n", + "precipitation_cube = cubelist.extract_strict('precipitation_flux')\n", + "precipitation_cube" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 3: calculate mean" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import iris.analysis.cartography\n", + "\n", + "# Since grid_latitude and grid_longitude were both point coordinates we must guess bound positions \n", + "# for them in order to calculate the area of the grid boxes\n", + "precipitation_cube.coord('grid_latitude').guess_bounds()\n", + "precipitation_cube.coord('grid_longitude').guess_bounds()\n", + "\n", + "grid_areas = iris.analysis.cartography.area_weights(precipitation_cube)\n", + "\n", + "# calculating mean using area_weights method\n", + "precipitation_mean = precipitation_cube.collapsed(['grid_longitude', 'grid_latitude'], \n", + " iris.analysis.MEAN, weights=grid_areas)\n", + "precipitation_mean" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 4: Plot timeseries" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import iris.quickplot as qplt\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# plotting with the quickplot \n", + "qplt.plot(precipitation_mean)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 5: Spatial plot over Shanghai" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Shanghai region coordinates \n", + "min_lat=29.0\n", + "max_lat=32.0\n", + "min_lon=118.0\n", + "max_lon=123.0\n", + "\n", + "# Use extract_rot_cube from catnip to extract for Shanghai region\n", + "from catnip.preparation import extract_rot_cube\n", + "precipitation_shangai = extract_rot_cube(precipitation_cube, min_lat, min_lon, max_lat, max_lon)\n", + "\n", + "# collapse 'time' dimension of the cube to get its spatial mean\n", + "precipitation_shangai_spatial_mean = precipitation_shangai.collapsed(['time'], iris.analysis.MEAN)\n", + "\n", + "# plot the surface temperature contour at the first timestep \n", + "qplt.contourf(precipitation_shangai_spatial_mean)\n", + "# add some coastlines for context\n", + "plt.gca().coastlines()\n", + "# set the figure size\n", + "plt.gcf().set_size_inches(8,12)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
    \n", + "Summary
    \n", + " In this session we learned how:
    \n", + "
      \n", + "
    • to prepre sube for analysis
    • \n", + "
    • to perform basic arithmatic operation
    • \n", + "
    • to plot timeseries and contours
    • \n", + "
    • to save data in zarr format
    • \n", + "
    \n", + "\n", + "
    \n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "cssp37", + "language": "python", + "name": "cssp37" + }, + "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.7.8" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_3_basic_analysis.ipynb b/notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_3_basic_analysis.ipynb new file mode 100644 index 0000000..2df853a --- /dev/null +++ b/notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_3_basic_analysis.ipynb @@ -0,0 +1,1561 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "# Tutorial 3: Basic data analysis\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Learning Objectives:\n", + "\n", + "In this session we will learn: \n", + "1. to calculate and visualise annual and monthly means\n", + "2. to calculate and visualise seasonal means\n", + "3. to calculate mean differences (anomalies)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contents\n", + "\n", + "1. [Calculate annual and monthly mean](#annual)\n", + "2. [Calculate seasonal means](#season)\n", + "3. [Calculating differences (anomalies)](#percent)\n", + "4. [Exercises](#exercise)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Prerequisites
    \n", + "- Basic programming skills in python
    \n", + "- Familiarity with python libraries Iris, Numpy and Matplotlib
    \n", + "- Basic understanding of climate data
    \n", + "- Tutorials 1 and 2\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Calculating annual and monthly mean\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1.1 Import libraries \n", + "Import the necessary libraries. Current datasets are in zarr format, we need zarr and xarray libraries to access the data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import xarray as xr\n", + "import zarr\n", + "import iris\n", + "import os\n", + "import sys\n", + "sys.path.append(os.path.abspath('../'))\n", + "from catnip.preparation import extract_rot_cube, add_bounds\n", + "from scripts.xarray_iris_coord_system import XarrayIrisCoordSystem as xics\n", + "xi = xics()\n", + "xr.set_options(display_style='text') # Work around for AML bug that won't display HTML output." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.2 Set up authentication for the Azure blob store\n", + "\n", + "The data for this course is held online in an Azure Blob Storage Service. To access this we use a SAS (shared access signature). You should have been given the credentials for this service before the course, but if not please ask your instructor. We use the getpass module here to avoid putting the token into the public domain. Run the cell below and in the box enter your SAS and press return. This will store the password in the variable SAS." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import getpass\n", + "# SAS WITHOUT leading '?'\n", + "SAS = getpass.getpass()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now use the Zarr library to connect to this storage. This is a little like opening a file on a local file system but works without downloading the data. This makes use of the Azure Blob Storage service. The zarr.ABStore method returns a zarr.storage.ABSStore object which we can now use to access the Zarr data in the same way we would use a local file. If you have a Zarr file on a local file system you could skip this step and instead just use the path to the Zarr data below when opening the dataset." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "store = zarr.ABSStore(container='metoffice-20cr-ds', prefix='monthly/', account_name=\"metdatasa\", blob_service_kwargs={\"sas_token\":SAS})\n", + "type(store)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.3 Read monthly data\n", + "A Dataset consists of coordinates and data variables. Let's use the xarray's **open_zarr()** method to read all our zarr data into a dataset object and display it's metadata." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# use the open_zarr() method to read in the whole dataset metadata\n", + "dataset = xr.open_zarr(store)\n", + "# print out the metadata\n", + "dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Convert dataset into iris cubelist" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# create an empty list to hold the iris cubes\n", + "cubelist = iris.cube.CubeList([])\n", + "\n", + "# use the DataSet.apply() to convert the dataset to Iris Cublelist\n", + "dataset.apply(lambda da: cubelist.append(xi.to_iris(da)))\n", + "\n", + "# print out the cubelist.\n", + "cubelist" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.4 Calculating annual mean, maximum and minimum over an area\n", + "\n", + "Here we calculate annual mean, maximum and minimum air_temperature over the Shanghai region from 1981 to 2010. \n", + "\n", + "We will first need to extract the required variables, extract the Shanghai region and constrain by time period. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# extract air_temperature\n", + "air_temp = cubelist.extract('air_temperature')\n", + "\n", + "# extracting maximum air temperature\n", + "cons = iris.Constraint(cube_func=lambda c: ('ukmo__process_flags' in c.attributes) and (c.attributes['ukmo__process_flags'][0].split(' ')[0] == 'Maximum'))\n", + "air_temp_max = air_temp.extract_strict(cons)\n", + "\n", + "# extracting mainimum air temperature\n", + "cons = iris.Constraint(cube_func=lambda c: ('ukmo__process_flags' in c.attributes) and (c.attributes['ukmo__process_flags'][0].split(' ')[0] == 'Minimum'))\n", + "air_temp_min = air_temp.extract_strict(cons)\n", + "\n", + "# extracting mean air temperature\n", + "cons = iris.Constraint(cube_func=lambda c: (len(c.cell_methods) > 0) and (c.cell_methods[0].method == 'mean') and c.cell_methods[0].intervals[0] == '1 hour')\n", + "air_temp_mean = air_temp.extract_strict(cons)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# defining Shangai region coords\n", + "min_lat=29.0\n", + "max_lat=32.0\n", + "min_lon=118.0\n", + "max_lon=123.0\n", + "\n", + "\n", + "# extract data for the the Shanghai region using extract_rot_cube() function\n", + "max_cube = extract_rot_cube(air_temp_max, min_lat, min_lon, max_lat, max_lon)\n", + "min_cube = extract_rot_cube(air_temp_min, min_lat, min_lon, max_lat, max_lon)\n", + "mean_cube = extract_rot_cube(air_temp_mean, min_lat, min_lon, max_lat, max_lon)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# print out the mean cube\n", + "mean_cube" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# define start and end year for our time constraint\n", + "start_time = 1981\n", + "end_time = 2010\n", + "\n", + "# define the time constraint\n", + "cons = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", + "\n", + "# load the data into cubes applying the time constraint\n", + "max_cube = max_cube.extract(cons)\n", + "min_cube = min_cube.extract(cons)\n", + "mean_cube = mean_cube.extract(cons)\n", + "\n", + "# printing out the mean cube to see the change in the shape of time dimension\n", + "mean_cube" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note:The CATNIP library function preparation.add_time_coord_cats adds a range of numeric coordinate categorisations to the cube. For more details see the documentation\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have got required cubes. Now we can add categorical coordinates to such as *year* to the time dimension in our cubes using the CATNIP **preparation.add_time_coord_cats** function." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# load CATNIP's add_time_coord_cats method\n", + "from catnip.preparation import add_time_coord_cats\n", + "\n", + "# Add other dimension coordinates\n", + "max_cube = add_time_coord_cats(max_cube)\n", + "min_cube = add_time_coord_cats(min_cube)\n", + "mean_cube = add_time_coord_cats(mean_cube)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Print the *max_cube* and inspect the categorical coordinates that have been added to the time coordinate of our cube." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# printing the max_cube. Note the addtional coordinates under the Auxiliary coordinates\n", + "max_cube" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can see that **add_time_coord_cats** has added a few auxiliary coordinates including the *year* coordinate to the *time* dimension.\n", + "\n", + "Now we can calculate maximum, minimum and mean values over the *year* coordinate using **aggregated_by** method." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Calculate yearly max, min and mean values\n", + "yearly_max = max_cube.aggregated_by(['year'], iris.analysis.MAX)\n", + "yearly_min = min_cube.aggregated_by(['year'], iris.analysis.MIN)\n", + "yearly_mean = mean_cube.aggregated_by(['year'], iris.analysis.MEAN)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Collapse longitude and latitude to get a timeseries\n", + "yearly_max = yearly_max.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MAX)\n", + "yearly_min = yearly_min.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MIN)\n", + "yearly_mean = yearly_mean.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN)\n", + "\n", + "# The resulting cube will be time series only\n", + "yearly_mean" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Print the *year* coordinate of max cube to see if we have the correct years for our constraint time period." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(yearly_max.coord('year').points)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.5 Calculating mean annual cycle\n", + "\n", + "We can calculate the mean annual cycle for precipitation_flux data over the Shanghai region for 1981-2010 (30 years) by averaging together each month(so we average all January data to get the mean for January)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# extract the precipitation_flux data into an iris cube from the cubelist\n", + "pflx = cubelist.extract_strict('precipitation_flux')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "min_lat=29.0\n", + "max_lat=32.0\n", + "min_lon=118.0\n", + "max_lon=123.0\n", + "\n", + "# extract data for the the Shanghai region using extract_rot_cube() function\n", + "pflx_ext = extract_rot_cube(pflx, min_lat, min_lon, max_lat, max_lon)\n", + "pflx_ext" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next extracting time constraint" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Extracting time constraint\n", + "start_time = 1981\n", + "end_time = 2010\n", + "cons = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", + "subcube = pflx_ext.extract(cons)\n", + "subcube" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# remove auxiliary coordinates\n", + "subcube.remove_coord(\"latitude\")\n", + "subcube.remove_coord(\"longitude\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "we can use the **add_time_coord_cats** method and add categorical coordinates such as *month* to the *time* dimension to our cube." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# add the time categorical coordinate to cube\n", + "subcube = add_time_coord_cats(subcube)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Create mean annual cycle\n", + "monthly_mean = subcube.aggregated_by(['month_number'], iris.analysis.MEAN)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "monthly_mean = add_bounds(monthly_mean, ['grid_latitude','grid_longitude'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can calculate the area weight using **iris.analysis.cartography.area_weights** so that we weight the average to account for the fact that the areas of grid cells are variable." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import iris.analysis.cartography\n", + "#calculate the area weight\n", + "grid_areas = iris.analysis.cartography.area_weights(monthly_mean)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Calculate area averaged monthly mean rainfall\n", + "monthly_mean = monthly_mean.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN, weights=grid_areas)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.6 Visualising yearly and monthly means\n", + "\n", + "Let's now visualise yearly mean, max, min data for the air temperature and monthly mean data for the precipitation_flux." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we first need to load libraries for plotting \n", + "import iris.plot as iplt\n", + "import iris.quickplot as qplt\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Visualise yearly max, min and mean data for *air_temperature*." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# plot the timeseries for yearly max, min and mean data\n", + "ax1 = qplt.plot(yearly_max, label = 'Max Temp')\n", + "ax2 = qplt.plot(yearly_min, label = 'Min Temp')\n", + "ax3 = qplt.plot(yearly_mean, label = 'Mean Temp')\n", + "plt.legend(bbox_to_anchor=(1.18, 0.78))\n", + "plt.grid()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's visualise monthly precipitation mean over the thirty years (1980-2010)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "qplt.plot(monthly_mean.coord('month_number'), monthly_mean,color='seagreen')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Task:
      \n", + "
    • Calculate and visualise the monthly mean over Tibetan region from 1981 to 2010. Create the monthly mean with month names
    • \n", + "
    • Coordinates of Tibetan region: Latitude = [26 36], Longitude = [77 104]
    • \n", + "
    \n", + "
    \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# extracting mean air temperature\n", + "cons = iris.Constraint(cube_func=lambda c: (len(c.cell_methods) > 0) and (c.cell_methods[0].method == 'mean') and c.cell_methods[0].intervals[0] == '1 hour')\n", + "air_temp_mean = air_temp.extract_strict(cons)\n", + "\n", + "# defining Tibetan region coords\n", + "min_lat=26.0\n", + "max_lat=36.0\n", + "min_lon=77.0\n", + "max_lon=104.0\n", + "\n", + "# Extract the tibetan region\n", + "air_temp_mean = extract_rot_cube(air_temp_mean, min_lat, min_lon, max_lat, max_lon)\n", + "\n", + "# Time extraction\n", + "start_time = 1981\n", + "end_time = 2010\n", + "cons = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", + "air_temp_mean = air_temp_mean.extract(cons)\n", + "\n", + "# remove auxiliary coordinates\n", + "air_temp_mean.remove_coord(\"latitude\")\n", + "air_temp_mean.remove_coord(\"longitude\")\n", + "\n", + "# add the time categorical coordinate to cube\n", + "air_temp_mean = add_time_coord_cats(air_temp_mean)\n", + "\n", + "\n", + "# Calculating monthly mean\n", + "monthly_mean = air_temp_mean.aggregated_by(['month'], iris.analysis.MEAN)\n", + "\n", + "# adding bounds\n", + "monthly_mean = add_bounds(monthly_mean, ['grid_latitude','grid_longitude'])\n", + "\n", + "#calculate the area weight\n", + "grid_areas = iris.analysis.cartography.area_weights(monthly_mean)\n", + "\n", + "# Calculate area averaged monthly mean rainfall\n", + "monthly_mean = monthly_mean.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN, weights=grid_areas)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Visualizing the monthly mean with month names on x-axis\n", + "qplt.plot(monthly_mean.coord('month'), monthly_mean,color='seagreen')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Calculating seasonal means" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.1 Calculating seasonal means: djf, mam, jja and son\n", + "\n", + "Calculate mean wind speed and wind direction from 1981 to 2010 for different seasons over the entire domain.\n", + "\n", + "First we need to calculate wind speed and wind direction. In previous tutorial, we calculated the wind speed using hard coded simple arithmetic operations. In this tutorial, we will use catnip's **windspeed** and **wind_direction** methods.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# define constraints for x_wind and y_wind data\n", + "xcons = iris.Constraint(cube_func=lambda c: c.standard_name == 'x_wind' and ('pressure' not in [coord.name() for coord in c.coords()]))\n", + "ycons = iris.Constraint(cube_func=lambda c: c.standard_name == 'y_wind' and ('pressure' not in [coord.name() for coord in c.coords()]))\n", + "\n", + "# apply the constraint and load the x_wind and y_wind data\n", + "u = cubelist.extract_strict(xcons)\n", + "v = cubelist.extract_strict(ycons)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# define time constraint\n", + "start_time = 1981\n", + "end_time = 2010\n", + "cons = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", + "u = u.extract(cons)\n", + "v = v.extract(cons)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now import and use catnip's **windspeed** and **wind_direction** methods" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import catnip methods\n", + "from catnip.analysis import windspeed\n", + "from catnip.analysis import wind_direction" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# calculate windspeed and wind direction\n", + "wind_speed_cube = windspeed(u,v)\n", + "wind_direction_cube = wind_direction(u,v)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Add coordinates and extract data for different seasons" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "wind_speed_cube = add_time_coord_cats(wind_speed_cube)\n", + "wind_direction_cube = add_time_coord_cats(wind_direction_cube)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Extract the windspeed data for all four seasons\n", + "wndspd_djf = wind_speed_cube.extract(iris.Constraint(season='djf'))\n", + "wndspd_mam = wind_speed_cube.extract(iris.Constraint(season='mam'))\n", + "wndspd_jja = wind_speed_cube.extract(iris.Constraint(season='jja'))\n", + "wndspd_son = wind_speed_cube.extract(iris.Constraint(season='son'))\n", + "\n", + "# Extract the wind direction data for the all four season \n", + "wnddir_djf = wind_direction_cube.extract(iris.Constraint(season='djf'))\n", + "wnddir_mam = wind_direction_cube.extract(iris.Constraint(season='mam'))\n", + "wnddir_jja = wind_direction_cube.extract(iris.Constraint(season='jja'))\n", + "wnddir_son = wind_direction_cube.extract(iris.Constraint(season='son'))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# lets print out wnddir_son cube to see its chape\n", + "wnddir_son" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Calculate seasonal means" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# calculate the windspeed mean over the seasons\n", + "wspd_djf_mean = wndspd_djf.aggregated_by(['season'], iris.analysis.MEAN)\n", + "wspd_mam_mean = wndspd_mam.aggregated_by(['season'], iris.analysis.MEAN)\n", + "wspd_jja_mean = wndspd_jja.aggregated_by(['season'], iris.analysis.MEAN)\n", + "wspd_son_mean = wndspd_son.aggregated_by(['season'], iris.analysis.MEAN)\n", + "\n", + "# calculate the wind direction mean over the seasons\n", + "wndir_djf_mean = wnddir_djf.aggregated_by(['season'], iris.analysis.MEAN)\n", + "wndir_mam_mean = wnddir_mam.aggregated_by(['season'], iris.analysis.MEAN)\n", + "wndir_jja_mean = wnddir_jja.aggregated_by(['season'], iris.analysis.MEAN)\n", + "wndir_son_mean = wnddir_son.aggregated_by(['season'], iris.analysis.MEAN)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# lets print out wndir_son_mean cube to see its chape\n", + "wndir_son_mean" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now visualise seasonal means" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we first need to load libraries for plotting \n", + "import iris.plot as iplt\n", + "import iris.quickplot as qplt\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# list of seasonal cubes to loop through\n", + "seasonal_cubes = [wspd_djf_mean, wspd_mam_mean, wspd_jja_mean, wspd_son_mean]\n", + "\n", + "# here we create a list of mean cubes and we will run for loop over it.\n", + "\n", + "# set a figure big enough to hold the subplots\n", + "plt.figure(figsize=(10, 10))\n", + "\n", + "# loop through the seaonal cube list and plot the data\n", + "# len functions returns the length of the list. \n", + "for i in range(len(seasonal_cubes)): \n", + " \n", + " plt.subplot(2, 2, i+1)\n", + " # above line will create the 2 rows and 2 cols of subplots and i indicates the position of subplot. \n", + " # i starts from 0, that is why we increment 1 in it. \n", + " # plot the windspeed at the first timestep \n", + " qplt.contourf(seasonal_cubes[i][0,:,:])\n", + " # add some coastlines for context\n", + " plt.gca().coastlines() \n", + " # get the season name from the coordinate\n", + " season = seasonal_cubes[i].coord('season').points[0]\n", + " # add the name as plot's title\n", + " plt.title('Season: '+ season)\n", + " plt.tight_layout()\n", + " \n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Task:
      \n", + "
    • Calculate and visualise the seasonal mean of surface temperature over Tibatan region from 1981 to 2010.
    • \n", + "
    • Coordinates of Tibetan region: Latitude = [26 36], Longitude = [77 104]
    • \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Extract surface temperature\n", + "sft = cubelist.extract_strict('surface_temperature')\n", + "\n", + "# defining Tibetan region coords\n", + "min_lat=26.0\n", + "max_lat=36.0\n", + "min_lon=77.0\n", + "max_lon=104.0\n", + "\n", + "# Extract the tibetan region\n", + "sft = extract_rot_cube(sft, min_lat, min_lon, max_lat, max_lon)\n", + "\n", + "# Extract time\n", + "start_time = 1981\n", + "end_time = 2010\n", + "cons = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", + "sft = sft.extract(cons)\n", + "\n", + "sft = add_time_coord_cats(sft)\n", + "\n", + "# Extract the surface temperature for all four seasons\n", + "sft_djf = sft.extract(iris.Constraint(season='djf'))\n", + "sft_mam = sft.extract(iris.Constraint(season='mam'))\n", + "sft_jja = sft.extract(iris.Constraint(season='jja'))\n", + "sft_son = sft.extract(iris.Constraint(season='son'))\n", + "\n", + "# calculate the mean over the seasons\n", + "sft_djf_mean = sft_djf.aggregated_by(['season'], iris.analysis.MEAN)\n", + "sft_mam_mean = sft_mam.aggregated_by(['season'], iris.analysis.MEAN)\n", + "sft_jja_mean = sft_jja.aggregated_by(['season'], iris.analysis.MEAN)\n", + "sft_son_mean = sft_son.aggregated_by(['season'], iris.analysis.MEAN)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Visualising seasonal means\n", + "# list of seasonal cubes to loop through\n", + "seasonal_cubes = [sft_djf_mean, sft_mam_mean, sft_jja_mean, sft_son_mean]\n", + "\n", + "\n", + "# set a figure big enough to hold the subplots\n", + "plt.figure(figsize=(10, 10))\n", + "\n", + "# loop through the seaonal cube list and plot the data\n", + "for i in range(len(seasonal_cubes)): \n", + " \n", + " plt.subplot(2, 2, i+1)\n", + " # plot the windspeed at the first timestep \n", + " qplt.contourf(seasonal_cubes[i][0,:,:])\n", + " # add some coastlines for context\n", + " plt.gca().coastlines() \n", + " # get the season name from the coordinate\n", + " season = seasonal_cubes[i].coord('season').points[0]\n", + " # add the name as plot's title\n", + " plt.title('Season: '+ season)\n", + " plt.tight_layout()\n", + " \n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also plot in any other project. Python cartopy library provide us the range of option of ploting in different projection. See the list of option in [cartopy documentation](https://scitools.org.uk/cartopy/docs/latest/crs/projections.html). Lets try the above plot with **PlateCarree** projection." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import cartopy.crs as ccrs\n", + "# list of seasonal cubes to loop through\n", + "seasonal_cubes = [wspd_djf_mean, wspd_mam_mean, wspd_jja_mean, wspd_son_mean]\n", + "\n", + "# set a figure big enough to hold the subplots\n", + "plt.figure(figsize=(10, 10))\n", + "\n", + "# loop through the seaonal cube list and plot the data\n", + "for i in range(len(seasonal_cubes)): \n", + " \n", + " plt.subplot(2, 2, i+1, projection=ccrs.PlateCarree())\n", + " # plot the windspeed at the first timestep \n", + " qplt.contourf(seasonal_cubes[i][0,:,:])\n", + " # add some coastlines for context\n", + " plt.gca().coastlines() \n", + " # get the season name from the coordinate\n", + " season = seasonal_cubes[i].coord('season').points[0]\n", + " # add the name as plot's title\n", + " plt.title('Season: '+ season)\n", + " plt.tight_layout()\n", + " \n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Calculating differences" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.1 mean surface temperature diffference in winter season (dec, jan, feb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can find the difference of mean surface temperature between the past(1851-1880) and recent(1981-2010) 30 years periods.\n", + "\n", + "First, we need to extract out desired data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# extract air_temperature\n", + "sft = cubelist.extract_strict('surface_temperature')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# constraints: two 30 years periods - past and presnet\n", + "past_cons = iris.Constraint(time=lambda cell: 1851 <= cell.point.year <= 1880)\n", + "present_cons = iris.Constraint(time=lambda cell: 1981 <= cell.point.year <= 2010)\n", + "past = sft.extract(past_cons)\n", + "present = sft.extract(present_cons)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# load catnip's add_time_coord_cats method\n", + "from catnip.preparation import add_time_coord_cats\n", + "\n", + "# Add other dimension coordinates\n", + "past = add_time_coord_cats(past)\n", + "present = add_time_coord_cats(present)\n", + "\n", + "# Extract the winter season \n", + "past_djf = past.extract(iris.Constraint(season='djf'))\n", + "present_djf = present.extract(iris.Constraint(season='djf'))\n", + "\n", + "# extract data for Shanghai region\n", + "past_djf = extract_rot_cube(past_djf, min_lat, min_lon, max_lat, max_lon)\n", + "present_djf = extract_rot_cube(present_djf, min_lat, min_lon, max_lat, max_lon)\n", + "\n", + "# calculate 30 year mean of winter season\n", + "past_djf = past_djf.aggregated_by(['season'], iris.analysis.MEAN)\n", + "present_djf = present_djf.aggregated_by(['season'], iris.analysis.MEAN)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have now got our cubes for different climatological periods. We now calcuate the difference by subtracting the past data form present using **iris.analysis.math.subtract** method." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "djf_diff = iris.analysis.maths.subtract(present_djf, past_djf)\n", + "djf_diff.rename('surface temperature difference: Winter')\n", + "past_djf.rename('surface temperature past climate: Winter 1851-1880 ')\n", + "present_djf.rename('surface temperature present climate: Winter 1981-2010 ')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# add bounds to the cubes \n", + "past_djf = add_bounds(past_djf, ['grid_latitude','grid_longitude'])\n", + "present_djf = add_bounds(present_djf, ['grid_latitude','grid_longitude'])\n", + "djf_diff = add_bounds(djf_diff, ['grid_latitude','grid_longitude'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
    \n", + "Note: iris.analysis.math provides a range of mathematical and statistical operations. See the documentation for more information\n", + "\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now visualise the difference" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# list of our djf cubes and diff cube to loop through\n", + "seasonal_cubes = [present_djf, past_djf, djf_diff]\n", + "plt.figure(figsize=(15, 10))\n", + "# loop through the seaonal cube list and plot the data\n", + "for i in range(len(seasonal_cubes)):\n", + " plt.subplot(2, 2, i+1)\n", + " # plot the windspeed at the first timestep \n", + " if i==2:\n", + " qplt.pcolormesh(seasonal_cubes[i][0,:,:],cmap=plt.cm.get_cmap('Reds'),vmin=0, vmax=2)\n", + " else:\n", + " qplt.pcolormesh(seasonal_cubes[i][0,:,:],vmin=277.5, vmax=289)\n", + " \n", + " # add some coastlines for context\n", + " plt.gca().coastlines() \n", + " # get the season name from the coordinate\n", + " season = seasonal_cubes[i].coord('season').points[0]\n", + " # add the name as plot's title\n", + " plt.title(seasonal_cubes[i].name())\n", + " \n", + " \n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.2 Percentage difference in winter precipitaition " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also calculate the percentage difference. \n", + "\n", + "Let's calculate the change in mean precipitation from a past 30 year period (1851-1880) to the most recent 30 years (1981-2010)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# extract precipitation flux\n", + "pflx = cubelist.extract_strict('precipitation_flux')\n", + "\n", + "# extract the time contraints \n", + "past_cons = iris.Constraint(time=lambda cell: 1851 <= cell.point.year <= 1880)\n", + "present_cons = iris.Constraint(time=lambda cell: 1981 <= cell.point.year <= 2010)\n", + "past = pflx.extract(past_cons)\n", + "present = pflx.extract(present_cons)\n", + "\n", + "# Add other dimension coordinates\n", + "past = add_time_coord_cats(past)\n", + "present = add_time_coord_cats(present)\n", + "\n", + "# Extract the precipitation data for the winter season \n", + "past_djf = past.extract(iris.Constraint(season='djf'))\n", + "present_djf = present.extract(iris.Constraint(season='djf'))\n", + "\n", + "# extract data for Shanghai region\n", + "past_djf = extract_rot_cube(past_djf, min_lat, min_lon, max_lat, max_lon)\n", + "present_djf = extract_rot_cube(present_djf, min_lat, min_lon, max_lat, max_lon)\n", + "\n", + "# calculate the means \n", + "past_djf = past_djf.aggregated_by(['season'], iris.analysis.MEAN)\n", + "present_djf = present_djf.aggregated_by(['season'], iris.analysis.MEAN)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now calculate the difference using **subtract** function" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "djf_diff = iris.analysis.maths.subtract(present_djf, past_djf)\n", + "djf_diff.rename('precipitation flux difference: Winter')\n", + "past_djf.rename('precipitation flux past climate: Winter 1851-1880 ')\n", + "present_djf.rename('precipitation flux present climate: Winter 1981-2010 ')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# add bounds to the cubes \n", + "past_djf = add_bounds(past_djf, ['grid_latitude','grid_longitude'])\n", + "present_djf = add_bounds(present_djf, ['grid_latitude','grid_longitude'])\n", + "djf_diff = add_bounds(djf_diff, ['grid_latitude','grid_longitude'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To calcuate the percentage difference, we can use **analysis.maths.multiply** and **iris.analysis.maths.divide** to calculate percentage change" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Find the percentage change\n", + "pcent_change = iris.analysis.maths.multiply(iris.analysis.maths.divide(djf_diff, past_djf), 100)\n", + "\n", + "# remember to change the title and units to reflect the data processing\n", + "pcent_change.rename('precipitation flux percent difference')\n", + "pcent_change.units = '%'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# using iris plot for better colour saturation!\n", + "import iris.plot as iplt\n", + "\n", + "# list of our winter cubes and the diff cube to loop through for plotting\n", + "seasonal_cubes = [present_djf, past_djf, pcent_change]\n", + "plt.figure(figsize=(15, 10))\n", + "# loop through the seaonal cube list and plot the data\n", + "for i in range(len(seasonal_cubes)):\n", + " plt.subplot(2, 2, i+1)\n", + " # plot the windspeed at the first timestep \n", + " if i==2:\n", + " qplt.pcolormesh(seasonal_cubes[i][0,:,:],cmap=plt.cm.get_cmap('RdBu'))\n", + " else:\n", + " qplt.pcolormesh(seasonal_cubes[i][0,:,:])\n", + " \n", + " # add some coastlines for context\n", + " plt.gca().coastlines() \n", + " # get the season name from the coordinate\n", + " season = seasonal_cubes[i].coord('season').points[0]\n", + " # add the name as plot's title\n", + " plt.title(seasonal_cubes[i].name())\n", + " \n", + " \n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Task:
      \n", + "
    • Calculate mean surface temperature difference over Tibetan region from past 30 years (1851-1880) to present 30 years (1981-2010).\n", + "
    • Coordinates of Tibetan region: Latitude = [26 36], Longitude = [77 104]
    • \n", + "
    \n", + "
    \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# extract air_temperature\n", + "air_temp = cubelist.extract('air_temperature')\n", + "\n", + "# Extract mean temperature\n", + "cons = iris.Constraint(cube_func=lambda c: (len(c.cell_methods) > 0) and (c.cell_methods[0].method == 'mean') and c.cell_methods[0].intervals[0] == '1 hour')\n", + "atemp = air_temp.extract_strict(cons)\n", + "\n", + "# extract the time contraints \n", + "cons1 = iris.Constraint(time=lambda cell: 1851 <= cell.point.year <= 1880)\n", + "cons2 = iris.Constraint(time=lambda cell: 1981 <= cell.point.year <= 2010)\n", + "past = atemp.extract(cons1)\n", + "present = atemp.extract(cons2)\n", + "\n", + "# Add other dimension coordinates\n", + "past = add_time_coord_cats(past)\n", + "present = add_time_coord_cats(present)\n", + "\n", + "# Add other dimension coordinates\n", + "past = add_time_coord_cats(past)\n", + "present = add_time_coord_cats(present)\n", + "\n", + "# Extract the temperature data for the winter season \n", + "past_djf = past.extract(iris.Constraint(season='djf'))\n", + "present_djf = present.extract(iris.Constraint(season='djf'))\n", + "\n", + "# defining Tibetan region coords\n", + "min_lat=26.0\n", + "max_lat=36.0\n", + "min_lon=77.0\n", + "max_lon=104.0\n", + "\n", + "# extract the tibatan region\n", + "past_djf = extract_rot_cube(past_djf, min_lat, min_lon, max_lat, max_lon)\n", + "present_djf = extract_rot_cube(present_djf, min_lat, min_lon, max_lat, max_lon)\n", + "\n", + "# calculate the means \n", + "past_djf = past_djf.aggregated_by(['season'], iris.analysis.MEAN)\n", + "present_djf = present_djf.aggregated_by(['season'], iris.analysis.MEAN)\n", + "\n", + "# Calculating the difference \n", + "djf_diff = iris.analysis.maths.subtract(present_djf, past_djf)\n", + "djf_diff.rename('Mean temperature difference: Winter')\n", + "past_djf.rename('Mean temperature past climate: Winter 1851-1880 ')\n", + "present_djf.rename('Mean temperature present climate: Winter 1981-2010 ')\n", + "\n", + "# adding bounds\n", + "past_djf = add_bounds(past_djf, ['grid_latitude','grid_longitude'])\n", + "present_djf = add_bounds(present_djf, ['grid_latitude','grid_longitude'])\n", + "djf_diff = add_bounds(djf_diff, ['grid_latitude','grid_longitude'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# visualizing the results \n", + "\n", + "# using iris plot for better colour saturation!\n", + "import iris.plot as iplt\n", + "\n", + "# list of our winter cubes and the diff cube to loop through for plotting\n", + "seasonal_cubes = [present_djf, past_djf, djf_diff]\n", + "plt.figure(figsize=(15, 10))\n", + "# loop through the seaonal cube list and plot the data\n", + "for i in range(len(seasonal_cubes)):\n", + " plt.subplot(2, 2, i+1)\n", + " qplt.pcolormesh(seasonal_cubes[i][0,:,:])\n", + " # add some coastlines for context\n", + " plt.gca().coastlines() \n", + " # get the season name from the coordinate\n", + " season = seasonal_cubes[i].coord('season').points[0]\n", + " # add the name as plot's title\n", + " plt.title(seasonal_cubes[i].name())\n", + " \n", + " \n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Exercises" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this exercise we will analyse the mean air temperature from past 30 years (1851-1880) to present 30 years (1981-2010), over the Shanghai region, in all four seasons. Visualize past, present and difference in a row." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 1: Load monthly data and constraint time and region" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# extract air_temperature\n", + "air_temp = cubelist.extract('air_temperature')\n", + "\n", + "# Extract mean temperature\n", + "cons = iris.Constraint(cube_func=lambda c: (len(c.cell_methods) > 0) and (c.cell_methods[0].method == 'mean') and c.cell_methods[0].intervals[0] == '1 hour')\n", + "atemp = air_temp.extract_strict(cons)\n", + "\n", + "# extract the time contraints \n", + "cons1 = iris.Constraint(time=lambda cell: 1851 <= cell.point.year <= 1880)\n", + "cons2 = iris.Constraint(time=lambda cell: 1981 <= cell.point.year <= 2010)\n", + "past = atemp.extract(cons1)\n", + "present = atemp.extract(cons2)\n", + "\n", + "# defining Shanghai region coords\n", + "min_lat=29.0\n", + "max_lat=32.0\n", + "min_lon=118.0\n", + "max_lon=123.0\n", + "\n", + "# extract the Shanghai region\n", + "past = extract_rot_cube(past, min_lat, min_lon, max_lat, max_lon)\n", + "present = extract_rot_cube(present, min_lat, min_lon, max_lat, max_lon)\n", + "\n", + "# Add other dimension coordinates\n", + "past = add_time_coord_cats(past)\n", + "present = add_time_coord_cats(present)\n", + "\n", + "\n", + "# add bounds \n", + "past = add_bounds(past, ['grid_latitude','grid_longitude'])\n", + "present = add_bounds(present, ['grid_latitude','grid_longitude'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 2: Calculate seasonal mean" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Extract the mean temperature data for all four season \n", + "past_djf = past.extract(iris.Constraint(season='djf'))\n", + "present_djf = present.extract(iris.Constraint(season='djf'))\n", + "\n", + "past_mam = past.extract(iris.Constraint(season='mam'))\n", + "present_mam = present.extract(iris.Constraint(season='mam'))\n", + "\n", + "past_jja = past.extract(iris.Constraint(season='jja'))\n", + "present_jja = present.extract(iris.Constraint(season='jja'))\n", + "\n", + "past_son = past.extract(iris.Constraint(season='son'))\n", + "present_son = present.extract(iris.Constraint(season='son'))\n", + "\n", + "# calculate the means \n", + "past_djf = past_djf.aggregated_by(['season'], iris.analysis.MEAN)\n", + "present_djf = present_djf.aggregated_by(['season'], iris.analysis.MEAN)\n", + "\n", + "past_mam = past_mam.aggregated_by(['season'], iris.analysis.MEAN)\n", + "present_mam = present_mam.aggregated_by(['season'], iris.analysis.MEAN)\n", + "\n", + "past_jja = past_jja.aggregated_by(['season'], iris.analysis.MEAN)\n", + "present_jja = present_jja.aggregated_by(['season'], iris.analysis.MEAN)\n", + "\n", + "past_son = past_son.aggregated_by(['season'], iris.analysis.MEAN)\n", + "present_son = present_son.aggregated_by(['season'], iris.analysis.MEAN)\n", + "\n", + "# Calculating the difference and renaming the cubes\n", + "djf_diff = iris.analysis.maths.subtract(present_djf, past_djf)\n", + "djf_diff.rename('Mean temperature difference: DJF')\n", + "past_djf.rename('Mean temperature past climate: DJF')\n", + "present_djf.rename('Mean temperature present climate: DJF')\n", + "\n", + "mam_diff = iris.analysis.maths.subtract(present_mam, past_mam)\n", + "mam_diff.rename('Mean temperature difference: MAM')\n", + "past_mam.rename('Mean temperature past climate: MAM')\n", + "present_mam.rename('Mean temperature present climate: MAM')\n", + "\n", + "jja_diff = iris.analysis.maths.subtract(present_jja, past_jja)\n", + "jja_diff.rename('Mean temperature difference: JJA')\n", + "past_jja.rename('Mean temperature past climate: JJA')\n", + "present_jja.rename('Mean temperature present climate: JJA')\n", + "\n", + "son_diff = iris.analysis.maths.subtract(present_son, past_son)\n", + "son_diff.rename('Mean temperature difference: SON')\n", + "past_son.rename('Mean temperature past climate: SON')\n", + "present_son.rename('Mean temperature present climate: SON')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 3: Visualise the results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# visualizing the results \n", + "\n", + "# using iris plot for better colour saturation!\n", + "import iris.plot as iplt\n", + "\n", + "# list of our winter cubes and the diff cube to loop through for plotting\n", + "seasonal_cubes = [present_djf, past_djf, djf_diff, present_mam, past_mam, mam_diff, present_jja, past_jja, jja_diff, present_son, past_son, son_diff]\n", + "plt.figure(figsize=(15, 15))\n", + "# loop through the seaonal cube list and plot the data\n", + "for i in range(len(seasonal_cubes)):\n", + " plt.subplot(4, 3, i+1)\n", + " qplt.pcolormesh(seasonal_cubes[i][0,:,:])\n", + " # add some coastlines for context\n", + " plt.gca().coastlines() \n", + " # get the season name from the coordinate\n", + " season = seasonal_cubes[i].coord('season').points[0]\n", + " # add the name as plot's title\n", + " plt.title(seasonal_cubes[i].name())\n", + " \n", + " \n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Summary
    \n", + " In this session we learned how:
    \n", + "
      \n", + "
    • to calculate yearly and monthly means
    • \n", + "
    • to calculate seasonal means and differences
    • \n", + "
    • to visualize the results
    • \n", + "
    \n", + "\n", + "
    \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "cssp37", + "language": "python", + "name": "cssp37" + }, + "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.7.8" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_4_advance_analysis.ipynb b/notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_4_advance_analysis.ipynb new file mode 100644 index 0000000..b04e128 --- /dev/null +++ b/notebooks/CSSP_20CRDS_Tutorials/solutions/solution_tutorial_4_advance_analysis.ipynb @@ -0,0 +1,1201 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "# Tutorial 4: Advanced data analysis\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Learning Objectives:\n", + "\n", + "In this session we will learn: \n", + "1. to calculate frequency of wet days\n", + "2. to calculate percentiles\n", + "3. how to calculate some useful climate extremes statistics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contents\n", + "\n", + "1. [Frequency of wet days](#freq)\n", + "2. [Percentiles](#percent)\n", + "3. [Investigating extremes](#extremes)\n", + "4. [Exercises](#exercise)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Prerequisites
    \n", + "- Basic programming skills in python
    \n", + "- Familiarity with python libraries Iris, Numpy and Matplotlib
    \n", + "- Basic understanding of climate data
    \n", + "- Tutorial 1, 2 and 3\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Frequency of wet days\n", + "### 1.1 Import libraries\n", + "Import the necessary libraries. Current datasets are in zarr format, we need zarr and xarray libraries to access the data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import xarray as xr\n", + "import zarr\n", + "import iris\n", + "import os\n", + "import sys\n", + "from iris.analysis import Aggregator\n", + "import dask\n", + "dask.config.set(scheduler=dask.get)\n", + "import dask.array as da\n", + "import iris.quickplot as qplt\n", + "import iris.plot as iplt\n", + "import cartopy.crs as ccrs\n", + "import cartopy.feature as cfeature\n", + "import matplotlib.pyplot as plt\n", + "sys.path.append(os.path.abspath('../'))\n", + "from catnip.preparation import extract_rot_cube, add_bounds\n", + "from scripts.xarray_iris_coord_system import XarrayIrisCoordSystem as xics\n", + "xi = xics()\n", + "xr.set_options(display_style='text') # Work around for AML bug that won't display HTML output." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Prerequisites
    \n", + "- Basic programming skills in python
    \n", + "- Familiarity with python libraries Iris, Numpy and Matplotlib
    \n", + "- Basic understanding of climate data
    \n", + "- Tutorials 1, 2 and 3\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.2 Set up authentication for the Azure blob store\n", + "\n", + "The data for this course is held online in an Azure Blob Storage Service. To access this we use a SAS (shared access signature). You should have been given the credentials for this service before the course, but if not please ask your instructor. We use the getpass module here to avoid putting the token into the public domain. Run the cell below and in the box enter your SAS and press return. This will store the password in the variable SAS." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import getpass\n", + "# SAS WITHOUT leading '?'\n", + "SAS = getpass.getpass()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now use the Zarr library to connect to this storage. This is a little like opening a file on a local file system but works without downloading the data. This makes use of the Azure Blob Storage service. The zarr.ABStore method returns a zarr.storage.ABSStore object which we can now use to access the Zarr data in the same way we would use a local file. If you have a Zarr file on a local file system you could skip this step and instead just use the path to the Zarr data below when opening the dataset." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "store = zarr.ABSStore(container='metoffice-20cr-ds', prefix='daily/', account_name=\"metdatasa\", blob_service_kwargs={\"sas_token\":SAS})\n", + "type(store)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.3 Read daily data\n", + "A Dataset consists of coordinates and data variables. Let's use the xarray's **open_zarr()** method to read all our zarr data into a dataset object and display it's metadata" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# use the open_zarr() method to read in the whole dataset metadata\n", + "dataset = xr.open_zarr(store)\n", + "# print out the metadata\n", + "dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Convert the dataset into an iris cubelist." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from xarray_iris_coord_system import XarrayIrisCoordSystem as xics\n", + "xi = xics()\n", + "# create an empty list to hold the iris cubes\n", + "cubelist = iris.cube.CubeList([])\n", + "\n", + "# use the DataSet.apply() to convert the dataset to Iris Cublelist\n", + "dataset.apply(lambda da: cubelist.append(xi.to_iris(da)))\n", + "\n", + "# print out the cubelist.\n", + "cubelist" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Note: The following sections demonstrate analysis of moderate extremes. The basis of climate extremes analysis is a common set of standard extreme climate indices, defined by the World Climate Research Programme Expert Team on Climate Change Detection and Indices (ETCCDI)\n", + " \n", + "
    There are 27 climate extremes indices, nicely summarised by the Climdex website.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.4 Calculate number of wet days ($\\mathrm{pr} \\geq 1 mm \\;day^{-1}$)\n", + "\n", + "In this section we'll be looking at wet days, a threshold measure giving the count of days when $\\mathrm{pr} \\geq 1 mm \\;day^{-1}$, and R95p, the 95th percentile of precipitation on wet days ($\\mathrm{pr} \\geq 1 mm \\;day^{-1}$) in the 1851-1900 period over the Shanghai region." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Extract the 'precipitation_flux' cube\n", + "pflx = cubelist.extract_strict('precipitation_flux')\n", + "# To avoid warnings when collapsing coordinates and also when plotting, add bounds to all coordinates\n", + "pflx = add_bounds(pflx,['time', 'grid_latitude', 'grid_longitude'])\n", + "# convert units to mm/day (equivalent to 'kg m-2 day-1')\n", + "pflx.convert_units('kg m-2 day-1')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Applying the time and region constraint" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# define time constraint and extract 1851-1900 period\n", + "start_time = 1851\n", + "end_time = 1900\n", + "\n", + "# define the time constraint\n", + "time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", + "\n", + "# laod the data into cubes applying the time constraint\n", + "pflx = pflx.extract(time_constraint)\n", + "\n", + "# extract Shangai region and constain with time\n", + "\n", + "# defining Shangai region coords\n", + "min_lat=29.0\n", + "max_lat=32.0\n", + "min_lon=118.0\n", + "max_lon=123.0\n", + "\n", + "# extract data for the the Shanghai region using extract_rot_cube() function\n", + "pflx = extract_rot_cube(pflx, min_lat, min_lon, max_lat, max_lon)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# now use the iris COUNT aggregator to count the number of days with > 1mm precip\n", + "wetdays = pflx.collapsed('time', iris.analysis.COUNT, function=lambda values: values > 1)\n", + "wetdays.rename('number of wet days (>=1mm/day)')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Find wet days as a percentage of total days\n", + "total_days = len(pflx.coord('time').points)\n", + "pcent_wetdays = (wetdays / total_days) * 100\n", + "\n", + "# renaming the cube name and units\n", + "pcent_wetdays.rename('percentage of wet days (>=1mm/day)')\n", + "pcent_wetdays.units = '%'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, we can plot the number and percentage of wet days" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12, 6))\n", + "fig.suptitle('Number of wet days (1851-1900)', fontsize=16)\n", + "ax1 = fig.add_subplot(1, 2, 1, projection=ccrs.PlateCarree())\n", + "qplt.pcolormesh(wetdays)\n", + "ax1.coastlines()\n", + "ax1 = fig.add_subplot(1, 2, 2, projection=ccrs.PlateCarree())\n", + "qplt.pcolormesh(pcent_wetdays)\n", + "ax1.coastlines()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Task:
      \n", + "
    • Calculate and visualise the percentage difference of wet days from past (1851-1880) to recent (1981-2010) 30 years period.\n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Extract the 'precipitation_flux' cube\n", + "pflx = cubelist.extract_strict('precipitation_flux')\n", + "# To avoid warnings when collapsing coordinates and also when plotting, add bounds to all coordinates\n", + "pflx = add_bounds(pflx,['time', 'grid_latitude', 'grid_longitude'])\n", + "# convert units to mm/day (equivalent to 'kg m-2 day-1')\n", + "pflx.convert_units('kg m-2 day-1')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# define historical time constraint and extract 1851-1880 period\n", + "start_time = 1851\n", + "end_time = 1880\n", + "\n", + "# define the historical time constraint\n", + "past_time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", + "\n", + "# laod the data into cubes applying the time constraint\n", + "past_pflx = pflx.extract(past_time_constraint)\n", + "\n", + "# define recent time constraint and extract 1981-2010 period\n", + "start_time = 1981\n", + "end_time = 2010\n", + "\n", + "# define the recent time constraint\n", + "recent_time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", + "\n", + "# laod the data into cubes applying the time constraint\n", + "recent_pflx = pflx.extract(recent_time_constraint)\n", + "\n", + "# defining Shangai region coords\n", + "min_lat=29.0\n", + "max_lat=32.0\n", + "min_lon=118.0\n", + "max_lon=123.0\n", + "\n", + "# extract data for the the Shanghai region using extract_rot_cube() function\n", + "past_pflx = extract_rot_cube(past_pflx, min_lat, min_lon, max_lat, max_lon)\n", + "recent_pflx = extract_rot_cube(recent_pflx, min_lat, min_lon, max_lat, max_lon)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# now use the iris COUNT aggregator to count the number of days with > 1mm precip\n", + "past_wetdays = past_pflx.collapsed('time', iris.analysis.COUNT, function=lambda values: values > 1)\n", + "past_wetdays.rename('historical number of wet days (>=1mm/day)')\n", + "\n", + "\n", + "# Find wet days as a percentage of total days\n", + "total_days = len(past_wetdays.coord('time').points)\n", + "pcent_past_wetdays = (past_wetdays / total_days) * 100\n", + "\n", + "# renaming the cube name and units\n", + "pcent_past_wetdays.rename('historical percentage of wet days (>=1mm/day)')\n", + "pcent_past_wetdays.units = '%'\n", + "\n", + "# calculate for the recent data\n", + "recent_wetdays = recent_pflx.collapsed('time', iris.analysis.COUNT, function=lambda values: values > 1)\n", + "recent_wetdays.rename('recent number of wet days (>=1mm/day)')\n", + "\n", + "# Find wet days as a percentage of total days\n", + "total_days = len(recent_wetdays.coord('time').points)\n", + "pcent_recent_wetdays = (recent_wetdays / total_days) * 100\n", + "\n", + "# renaming the cube name and units\n", + "pcent_recent_wetdays.rename('recent percentage of wet days (>=1mm/day)')\n", + "pcent_recent_wetdays.units = '%'\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# plot the data as number of wet days\n", + "fig = plt.figure(figsize=(12, 6))\n", + "fig.suptitle('Number of wet days Historical (1851-1900) vs Recent (1981-2010)', fontsize=16)\n", + "ax1 = fig.add_subplot(1, 2, 1, projection=ccrs.PlateCarree())\n", + "qplt.pcolormesh(past_wetdays)\n", + "ax1.coastlines()\n", + "ax1 = fig.add_subplot(1, 2, 2, projection=ccrs.PlateCarree())\n", + "qplt.pcolormesh(recent_wetdays)\n", + "ax1.coastlines()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# plot the data as percentage of wet days\n", + "fig = plt.figure(figsize=(12, 6))\n", + "fig.suptitle('Percentage of wet days Historical (1851-1900) vs Recent (1981-2010)', fontsize=16)\n", + "ax1 = fig.add_subplot(1, 2, 1, projection=ccrs.PlateCarree())\n", + "qplt.pcolormesh(pcent_past_wetdays)\n", + "ax1.coastlines()\n", + "ax1 = fig.add_subplot(1, 2, 2, projection=ccrs.PlateCarree())\n", + "qplt.pcolormesh(pcent_recent_wetdays)\n", + "ax1.coastlines()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Percentiles" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.1 Calculating 95th percentile of precipitation\n", + "\n", + "In this section we will calculate the extreme precipitation i.e. 95th percentile. We have already extracted our cube *Pflx%* so we can use the *iris.analysis.PERCENTILE* method to calculate the percentile." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Extract the 'precipitation_flux' cube\n", + "pflx = cubelist.extract_strict('precipitation_flux')\n", + "\n", + "# change the units to kg m-2 d-1\n", + "pflx.convert_units('kg m-2 d-1')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# define time constraint and extract 1851-1900 period\n", + "start_time = 1981\n", + "end_time = 2010\n", + "\n", + "# define the time constraint\n", + "cons = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", + "\n", + "# laod the data into cubes applying the time constraint\n", + "pflx = pflx.extract(cons)\n", + "\n", + "# extract Shangai region and constain with time\n", + "\n", + "# defining Shangai region coords\n", + "min_lat=29.0\n", + "max_lat=32.0\n", + "min_lon=118.0\n", + "max_lon=123.0\n", + "\n", + "# extract data for the the Shanghai region using extract_rot_cube() function\n", + "pflx = extract_rot_cube(pflx, min_lat, min_lon, max_lat, max_lon)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# make a copy of the cube, mask where daily rainfall < 1 so that only wet days\n", + "# are included in the calculation\n", + "pflx_wet = pflx.copy()\n", + "pflx_wet.data = np.ma.masked_less(pflx_wet.data, 1.0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can use the iris.analysis.PERCENTILE method to calculate the percentile." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pflx_pc95 = pflx_wet.collapsed('time', iris.analysis.PERCENTILE, percent=95.)\n", + "pflx_pc95.rename('R95p of daily rainfall')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12, 6))\n", + "fig.suptitle('Extreme rainfall', fontsize=16)\n", + "qplt.pcolormesh(pflx_pc95)\n", + "plt.gca().coastlines()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Investigate extremes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.1 Calculate the extreme index TX90P" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Calculate the frequency of warm days in the present (extreme index TX90P), i.e. the number of days which exceed the 90th percentile temperatures in the baseline. Then calculate the numbers of days as a percentage." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# first extract the air_temperature at 1.5m cubes from the cubelist\n", + "air_temp = cubelist.extract('air_temperature' & iris.AttributeConstraint(Height='1.5 m'))\n", + "\n", + "# constraint for the maximum temperature \n", + "max_temp_cons = iris.Constraint(cube_func=lambda c: (len(c.cell_methods) > 0) and \n", + " (c.cell_methods[0].method == 'maximum'))\n", + "\n", + "# define time constraint and extract 1851-1900 period (the baseline)\n", + "start_time = 1851\n", + "end_time = 1900\n", + "\n", + "# define the time constraint\n", + "time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", + "\n", + "# applying the pressure, maximum temperature and time constraints getting a single cube\n", + "max_temp = air_temp.extract_strict(max_temp_cons & time_constraint)\n", + "\n", + "# defining Shangai region coords\n", + "min_lat=29.0\n", + "max_lat=32.0\n", + "min_lon=118.0\n", + "max_lon=123.0\n", + "\n", + "# extract data for the the Shanghai region using extract_rot_cube() function\n", + "max_temp = extract_rot_cube(max_temp, min_lat, min_lon, max_lat, max_lon)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "max_temp_pc90 = max_temp.collapsed('time', iris.analysis.PERCENTILE, percent=90.)\n", + "max_temp_pc90.rename('R90p of daily maximum temperature')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Now extract present day\n", + "# extract a single cube of maximum air_temperature at 1.5m cube from the cubelist\n", + "max_temp = cubelist.extract_strict('air_temperature' & iris.AttributeConstraint(Height='1.5 m') &\n", + " max_temp_cons)\n", + "# extract data for the the Shanghai region using extract_rot_cube() function\n", + "max_temp = extract_rot_cube(max_temp, min_lat, min_lon, max_lat, max_lon)\n", + "\n", + "start_time = 1981\n", + "end_time = 2010\n", + "\n", + "time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", + "max_temp = max_temp.extract(time_constraint)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we need to calculate the number of warm days, we do so by counting all the data points that are greater than 90th percentile of the baseline period within the last 30 years. We can use numpy method **np.where** which return 1 where max_temp is greater then max_temp_pc90 and returns 0 otherise. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# make new cube to hold the counts\n", + "nwarmdays = max_temp_pc90.copy()\n", + "\n", + "# Use broadcasting to identify all cells where daily temperatures in the future exceed the 95th percentile\n", + "temp_gt_pc90 = np.where(max_temp.data >= max_temp_pc90.data, 1, 0)\n", + "\n", + "# using np.ma.sum to sum the number of warm days above the 90th percentile\n", + "nwarmdays.data = np.ma.sum(temp_gt_pc90, axis=0)\n", + "\n", + "# the sum above removes the mask - reinstate it with \n", + "nwarmdays.data.mask = max_temp_pc90.data.mask\n", + "nwarmdays.units = '1'\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "nwarmdays = add_bounds(nwarmdays,['grid_latitude', 'grid_longitude'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "qplt.pcolormesh(nwarmdays)\n", + "plt.gca().coastlines() \n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Calculate percentage of warmest days by using **iris.analysis.maths**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ndays = max_temp.shape[0]\n", + "# calculating percentage \n", + "nwd_pcent = iris.analysis.maths.divide(iris.analysis.maths.multiply(nwarmdays, 100), ndays)\n", + "nwd_pcent.units=\"%\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ploting the percentage of warm days" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "qplt.pcolormesh(nwd_pcent)\n", + "plt.title('Percentage of warm days')\n", + "plt.gca().coastlines() \n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Task:
      \n", + "
    • Calculate and plot the past (1851-1880) and present (1981-2010) 90th percentile of maximum temperature and the difference between them.\n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# first extract the air_temperature at 1.5m cubes from the cubelist\n", + "air_temp = cubelist.extract('air_temperature' & iris.AttributeConstraint(Height='1.5 m'))\n", + "\n", + "# constraint for the maximum temperature \n", + "max_temp_cons = iris.Constraint(cube_func=lambda c: (len(c.cell_methods) > 0) and \n", + " (c.cell_methods[0].method == 'maximum'))\n", + "\n", + "# define time constraint and extract 1851-1900 period (the baseline)\n", + "start_time = 1851\n", + "end_time = 1880\n", + "\n", + "# define the time constraint\n", + "time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", + "\n", + "# applying the pressure, maximum temperature and time constraints getting a single cube\n", + "past_max_temp = air_temp.extract_strict(max_temp_cons & time_constraint)\n", + "\n", + "# defining Shangai region coords\n", + "min_lat=29.0\n", + "max_lat=32.0\n", + "min_lon=118.0\n", + "max_lon=123.0\n", + "\n", + "# extract data for the the Shanghai region using extract_rot_cube() function\n", + "past_max_temp_shanghai = extract_rot_cube(past_max_temp, min_lat, min_lon, max_lat, max_lon)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# calculate the 90 percentile\n", + "past_max_temp_shanghai_pc90 = past_max_temp_shanghai.collapsed('time', iris.analysis.PERCENTILE, percent=90.)\n", + "past_max_temp_shanghai_pc90.rename('Historic R90p of daily maximum temperature')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# guessing bounds\n", + "past_max_temp_shanghai_pc90 = add_bounds(past_max_temp_shanghai_pc90,['grid_latitude', 'grid_longitude'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's plot the historic data\n", + "qplt.pcolormesh(past_max_temp_shanghai_pc90)\n", + "plt.title('R90p of daily maximum temperature (1880-1900)')\n", + "plt.gca().coastlines() \n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Now extract present day\n", + "# extract a single cube of maximum air_temperature at 1.5m cube from the cubelist\n", + "max_temp = cubelist.extract_strict('air_temperature' & iris.AttributeConstraint(Height='1.5 m') &\n", + " max_temp_cons)\n", + "# extract data for the the Shanghai region using extract_rot_cube() function\n", + "max_temp_shanghai = extract_rot_cube(max_temp, min_lat, min_lon, max_lat, max_lon)\n", + "\n", + "start_time = 1981\n", + "end_time = 2010\n", + "\n", + "time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", + "recent_max_temp_shanghai = max_temp_shanghai.extract(time_constraint)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# calculate the 90 percentile\n", + "recent_max_temp_shanghai_pc90 = recent_max_temp_shanghai.collapsed('time', iris.analysis.PERCENTILE, percent=90.)\n", + "recent_max_temp_shanghai_pc90.rename('Recent R90p of daily maximum temperature')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# guessing bounds\n", + "recent_max_temp_shanghai_pc90 = add_bounds(recent_max_temp_shanghai_pc90,['grid_latitude', 'grid_longitude'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's plot the recent data\n", + "qplt.pcolormesh(recent_max_temp_shanghai_pc90)\n", + "plt.title('R90p of daily maximum temperature (1981-2010)')\n", + "plt.gca().coastlines() \n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# now let calculate the difference plot\n", + "diff_max_temp_shanghai_pc90 = recent_max_temp_shanghai_pc90 - past_max_temp_shanghai_pc90\n", + "diff_max_temp_shanghai_pc90.rename('Difference R90p of daily maximum temperature')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# guessing bounds\n", + "past_max_temp_shanghai_pc90 = add_bounds(past_max_temp_shanghai_pc90,['grid_latitude', 'grid_longitude'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# and finally plot the historic, recent and difference plots next to each other\n", + "fig = plt.figure(figsize=(20, 6))\n", + "fig.suptitle('90th percentile of maximum temperature (1851-1880) vs Recent (1981-2010)', fontsize=16)\n", + "ax1 = fig.add_subplot(1, 3, 1, projection=ccrs.PlateCarree())\n", + "qplt.pcolormesh(past_max_temp_shanghai_pc90)\n", + "ax1.coastlines()\n", + "ax1 = fig.add_subplot(1, 3, 2, projection=ccrs.PlateCarree())\n", + "qplt.pcolormesh(recent_max_temp_shanghai_pc90)\n", + "ax1.coastlines()\n", + "ax1 = fig.add_subplot(1, 3, 3, projection=ccrs.PlateCarree())\n", + "qplt.pcolormesh(diff_max_temp_shanghai_pc90)\n", + "ax1.coastlines()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Exercises\n", + "\n", + "In this exercise we will calculate the percentage of total precipitation from 1981-2010 which falls on very wet days (where a very wet day is one on which daily rainfall exceeds the 95th percentile of the baseline) over Shanghai region.\n", + "\n", + "Further we also calculate the percentage of very wet days in the past (1851-1880) and see the difference by plotting the difference of heavy rainfall in the past and present." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 1: Calculate what percentage of all of the precipitation in period 1981-2010 fell on days when there was heavy rain i.e. => 95th Percentile.\n", + "\n", + "For this task, we need to calculate the percentage of all of the precipitation in this period which fell on days when there was heavy rain i.e. => 95th Percentile.\n", + "\n", + "We can break this down as follows:\n", + "\n", + "
  • load the daily data for the period 1981-2010 and extract Shanghai
  • \n", + "
  • find the 95th percentile of daily rainfall on wet days for the period
  • \n", + "
  • find the sum of the rainfall on days when the precip > 95th percentile
  • \n", + "
  • find the total rainfall on all days
  • \n", + "
  • find the percentage of all of the precipitation in this period which fell on days when there was heavy rain
  • " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# first extract the air_temperature at 1.5m cubes from the cubelist\n", + "precip = cubelist.extract_strict('precipitation_flux')\n", + "# convert units to mm/day (equivalent to 'kg m-2 day-1')\n", + "precip.convert_units('kg m-2 day-1')\n", + "# To avoid warnings when collapsing coordinates and also when plotting, add bounds to all coordinates\n", + "precip = add_bounds(precip,['time', 'grid_latitude', 'grid_longitude'])\n", + "\n", + "# define time constraint and extract 1851-1900 period (the baseline)\n", + "start_time = 1981\n", + "end_time = 2010\n", + "\n", + "# define the time constraint\n", + "time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", + "\n", + "# applying the pressure, maximum temperature and time constraints getting a single cube\n", + "present_precip = precip.extract(time_constraint)\n", + "\n", + "# defining Shangai region coords\n", + "min_lat=29.0\n", + "max_lat=32.0\n", + "min_lon=118.0\n", + "max_lon=123.0\n", + "\n", + "# extract data for the the Shanghai region using extract_rot_cube() function\n", + "present_precip_shanghai = extract_rot_cube(present_precip, min_lat, min_lon, max_lat, max_lon)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# make a copy of the cube, mask where daily rainfall < 1 so that only wet days\n", + "# are included in the calculation of the 95th percentile\n", + "present_precip_shanghai_wet = present_precip_shanghai.copy()\n", + "present_precip_shanghai_wet.data = np.ma.masked_less(present_precip_shanghai_wet.data, 1.0)\n", + "\n", + "# Calculating percentile\n", + "present_precip_shanghai_pc95 = present_precip_shanghai_wet.collapsed('time', iris.analysis.PERCENTILE, percent=95.)\n", + "present_precip_shanghai_pc95.rename('Present R95p of daily precipitation')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Total number of days of the rainfall on days when the precip > 95th percentile\n", + "# mask the present_precip_shanghai using 95th percentile (very wet days)\n", + "masked_cube = present_precip_shanghai.copy()\n", + "masked_cube.data = np.ma.masked_less(present_precip_shanghai.data, present_precip_shanghai_pc95.data)\n", + "\n", + "# Now calculating the total sum to extreme rainfall\n", + "total_extreme_precipitation = masked_cube.collapsed(['time'], iris.analysis.SUM)\n", + "\n", + "# also the sum on all days\n", + "total_precip = present_precip_shanghai.collapsed(['time'], iris.analysis.SUM)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# percentage of rainfall on very high rainfall days\n", + "extreme_present_pct = (total_extreme_precipitation/total_precip) * 100.0\n", + "extreme_present_pct.rename('Fraction of precipitation from very heavy rain')\n", + "extreme_present_pct.units = '%'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Finally check the result by doing a plot\n", + "extreme_present_pct = add_bounds(extreme_present_pct,['grid_latitude', 'grid_longitude'])\n", + "fig = plt.figure(figsize=(12, 6))\n", + "fig.suptitle('Heavy rainfall', fontsize=16)\n", + "qplt.pcolormesh(extreme_present_pct)\n", + "plt.gca().coastlines()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 2: Calculate what percentage of all of the precipitation in period 1851-1880 fell on days when there was heavy rain i.e. => 95th Percentile." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# first extract the air_temperature at 1.5m cubes from the cubelist\n", + "precip = cubelist.extract_strict('precipitation_flux')\n", + "# convert units to mm/day (equivalent to 'kg m-2 day-1')\n", + "precip.convert_units('kg m-2 day-1')\n", + "# To avoid warnings when collapsing coordinates and also when plotting, add bounds to all coordinates\n", + "precip = add_bounds(precip,['time', 'grid_latitude', 'grid_longitude'])\n", + "\n", + "# define time constraint and extract 1851-1900 period (the baseline)\n", + "start_time = 1851\n", + "end_time = 1880\n", + "\n", + "# define the time constraint\n", + "time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", + "\n", + "# applying the pressure, maximum temperature and time constraints getting a single cube\n", + "past_precip = precip.extract(time_constraint)\n", + "\n", + "# extract data for the the Shanghai region using extract_rot_cube() function\n", + "past_precip_shanghai = extract_rot_cube(past_precip, min_lat, min_lon, max_lat, max_lon)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "past_precip_shanghai_wet = past_precip_shanghai.copy()\n", + "past_precip_shanghai_wet.data = np.ma.masked_less(past_precip_shanghai_wet.data, 1.0)\n", + "\n", + "# Calculating percentile\n", + "past_precip_shanghai_pc95 = past_precip_shanghai_wet.collapsed('time', iris.analysis.PERCENTILE, percent=95.)\n", + "past_precip_shanghai_pc95.rename('Past R95p of daily precipitation')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Total number of days of the rainfall on days when the precip > 95th percentile\n", + "masked_cube = past_precip_shanghai.copy()\n", + "masked_cube.data = np.ma.masked_less(past_precip_shanghai.data, past_precip_shanghai_pc95.data)\n", + "\n", + "# Now calculating the total sum to extreme rainfall\n", + "total_extreme_precip_past = masked_cube.collapsed(['time'], iris.analysis.SUM)\n", + "\n", + "# also the sum on all days\n", + "total_precip_past = past_precip_shanghai.collapsed(['time'], iris.analysis.SUM)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# percentage of rainfall on very high rainfall days\n", + "extreme_past_pct = (total_extreme_precip_past/total_precip_past) * 100.0\n", + "extreme_past_pct.rename('Fraction of precipitation from very heavy rain')\n", + "extreme_past_pct.units = '%'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 3: Calculate the differences" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Calculating the difference in rain on extreme wet days\n", + "\n", + "extreme_pct_difference = extreme_present_pct - extreme_past_pct \n", + "extreme_pct_difference.rename('Difference in % of rain from extreme events')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 4: Plot the percentages and difference " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# and finally plot the historic, recent and percentile difference plots next to each other\n", + "fig = plt.figure(figsize=(20, 6))\n", + "fig.suptitle('95th percentile of precipitation (1851-1880) vs present (1981-2010)', fontsize=16)\n", + "ax1 = fig.add_subplot(1, 3, 1, projection=ccrs.PlateCarree())\n", + "qplt.pcolormesh(extreme_past_pct)\n", + "ax1.coastlines()\n", + "ax1 = fig.add_subplot(1, 3, 2, projection=ccrs.PlateCarree())\n", + "qplt.pcolormesh(extreme_present_pct)\n", + "ax1.coastlines()\n", + "ax1 = fig.add_subplot(1, 3, 3, projection=ccrs.PlateCarree())\n", + "qplt.pcolormesh(extreme_pct_difference)\n", + "ax1.coastlines()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Summary
    \n", + " In this session we learned how:
    \n", + "
      \n", + "
    • to calculate extreme values and percentages\n", + "
    • to calcuate basic extreme value indices \n", + "
    \n", + "\n", + "
    \n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "cssp37", + "language": "python", + "name": "cssp37" + }, + "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.7.8" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/CSSP_20CRDS_Tutorials/tutorial_1_data_access.ipynb b/notebooks/CSSP_20CRDS_Tutorials/tutorial_1_data_access.ipynb new file mode 100644 index 0000000..a2a65c8 --- /dev/null +++ b/notebooks/CSSP_20CRDS_Tutorials/tutorial_1_data_access.ipynb @@ -0,0 +1,1054 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "# Tutorial 1: Accessing and exploring CSSP China 20CR datasets\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Learning Objectives:\n", + "\n", + "1. How to load data into Xarrays format\n", + "2. How to convert the data xarrays into iris cube format\n", + "3. How to perform basic cube operations " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contents\n", + "\n", + "1. [Use Xarray to access monthly data](#access_zarr) \n", + "2. [Retrieve single (or list of) variables](#get_vars)\n", + "3. [Convert datasets to iris cube](#to_iris)\n", + "4. [Explore cube attributes and coordinates](#explore_iris)\n", + "5. [Exercises](#exercise)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Prerequisites
    \n", + "- Basic programming skills in python
    \n", + "- Familiarity with python libraries Numpy and Matplotlib
    \n", + "- Basic understanding of climate data
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Use Xarray to access monthly data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.1 Import libraries.\n", + "Import the necessary libraries. Current datasets are in zarr format, we need zarr and xarray libraries to access the data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import xarray as xr\n", + "import zarr\n", + "from scripts.xarray_iris_coord_system import XarrayIrisCoordSystem as xics\n", + "xi = xics()\n", + "xr.set_options(display_style='text') # Work around for AML bug that won't display HTML output." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.2 Set up authentication for the Azure blob store\n", + "\n", + "The data for this course is held online in an Azure Blob Storage Service. To access this we use a SAS (shared access signature). You should have been given the credentials for this service before the course, but if not please ask your instructor. We use the getpass module here to avoid putting the token into the public domain. Run the cell below and in the box enter your SAS and press return. This will store the password in the variable SAS." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import getpass\n", + "# SAS WITHOUT leading '?'\n", + "SAS = getpass.getpass()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now use the Zarr library to connect to this storage. This is a little like opening a file on a local file system but works without downloading the data. This makes use of the Azure Blob Storage service. The zarr.ABStore method returns a zarr.storage.ABSStore object which we can now use to access the Zarr data in the same way we would use a local file. If you have a Zarr file on a local file system you could skip this step and instead just use the path to the Zarr data below when opening the dataset." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "store = zarr.ABSStore(container='metoffice-20cr-ds', prefix='monthly/', account_name=\"metdatasa\", blob_service_kwargs={\"sas_token\":SAS})\n", + "type(store)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.3 Read monthly data\n", + "A Dataset consists of coordinates and data variables. Let's use the xarray's **open_zarr()** method to read all our zarr data into a dataset object and display it's metadata" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# use the open_zarr() method to read in the whole dataset metadata\n", + "dataset = xr.open_zarr(store)\n", + "# print out the metadata\n", + "dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: The dataset lists coordinates and data variables.
    \n", + "Note:If you get an error \"resource not found\", you have probably entered your SAS incorrectly. Please check and try again.\n", + " \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "We can also access and print list of all the variables in our dataset" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# display all the variables in our dataset\n", + "dataset.data_vars" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Retrieve single (or list of) variables" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.1 Read mean air temperature at 2 m \n", + "Access and print just a single variable i.e minumum air temperature at 2m\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: The DataArrays in our dataset can be accessed either as attributes or indexed by name\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Access the variable by indexing it with its name\n", + "t2m_mean = dataset['air_temperature_mean']\n", + "# print the metadata\n", + "t2m_mean" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Access the variable like an attribute\n", + "t2m_mean = dataset.air_temperature_mean\n", + "# print the metadata\n", + "t2m_mean" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.2 Read list of variables \n", + "We can also create a smaller dataset containing a subset of our variables" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# creating a list containing a subset of our variables \n", + "varlist = ['relative_humidity_mean',\n", + " 'relative_humidity_at_pressure_mean',\n", + " 'specific_humidity',\n", + " 'surface_temperature'\n", + " ]\n", + "\n", + "# extracting the list of variables from dataset\n", + "mini_ds = dataset[varlist]\n", + "\n", + "# print the metadata\n", + "mini_ds" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Task:
      \n", + "
    • Access \"cloud_area_fraction\" using both index and attribute method in the cell below and save it in varaible named **caf**
    • \n", + "
    • Create a dataset **pres_ds** containing all the pressure variables, (hint: use for loop)
    • \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Retrieve \"cloud_area_fraction\"\n", + "# write your code here ..." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Retrieve all the pressure variables\n", + "# write your code here ... " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Convert datasets to iris cube" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.1 Convert a variable to an Iris Cube\n", + "We now convert the minimum air temperature variable that we accessed in section 2.1 into iris cube. This can be done simply using the method **DataArray.to_iris()**.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Use the method to_iris() to convert the xarray data array into an iris cube\n", + "cube_t2m_mean = t2m_mean.to_iris()\n", + "cube_t2m_mean" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Task 3.2 Convert whole Dataset to an Iris Cubelist\n", + "Instead of converting all variables one by one into iris cube one by one, we can convert the whole dataset (or a subset of dataset) into an iris cubelist" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: This is not as simple as done for single variable above but it is straightforward with the dataset.apply() method, obviousely will take a bit longer to complete!\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# first import the Iris library\n", + "import iris" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# create an empty list to hold the iris cubes\n", + "cubelist = iris.cube.CubeList([])\n", + "\n", + "# use the DataSet.apply() to convert the dataset to Iris Cublelist\n", + "# the apply method loops over each variable in the dataset and runs the\n", + "# supplied function on it \n", + "# the variable da is a single variable from the dataset. \n", + "# this variable is converted to a cube and appended to the empty\n", + "# cubelist we made above\n", + "dataset.apply(lambda da: cubelist.append(xi.to_iris(da)))\n", + "\n", + "# print out the cubelist\n", + "cubelist" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Note: By clicking on any variable above, you can see its dimension coordinates and matadata\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Task:
      \n", + "
    • convert caf variable into iris cube **caf_cube**
    • \n", + "
    • create a cube list containing pressure variables only
    • \n", + "
    • Can you note the difference between cube and cubelist?
    • \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "## convert clf into iris cube\n", + "# write your code here ..." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "## convert pressure dataset into iris cube list\n", + "# write your code here ..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Explore cube attributes and coordinates" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.1 Accessing cube from cubelist\n", + "Now that we have our variables in cubelist we can extract any varaible using the variable name. For instance the following code indices for **precipitation_flux** variable." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# lets load and print the Precipitation Flux variable\n", + "precipitation_cube = cubelist.extract_strict('precipitation_flux')\n", + "precipitation_cube" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: We can see that we have time, grid_latitude and grig_longitude dimensions, and a cell method of mean: time (1 hour) which means that the cube contains monthly mean Precipitation Flux data.\n", + "
    \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.2 Cube attributes\n", + "We can explore the cube information further" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we can print its shape\n", + "precipitation_cube.shape" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we can print its dimensions\n", + "precipitation_cube.ndim" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we can print all of the data values (takes a bit of time as it is a large dataset!)\n", + "precipitation_cube.data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Or we can take a slice of the data using indexing\n", + "precipitation_cube.data[10,1,:]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# We can also print the maximum, minimum and mean value in data\n", + "print('Maximum value: ', precipitation_cube.data.max())\n", + "print('Minimum value: ', precipitation_cube.data.min())\n", + "print('Mean value: ', precipitation_cube.data.mean())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we can print cube's name\n", + "precipitation_cube.name()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we can print the unit of data\n", + "precipitation_cube.units" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we can also print cube's general attributes\n", + "precipitation_cube.attributes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.3 Rename the cube\n", + "Rename the precipitation_flux cube" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: The name, standard_name, long_name and to an extent var_name are all attributes to describe the phenomenon that the cube represents.\n", + " \n", + "standard_name is restricted to be a CF standard name (see the CF standard name table). \n", + "\n", + "If there is not a suitable CF standard name, cube.standard_name is set to None and the long_name is used instead. \n", + "long_name is less restrictive and can be set to be any string.\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(precipitation_cube.standard_name)\n", + "print(precipitation_cube.long_name)\n", + "print(precipitation_cube.var_name)\n", + "print(precipitation_cube.name())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# changing the cube name to 'pflx' using \"rename\" method\n", + "precipitation_cube.rename(\"pflx\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(precipitation_cube.standard_name)\n", + "print(precipitation_cube.long_name)\n", + "print(precipitation_cube.var_name)\n", + "print(precipitation_cube.name())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We see that standard_name and var_name are not set to be a non CF standard name, they are changed to None and long_name is renamed as pflx instead. The cube.name() method first tries standard_name, then ‘long_name’, then ‘var_name’, then the STASH attribute before falling back to the value of default (which itself defaults to ‘unknown’).\n", + "\n", + "We can also rename the specific name of the cube. Suppose if we only want to change standard_name." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "precipitation_cube.standard_name = 'precipitation_flux'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(precipitation_cube.standard_name)\n", + "print(precipitation_cube.long_name)\n", + "print(precipitation_cube.var_name)\n", + "print(precipitation_cube.name())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Similarly, we can change long_name, var_name, and name without using rename method" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.3 Change the cube units\n", + "Change precipitation_cube units from kg m-2 s-1 to kg m-2 day-1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: The units attribute on a cube tells us the units of the numbers held in the data array. To convert to 'kg m-2 day-1', we could just multiply the raw data by 86400 seconds, but a clearer way is to use the convert_units() method with the name of the units we want to convert the data into. It will automatically update the data array.\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# inspect the current unit and maximum data value\n", + "print(precipitation_cube.units)\n", + "print(precipitation_cube.data.max())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# convert the units to 'mm day-1' using convert_units method\n", + "precipitation_cube.convert_units('kg m-2 day-1')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# inspect the current unit and maximum data value after the conversion \n", + "print(precipitation_cube.units)\n", + "print(precipitation_cube.data.max())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.4 Add or remove the attributes\n", + "In section 4.2 we see how to access the cube attributes. In this section we will try to add or remove the attributes \n", + "\n", + "Let's try to add new attribute to the precipitation_flux. \n", + "We want to keep the information of original units of the cube. Best way is to add this information in the attribute.\n", + "Define the new attribute as a key value pair and we can add the attribute using **update** method." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# defining new attribute\n", + "new_attr = {'original_units':'kg m-2 s-1'}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# List the attibutes\n", + "precipitation_cube.attributes" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# add new attribute using .update() method\n", + "precipitation_cube.attributes.update(new_attr)\n", + "\n", + "# now printing the attributes list to see if new attribute has updated\n", + "precipitation_cube.attributes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So, we got 'original_units' in attributes list. \n", + "\n", + "We can also delete any specific attribute. For example, in our precipitation_cube attributes list, we do not need 'source' and we can think of deleting it. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "del precipitation_cube.attributes['source']\n", + "precipitation_cube.attributes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.5 Accessing cube coordinates\n", + "Access cube's coordinates and explore coordinates attribute" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: \n", + "
      \n", + "
    • Cubes need coordinate information to help us describe the underlying phenomenon. Typically a cube's coordinates are accessed with the coords or coord methods. The latter must return exactly one coordinate for the given parameter filters, where the former returns a list of matching coordinates.
    • \n", + "
    • The coordinate interface is very similar to that of a cube. The attributes that exist on both cubes and coordinates are: standard_name, long_name, var_name, units, attributes and shape.
    • \n", + "
    • Coordinate does not have data, instead it has points and bounds (bounds may be None), so we can access the actual point data
    • \n", + "
    \n", + "\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's print out all cube's coordinates\n", + "print([coord.name() for coord in precipitation_cube.coords()])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's access the 'grid_latitude' coordinate and print out the last 10 values\n", + "grid_latitude = precipitation_cube.coord('grid_latitude')\n", + "grid_latitude[:10]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# print the maximum and minimum value of 'grid_latitude' coordinate\n", + "print(grid_latitude.points.max())\n", + "print(grid_latitude.points.min())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Task:
      \n", + "
    • Inspect the following attributes of caf_cube you created in previous task
    • \n", + "
        \n", + "
      • name (standard_name)
      • \n", + "
      • dimensions (ndim)
      • \n", + "
      • units
      • \n", + "
      • mean of data
      • \n", + "
      \n", + "
    • Print all the coordinates of caf_cube, (hint: use for loop)
    • \n", + "
    • Explore attributes of \"grid_latitude\"
    • \n", + "
        \n", + "
      • name (standard_name)
      • \n", + "
      • shape
      • \n", + "
      • units
      • \n", + "
      \n", + " \n", + " \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "## Inspect attributes \n", + "# write your code here .." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "## Inspect coordinates\n", + "# write your code here .." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 5. Exercise\n", + "\n", + "In this exercise we will explore the variables and attributes of monthly data." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 1: Load hourly data\n", + "Load monthly data into xarrays and display all variables\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# write your code here .." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 2: Convert to iris cublist\n", + "Convert the dataset into iris cublist and display the cubelist\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# write your code here .." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 3: Extract variable\n", + "Extract **x_wind** variable from cubelist and display the cube" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# write your code here .." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 4: Explore cube attributes \n", + "Using the Iris cube in previous excercise explore its attributes as follow:\n", + "- print out the dimensions\n", + "- print out its shape\n", + "- print out its coordinates\n", + "- print out the maximum and minimum values of latitude and longitude\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# write your code here .." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# write your code here .." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# write your code here .." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# write your code here .." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 5: Change units and add the original units to attributes list \n", + "\n", + "- change the units of x_wind to km/hr\n", + "- add the original units to the attributes list\n", + "- print out the attributes to see if new attribtue has added successfully\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# write your code here .." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# write your code here .." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# write your code here .." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Summary
    \n", + " In this session we learned how:
    \n", + "
      \n", + "
    • to load data from a zarr database into xarray dataset and explore its metadata.
    • \n", + "
    • to convert xarray dataset into iris cube and explore its metadata
    • \n", + "
    • to further explore iris cube's attributes through simple operations
    • \n", + "
    \n", + "\n", + "
    \n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "cssp37", + "language": "python", + "name": "cssp37" + }, + "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.7.8" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/CSSP_20CRDS_Tutorials/tutorial_2_data_preparation.ipynb b/notebooks/CSSP_20CRDS_Tutorials/tutorial_2_data_preparation.ipynb new file mode 100644 index 0000000..a3e32d4 --- /dev/null +++ b/notebooks/CSSP_20CRDS_Tutorials/tutorial_2_data_preparation.ipynb @@ -0,0 +1,1128 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "# Tutorial 2: Data Preparation and visualisation\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Learning Objectives:\n", + "\n", + "In this session we will learn: \n", + "1. How to perform further cube operations\n", + "2. How to prepare data for analysis\n", + "4. How to visualise data " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contents\n", + "\n", + "1. [Constraint and cube extraction](#extract)\n", + "2. [Basic cube calculations](#calc)\n", + "3. [Time series and spatial plots](#plots)\n", + "4. [Saving the cube](#save)\n", + "5. [Exercises](#exercise)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Prerequisites
    \n", + "- Basic programming skills in python
    \n", + "- Familiarity with python libraries Iris, Numpy and Matplotlib
    \n", + "- Basic understanding of climate data
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Constraint and cube extraction" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.1 Import libraries.\n", + "Import the necessary libraries. Current datasets are in zarr format, we need zarr and xarray libraries to access the data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import xarray as xr\n", + "import zarr\n", + "import iris\n", + "import os\n", + "from scripts.xarray_iris_coord_system import XarrayIrisCoordSystem as xics\n", + "xi = xics()\n", + "xr.set_options(display_style='text') # Work around for AML bug that won't display HTML output." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.2 Set up authentication for the Azure blob store\n", + "\n", + "The data for this course is held online in an Azure Blob Storage Service. To access this we use a SAS (shared access signature). You should have been given the credentials for this service before the course, but if not please ask your instructor. We use the getpass module here to avoid putting the token into the public domain. Run the cell below and in the box enter your SAS and press return. This will store the password in the variable SAS." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import getpass\n", + "# SAS WITHOUT leading '?'\n", + "SAS = getpass.getpass()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "store = zarr.ABSStore(container='metoffice-20cr-ds', prefix='monthly/', account_name=\"metdatasa\", blob_service_kwargs={\"sas_token\":SAS})\n", + "type(store)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.3 Read monthly data\n", + "A Dataset consists of coordinates and data variables. Let's use the xarray's **open_zarr()** method to read all our zarr data into a dataset object and display it's metadata" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# use the open_zarr() method to read in the whole dataset metadata\n", + "dataset = xr.open_zarr(store)\n", + "# print out the metadata\n", + "dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Convert dataset into iris cubelist" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# create an empty list to hold the iris cubes\n", + "cubelist = iris.cube.CubeList([])\n", + "# use the DataSet.apply() to convert the dataset to Iris Cublelist\n", + "dataset.apply(lambda da: cubelist.append(xi.to_iris(da)))\n", + "# print out the cubelist\n", + "cubelist" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The cubelist printed above holds all of the data from the Zarr file in a list. To see more detail on each of the cubes in the list click on it. That shows a table with information about the name and units of the cube, its shape and coordinates.\n", + "\n", + "We will see in the next section how to obtain a single cube for use in our analysis and visualisation." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.4 Indexing the cube\n", + "**AIM:** Extract the ***cloud_area_fraction*** data and index it by a subset of latitudes and longitudes values" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
    \n", + "Note: Cubes can be indexed in a similar manner to that of NumPy arrays. The result of indexing a cube is always a copy of the cube.
    \n", + " \n", + "For more information on cube indexing in numpy see Indexing in the numpy documentation\n", + " \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# extract the variale from cubelist\n", + "caf = cubelist.extract_strict('cloud_area_fraction')\n", + "caf" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# subsetting the lat/lon values by indexing the first 10 values\n", + "subset_caf = caf[..., :10, :10]\n", + "subset_caf" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# subseting the cube with 50th to 99th lat/lon values at time index 10\n", + "subset_caf = caf[10, 50:100, 50:100]\n", + "subset_caf" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: The extract above returns a 2 dimensional cube with latitude/longitude at a single time. Note that time is now a scalar (a single time: 1851-11-16 00:00:00)\n", + " \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Extracting first 10 elements from time dimension\n", + "subset_caf = caf[:10]\n", + "subset_caf" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.5 Time constraint\n", + "**AIM:** Use constraint and extract methods to subset a cube or cubelist.\n", + "\n", + "The monthly data ranges from 1850 to 2000. In some cases we might not need all the time series and we might only be interested in 50 years 1950 - 2000.\n", + "In such cases, we can extract cube creating a time constraint. \n", + "Let's extract \"air_pressure_at_sea_level\" cube, extract the cube containing data from 1950 to 2000 using time constraint." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: We've already seen above the extract_strict method to extract specific cube from cubelist. We can also apply constraints to a single cube (or a CubeList) using the respective constraint and extract methods.\n", + " \n", + "Iris's constraint mechanism provides a powerful way to filter a subset of data from a larger collection. The Constraint constructor takes arbitrary keywords to constrain coordinate values.\n", + " \n", + "extract_strict returns a single cube while extract methods returns a cubelist. If you use extract_strict and more or less than 1 cube matches then it is an error. \n", + " \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Extracting air pressure at sea level cube from cublist \n", + "air_pres = cubelist.extract_strict('air_pressure_at_sea_level')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Extracting from year 1950 to 2000\n", + "start_time = 1950\n", + "end_time = 2000\n", + "time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", + "subcube = air_pres.extract(time_constraint)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To check if we have got the right cube, we can print start data and end date of subcube" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "tcoord = subcube.coord('time')\n", + "units = tcoord.units\n", + "tdata = [units.num2date(point) for point in tcoord.points]\n", + "print('Start time: ',tdata[0])\n", + "print('End time: ',tdata[-1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: It is common to want to build a constraint for time.\n", + "This can be achieved by comparing cells containing datetimes\n", + "\n", + "There are a few different approaches for producing time constraints in Iris. We focus here on one approach for constraining on time in Iris.\n", + "\n", + "This approach allows us to access individual components of cell datetime objects and run comparisons on those.\n", + " \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Similar to constraining years, we can also constrain months and days\n", + "\n", + "Consider a case where we want to get only a few months, like March, April and May, from our subcube" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# extracting month june, july and august from the list of years\n", + "month_constraint = iris.Constraint(time=lambda cell: cell.point.month in (3,4,5))\n", + "subcube.extract(month_constraint)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.6 Extract region.\n", + "\n", + "To make your analysis faster and easier, you can extract a smaller part of the model domain. In these examples we will work with Shanghai, but you can choose any region you want. \n", + "\n", + "Note: The original model data is on a rotated pole grid system, as shown in the diagrams below. The x and y coordinates are not true latitude and longitude so to extract a latitude-longitude box, we use the *extract_rot_cube()* function to do this. It works by first calculating the true latitude and longitue of each grid cell and uses these to select which are in the area of interest." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# let's first print the values of lat/lon before extracting\n", + "print('latitude: [', air_pres.coord('grid_latitude').points.min(), ', ', air_pres.coord('grid_latitude').points.max(), ']')\n", + "print('longitude: [', air_pres.coord('grid_longitude').points.min(), ', ', air_pres.coord('grid_longitude').points.max(), ']')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's try to extract Shanghai region using **extract_rot_cube**.\n", + "\n", + "**extract_rot_cube** takes the latitude and longitude of the region of interest and returns a smaller cube with the extracted region of rotated pole coordinates. \n", + "\n", + "First define the lat lon of Shanghai region:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "min_lat=29.0\n", + "max_lat=32.0\n", + "min_lon=118.0\n", + "max_lon=123.0" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# load extract_rot_cube from catnip\n", + "from catnip.preparation import extract_rot_cube\n", + "ext_cube = extract_rot_cube(air_pres, min_lat, min_lon, max_lat, max_lon)\n", + "ext_cube" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we can see that the min/max boundaries now changed\n", + "print('latitude: [', ext_cube.coord('grid_latitude').points.min(), ', ', ext_cube.coord('grid_latitude').points.max(), ']')\n", + "print('longitude: [', ext_cube.coord('grid_longitude').points.min(), ', ', ext_cube.coord('grid_longitude').points.max(), ']')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.7 Constraint on cell methods and attributes\n", + "\n", + "In our cubelist, we can see that we have four cubes named air_temperature: Minimum, Maximum and two Means (one with pressure level).\n", + "Let's try to extract air temperature and see what we get.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "air_temp = cubelist.extract('air_temperature')\n", + "air_temp" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In order to get only one cube i.e. the time mean at the surface and not on the pressure levels, we need to constrain using the cell method. A [cell_method](https://cfconventions.org/Data/cf-conventions/cf-conventions-1.7/build/ch07s03.html) is a piece of metadata which describes additional characteristics of a field. Let try to create a constraint and use it to extract the desired cube." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# constrain for the cube that does not have 'pressure' in its coordinate list\n", + "cube_cons_surf = iris.Constraint(cube_func=lambda c: 'pressure' not in [coord.name() for coord in c.coords()])\n", + "# also constrain to be only mean temperature \n", + "cube_cons_mean = iris.Constraint(cube_func=lambda c: (len(c.cell_methods) > 0) and (c.cell_methods[0].method == 'mean'))\n", + "# now apply the above constrains\n", + "air_temp_mean = air_temp.extract_strict(cube_cons_surf & cube_cons_mean)\n", + "air_temp_mean " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we got desired cube. Now, if we look into minimum and maximum cubes, that does not contains cell method, instead, information lies in their respective attributes. \n", + "\n", + "We can extract, for example minimum cube, by constraining the attributes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "min_cons = iris.Constraint(cube_func=lambda c: ('ukmo__process_flags' in c.attributes) and (c.attributes['ukmo__process_flags'][0].split(' ')[0] == 'Minimum'))\n", + "air_temp_min = air_temp.extract_strict(min_cons)\n", + "air_temp_min " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Task:
      \n", + "
    • Extract from cubelist relative humidity cube: year: 1900-2000, months: May-September Cell method: Mean (4 hours) \n", + "\n", + " \n", + "
    \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Extract relative humidity cube\n", + "# write your code here .." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Basic Calculations" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.1 Calculating mean, max, min\n", + "In this section we will use **iris.analysis** method to calculate basic mean, min and max values. But before we do this we need to understand two important concepts/techniques that are used in the analysis code to follow:\n", + "1. When we calculate area averages, we need to be able to calculate the area of each grid box. and for this we need to know the boundaries of each grid box. If the longitude and latitude bounds are not defined in the cube we can guess the bounds based on the coordinates point values and that is what the *guess.bounds()* function does in the code below.\n", + "2. Once we have our longitude and latitude boundaries we can use the *iris.analysis.cartography.area_weights* to compute the data as a weighted mean of all grid-boxes. The *area_weights()* function returns an array of area weights, with the same dimensions as the cube where a larger cell has more weight in the average than a smaller one.\n", + "\n", + "Now let's extract the *surface_temperature* and calculate mean over the whole region. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# extract surface_temerature\n", + "sft = cubelist.extract_strict('surface_temperature')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Using the **collapsed** and **analysis** methods over grid_latitude and grid_longitude, we can get the timeseries of mean over the whole domain." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import iris.analysis.cartography\n", + "\n", + "#Since grid_latitude and grid_longitude were both point coordinates we must guess bound positions for them in order to calculate the area of the grid boxes\n", + "sft.coord('grid_latitude').guess_bounds()\n", + "sft.coord('grid_longitude').guess_bounds()\n", + "\n", + "grid_areas = iris.analysis.cartography.area_weights(sft)\n", + "\n", + "# calculating mean using area_weights method\n", + "sft_mean = sft.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN, weights=grid_areas)\n", + "sft_mean" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: The above cube has reduced to only one dimension i.e. \"time\"\n", + "\n", + " \n", + "
    iris.analysis provides a range of statistical methods, see [iris.analysis dcumentation](https://scitools.org.uk/iris/docs/v1.9.0/html/iris/iris/analysis.html)\n", + " \n", + "
    Collapse method can be applied to one, more or all the dimensions.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.2 Basic arithmetic operations\n", + "\n", + "Basic arithmetic operations like addition, subtraction, multiplication, square root, power etc. can be performed on iris cube.\n", + "\n", + "Let's calculate 10m windspeed using **x_wind** and **y_wind** cubes.\n", + "\n", + "In our cubelist, we have two variables with same cell method. We can constraint using coordinates information.\n", + "\n", + "To calculate 10m windspeed we need data which is not on pressure levels." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# extract x_wind and y_wind\n", + "xcons = iris.Constraint(cube_func=lambda c: c.standard_name == 'x_wind' and ('pressure' not in [coord.name() for coord in c.coords()]))\n", + "ycons = iris.Constraint(cube_func=lambda c: c.standard_name == 'y_wind' and ('pressure' not in [coord.name() for coord in c.coords()]))\n", + "\n", + "u = cubelist.extract_strict(xcons)\n", + "v = cubelist.extract_strict(ycons)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's create a windspeed cube by copying the u cube first" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "windspeed = u.copy()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Calculate windspeed:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "windspeed.data = np.sqrt(u.data**2 + v.data**2)\n", + "windspeed" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We see that cube name is \"x_wind\", that is becuase we copied the u_cube. We can rename it to \"windspeed\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "windspeed.rename(\"wind speed\")\n", + "windspeed" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: When performing arithmetic calculation, consider the units, name and other metadata information. \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Time series and spatial plots" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.1 Time series plots\n", + "Using iris quick plot to create time series plots. Let's load the necessary libraries first.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we first need to load libraries for plotting \n", + "import iris.plot as iplt\n", + "import iris.quickplot as qplt\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's plot the timeseries of mean surface temeprature over Shanghai region from 1950 - 2000" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# loading mean air temperature \n", + "sft = cubelist.extract_strict('surface_temperature')\n", + "sft.coord_system()\n", + "sft" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Shanghai region coordinates \n", + "min_lat=29.0\n", + "max_lat=32.0\n", + "min_lon=118.0\n", + "max_lon=123.0\n", + "# load extract_rot_cube from catnip\n", + "from catnip.preparation import extract_rot_cube\n", + "sft_shangai = extract_rot_cube(sft, min_lat, min_lon, max_lat, max_lon)\n", + "sft_shangai" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Now constrain over time\n", + "start_time = 1950\n", + "end_time = 2000\n", + "time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", + "sft_tim = sft_shangai.extract(time_constraint)\n", + "sft_tim" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# collapse the longitude and latitude and calculate mean over the time period\n", + "timeseries = sft_tim.collapsed(['grid_latitude','grid_longitude'], iris.analysis.MEAN)\n", + "timeseries" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lets plot the timeseries using a standard matplotlib library.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# ploting with matplotlib \n", + "plt.plot(timeseries.data)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have got the time series values. Now we can plot them using the [**iris quickplot**](https://scitools.org.uk/iris/docs/latest/iris/iris/quickplot.html?highlight=quickplot).[what does this add?]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# plotting with the quickplot \n", + "qplt.plot(timeseries)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: iris.quickplot adds extra automatic labelling: axes are labelled with a coordinate name and units, and the plot title is taken from the cube name. On the other hand using matplotlib.plot we need to add labels and title manually. \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.2 Contour plots\n", + "Using iris quick plot to create contour plots\n", + "\n", + "Let's plot the average surface temperature from 1900 to 2000 over Shangai region.\n", + "\n", + "We can collapse 'time' dimension os sft_tim cube to get the spatial mean " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "spatial_mean = sft_tim.collapsed(['time'], iris.analysis.MEAN)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now that we have the mean values we can make a spatial contour plot using the iris quickplot contourf method" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# plot the surface temperature contour at the first timestep \n", + "qplt.contourf(spatial_mean)\n", + "# add some coastlines for context\n", + "plt.gca().coastlines()\n", + "# set the figure size\n", + "plt.gcf().set_size_inches(8,12)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: iris.quickplot also adds the colorbar\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Task:
      \n", + "
    • Plot time series of maximum air temperature from 1900 to 2000 of only summer season (June, July and August)
    • \n", + "
    • Plot contour plot of the maximum air temperature from 1900 to 2000 of only summer season (June, July and August)
    • \n", + "
    \n", + "
    \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# time series plot\n", + "# write your code here .." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# contour plot\n", + "# write your code here .." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Saving the cube" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.1 Save the cube in zarr store\n", + "We can save our cube in zarr store to be used later. \n", + "\n", + "For this purpose, we first need to convert cube into xarray and then save it into zarr store.\n", + "\n", + "Let's save 'spatial_mean' cube from the above section." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# converting cube back to xarray\n", + "sft_mean = xr.DataArray.from_iris(spatial_mean)\n", + "\n", + "# rename the xarray\n", + "sft_mean.rename('surface_temperature_mean')\n", + "\n", + "# checking the chunk size of the xarray\n", + "sft_mean.chunks" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# convert the xarray into dataset\n", + "sft_mean_ds = sft_mean.to_dataset()\n", + "\n", + "# path to where store the zarr data\n", + "zarr_store = f\"{os.environ['HOME']}/zstore\"\n", + "\n", + "# store the dataset to specfied path as zarr data store\n", + "sft_mean_ds.to_zarr(zarr_store, consolidated=True, mode='w')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 5. Exercises" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this exercise we will analyse the mean precipitation rate from 1950 - 2010 over the Shanghai region" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 1: Load monthly data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# write your code here ... " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 2: Extract precipitation_flux" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# write your code here ..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 3: calculate mean" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# write your code here ..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 4: Plot timeseries" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# write your code here ..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 5: Spatial plot over Shanghai" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# write your code here ..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
    \n", + "Summary
    \n", + " In this session we learned how:
    \n", + "
      \n", + "
    • to prepre sube for analysis
    • \n", + "
    • to perform basic arithmatic operation
    • \n", + "
    • to plot timeseries and contours
    • \n", + "
    • to save data in zarr format
    • \n", + "
    \n", + "\n", + "
    \n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "cssp37", + "language": "python", + "name": "cssp37" + }, + "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.7.8" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/CSSP_20CRDS_Tutorials/tutorial_3_basic_analysis.ipynb b/notebooks/CSSP_20CRDS_Tutorials/tutorial_3_basic_analysis.ipynb new file mode 100644 index 0000000..de8a6d0 --- /dev/null +++ b/notebooks/CSSP_20CRDS_Tutorials/tutorial_3_basic_analysis.ipynb @@ -0,0 +1,1301 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "# Tutorial 3: Basic data analysis\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Learning Objectives:\n", + "\n", + "In this session we will learn: \n", + "1. to calculate and visualise annual and monthly means\n", + "2. to calculate and visualise seasonal means\n", + "3. to calculate mean differences (anomalies)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contents\n", + "\n", + "1. [Calculate annual and monthly mean](#annual)\n", + "2. [Calculate seasonal means](#season)\n", + "3. [Calculating differences (anomalies)](#percent)\n", + "4. [Exercises](#exercise)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Prerequisites
    \n", + "- Basic programming skills in python
    \n", + "- Familiarity with python libraries Iris, Numpy and Matplotlib
    \n", + "- Basic understanding of climate data
    \n", + "- Tutorials 1 and 2\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Calculating annual and monthly mean\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1.1 Import libraries \n", + "Import the necessary libraries. Current datasets are in zarr format, we need zarr and xarray libraries to access the data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import xarray as xr\n", + "import zarr\n", + "import iris\n", + "import os\n", + "from catnip.preparation import extract_rot_cube, add_bounds\n", + "from scripts.xarray_iris_coord_system import XarrayIrisCoordSystem as xics\n", + "xi = xics()\n", + "xr.set_options(display_style='text') # Work around for AML bug that won't display HTML output." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.2 Set up authentication for the Azure blob store\n", + "\n", + "The data for this course is held online in an Azure Blob Storage Service. To access this we use a SAS (shared access signature). You should have been given the credentials for this service before the course, but if not please ask your instructor. We use the getpass module here to avoid putting the token into the public domain. Run the cell below and in the box enter your SAS and press return. This will store the password in the variable SAS." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import getpass\n", + "# SAS WITHOUT leading '?'\n", + "SAS = getpass.getpass()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now use the Zarr library to connect to this storage. This is a little like opening a file on a local file system but works without downloading the data. This makes use of the Azure Blob Storage service. The zarr.ABStore method returns a zarr.storage.ABSStore object which we can now use to access the Zarr data in the same way we would use a local file. If you have a Zarr file on a local file system you could skip this step and instead just use the path to the Zarr data below when opening the dataset." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "store = zarr.ABSStore(container='metoffice-20cr-ds', prefix='monthly/', account_name=\"metdatasa\", blob_service_kwargs={\"sas_token\":SAS})\n", + "type(store)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.3 Read monthly data\n", + "A Dataset consists of coordinates and data variables. Let's use the xarray's **open_zarr()** method to read all our zarr data into a dataset object and display it's metadata." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# use the open_zarr() method to read in the whole dataset metadata\n", + "dataset = xr.open_zarr(store)\n", + "# print out the metadata\n", + "dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Convert dataset into iris cubelist" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# create an empty list to hold the iris cubes\n", + "cubelist = iris.cube.CubeList([])\n", + "\n", + "# use the DataSet.apply() to convert the dataset to Iris Cublelist\n", + "dataset.apply(lambda da: cubelist.append(xi.to_iris(da)))\n", + "\n", + "# print out the cubelist.\n", + "cubelist" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.4 Calculating annual mean, maximum and minimum over an area\n", + "\n", + "Here we calculate annual mean, maximum and minimum air_temperature over the Shanghai region from 1981 to 2010. \n", + "\n", + "We will first need to extract the required variables, extract the Shanghai region and constrain by time period. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# extract air_temperature\n", + "air_temp = cubelist.extract('air_temperature')\n", + "\n", + "# extracting maximum air temperature\n", + "cons = iris.Constraint(cube_func=lambda c: ('ukmo__process_flags' in c.attributes) and (c.attributes['ukmo__process_flags'][0].split(' ')[0] == 'Maximum'))\n", + "air_temp_max = air_temp.extract_strict(cons)\n", + "\n", + "# extracting mainimum air temperature\n", + "cons = iris.Constraint(cube_func=lambda c: ('ukmo__process_flags' in c.attributes) and (c.attributes['ukmo__process_flags'][0].split(' ')[0] == 'Minimum'))\n", + "air_temp_min = air_temp.extract_strict(cons)\n", + "\n", + "# extracting mean air temperature\n", + "cons = iris.Constraint(cube_func=lambda c: (len(c.cell_methods) > 0) and (c.cell_methods[0].method == 'mean') and c.cell_methods[0].intervals[0] == '1 hour')\n", + "air_temp_mean = air_temp.extract_strict(cons)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# defining Shangai region coords\n", + "min_lat=29.0\n", + "max_lat=32.0\n", + "min_lon=118.0\n", + "max_lon=123.0\n", + "\n", + "\n", + "# extract data for the the Shanghai region using extract_rot_cube() function\n", + "max_cube = extract_rot_cube(air_temp_max, min_lat, min_lon, max_lat, max_lon)\n", + "min_cube = extract_rot_cube(air_temp_min, min_lat, min_lon, max_lat, max_lon)\n", + "mean_cube = extract_rot_cube(air_temp_mean, min_lat, min_lon, max_lat, max_lon)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# print out the mean cube\n", + "mean_cube" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# define start and end year for our time constraint\n", + "start_time = 1981\n", + "end_time = 2010\n", + "\n", + "# define the time constraint\n", + "cons = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", + "\n", + "# load the data into cubes applying the time constraint\n", + "max_cube = max_cube.extract(cons)\n", + "min_cube = min_cube.extract(cons)\n", + "mean_cube = mean_cube.extract(cons)\n", + "\n", + "# printing out the mean cube to see the change in the shape of time dimension\n", + "mean_cube" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note:The CATNIP library function preparation.add_time_coord_cats adds a range of numeric coordinate categorisations to the cube. For more details see the documentation\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have got required cubes. Now we can add categorical coordinates to such as *year* to the time dimension in our cubes using the CATNIP **preparation.add_time_coord_cats** function." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# load CATNIP's add_time_coord_cats method\n", + "from catnip.preparation import add_time_coord_cats\n", + "\n", + "# Add other dimension coordinates\n", + "max_cube = add_time_coord_cats(max_cube)\n", + "min_cube = add_time_coord_cats(min_cube)\n", + "mean_cube = add_time_coord_cats(mean_cube)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Print the *max_cube* and inspect the categorical coordinates that have been added to the time coordinate of our cube." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# printing the max_cube. Note the addtional coordinates under the Auxiliary coordinates\n", + "max_cube" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can see that **add_time_coord_cats** has added a few auxiliary coordinates including the *year* coordinate to the *time* dimension.\n", + "\n", + "Now we can calculate maximum, minimum and mean values over the *year* coordinate using **aggregated_by** method. This will give us a single value for each year at every grid cell (30 time points in total)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Calculate yearly max, min and mean values\n", + "yearly_max = max_cube.aggregated_by(['year'], iris.analysis.MAX)\n", + "yearly_min = min_cube.aggregated_by(['year'], iris.analysis.MIN)\n", + "yearly_mean = mean_cube.aggregated_by(['year'], iris.analysis.MEAN)\n", + "\n", + "# printing the yearly_mean\n", + "yearly_mean" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we have the mean, maximum and minimum at every grid point, we can find the maximum, minimum and mean of all grid boxes to give us a timeseries which represents the aveage etc over all grid boxes in our region of interest." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Collapse longitude and latitude to get a timeseries\n", + "yearly_max = yearly_max.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MAX)\n", + "yearly_min = yearly_min.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MIN)\n", + "yearly_mean = yearly_mean.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN)\n", + "\n", + "# The resulting cube will be time series only\n", + "yearly_mean" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Print the *year* coordinate of max cube to see if we have the correct years for our constraint time period." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(yearly_max.coord('year').points)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.5 Calculating mean annual cycle\n", + "\n", + "We can calculate the mean annual cycle for precipitation_flux data over the Shanghai region for 1981-2010 (30 years) by averaging together each month(so we average all January data to get the mean for January)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# extract the precipitation_flux data into an iris cube from the cubelist\n", + "pflx = cubelist.extract_strict('precipitation_flux')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "min_lat=29.0\n", + "max_lat=32.0\n", + "min_lon=118.0\n", + "max_lon=123.0\n", + "\n", + "# extract data for the the Shanghai region using extract_rot_cube() function\n", + "pflx_ext = extract_rot_cube(pflx, min_lat, min_lon, max_lat, max_lon)\n", + "pflx_ext" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next extracting time constraint" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Extracting time constraint\n", + "start_time = 1981\n", + "end_time = 2010\n", + "time_cons = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", + "subcube = pflx_ext.extract(time_cons)\n", + "subcube" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# remove auxiliary coordinates, added by extract_rot_cube but cause unecessary warnings later\n", + "subcube.remove_coord(\"latitude\")\n", + "subcube.remove_coord(\"longitude\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "we can use the **add_time_coord_cats** method and add categorical coordinates such as *month* to the *time* dimension to our cube." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# add the time categorical coordinate to cube\n", + "subcube = add_time_coord_cats(subcube)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Create mean annual cycle\n", + "monthly_mean = subcube.aggregated_by(['month_number'], iris.analysis.MEAN)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "monthly_mean = add_bounds(monthly_mean, ['grid_latitude','grid_longitude'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can calculate the area weight using **iris.analysis.cartography.area_weights** so that we weight the average to account for the fact that the areas of grid cells are variable." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import iris.analysis.cartography\n", + "#calculate the area weight\n", + "grid_areas = iris.analysis.cartography.area_weights(monthly_mean)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Calculate area averaged monthly mean rainfall\n", + "monthly_mean = monthly_mean.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN, weights=grid_areas)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.6 Visualising yearly and monthly means\n", + "\n", + "Let's now visualise yearly mean, max, min data for the air temperature and monthly mean data for the precipitation_flux." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we first need to load libraries for plotting \n", + "import iris.plot as iplt\n", + "import iris.quickplot as qplt\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Visualise yearly max, min and mean data for *air_temperature*." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# plot the timeseries for yearly max, min and mean data\n", + "ax1 = qplt.plot(yearly_max, label = 'Max Temp')\n", + "ax2 = qplt.plot(yearly_min, label = 'Min Temp')\n", + "ax3 = qplt.plot(yearly_mean, label = 'Mean Temp')\n", + "plt.legend(bbox_to_anchor=(1.18, 0.78))\n", + "plt.grid()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's visualise monthly precipitation mean over the thirty years (1980-2010)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "qplt.plot(monthly_mean.coord('month_number'), monthly_mean,color='seagreen')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Task:
      \n", + "
    • Calculate and visualise the monthly mean over Tibetan region from 1981 to 2010. Create the monthly mean with month names
    • \n", + "
    • Coordinates of Tibetan region: Latitude = [26 36], Longitude = [77 104]
    • \n", + "
    \n", + "
    \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# time series plot\n", + "# write your code here .." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Calculating seasonal means" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.1 Calculating seasonal means: djf, mam, jja and son\n", + "\n", + "Calculate mean wind speed and wind direction from 1981 to 2010 for different seasons over the entire domain.\n", + "\n", + "First we need to calculate wind speed and wind direction. In previous tutorial, we calculated the wind speed using hard coded simple arithmetic operations. In this tutorial, we will use catnip's **windspeed** and **wind_direction** methods.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# define constraints for x_wind and y_wind data\n", + "xcons = iris.Constraint(cube_func=lambda c: c.standard_name == 'x_wind' and ('pressure' not in [coord.name() for coord in c.coords()]))\n", + "ycons = iris.Constraint(cube_func=lambda c: c.standard_name == 'y_wind' and ('pressure' not in [coord.name() for coord in c.coords()]))\n", + "\n", + "# apply the constraint and load the x_wind and y_wind data\n", + "u = cubelist.extract_strict(xcons)\n", + "v = cubelist.extract_strict(ycons)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# define time constraint\n", + "start_time = 1981\n", + "end_time = 2010\n", + "cons = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", + "u = u.extract(cons)\n", + "v = v.extract(cons)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now import and use catnip's **windspeed** and **wind_direction** methods" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# import catnip methods\n", + "from catnip.analysis import windspeed\n", + "from catnip.analysis import wind_direction" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# calculate windspeed and wind direction\n", + "wind_speed_cube = windspeed(u,v)\n", + "wind_direction_cube = wind_direction(u,v)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Add coordinates and extract data for different seasons" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from catnip.preparation import add_time_coord_cats\n", + "wind_speed_cube = add_time_coord_cats(wind_speed_cube)\n", + "wind_direction_cube = add_time_coord_cats(wind_direction_cube)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Extract the windspeed data for all four seasons\n", + "wndspd_djf = wind_speed_cube.extract(iris.Constraint(season='djf'))\n", + "wndspd_mam = wind_speed_cube.extract(iris.Constraint(season='mam'))\n", + "wndspd_jja = wind_speed_cube.extract(iris.Constraint(season='jja'))\n", + "wndspd_son = wind_speed_cube.extract(iris.Constraint(season='son'))\n", + "\n", + "# Extract the wind direction data for the all four season \n", + "wnddir_djf = wind_direction_cube.extract(iris.Constraint(season='djf'))\n", + "wnddir_mam = wind_direction_cube.extract(iris.Constraint(season='mam'))\n", + "wnddir_jja = wind_direction_cube.extract(iris.Constraint(season='jja'))\n", + "wnddir_son = wind_direction_cube.extract(iris.Constraint(season='son'))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# lets print out wnddir_son cube to see its chape\n", + "wnddir_son" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Calculate seasonal means" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# calculate the windspeed mean over the seasons\n", + "wspd_djf_mean = wndspd_djf.aggregated_by(['season'], iris.analysis.MEAN)\n", + "wspd_mam_mean = wndspd_mam.aggregated_by(['season'], iris.analysis.MEAN)\n", + "wspd_jja_mean = wndspd_jja.aggregated_by(['season'], iris.analysis.MEAN)\n", + "wspd_son_mean = wndspd_son.aggregated_by(['season'], iris.analysis.MEAN)\n", + "\n", + "# calculate the wind direction mean over the seasons\n", + "wndir_djf_mean = wnddir_djf.aggregated_by(['season'], iris.analysis.MEAN)\n", + "wndir_mam_mean = wnddir_mam.aggregated_by(['season'], iris.analysis.MEAN)\n", + "wndir_jja_mean = wnddir_jja.aggregated_by(['season'], iris.analysis.MEAN)\n", + "wndir_son_mean = wnddir_son.aggregated_by(['season'], iris.analysis.MEAN)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# lets print out wndir_son_mean cube to see its chape\n", + "wndir_son_mean" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now visualise seasonal means" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we first need to load libraries for plotting \n", + "import iris.plot as iplt\n", + "import iris.quickplot as qplt\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# list of seasonal cubes to loop through\n", + "seasonal_cubes = [wspd_djf_mean, wspd_mam_mean, wspd_jja_mean, wspd_son_mean]\n", + "\n", + "# here we create a list of mean cubes and we will run for loop over it.\n", + "\n", + "# set a figure big enough to hold the subplots\n", + "plt.figure(figsize=(10, 10))\n", + "\n", + "# loop through the seaonal cube list and plot the data\n", + "# len functions returns the length of the list. \n", + "for i in range(len(seasonal_cubes)): \n", + " \n", + " plt.subplot(2, 2, i+1)\n", + " # above line will create the 2 rows and 2 cols of subplots and i indicates the position of subplot. \n", + " # i starts from 0, that is why we increment 1 in it. \n", + " # plot the windspeed at the first timestep \n", + " qplt.contourf(seasonal_cubes[i][0,:,:])\n", + " # add some coastlines for context\n", + " plt.gca().coastlines() \n", + " # get the season name from the coordinate\n", + " season = seasonal_cubes[i].coord('season').points[0]\n", + " # add the name as plot's title\n", + " plt.title('Season: '+ season)\n", + " plt.tight_layout()\n", + " \n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also plot in any other project. Python cartopy library provide us the range of option of ploting in different projection. See the list of option in [cartopy documentation](https://scitools.org.uk/cartopy/docs/latest/crs/projections.html). Lets try the above plot with **PlateCarree** projection." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import cartopy.crs as ccrs\n", + "# list of seasonal cubes to loop through\n", + "seasonal_cubes = [wspd_djf_mean, wspd_mam_mean, wspd_jja_mean, wspd_son_mean]\n", + "\n", + "# set a figure big enough to hold the subplots\n", + "plt.figure(figsize=(10, 10))\n", + "\n", + "# loop through the seaonal cube list and plot the data\n", + "for i in range(len(seasonal_cubes)): \n", + " \n", + " plt.subplot(2, 2, i+1, projection=ccrs.PlateCarree())\n", + " # plot the windspeed at the first timestep \n", + " qplt.contourf(seasonal_cubes[i][0,:,:])\n", + " # add some coastlines for context\n", + " plt.gca().coastlines() \n", + " # get the season name from the coordinate\n", + " season = seasonal_cubes[i].coord('season').points[0]\n", + " # add the name as plot's title\n", + " plt.title('Season: '+ season)\n", + " plt.tight_layout()\n", + " \n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Task:
      \n", + "
    • Calculate and visualise the seasonal mean of surface temperature over Tibatan region from 1981 to 2010.
    • \n", + "
    • Coordinates of Tibetan region: Latitude = [26 36], Longitude = [77 104]
    • \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Calculate seasonal means\n", + "# write your code here .." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Visualising seasonal means\n", + "# write your code here .." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Calculating differences" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.1 mean surface temperature diffference in winter season (dec, jan, feb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can find the difference of mean surface temperature between the past(1851-1880) and recent(1981-2010) 30 years periods.\n", + "\n", + "First, we need to extract out desired data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# extract air_temperature\n", + "sft = cubelist.extract_strict('surface_temperature')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# constraints: two 30 years periods - past and presnet\n", + "past_cons = iris.Constraint(time=lambda cell: 1851 <= cell.point.year <= 1880)\n", + "present_cons = iris.Constraint(time=lambda cell: 1981 <= cell.point.year <= 2010)\n", + "past = sft.extract(past_cons)\n", + "present = sft.extract(present_cons)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# load catnip's add_time_coord_cats method\n", + "from catnip.preparation import add_time_coord_cats\n", + "\n", + "# Add other dimension coordinates\n", + "past = add_time_coord_cats(past)\n", + "present = add_time_coord_cats(present)\n", + "\n", + "# Extract the winter season \n", + "past_djf = past.extract(iris.Constraint(season='djf'))\n", + "present_djf = present.extract(iris.Constraint(season='djf'))\n", + "\n", + "# extract data for Shanghai region\n", + "past_djf = extract_rot_cube(past_djf, min_lat, min_lon, max_lat, max_lon)\n", + "present_djf = extract_rot_cube(present_djf, min_lat, min_lon, max_lat, max_lon)\n", + "\n", + "# calculate 30 year mean of winter season\n", + "past_djf = past_djf.aggregated_by(['season'], iris.analysis.MEAN)\n", + "present_djf = present_djf.aggregated_by(['season'], iris.analysis.MEAN)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have now got our cubes for different climatological periods. We now calcuate the difference by subtracting the past data form present using **iris.analysis.math.subtract** method." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "djf_diff = iris.analysis.maths.subtract(present_djf, past_djf)\n", + "djf_diff.rename('surface temperature difference: Winter')\n", + "past_djf.rename('surface temperature past climate: Winter 1851-1880 ')\n", + "present_djf.rename('surface temperature present climate: Winter 1981-2010 ')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# add bounds to the cubes \n", + "past_djf = add_bounds(past_djf, ['grid_latitude','grid_longitude'])\n", + "present_djf = add_bounds(present_djf, ['grid_latitude','grid_longitude'])\n", + "djf_diff = add_bounds(djf_diff, ['grid_latitude','grid_longitude'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
    \n", + "Note: iris.analysis.math provides a range of mathematical and statistical operations. See the documentation for more information\n", + "\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now visualise the difference" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# list of our djf cubes and diff cube to loop through\n", + "seasonal_cubes = [present_djf, past_djf, djf_diff]\n", + "plt.figure(figsize=(15, 10))\n", + "# loop through the seaonal cube list and plot the data\n", + "for i in range(len(seasonal_cubes)):\n", + " plt.subplot(2, 2, i+1)\n", + " # plot the windspeed at the first timestep \n", + " if i==2:\n", + " qplt.pcolormesh(seasonal_cubes[i][0,:,:],cmap=plt.cm.get_cmap('Reds'),vmin=0, vmax=2)\n", + " else:\n", + " qplt.pcolormesh(seasonal_cubes[i][0,:,:],vmin=277.5, vmax=289)\n", + " \n", + " # add some coastlines for context\n", + " plt.gca().coastlines() \n", + " # get the season name from the coordinate\n", + " season = seasonal_cubes[i].coord('season').points[0]\n", + " # add the name as plot's title\n", + " plt.title(seasonal_cubes[i].name())\n", + " \n", + " \n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.2 Percentage difference in winter precipitaition " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also calculate the percentage difference. \n", + "\n", + "Let's calculate the change in mean precipitation from a past 30 year period (1851-1880) to the most recent 30 years (1981-2010)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# extract precipitation flux\n", + "pflx = cubelist.extract_strict('precipitation_flux')\n", + "\n", + "# extract the time contraints \n", + "past_cons = iris.Constraint(time=lambda cell: 1851 <= cell.point.year <= 1880)\n", + "present_cons = iris.Constraint(time=lambda cell: 1981 <= cell.point.year <= 2010)\n", + "past = pflx.extract(past_cons)\n", + "present = pflx.extract(present_cons)\n", + "\n", + "# Add other dimension coordinates\n", + "past = add_time_coord_cats(past)\n", + "present = add_time_coord_cats(present)\n", + "\n", + "# Extract the precipitation data for the winter season \n", + "past_djf = past.extract(iris.Constraint(season='djf'))\n", + "present_djf = present.extract(iris.Constraint(season='djf'))\n", + "\n", + "# extract data for Shanghai region\n", + "past_djf = extract_rot_cube(past_djf, min_lat, min_lon, max_lat, max_lon)\n", + "present_djf = extract_rot_cube(present_djf, min_lat, min_lon, max_lat, max_lon)\n", + "\n", + "# calculate the means \n", + "past_djf = past_djf.aggregated_by(['season'], iris.analysis.MEAN)\n", + "present_djf = present_djf.aggregated_by(['season'], iris.analysis.MEAN)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now calculate the difference using **subtract** function" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "djf_diff = iris.analysis.maths.subtract(present_djf, past_djf)\n", + "djf_diff.rename('precipitation flux difference: Winter')\n", + "past_djf.rename('precipitation flux past climate: Winter 1851-1880 ')\n", + "present_djf.rename('precipitation flux present climate: Winter 1981-2010 ')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# add bounds to the cubes \n", + "past_djf = add_bounds(past_djf, ['grid_latitude','grid_longitude'])\n", + "present_djf = add_bounds(present_djf, ['grid_latitude','grid_longitude'])\n", + "djf_diff = add_bounds(djf_diff, ['grid_latitude','grid_longitude'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To calcuate the percentage difference, we can use **analysis.maths.multiply** and **iris.analysis.maths.divide** to calculate percentage change" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Find the percentage change\n", + "pcent_change = iris.analysis.maths.multiply(iris.analysis.maths.divide(djf_diff, past_djf), 100)\n", + "\n", + "# remember to change the title and units to reflect the data processing\n", + "pcent_change.rename('precipitation flux percent difference')\n", + "pcent_change.units = '%'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# using iris plot for better colour saturation!\n", + "import iris.plot as iplt\n", + "\n", + "# list of our winter cubes and the diff cube to loop through for plotting\n", + "seasonal_cubes = [present_djf, past_djf, pcent_change]\n", + "plt.figure(figsize=(15, 10))\n", + "# loop through the seaonal cube list and plot the data\n", + "for i in range(len(seasonal_cubes)):\n", + " plt.subplot(2, 2, i+1)\n", + " # plot the windspeed at the first timestep \n", + " if i==2:\n", + " qplt.pcolormesh(seasonal_cubes[i][0,:,:],cmap=plt.cm.get_cmap('RdBu'))\n", + " else:\n", + " qplt.pcolormesh(seasonal_cubes[i][0,:,:])\n", + " \n", + " # add some coastlines for context\n", + " plt.gca().coastlines() \n", + " # get the season name from the coordinate\n", + " season = seasonal_cubes[i].coord('season').points[0]\n", + " # add the name as plot's title\n", + " plt.title(seasonal_cubes[i].name())\n", + " \n", + " \n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Task:
      \n", + "
    • Calculate mean surface temperature difference over Tibetan region from past 30 years (1851-1880) to present 30 years (1981-2010).\n", + "
    • Coordinates of Tibetan region: Latitude = [26 36], Longitude = [77 104]
    • \n", + "
    \n", + "
    \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Write your code here ..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Exercises" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this exercise we will analyse the mean air temperature from past 30 years (1851-1880) to present 30 years (1981-2010), over the Shanghai region, in all four seasons. Visualize past, present and difference in a row." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 1: Load monthly data and constraint time and region" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Write your code here ..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Excercise 2: Calculate seasonal mean" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Write your code here ..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Excercise 3: Visualise the results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Write your code here ..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Summary
    \n", + " In this session we learned how:
    \n", + "
      \n", + "
    • to calculate yearly and monthly means
    • \n", + "
    • to calculate seasonal means and differences
    • \n", + "
    • to visualize the results
    • \n", + "
    \n", + "\n", + "
    \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "cssp37", + "language": "python", + "name": "cssp37" + }, + "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.7.8" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/CSSP_20CRDS_Tutorials/tutorial_4_advance_analysis.ipynb b/notebooks/CSSP_20CRDS_Tutorials/tutorial_4_advance_analysis.ipynb new file mode 100644 index 0000000..de359d4 --- /dev/null +++ b/notebooks/CSSP_20CRDS_Tutorials/tutorial_4_advance_analysis.ipynb @@ -0,0 +1,779 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "# Tutorial 4: Advanced data analysis\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Learning Objectives:\n", + "\n", + "In this session we will learn: \n", + "1. to calculate frequency of wet days\n", + "2. to calculate percentiles\n", + "3. how to calculate some useful climate extremes statistics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contents\n", + "\n", + "1. [Frequency of wet days](#freq)\n", + "2. [Percentiles](#percent)\n", + "3. [Investigating extremes](#extremes)\n", + "4. [Exercises](#exercise)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Prerequisites
    \n", + "- Basic programming skills in python
    \n", + "- Familiarity with python libraries Iris, Numpy and Matplotlib
    \n", + "- Basic understanding of climate data
    \n", + "- Tutorial 1, 2 and 3\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Frequency of wet days\n", + "### 1.1 Import libraries\n", + "Import the necessary libraries. Current datasets are in zarr format, we need zarr and xarray libraries to access the data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import xarray as xr\n", + "import zarr\n", + "import iris\n", + "import os\n", + "from iris.analysis import Aggregator\n", + "import dask\n", + "dask.config.set(scheduler=dask.get)\n", + "import dask.array as da\n", + "import iris.quickplot as qplt\n", + "import iris.plot as iplt\n", + "import cartopy.crs as ccrs\n", + "import cartopy.feature as cfeature\n", + "import matplotlib.pyplot as plt\n", + "from catnip.preparation import extract_rot_cube, add_bounds\n", + "from scripts.xarray_iris_coord_system import XarrayIrisCoordSystem as xics\n", + "xi = xics()\n", + "xr.set_options(display_style='text') # Work around for AML bug that won't display HTML output." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Prerequisites
    \n", + "- Basic programming skills in python
    \n", + "- Familiarity with python libraries Iris, Numpy and Matplotlib
    \n", + "- Basic understanding of climate data
    \n", + "- Tutorials 1, 2 and 3\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.2 Set up authentication for the Azure blob store\n", + "\n", + "The data for this course is held online in an Azure Blob Storage Service. To access this we use a SAS (shared access signature). You should have been given the credentials for this service before the course, but if not please ask your instructor. We use the getpass module here to avoid putting the token into the public domain. Run the cell below and in the box enter your SAS and press return. This will store the password in the variable SAS." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import getpass\n", + "# SAS WITHOUT leading '?'\n", + "SAS = getpass.getpass()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now use the Zarr library to connect to this storage. This is a little like opening a file on a local file system but works without downloading the data. This makes use of the Azure Blob Storage service. The zarr.ABStore method returns a zarr.storage.ABSStore object which we can now use to access the Zarr data in the same way we would use a local file. If you have a Zarr file on a local file system you could skip this step and instead just use the path to the Zarr data below when opening the dataset." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "store = zarr.ABSStore(container='metoffice-20cr-ds', prefix='daily/', account_name=\"metdatasa\", blob_service_kwargs={\"sas_token\":SAS})\n", + "type(store)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.3 Read daily data\n", + "A Dataset consists of coordinates and data variables. Let's use the xarray's **open_zarr()** method to read all our zarr data into a dataset object and display it's metadata" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# use the open_zarr() method to read in the whole dataset metadata\n", + "dataset = xr.open_zarr(store)\n", + "# print out the metadata\n", + "dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Convert the dataset into an iris cubelist." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from xarray_iris_coord_system import XarrayIrisCoordSystem as xics\n", + "xi = xics()\n", + "# create an empty list to hold the iris cubes\n", + "cubelist = iris.cube.CubeList([])\n", + "\n", + "# use the DataSet.apply() to convert the dataset to Iris Cublelist\n", + "dataset.apply(lambda da: cubelist.append(xi.to_iris(da)))\n", + "\n", + "# print out the cubelist.\n", + "cubelist" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Note: The following sections demonstrate analysis of moderate extremes. The basis of climate extremes analysis is a common set of standard extreme climate indices, defined by the World Climate Research Programme Expert Team on Climate Change Detection and Indices (ETCCDI)\n", + " \n", + "
    There are 27 climate extremes indices, nicely summarised by the Climdex website.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.4 Calculate number of wet days ($\\mathrm{pr} \\geq 1 mm \\;day^{-1}$)\n", + "\n", + "In this section we'll be looking at wet days, a threshold measure giving the count of days when $\\mathrm{pr} \\geq 1 mm \\;day^{-1}$, and R95p, the 95th percentile of precipitation on wet days ($\\mathrm{pr} \\geq 1 mm \\;day^{-1}$) in the 1851-1900 period over the Shanghai region." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Extract the 'precipitation_flux' cube\n", + "pflx = cubelist.extract_strict('precipitation_flux')\n", + "# To avoid warnings when collapsing coordinates and also when plotting, add bounds to all coordinates\n", + "pflx = add_bounds(pflx,['time', 'grid_latitude', 'grid_longitude'])\n", + "# convert units to mm/day (equivalent to 'kg m-2 day-1')\n", + "pflx.convert_units('kg m-2 day-1')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Applying the time and region constraint" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# define time constraint and extract 1851-1900 period\n", + "start_time = 1851\n", + "end_time = 1900\n", + "\n", + "# define the time constraint\n", + "time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", + "\n", + "# laod the data into cubes applying the time constraint\n", + "pflx = pflx.extract(time_constraint)\n", + "\n", + "# extract Shangai region and constain with time\n", + "\n", + "# defining Shangai region coords\n", + "min_lat=29.0\n", + "max_lat=32.0\n", + "min_lon=118.0\n", + "max_lon=123.0\n", + "\n", + "# extract data for the the Shanghai region using extract_rot_cube() function\n", + "pflx = extract_rot_cube(pflx, min_lat, min_lon, max_lat, max_lon)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# now use the iris COUNT aggregator to count the number of days with > 1mm precip\n", + "wetdays = pflx.collapsed('time', iris.analysis.COUNT, function=lambda values: values > 1)\n", + "wetdays.rename('number of wet days (>=1mm/day)')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Find wet days as a percentage of total days\n", + "total_days = len(pflx.coord('time').points)\n", + "pcent_wetdays = (wetdays / total_days) * 100\n", + "\n", + "# renaming the cube name and units\n", + "pcent_wetdays.rename('percentage of wet days (>=1mm/day)')\n", + "pcent_wetdays.units = '%'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, we can plot the number and percententage of wet days" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12, 6))\n", + "fig.suptitle('Number of wet days (1851-1900)', fontsize=16)\n", + "ax1 = fig.add_subplot(1, 2, 1, projection=ccrs.PlateCarree())\n", + "qplt.pcolormesh(wetdays)\n", + "ax1.coastlines()\n", + "ax1 = fig.add_subplot(1, 2, 2, projection=ccrs.PlateCarree())\n", + "qplt.pcolormesh(pcent_wetdays)\n", + "ax1.coastlines()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Task:
      \n", + "
    • Calculate and visualise the percentage difference of wet days from past (1851-1880) to recent (1981-2010) 30 years period.\n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Write your code here .." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Write your code here .." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Percentiles" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.1 Calculating 95th percentile of precipitation\n", + "\n", + "In this section we will calculate the extreme precipitation i.e. 95th percentile of rainfall on wet days over Shanghai region from 1981-2010. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Extract the 'precipitation_flux' cube\n", + "pflx = cubelist.extract_strict('precipitation_flux')\n", + "\n", + "# change the units to kg m-2 d-1\n", + "pflx.convert_units('kg m-2 d-1')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# define time constraint and extract 1851-1900 period\n", + "start_time = 1981\n", + "end_time = 2010\n", + "\n", + "# define the time constraint\n", + "cons = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", + "\n", + "# laod the data into cubes applying the time constraint\n", + "pflx = pflx.extract(cons)\n", + "\n", + "# extract Shangai region and constain with time\n", + "\n", + "# defining Shangai region coords\n", + "min_lat=29.0\n", + "max_lat=32.0\n", + "min_lon=118.0\n", + "max_lon=123.0\n", + "\n", + "# extract data for the the Shanghai region using extract_rot_cube() function\n", + "pflx = extract_rot_cube(pflx, min_lat, min_lon, max_lat, max_lon)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# make a copy of the cube, mask where daily rainfall < 1 so that only wet days\n", + "# are included in the calculation\n", + "pflx_wet = pflx.copy()\n", + "pflx_wet.data = np.ma.masked_less(pflx_wet.data, 1.0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can use the *iris.analysis.PERCENTILE* method to calculate the percentile." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pflx_pc95 = pflx_wet.collapsed('time', iris.analysis.PERCENTILE, percent=95.)\n", + "pflx_pc95.rename('R95p of daily rainfall')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12, 6))\n", + "fig.suptitle('Extreme rainfall', fontsize=16)\n", + "qplt.pcolormesh(pflx_pc95)\n", + "plt.gca().coastlines()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Investigate extremes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.1 Calculate the extreme index TX90P" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Calculate the frequency of warm days in the present (extreme index TX90P), i.e. the number of days which exceed the 90th percentile temperatures in the baseline. Then calculate the numbers of days as a percentage." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# first extract the air_temperature at 1.5m cubes from the cubelist\n", + "air_temp = cubelist.extract('air_temperature' & iris.AttributeConstraint(Height='1.5 m'))\n", + "\n", + "# constraint for the maximum temperature \n", + "max_temp_cons = iris.Constraint(cube_func=lambda c: (len(c.cell_methods) > 0) and \n", + " (c.cell_methods[0].method == 'maximum'))\n", + "\n", + "# define time constraint and extract 1851-1900 period (the baseline)\n", + "start_time = 1851\n", + "end_time = 1900\n", + "\n", + "# define the time constraint\n", + "time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", + "\n", + "# applying the pressure, maximum temperature and time constraints getting a single cube\n", + "max_temp = air_temp.extract_strict(max_temp_cons & time_constraint)\n", + "\n", + "# defining Shangai region coords\n", + "min_lat=29.0\n", + "max_lat=32.0\n", + "min_lon=118.0\n", + "max_lon=123.0\n", + "\n", + "# extract data for the the Shanghai region using extract_rot_cube() function\n", + "max_temp = extract_rot_cube(max_temp, min_lat, min_lon, max_lat, max_lon)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "max_temp_pc90 = max_temp.collapsed('time', iris.analysis.PERCENTILE, percent=90.)\n", + "max_temp_pc90.rename('R90p of daily maximum temperature')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# extract a single cube of maximum air_temperature at 1.5m cube from the cubelist\n", + "max_temp = cubelist.extract_strict('air_temperature' & iris.AttributeConstraint(Height='1.5 m') &\n", + " max_temp_cons)\n", + "# extract data for the the Shanghai region using extract_rot_cube() function\n", + "max_temp = extract_rot_cube(max_temp, min_lat, min_lon, max_lat, max_lon)\n", + "\n", + "# Now extract present day\n", + "start_time = 1981\n", + "end_time = 2010\n", + "\n", + "time_constraint = iris.Constraint(time=lambda cell: start_time <= cell.point.year <= end_time)\n", + "max_temp = max_temp.extract(time_constraint)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we need to calculate the number of warm days, we do so by counting all the data points that are greater than 90th percentile of the baseline period within the last 30 years. We can use numpy method **np.where** which return 1 where max_temp is greater then max_temp_pc90 and returns 0 otherwise. \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# make new cube to hold the counts\n", + "nwarmdays = max_temp_pc90.copy()\n", + "\n", + "# Use broadcasting to identify all cells where daily temperatures in the future exceed the 95th percentile\n", + "temp_gt_pc90 = np.where(max_temp.data >= max_temp_pc90.data, 1, 0)\n", + "\n", + "# using np.ma.sum to sum the number of warm days above the 90th percentile\n", + "nwarmdays.data = np.ma.sum(temp_gt_pc90, axis=0)\n", + "\n", + "# the sum above removes the mask - reinstate it with \n", + "nwarmdays.data.mask = max_temp_pc90.data.mask\n", + "nwarmdays.units = '1'\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "qplt.pcolormesh(nwarmdays)\n", + "plt.gca().coastlines() \n", + "plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Calculate percentage of warmest days by using **iris.analysis.maths**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ndays = max_temp.shape[0]\n", + "# calculating percentage \n", + "nwd_pcent = iris.analysis.maths.divide(iris.analysis.maths.multiply(nwarmdays, 100), ndays)\n", + "nwd_pcent.units=\"%\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ploting the percentage of warm days" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "qplt.pcolormesh(nwd_pcent)\n", + "plt.title('Percentage of warm days')\n", + "plt.gca().coastlines() \n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Task:
      \n", + "
    • Calculate and plot the past (1851-1880) and present (1981-2010) 90th percentile of maximum temperature and the difference between them.\n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Enter your code here .." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Enter your code here .." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Exercises\n", + "\n", + "In this exercise we will calculate the percentage of total precipitation from 1981-2010 which falls on very wet days (where a very wet day is one on which daily rainfall exceeds the 95th percentile of the baseline) over Shanghai region.\n", + "\n", + "Further we also calculate the percentage of very wet days in the past (1851-1880) and see the difference by plotting the difference of heavy rainfall in the past and present." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 1: calculate the percentage of total precipitation from 1981-2010 on very wet days (=> 95th Percentile)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# write your code here ..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 2: calculate the percentage of total precipitation from 1951-1880 on very wet days (=> 95th Percentile)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# write your code here ..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 3: Calculate the difference " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# write your code here ..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 4: Plot the percentages and difference " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# write your code here ..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "___" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Summary
    \n", + " In this session we learned how:
    \n", + "
      \n", + "
    • to calculate extreme values and percentages\n", + "
    • to calcuate basic extreme value indices \n", + "
    \n", + "\n", + "
    \n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "cssp37", + "language": "python", + "name": "cssp37" + }, + "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.7.8" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/CSSP_20CRDS_Tutorials/variableslist.pdf b/notebooks/CSSP_20CRDS_Tutorials/variableslist.pdf new file mode 100755 index 0000000000000000000000000000000000000000..6a36809ea90a1eda78de3fb8e8be7035612f8fe0 GIT binary patch literal 103839 zcmb@s1yo$i)-{R*mmnc{Xx!aBxVyVH?lf+}gA*KrhT!h*1PK9xySuyFYjW=W?>Xa> z_rEb74RqD6S~^!XthqP2qNq4MGXp0IB6%J73k8uGzyz>2wn9PV<6~6yZ~!uj7=esz z?9CY!jm&}002c7FGNY`KojDcIj$T5T8o;Oma&j>NsX76H%J%jk05jX4EpkRq)>3w6 z_Fy%yL!c=DybUNIz$ga<8JU800@#?i{_Iq@1iAs86rF%(KqsJ`3D^i56Zh+ifB*_2 z(9ZOaH?Ma8;np8_7)9(|?7$`&Wh_mdbpU@X>jC~Q$ND!pAs3K^y%Uw3k&%t1i8UQS z+r`+((g_@ah!fBVWNB|FY6JpOiSn>8u`n?)v#>I=voJGr(=stpg1^DrOUN`%* z9|)eYLU2H^|JyCF!~cIM`+H7a)AV0*3C0(kebB!ERt7rTyEuWd0K+Hd4w6s-fl~t> zOQ>)FI9{;goKm5iv!sDpJM$pVN_vMbuzMZc6g1*#Dh^pg;5mfYH0#gmJkLjS2Z$r25L`;ZfqTfx(D1}3~O@2D-6F2Au(*hP%kxlu;6QC$lkP+>Br$NZFsoiJE& zmZbUeiV|$yaSjFFo}Oi(1rD%?KKnE= zu}rL4aCOg<1Xe1W_ciytJViC?F|>DRGAus>f)j2ru{DN*-*G>}kq7rd%Vut@VRJ%I ze?o}0j-m6_W$@KGnz5hU|6Pjoa_sp;A7;udBEv9 zRkpG__1@qZ@(ki6d}?XF)DAQKKDCC16{bT`l_$P?x6~n44PA*Qpt^YV*Lv4`RDlrh z8GtG+ngYD2Nk?Y69J=|^lv(U0_O!%%7xnll{{s$2RcZ!~juq1(9GQ951=m!f-?j}C>a#Uiw|Vx)EDS@w%n8&p3=flv zTh#O3`d%2g&(*CzqYCoWx}%;o_SDaXUDqE8^z0a9jUIY=-|Z#)>8*}>OOo}sYdb}j zR{w0?e8-`VAbfZ4EeA-f2r(r`v|9JpO0GIMCYMx;G^Oq2T1rY+wxm8gHOcqlD${cY zxOk>j`m%Rt^CF%~x^r}qUCaa`{>+`Yrp+&e_Az>{58bYGQ5O0FFKZqiU&%sY&Iq+y zicsR-1W#sUpi9BU(4f-v@Hsinx
    Q(NE+S$gzZWUlc+SAsi1Q7Asy;z^J-hYC+@ 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%0Ajb&e$dFir2#QZnufj6RL1BHO+9NWipvO>YG}DL~ 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�(mFh=4evW7gJ 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 AmH+?% literal 0 HcmV?d00001 diff --git a/notebooks/awsutils/README-AWS.md b/notebooks/awsutils/README-AWS.md new file mode 100644 index 0000000..01f6e4a --- /dev/null +++ b/notebooks/awsutils/README-AWS.md @@ -0,0 +1,129 @@ + +## AWS + +### Create an EC2 instance + +* Select Eu-west2 (London) region from the top right of navigation bar +* Click on Launch instance +* Choose Amazon Linux 2 AMI (HVM) kARNEL 5.10 64-bit (- X86) machine, click select +* Choose t2.2xlarge and click next: configure instance details +* Choose subnet default eu-west-2c +* In IAM role choose existing trainings-ec2-dev role and click next: storage +* 8 gb is fine, click next: add tags +* Add following tags + * Name: [Unique Instance name] + * Tenable: FA + * ServiceOwner: [firstname.lastname] + * ServiceCode: PABCLT +* add securitygroup, select an existing security group: IAStrainings-ec2-mo +* Review and Launch and then select launch +* It will prompt to set a key pair (to allow ssh). create a new key and download it. + +It will create the instance. To see the running instance goto instances and instacne state will be "Running" + +### SSH instance on VDI + + +* Save the key (.pem) to .ssh and set the permission: chmod 0400 ~/.ssh/your_key.pem +* Open ~/.ssh/config and add following: + +``` +Host ec2-*.eu-west-2.compute.amazonaws.com + IdentityFile ~/.ssh/your_key.pem + User ec2-user + +``` + +* Find the public IPv4 DNS and ssh in using it ssh ec2-.eu-west-2.compute.amazonaws.com, public IPv4 DNS can be found in instance detail on AWS. Click on your instance and it will open the details. + +* Remember to shutdown the instance when not using it. It will save the cost. +### create s3 bucket + +* goto s3 service and press "create bucket" +* name the bucket +* set region to EU (London) eu-west-2 +* add tags: + * Name: [name of bucket or any unique name] + * ServiceOwner: [your-name] + * ServiceCode: PABCLT + * Tenable: FA +* click on "create bucket" + +### Key configurations + + +The above script run only when config files contains latest keys. In order to update the keys: + +* go to AB climate training dev --> Administrator access --> command line or programmatic access +* Copy keys in "Option 1: Set AWS environment variables" +* In VDI, paste (/replace existing) these keys in ~/.aws/config +* add [default] in first line +* Copy keys in "Option 2: Add a profile to your AWS credentials file" +* In VDI, Paste the keys in credentials file: ~/.aws/credentials (remove the first copied line, looks somethings like: [198477955030_AdministratorAccess]) +* add [default] in first line + +The config and credentials file should look like (with own keys): + +``` +[default] +export AWS_ACCESS_KEY_ID="ASIAS4NRVH7LD2RRGSFB" +export AWS_SECRET_ACCESS_KEY="rpI/dxzQWhCul8ZHd18n1VW1FWjc0LxoKeGO50oM" +export AWS_SESSION_TOKEN="IQoJb3JpZ2luX2VjEGkaCWV1LXdlc3QtMiJH" +``` + +### Loading data on s3 bucket from VDI (using boto3) + +to upload the file(s) on S3 use: /aws-scripts/s3_file_upload.py +to upload the directory(s) on S3 use: /aws-scripts/s3_bulk_data_upload.py + +### AWS Elastic container repository + +Following instructions are for creating image repo on ECR and uploading container image + +* ssh to the previously created EC2 instance, make an empty Git repo: + +``` +sudo yum install -y git +git init +``` +* On VDI, run the following command to push the PyPrecis repo containing the docker file to the EC2 instance: +``` +git push :~ +``` + +* Now checkout the branch on EC2: git checkout [branch-name] +* Install docker and start docker service + +``` +sudo amazon-linux-extras install docker +sudo service docker start +``` + +* build docker image: + +``` +sudo docker build . +``` + +* goto AWS ECR console and "create repository", make it private and name it + +* Once created, press "push commands" + +* copy the command and run it on EC2 instance, it will push the container image on record. if get "permission denied" error, please add "sudo" before "docker" in the command. + + + +### AWS Sagemaker: Run notebook using custom kernel +The instructions below follow the following tutorial: +https://aws.amazon.com/blogs/machine-learning/bringing-your-own-custom-container-image-to-amazon-sagemaker-studio-notebooks/ + +* goto Sagemaker and "open sagemaker domain" +* add user + * Name and and select Amazonsagemaker-executionrole (dafult one) + +* Once user is created, goto "attach image" +* Select "New Image" and add image URI (copy from image repo) +* Give new image name, display name, sagmaker-executionrole and add tags and attach the image +* add kernel name and display name (both can be same) +* Now, launch app -> Studio and it will open the Notebook dashboard. +* Select python notebook and add your custom named Kernel diff --git a/notebooks/awsutils/fetch_s3_file.py b/notebooks/awsutils/fetch_s3_file.py new file mode 100644 index 0000000..bb57852 --- /dev/null +++ b/notebooks/awsutils/fetch_s3_file.py @@ -0,0 +1,111 @@ + +import io +import os +import boto3 +from urllib.parse import urlparse +from fnmatch import fnmatch +from shutil import copyfile + + +def _fetch_s3_file(s3_uri, save_to): + + bucket_name, key = _split_s3_uri(s3_uri) + print(f"Fetching s3 object {key} from bucket {bucket_name}") + + client = boto3.client("s3") + obj = client.get_object( + Bucket=bucket_name, + Key=key, + ) + with io.FileIO(save_to, "w") as f: + for i in obj["Body"]: + f.write(i) + + +def _save_s3_file(s3_uri, out_filename, file_to_save="/tmp/tmp"): + bucket, folder = _split_s3_uri(s3_uri) + out_filepath = os.path.join(folder, out_filename) + print(f"Save s3 object {out_filepath} to bucket {bucket}") + client = boto3.client("s3") + client.upload_file( + Filename=file_to_save, + Bucket=bucket, + Key=out_filepath + ) + + +def _split_s3_uri(s3_uri): + parsed_uri = urlparse(s3_uri) + return parsed_uri.netloc, parsed_uri.path[1:] + + +def find_matching_s3_keys(in_fileglob): + + bucket_name, file_and_folder_name = _split_s3_uri(in_fileglob) + folder_name = os.path.split(file_and_folder_name)[0] + all_key_responses = _get_all_files_in_s3_folder(bucket_name, folder_name) + matching_keys = [] + for key in [k["Key"] for k in all_key_responses]: + if fnmatch(key, file_and_folder_name): + matching_keys.append(key) + return matching_keys + + +def _get_all_files_in_s3_folder(bucket_name, folder_name): + client = boto3.client("s3") + response = client.list_objects_v2( + Bucket=bucket_name, + Prefix=folder_name, + ) + all_key_responses = [] + if "Contents" in response: + all_key_responses = response["Contents"] + while response["IsTruncated"]: + continuation_token = response["NextContinuationToken"] + response = client.list_objects_v2( + Bucket=bucket_name, + Prefix=folder_name, + ContinuationToken=continuation_token, + ) + if "Contents" in response: + all_key_responses += response["Contents"] + return all_key_responses + + +def copy_s3_files(in_fileglob, out_folder): + ''' + This function copy files from s3 bucket to local directory. + args + --- + in_fileglob: s3 uri of flies (wild card can be used) + out_folder: local path where data will be stored + ''' + matching_keys = find_matching_s3_keys(in_fileglob) + in_bucket_name = _split_s3_uri(in_fileglob)[0] + out_scheme = urlparse(out_folder).scheme + for key in matching_keys: + new_filename = os.path.split(key)[1] + temp_filename = os.path.join("/tmp", new_filename) + in_s3_uri = os.path.join(f"s3://{in_bucket_name}", key) + _fetch_s3_file(in_s3_uri, temp_filename) + if out_scheme == "s3": + _save_s3_file( + out_folder, + new_filename, + temp_filename, + ) + else: + copyfile( + temp_filename, os.path.join(out_folder, new_filename) + ) + os.remove(temp_filename) + + +def main(): + in_fileglob = 's3://ias-pyprecis/data/cmip5/*.nc' + out_folder = '/home/h01/zmaalick/myprojs/PyPRECIS/aws-scripts' + copy_s3_files(in_fileglob, out_folder) + + +if __name__ == "__main__": + main() diff --git a/notebooks/awsutils/main.py b/notebooks/awsutils/main.py new file mode 100644 index 0000000..8ea37ba --- /dev/null +++ b/notebooks/awsutils/main.py @@ -0,0 +1,42 @@ +from fetch_s3_file import copy_s3_files, find_matching_s3_keys +import iris +import os + + + + +def load_data(inpath): + + if inpath.startswith('s3'): + keys = find_matching_s3_keys(inpath) + s3dir = get_directory(inpath) + temp_path = '/tmp' + for key in keys: + file = key.split('/')[-1] + if os.path.exists(os.path.join(temp_path,file)) == 0: + copy_s3_files(os.path.join(s3dir,key), temp_path) + else: + print(key, ' already exist') + + files = inpath.split('/')[-1] + data = iris.load(os.path.join(temp_path,files)) + return data + + +def get_directory(inpath): + path = inpath.split('/') + dirpath='s3://' + for p in path[2:-1]: + dirpath = os.path.join(dirpath,p) + return dirpath + + + +def main(): + inpath = 's3://ias-pyprecis/data/sample_data.nc' + data = load_data(inpath) + print(data) + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/notebooks/awsutils/s3_bulk_data_upload.py b/notebooks/awsutils/s3_bulk_data_upload.py new file mode 100644 index 0000000..50d8bec --- /dev/null +++ b/notebooks/awsutils/s3_bulk_data_upload.py @@ -0,0 +1,26 @@ +import os +from tqdm import tqdm +import boto3 + + +def upload_folder_to_s3(s3_client, s3bucket, input_dir, s3_path): + # This method uploads the directory (also subdirectories) to S3. + # You can also specify the s3 bucket directory where to store data + pbar = tqdm(os.walk(input_dir)) + for path, subdirs, files in pbar: + for file in files: + dest_path = path.replace(input_dir, "").replace(os.sep, '/') + s3_file = f'{s3_path}/{dest_path}/{file}'.replace('//', '/') + local_file = os.path.join(path, file) + s3_client.upload_file(local_file, s3bucket, s3_file) + pbar.set_description(f'Uploaded {local_file} to {s3_file}') + print(f"Successfully uploaded {input_dir} to S3 {s3_path}") + + +def main(): + s3_client = boto3.client('s3') + upload_folder_to_s3(s3_client, 'ias-pyprecis', '/data/users/fris/s3_uploads/pp', 'data/pp') + + +if __name__ == "__main__": + main() diff --git a/notebooks/awsutils/s3_files_upload.py b/notebooks/awsutils/s3_files_upload.py new file mode 100644 index 0000000..5d82ffe --- /dev/null +++ b/notebooks/awsutils/s3_files_upload.py @@ -0,0 +1,43 @@ +# this script load data on aws s3 bucket +import botocore +import boto3 +import logging +import os +import glob + + +def upload_file(file_name, bucket, object_name=None): + """Upload a file to an S3 bucket + + :param file_name: File to upload + :param bucket: Bucket to upload to + :param object_name: S3 object name. If not specified then file_name is used + :return: True if file was uploaded, else False + """ + + # If S3 object_name was not specified, use file_name + if object_name is None: + object_name = os.path.basename(file_name) + + # Upload the file + s3_client = boto3.client('s3') + try: + s3_client.upload_file(file_name, bucket, object_name) + except botocore.exceptions.ClientError as e: + logging.error(e) + return False + return True + + +def main(): + bucket = "ias-pyprecis" + + file_path = "*.txt" + files = glob.glob(file_path) + + for file in files: + upload_file(file, bucket, object_name=None) + + +if __name__ == "__main__": + main() diff --git a/notebooks/data_v2 b/notebooks/data_v2 new file mode 120000 index 0000000..1cf6ea7 --- /dev/null +++ b/notebooks/data_v2 @@ -0,0 +1 @@ +/data/users/fris/data_v2 \ No newline at end of file diff --git a/notebooks/img/AR5_extreme_indices.png b/notebooks/img/AR5_extreme_indices.png new file mode 100644 index 0000000000000000000000000000000000000000..b69dfd4ee2ea00f1119ee22010263ae884643d9e GIT binary patch literal 195544 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 WCd2ObFnc^l!BCP@m3<>^{Nz7ZpQ$1M literal 0 HcmV?d00001 diff --git a/notebooks/img/Iris7_1_trim_100.png b/notebooks/img/Iris7_1_trim_100.png new file mode 100644 index 0000000000000000000000000000000000000000..b9267ced2cb18461cb5e3dcbcbab47e2b41e7e5d GIT binary patch literal 10899 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 literal 0 HcmV?d00001 diff --git a/notebooks/img/MO_MASTER_black_mono_for_light_backg_RBG.png b/notebooks/img/MO_MASTER_black_mono_for_light_backg_RBG.png new file mode 100755 index 0000000000000000000000000000000000000000..7960368821e1cb377b274891770c62b69b431c92 GIT binary patch literal 25991 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 Bhi3o) literal 0 HcmV?d00001 diff --git a/notebooks/img/python-logo-master-v3-TM.png b/notebooks/img/python-logo-master-v3-TM.png new file mode 100644 index 0000000000000000000000000000000000000000..71f942075dda7fb0b25cb28bfe6555e4ccbbe6dc GIT binary patch literal 83564 zcmbrEV{m3q^yj0QIGK3jOl+GIJDJ$FZBK05w#_HDp4hha#Mt@mfA{si*sj~%-|p&j z@99(3x2o%N!vDyLBf{apfq{V`N=k?*f`LJ3{L>RK-~Y8bVw&%#< z-wLw-Rw&t-I=dM-nt;g~7&+S6m>63a5Q$khnz-3HS~(HPsuM9YGO~ucR?UEcK|Y>kAq(!CT8nz`%b0p7w*7`EM{BMmQ`;K>yV7 zoypqx_a_#&YScS4-u1Lw_DA zr9-)c);Zj$H*xN&VgW8ziY8cGrL3XXNa3JjGI>0bnL#<{_zxvf4Tz}%K6eK{tJmuJ8JU-?hGk^MM+Enlh+r6cUGqNaS~)wGT-=ekII6X2 zrezs$@6w{4doVP_okWB^hE8ZHU?`FDqIaEo}11?t~E?g+u~#KVjKJVa+me|Ng_z7b=4qu1Y=d&~*G zX2N`4Rm@^QySJBJ`gR8I1m3#f8qglsQIw{@!lJYxzr%8+Xa7(^ZXTC# z*2Y0%0+HnUU_TKLf{FwFp_QB|RsA#!X=^$^xjA9>O4OTcZ^}d3#+cKtVtW_2`2fb7l zb%sS%Ue=m%J-djIyX zdlu6Yks?6~{QB^+qubP3Tr9H%gGvq1Zw%12RoOgrvfI@3yw0qCI_`vCA2~MmydjK@ znX%}{Mv>(9dA0X)B#_T7A8-o({Q>p4XLrTMUeCjnv*Zf7IZz9`PzA>`PIW~&6h;c+7lmo zDW1{Wt@HAxPh_{YnE-G_KG==tUfmYppGiDj`mKXUc^241Z7dH|3Wav7Pl>Hly>&ij z;^Lp#`5iwwZA6aTX`j#^PysnG(1c<3IX04RPSOEyCcpbc?(GFWV&Dv+He7jttr2H- zP~iSpf3&&`)Y_TIJmJ#jiH_c=Gx(42{-b>0f?dQPrL@rMZF9~#`L zzL$q{F$*Qa_Q8$Smlb#6^x5*co-ak0wLG!(`0=I|34icVBZLiqd37R>7(DQEccu{J zuGE+Pu||!M6&@hs9mtdQCol>yV3@-f((e){i6bvSsK$4Q>_t9GQu_ zxLH#Y30A6e0~*<8sma+LGfpgtN0(_Y<)%mMlpFBre_!e)II_4@Bc)zYdjK)IGjg-$ zjbv3WoKl8co3^4=oK)c8TwLjkUM+N~rqv!}%$u>M#vAEwjfmX%G)pEVL+yoR!5Fty zb$_Q}T`$#_k_83k5nhq39~LIE78Gbka3{}5_6srn%+)K8u1H%|%IUH<)-oo3MhksF z@2oLxncPOf53x9&Fisgu8x1uBY4wF!;MNPAi7Ai*Shuy>u6k(R_o(sLtP$J!0JO z!M4f@fhNQs$iBf0SPPoTcNk_f?@YGV?pZBpew4k5>=6|0JBl1qe>v!q;Ik%>I88)HP~=Uvs}8ElopZMVS{ej6}n{6?a+p_zWF~N+V9<98l?xmv8f>5 zI}nMpiUV^yC@pBjTHy8HvywW(dk*bS%P5nTsq+jD1XZ+>Kc@$PxmdT8jIT;Wt4UO@ zM-kb~VU=|(y2=dgdnNs%wT63?G|WlU`en1>7%*MRb5zS6U8-k_dorDYhbBuj>jAEr?#7<}@hcHj2!jf6OI;hKjgERj*C4&!O+~k%cVUQ2kG|NIEPNUD@?E1V_pW=n$l*DLM zNJP0Zi;GBh%$B;Fs&Ww_j3pQwh8D}zvJ8`JQK?lltC4v6dEo6tz>8w8yYnA!CWq(G z0Hi=9BpKta+9zC}g6FmqgIfO&>y3yHIlcOw&&dmC;r9WT_W_LSRf$_&f^=RfIU0IT zF1l<^W_9Y<0LAx~i;pt>>v9Bc2kLRj%;%A!?cYyvuN(qa^0&M*Tbx(-ic`t-hy zAUC5L1H5!}gLY#gM3Nza=R|DJ*$Vv65~n@8N*Kw|^Td3Xgo4#EWV+`={%5ueX9uAZ zhd=qyLc8Y3vgI)|0fy#Zzl9q=qoc^t7)ZYqSzdW8uEn_#i7DKt7YB;cIlM@PpW=oM z3CfJ16Vn$^LO$SK7}IM5sY;#MWnV9bhw0ko?HBp3S6Cq;c~Okzl8U9-DlT5;sh@_(Ym}u?8iJ9z5Qf9jmIz zt@J4CIRfaludWzf?rFkfH$VhAr+-)^tT!I{Um7HemK-FWGK)PEy9=XQDc4CBy?*r$ zKH(forBre9*a(yGqx8zODVaA9**|njNHPZTS(-Q>u&_*2QIq!clH@&HwSVV zFwL5G(mn=fk$3#F;)+|)fD2rLM_GMmeRL%k*tOdxgv3u=?e{<2FRNJ?_ehkkbqax%+4MVxG0~dZ-6f-66c>;ft9!dU3tMoS0$8-yf&Yw=NX>Oy{TXEon^qcwV zU5Tcb6EJU(u2cL+O2Z0Av5ZdHL}MUz(VV1lcYQ^GRxxUZvi*Q}14VD0+FU#!F&iIk z@JqQdL6pZSN~pxyUiHRqwX%*)22zFuJh1%k1ENMfHz7sx|pZWy~KdaW{=fm+T z-aU7k>pT|Xgv5%yxGuDCjCY2(>Ue{E1k6!;mU)23OyQa{daBJ>7dF=%|D_gG80{&4 zojJtdEHmJ(#LE$|#Rpq|l`49C&>Ur)BW^cY_hg-|wPk&-VVdD#wrZf(Sm4wo?O7ms zoD_SqY}ES$TAR8eM|~|mGrNKb4GqDXY-MoKO{^x|_PFz`L=BKDo~F=&76z-rb`%!BP0IEWf%uvz zG$VRZwO&KL9-lFJHOjM~ClS)H19$qt5`uG_Q6f^D;!35rCfLY@sJMyRqi9l&#Krju zKt)`N$G>2x2~ zyTSm53O5cYO7T=@bv;=^8kgYjB|?JC|7KdcI%#Ui?UzJ}ihc;Av^=4FMT0^$?Tpy01$-M8 zSW_J&?0u?za==Q_X&#fJ{gS0g4QnrY((ALDxzX(6#Al{}b%Oo6R5hcOc}S`{Owd*Beh6#KNd~ZUf;aYF?y*)*9y5a38NXgnn;L$>Z3V2>Nb;z`7}uZ%uhJ6 zrvuWXew5XT;KBD!%dowtDG$R=HdCw2G)>B{D7`R-mz8tVBI^t9xE{MvtMoiOzTMx4}nUXDds-AmdQkaE;hKT76{i31IqNJMY7O(&+@I~8!BUK4vkFVvFGC0MaM zMg71{e9I5RB?j9M9HPb32dng6-O5vIw(LkjKsnnah63rxK!F`9o{t~_j9tM$w!I~5yEN@i%i|AjSE>#Njhy+ z$S6WRq>wU`vhZ$Uu@I$l5MsrcEEMm!4fdAGlB0D`&-79hy^E3y8tM_W;VB_lxg-fr5vMK3;nBf?S{H3^0FX+PcdqL8`Kw4ZjIjUe}TO)dUTh-G;rCg0xM?WY&wqo8wZ z0Ww6Kn1Gw#jcQwG!-jdNkl0!|T+}u{4y&=;WWcp_7=N&8H{4_Ota_q&X1a(qCqNe6 zIxy_c--B?bkCY@oRVwlve~@1>=-id=R=vb?#pO=joM)0GJZz&W&yAa47Yr3Zp2w@| z6{tEY*V*UDVuLAv_>TTXvCW)Jh-hoLo#b>C2Yi1pRLnY+7n+t073 z(Fgg<8*=#zgFDSH0%`ZPp4DJsp;c3fa3GPPpi#mm>lU@{vl;zZi_?uEW3+fH>_dL% zQ`~ZQ!P)Fh>y&UD$42>#wL0mYCUO|^1X$LLHS)Si88NqQvF&Kg_f`+O$l3Tj7Hlfa zeGve9B#l=}itM0?v#teQlW+!Z-)yM&Kr#e6QE7)CijVRrJxlMveP(DDZ&7PO;Bg6W zmrB29Qnp;ZmpLB0Io|eLJZNvfp;g7ZJTcI?Wm+iNsSwt>lSc>LPx9r#G19aK$I)c( zQXXTnE}W*`(fJ8TQDwFob|=haqsud%hsz%f>r&(q%06|HC1w7-Jh4#;akP!to!^$S zXzQZRrM6UW&*h>6d~5dj)u=2EPW4{lc$|}ksysG86 z=3Gn!#~H1{Z6_vYEL&@KXMi<9F`7`?&@Vi8h&>e3e_@k4{QM9wIecBs6|!N%c2yJ( zqN8e7vJmho_b83dxW#RxSKWSTQ83!1u)~n=aHYEz3Cn@ZMn1r+AzVJ`5S_Nu zwfwVt_{1s*NPe%-cfuxAi}L!NgjI{=0Vlr}Psr=xG{I~uneFxbw^@VOF^&K9dAi#_ z&tgux&i)g+h4-FEn>g9aC%o|43{L-K{xVE=jz_E5zgM*io=l|ukE}J@s{YTz#viYi zQ(am{kN;d^xn4@^9=^~>^J)Jl|MLPg*~unW%hVxzw9jn%KL-DO?!T=g|9+`n=!a8_ zjHbd6N@ZAk?(48pF}Ja7Gf3{?ZX$r_IYbGa`FUa@EqK1Fd2zNgdm7+p%!i+0rqiuv zgRD^i?^c)ZX_q)%%%Z6{BJmyXN4Cq%B+cAP&r);pspei(KE3>M!*oXo5JpFRoqusn zRn(6I=OcKDWAYrrvsPxGpGq1kyK>>?yLjOwF#X7UVTxCGTYbT1#AKx4++%o|36m_w zW;;o}30{cscl$_#N~Pe5UJ9AmJ^&}mb${x=ZFxom{ia_2>S=gy#3e0OF6b)1+7N0~ zW=u6N5;X%Z77bXFYyBs|HuIJtaH8C0cG0kYMjzi0925XkWC~tI9-n`dmu3T59T>@? zoUhasw4%)CZX#(6416#Rd2K49eEiL@MPeHO)D@X!zKMKm9_sOM`v$RlbU6lX9gzY_1gdh8DfNNJ?dGayn>r+P`({qH)yVz@C%2 zfpnQ9K4Go|%PZBxfAfjbH71Oy^QZ7fjhjoo@GNAMqa|laNOmXl4HG&Cy#@A>OE%->w2R>Z&3Jv-WCRe|AYhX91CPE2(>oKQumMY-tmB24f(G0 zgcCSxGcRXP(#Ra9sgLEUSi1@Q4V=3vf;CXwehACkW7>0K7<6jvC07hSC`shsr0&_I zY85=A=d6-?9w|REPkJtRe6c|$EnnG#YP8UA;FVG3>kG#5J&SE8TEO52#2FVoo(%?} z%IemlsYF1Ek=*8+U2ZQL!$Ef;F^AcCxZlBXL({d{B1SdM982e9%`I3mmv}+5v65-W zh{9et^j^wsujuV(X)lR3o42z4+cLM2f$9&tljjrqKfZzOrx=n%+Of8Zf*Op^k(fM5 zOMHJxQty9ODxx?RTlh>bY`U$sb(As*mdvbMXaS7cifp zNnaVYblXIED{Opq8fuH*_PlrF_@*AZ95Mx1pE#gl|_)A{<8l;#Fo%sRjYR+W%RKH*s#x4n;bKdPZkqWVv((dH{ zBtj;9Dc=DfnCZn|8_#EDA)#()5^pt#i#w^V)#}+(DS6|KK7RtEcdoP_w^7q=Mi1}@ zM)9`+KM|j!lU!B-m6ic~6Z;hE($F3mIiiENwX(2Q{Q+XM3xyMNK^iV65zi;V=~=%D zyBL$3Sju5JRjG@}iE8AF=%Y+n$BU8EBqj-~MbJKbZZKBPYTR#-qvczNf^yHf#Ow~e zH`RtB#wi?|W7``PCKt4d#eyvBC5(q_HH}RrLD`E}gvR_gA~jYzV#Z97J@V&4g)U#5 z`!Dkv_j_9AIbN=88AmB=vW;SjdUeo|ELJLhs?~O7PiFJdF)tt5UxWOecfM->;z%0M zC{+HgcVewYZ`9vpx^K#VYGS%hFxIY?ropDzMpFokz8jAqxh=W7JaM7Cegz+Aa%&!l zu6vIuA~ob{efo10D5fYT^LiP7)wrwoYq>1VVoCmQCp$p~orPWw8FlOH-i2>4J%0@tjY!{8yvpESu1TF`h4}Nf{$cqJtL( z3tD=B2{Zc$;EaR7X|+%@e zxVqY`-dts`Y{}N}3e6?wRK@2-=^o8PF%t+ewVi$d1q|J_k8c=>r_OFILrjd(ZKlS4nZZn=W>0{5MmH~CiLTk-J9 ztezHksR&8}OSP_NRQd#h#VVS%Xw0WMu4e%2p~u* zrO6xT>fboKaRrq;(1WXVZ$zwALR9+(ziDK z%8-1l?>9Tw@0K_5Jx(B#N!pyC37>H+hUW#YzD91_dyVuyysMDjp5K={k#BBB__tVs z_W3|g{s*5c+X>!2Z4B72FlQ}q=Ez?sXe(8xt;nzL_s*{_U%$3K>%O3ndCqR?7)3G88 zS{q4^cO>tCa`6?67DH2oLs<@xOt37apWUl@EI=SsVB~mAnSlK4_rfn%B>Rn_H^I#z zWdi@9z)ob7>?c5C>jmFmtw#cb%)V*?@9%dW?oZe&#~gY_G&y*b9w$iW!etBTaz{+8 zW?gNqbj=pxWA<;qaIX1^8b6|q2Zet;EknOOi&H1^)(f;D`%z2iTkCyDar!Pv%tFAn zAUzg?kd-e9k?S6z=W0-YH8^nN^ZIggVP*BFnk71=$Ue2YDJcIVOum5HnQaz|t5dYj zqrn>f`fqG2+Yko)C(;WmX99!xB9Bk4|8CK(ll;Vg8wq}SlU5ty?cMKa746O+sp`Qj;*XNj1$q$PzsR4GzMs1^tJ zbTfu&k(DMqC8ZSmoZ$mBrxo*0l6!Lu_ZnAto;z{Fv?z#N_$X#5&i$E!h=Ktk6r&N)Jy zSD;XJ5YMk@LYjAg2EY66gHtR{_W&zlL-IY}Z1yKj~DzFx?;QcFI^ z;UdqdDFgxu2d1+?Q}n#xwu8b$(cIN0QrZ`DHhp=2oWBX78H64XO+OO6o4R_@@`6>6 z=i#Ijgc4%q#BJij&`Sz!h z{>xs~#X0KH5zaHga?ykj<({)dj4ENpeJAU$YC_z;^QlI?y-*Z<%(o#SA>FixyQBcr zH^bc^*UEJ1Nm~m!RDAeG-5ivr%sc zD)#^RljI&)Acl`HBpS{^Uty(BNiNmJq@V*X%%rdv9gefefR019HEWK|t?Di|Aw0gJ zk2j5DmmG7KlBM-2+{7>fZO@>4e--2Rm*(V$Ly{HYv|reQ%yFlq^Xbp&iu5R9E-&w@ z%@c~|x2g5sCYH?(n)ymCx3`hw3m6%{&w2=U(exQcO^YCgEskU!2>BW zBQ`cZB*^Qrtl)uZ~e&|_`Y;%CNwgoP8QDUJtPkfJ`bYQYy&o@X~Z^vusF zOVl}6yyPckt^`V?jrVC|1N4Ge9gWh90lWFKH@EZS=@iW@YD_E7>M<3&VVfm*tG#ZH zb|OVW%9I)X@~Cw_+9CLZSg!UNNZ1C{7dzUa_?c1Usyl+rNL$=fKNW6A$WfFG@Skiu6ly>Ck*ZZvI-v zz)V3;{@U5eaU!lb6j+AG|BQRHj!o+bE7n1Kbd1XO{zZKQjB@BnucR{^T>qY+!<@~ z?Eg|el8iN@IpDCX}A>Bo6$9oj;h*A2t`XU?`-O{d)=^y=MBmq)G#Z z3%1~u^g}3|{ul0?9O935u)nZu?P+jfr6zsi6~v1}o{h6pW*#i?#{U@=YC!|b z>S1CFTFRIt*|D3I>YfS|J|tlrj6?1oVS6 zivev^1c4;lbI@rNEjN`&Qn-YKBs310I=m7-Pd?c<64|@C{5rhRma>_6(NOT*z7-nh z1m4(2%=dJ4XB<9rf23DM`HoVc-uKb`{RflSUdwM1v2He|riEb=-`vAx(q5o0UvgF% zi4~)!0zd_o#K!C~VNqa@iJaF}>FJ21#76#A#F0FiQl=!ZH`r;}(*~XC(PSt0-z2H> zb^1sf`$UYn@~~mT-9%d_#n9~a{y+-eSJAAQvS)$m1yB&vbZJ^W&sg)KaQ$Q)rt?tq zOIr1ZXaV;m*@J-9hgoU=V<$Ws1Vk zvUuJkTqmeIxK@3IK-$4#2LvC|j2p~3!kIg8*6*y~gmKUY7AJY(`^kA&>ygE(-%e#r z+a-$<0}~PCra1Aq?e{os8FzI5#_&|FAmwo8Lp_SahM>~H05$p$QTKjsK*c+{n?rL% z>)e3hUqpH}cTfV8rSpRk)K7O<&Ty@_Qxw{1EA3Qi;+dynmlG+!3i5yb3~du9$L07Lo9Kxp78s-W0RAg0*ii5(T|ZK2KWRxVG|&!k=3qUV4_js&a7IUh>k< zWZsR^tF=kDx&EwQ7$2Brv_gRrI3@g%zyj$qWJsJ`ERaG2Z+t`glwDE_oTKg;wjl1> zsqN^8^49oHgCsHToJNY{=>!Ll`~f{J3AS_8!}Jm-;ADpRM;~|Bl1>=n>7YCtU7;*R z#}tW&$wt|?^*_gIYrge93=qZCa?0DOuU$KTRtuCcWWn8s1y)_&4&zFQfSv-d1sOS;~Y-b#Tusmdm?r zjr2g=iOV*$tnAj(PjY5ksi<}dLb&C)tR7V!+g0mgo*|xWXMcG1?fyYK${q%I4fiRy z=!eX64b9&0A;fm8_JfT<%h1SSz@oP*4{7&2>x7&`xspWRLiPAMn#Uvg>&I$tz~e~; z&&qJ^Hag%-*Yf%M$q*PnuDyxy8AQRSPTQTTt)>gE^UG7PT$xw$ld`<`_ZBBvvTFj1&HPWKmd@qUofK;e1Jji6HMdt5w^3Fz zxYZ`gi`IdCBwP~3_DgmoBG6r8;`A<6ET2+qby7zm6FZ!KE${a^L z9>CiQELQ`s!_Li;S6Rk0^#3i7r_LT*1K1E3=Q5=2$=T}IlS9r_*V_nXC#$6;7N)UU}O%?4c;$V%gm zLahBxDMK_yvMF;i^0gt7UijWYY?G(@c8b~*;JOsT!N|Wr!QQTsER8X1N!d^o+{~UOY*iqTyNydAX-`e>oaKcKLqVL;KQR zSXfaS$W{?cw@(Wb)dEQLyPg2p9d567?`nJ$yLMmBhY-x;dWiTix6=uj^~Bge%uWyM zU!Qhg@a%p_#CXT)&;Gn6xD%r@&pUuLLeU&QOa3JXFvL@Lw3RR3hocuG&Iv7nFN*X~TJJI-Y}R99HaYTa#K6T*D}Y?`m`RdKka zU*+L>xRO17!?AvKn@R$ls#^I#CgvsOxEhw5Idr12=dTT673nCo8;1qm!eKlY7=_2Sc$3U3@PUmDf}T2<_K8a1+X zdkmu(4_KK%5C~gMpaI~1S)w*X>BgMo?21Q zv__hXcC^`G^4LIC$+74C9i!TWT@}fDWL;$?(^@Alz(L1nn7e<3Wi0s?TaAIH>7r{w zFK|ZviH*L$#x`T7twtl?MF4W9NDZkxl`rOHISxZp{0Xais&TEYsu|3NcfcFFbXIA^ zv3YPEZaZ2fVo9F2lCS<`t-wUWaVaCtwiBKR(M<=&uorUYB{YwHh2|`C+~Y@iw+z4g zQs^KZsOBx>x&fhKfjO)dp<{u$tQDbUfjO-ep=W`)tu=~zubHM0*RzAn*Q|N0s-cqq z6qn)SNBOhOQg(gMJl(DD2&xLL?^1zC!L_qAo);~Zj9EN;44-Q=Ud`Mv>bWX=B$Ay@ zfjMoxt&;&)3l);q`Oe1Pn~*2A|k>=_$dzqM~v_4M3}>3yY<&auS9q&A_T z{3$DNe;us)Avb>uB#LGY3;lj;i2|A>O88D^9{2YCJizA@UilDRcticgdRj!1U;AAI)dF?us z=~r{j_}SCp_D6fQzLZzG%dGr~wlb?51ApR!)=vCuuFWWU4Mph^>KQSMi-vt}1eE&) zN!a~>_pk5Vw|KG)<{}Uw3z?uqP_zi5_@ZeuFm9Wf-di@+2(g<{{4E!S3B5p z#X3yVODp(~Ur!v{dSTop_zrE%B}$YsO@oIj)yQ(a~%g;hE7Y z>Yv}TIO^9^UvYiLL@b=>YW?eFP4sS2Bd&MNH)dO7;_+93?`b?Wp+3K1afVcu%pW9Fm# zgU9FJxUuV-l`M8md9-Kb!>P+GsSXO7s|QYY3G@sE$#d`#QXkF(@>NdQ%S_apSv1n_ zBkK*BSef)njkPHw?K#-d=ec}#$B3VvU6bCcPG4}bE(8bU#xpvZYh6DU0G_M&9?qHy zIo)7jAFJskVY_e4652$y$6I?OcxwUjLrfkB$x(}9!6V=r*8FuR&D}5K=GT26m10XCaW2Z-cFJd(!$Su;s{cD?+A|2F+z^^I z(Cyx}yW41{*%NI@tM@hR%^6+oR*3&6GG~^K*w$Ct-#de}hYRk>)~e+-XjAJchg{E< zmfE8tZx61hM@&4fo5Fr%G`?Si{7*bSj-9o0{)+}V7JBmQX-Ka6F|)0qvL_cyG=l)O zPKlfzot_ilzX%D~`2u^63f?C~kES}`aK3sp&JjjsM>F-NHAg3AGG_|sBhH%cHZPAe zXiNavqbHvG5tB&wtjNsM zE{UX$Fz6fsv1|^dSj`7fGd+iFE&%}M^uW{5hp1K$1AFLmfsG%EkKL2?IyU0O^79bq z^?hMeF<~|z8mQspMD$t2^72*<6fW{AqIn;VMX0sv*)Xa-d>-P9#euwYw5!kvUE;I@ z>{=atk?QPm)ODR~*Yxv?Ur`xSI_gte@-M~W=)5`--JEFd_h=NFXnh$vxQKLDp9nL1 z^iH0LabJr@sNyEpFc#}~890u_W$45{S)dowmmZF+oPLR%fu&uxYW!^)=W@3e8LhS% zCDENtsMDfDJN!}tOsYQ|@a5QtW#MKy@1}nu_J;0d-a4JT@WS%Ro#6DeIE?}%r7C_e zLo^kmo8vE6z-=xtUG}KWyDZi40YJ09Auw`9)QSQUhHf#GZE&;5|jSh-Tf27*1 z`lle6bOmO(P_uzJ&&IfI(Nh8r38h3lP|90-Y)0=w6^FydR0DmTkXmi5>OGp zQ0q!|c;_k4rAT0a(+Ew#6`w=8i4hpsCMo}D6`Z-bBr{Xw;5f)O^2r&$SGKao$47J# zHWF6s+lT%jPr9=Rj9$dqsv+u=eAreTsXX42h*n*|VE);myab8~COf)n+`DQV-^}&8 z+>>72WAc_eXhoD1{dE=6GJTAr!_I0L#TH>bnt)LnCoik5`0(VySE)Pj7!zR^VZ}a^ zLAj$f^2wYiH~)0iWxuX@I2}G%6fe?eWD}sGOC?1CbQmJ&ysglY-actNF9)5ci#cQ9 z^ELbOS^di#dR2HR3sV(Rs5~!aFSx6AHFXUwDEFSF2_r|pmMb-izq0dY14`2A!z zW>+sdqj*WjzHBQjZ3G~wkw-;U1Tay?KN9%B&9{xSf;3;w$_*s?D`p!*TgD} zJGMj9k6~_NbW#WRZwY=N=7-jU;*-E6_Tq^9smP7XjN%pxO$WzgIA1Jexc<1(C*^sR z`Mp-S6Cm0BQHu%^#9vn84v0Vojdr}IEZ34Y(_fcqUcJ34BSstNsf=V? zj4JS0GKNQ&N1VFqF(ySB_U5tTJvNPA;BzZ@_41x5-6Uu(IP!X`?YQ#@<}e)`w9U16 zItp%DSKCI827SzqrZ$T8Jin|jT&?GoX8ze`AO$UsrA_|Y*SO3T@5d@!^`*0=*lp3o zOS#by?Vn)~?T>5)XbhY)yH>lfG3#naV#PbGUR4?l-RG%e71<`-4iSU)w#@m99=+^~ z>JfY1nlC=0Nc70PRjrrEIaIrk>61W)VgxOloaUVzw5iQ)aCVvmBDl>aY# zFlfA+(9W%;AGF}B@3HZeVl!D|+n_!B$%Co-2*gNM8`27$;8@J@mm7XvPyc)@8J+Hq zZ?C7G5;T6*hCHdphQbCzO>_HNt9Mlrh@H7uOuz`Jt@|2crO3F~W>{{jEADo#42q7VFpDlNcl}7cr?q&w zz^Ad>Us_?nFQzel$MBIV7cNafTBXBLqkJ3wyQMt**K~31M2U7{uv=9MUnwVA<5+pq zK3Rp@`yg=Gt@pbcwe2aU3W(+CeG(IVS`pMpmbxR= zVo5PU6|f}5spSY;McLO9Jj~R zDOY)1vBA>!EFH99Lmv0K31@AF~z@gR$WkBDR^#O&EAk-VFA#Bctx zuhEF;-TfRm=JCLRl8*HK?dCGqnDFeU^O1Z!HcbW-E_luwSCAvXXI4OYC^JDc;pykE zs8+g{+~S-ph}H$Xz-Zz}C6aF=c@!h|-W1|iN7c~Lq731?dXBqz_U?rAF9n=&rQK0Q zT!kgX77Y1WTnS;$biU-`^TKYPN@jbO#r zf7Cfw{sC}W^U9X+Rnqx}EGTe|l$WRX`(6x){Nt=A1%XhWkasQcUZ6V5Ly^a+?*6Cr z7QVH?Sm%@LVLreOVR5~iBQ7)$-(#XLpu<%UKWEQ?+r0zyxq<%Bd|?9NR_gU(x0UPH ziu`1J`_RLW^tuh%{j-PHUlW<&0x!2Tktug@G_-GCNBCs_BtHkPfl8P&tK%Df6P!Z6 zIh?>4@62#Qs}}UzivLG|@%hz0c+36{%En+K@c9oyY2b)_Uz+-Ny_{XF44MC!Ec=^J zSHIU^#)Zd^PnPhXMHF+q(>pC*k07rrkj~p{jh7ERbr;}Uzu)ZkFhuJsGD^ljLK~oA zzj}f@<*7l7nnUA)7N$WAeRxiS^n>Up1?=xk>tzGxsM6S19)0>E@jKc>>wmyDsR{JK z-e7os^>jTGz(VHH*H^WdRD`20v4s{!v-)t#|88m#I~!%HJue?B0t{93!j}FCt!jOhW2*GO9NdH7?UxXm$z6(3x;)VHABn!rg{f8|oe_C_>hb<2NVGC6>^)Shp z3{{V&>wTbmT1z|xdVO@rU(QlQQB4>udxZ4SPeH=&=hmm$hCCm`j(d^6>J~JygpwKT z^}MDsjEL8Km=wG+<0S!;-|DS!G9BdYcbZ`m^O4d?C-x@Qk)M1}e<7SM{u9 z?XK#XJDlGn$YB$AF|p?g!++FUD8qS2c&z=6sv89p{}vlulJMl1)AB1pT|}K>msZ*- zkP52*m!M$yUuVV0m=hG3mtId+{H1+7>SdvwbW!N)I2c29gnW~fNKW{~F*;@qhHq~1 z>6EdgeEm)-P5Lu+QlTS%@L@eNPE~IU*%#FFdJ-H=}Yif^m|^bUp3*Pr9ijuCwW-a zBr^!|*mYl;3A|{&UxwKqfBq+ttCvD6ZF=qOSKP8>s z9NaQFj2aIl0ADH1u4n%bbu@g}SVDPa!IcsDF34s?2G;}v59CP6e)-kA=J*i-h<#^X*S@87C2b%FPvgn3t*RXiV*6vtRRU;WQs{6 zEz}K$y}GZ4Wm0cb|QBtG2dk z|A4#tm+RE&>gxVf|8UNEUGH;jwn^4SU~a%X(I3>pv9{-kFz^e4AG9966wxdecUXfD zT|r})3AV+XOa>Uz6geV`ALw%)yr6N2jT%veC+;V9BXRk%3`qR_TIiagxeaZ%<`E;B)8{)N>IG>k##cKAf1 z?qx{O>cn$mbMeA*Env-cA7<*RQ?zMr7;$@}dSDz5yPIv!m_>%GoA>I<@;`#HWbe}c zDHyr=CVu3EYhwG4k{eVT{}BwEO;URq-uTt6$K~-aO~By^!j>0FDq@LT9BIE5e!<){ zHM^T?8QxHS#Qf*Rp;PcVhQLJGa^v)=D!(OBvJ0eOX4penKi*8aQn^q_H)qIKmv(}p zSG`AS-_ORUV!yd~()@p4-KqZi?!UrboX>uuL_5vl4kC z7mVsldyt7Q{EeSx^8}E+SWBq2aT9sMpuaq|`K#hVT6%Afh50%RDi5I^#Ld(EML?Cb z4$b<1H@$a;h|_*os#SNH$SS)zilr49Q_pzi!)*UwZSRX0+`ikcH*8EV>D6m)xSN&V z_Fb%q%}*-*#Bf)tQHxG|x!*eh)xLxpE*z_yFZ1>_5XQ4S!(f z^7E%xFS;!qZNQ2CLE`>nRN|%6Koin3{ki7(+n#$<_ysRaC8qVrz?bJ&$MbI%Z_zq` zU2ZpiACvVhN2HX=vC`Ydl3Q_u`ue|V<#}{Vzk3@U!)_+zXB>Fr98QdHfJEFY?TNKaj_Y$@nl>|T(bd5r^72b^q32YCMI(Gosu zbqE;(scz!;&W$ZY`G1X!#^Z4kjzTY~qM)w1OY=*@e>?eNT6fDG z^Ly$lJ^%Otm&C0YfLAP)p-Pr}`r)HSMx)RgH0by(;fUJ&@LECS!$v~LXcGkK@K7v# zk})3ckzQ)pusy~pwwa1OxCFypifMm=99C2BNoOwMGVZRqCTcFR{1LV+c*OWezX8?r zTj>@4#tWrt)&8)bTxnNn@K%vVuVdAwrMS}?=iF&QI&mehrhtXLCnFy&e{zq&5@5Yz zaq2Z5SbUZ0scI12llFpoq@HfUfV;-S=r~<~mgM17Q*B&+-xU|IbfIY6-Uwc8VA&GN z^D&X{kwbDSaRwhY9tSi#6Q2>DFI5aVF1yn!NdCVVNWhbWlUO75%60CwU9Gcn+JW#l z^vyJxk_m?!q1zn8OOejZCCxh~Ds7iTXsMIB^8@YWnTE^FqV40&DcU8tir zTeO5je}1;pCn1%>(xR@M&LeG2a_{cD z8*y(g-m^2*oRFd;G`!D$=` z*WhIp;xrH)aUFf$w-373iNDd#X$e@`ZLIGK#T#(-o4T@cGW7n#-4orWloTWH-@yX}a3?R8pcb{+`7Ll~;Ha_5BQYW>QEwAnn_(a!&g9*Oa+)~AFi z?b{rZw0&+`(*AcCAEJWlrX@??eP_I#BFnXf$2kfd!EF!c~#+hn=tOe%>vwVuor^MimMhJ$n{twXjORe|UK0kEc?#1U0 zTWFlsVT&?4@f| z8e}tcSpFYid6<8ZVyI+LaVcF?rfyF-S^{eJY36$zis#_7@~mvMuH7m;O5q8Y1P^xi`GLPZS+Ljk)Gwul%Er4bmb)ck_jNp*4rWXB=q!a!x5>w zn4-+yOxG7O^19l8cewW)(zY;)F?Zne%hI};TD-Q}e`NH`Vb*HLpW!fO`QB)#Xk7PG zw~oyq{->_>X0xG77;ZgfbN795nzo?<5 zPso^ZsPQAjH`C#paWEVc26si6Nr%?q$uBU)%^%7aJqos&l=9Z&m2Rl%lgP6bN4PHR zziXZHnovC%%J$Z**B+c*l+Uc-R@S@YS(E4-5V~32vsa&WZubaJFWnPgApE1eJhzX1 zW}S60)cMgEe|x70vhp8YnnGd`y18H3wTBH>{Vb9vDFn6`t5+>)i(w1yoL&**q z;j8xrimyUezC-Z~5%wc}Kh;$-J$8Nv&U^b=8 z7OwvM{dl)vYxO^XQtDJGBhYCajwz_f8o(|MTrKXjC}=lSYJmc3g2MX$ok$1H+25TPjnNldJQ44v9vIW zQb?nul=Gq`yNJG|gkbagzh|6|(^UTr_%MC>x1hDagYDa-uA~sJ^J(A?CxsrD%obl zm#>9t1{>%Jvvlt}9y{-ui@)zb|5J z;cVyyxFPUDV<%^p({vn7{{Lqp@e^BgKmG(&{W*YK{`+YylB5*L_aG=!1bEVO=WZU^O}*T7jjk0PuTeY@Q!q{!Jh~O zw~vp{3od0`J5>$j{Q{G@Ii4j#8_D$69_i!$V=E~SJ@^_)rEeY=eg(asw$kSCKekfX ziW?mIbWd%qw=CwGj3xEyB(ZZifvv<{hyrl)i`x1YoV!Xo1v}z~>760V@h`z=i&u zFl61Zp0a1HBpVHR&u|^CQfD3R1!j66Cyf0Fm*uzQ;cy*+ag0+eEvEbh(j#)nGKaKh z1jse&F5z?}EmC~3aMccQt*}lGXFjdg6AS|kLYYqj5LIehOtqx4&V2rWL1CX<0T5jv z$^Z*QWQjt7LK;=KrylSVz_#*{%eKR$7Mb*B6+iBGUsm9h1{D*W`dXkpX;O|C2!lRjVcVCxit`$O}sJai~oFi41ZmOp-N{W{xn7ux@}`W1Zkz zQaP-OPHR{KUVLvoEm{@yID1IaNPgQ!jDR`r2@MP4o{S@57H_e6V-zbSZ3J35%bGHK z3B-QId^7R|oigann!Ry$65OJ;+pUOIFSm^VK@AkwE`dc0J9x;Wrj-l^kIpS5 zNE~tF)RY|!j3(`imp;%K=CJnV)PnlYm57JD2$X5ZgXH_u{E6^4>Iv;L9=~)55f1?~ z-%^t-C1u}CI1tA{u004b`b#0pI7f!^r>KRak^7-k1hf%|ZN!6E{KG)~T-Y#az#8;DM|zYb7h->Ch`yjcP7@GKm`|3hswIanEK&J2J< z)EbsR!Fa0b?27q^8C#FEMb{qr#|h{4B#L54<*2aT06^i9pw@~!FBM0#KuM2yj%?i{ zd;k73Ni#0OxCroqKQ$A+E?fb4eirEvZM*t(q$H?KJw|_;khWq zz$4(UEOJVe+-N}ramj%#>@G76HE-813WV8|hB`XWS`5>cN;f+2bf|JjCkgaL zEg{g8s>wt_7t$@k=-Q*DY#mD2TA+5#szifHx~!Ne++C- z7F37cgiSRM#9Q8lbd~D1BVAVLHf4du^oU^BWDMGuls^A z6#@q4c*IDpkp9#SqV3HL6!5^`!U!cC=c58-8g?rHz`wyqqTELe-q1>oDUd{Dmuy6bhx))A zY8ES6*tS?El4s>1cX1jTzAZGeOy^MS(y6!K-%qK6zO4jv`aUe2{n}+M!&rt!Wg@nf zeH4>GA)OHd_q*PbD@BTcRr71nxKnKmP`E9%vvF!5g9#S?&8mx0M^-9ni@=+}zLzW{ zgKY|^V+K-N(P(^epc0`q?%ddCV;b>Q!p?TEFDI-!Aw0G0)FTt+pc-;2?&TDH1w3HL zwKaUyT@{1HDpISFFkQJ(5C%Q-G~{K~im4~q7f35GBk~h=-3X!SG6i=Vf1!g0{BQ&n z7#4U;F+$uigqpbm!AY!oK@9&?lW{sw^1sYf*qXu?6Z|=zZYXlBszR`83d{PHqODun z-HgcOAgPO|C=WU$43!V{^DM;aBid!q93t(OeO!forH&keMbF57vQ^akg;bwn!}+f1 z7-(%BYgW@!znffw2r^NC?v5iY)+d{6>C$3Ik8DzB%pzDuN-vW;R>>{Kvb2NJud$~n zh__2;x5tkmQPE%qi`SxO!NZpU(b?`Epfrx`Mpa?@fH3U&1n1)1T=K?e$_B~nMHGLT zLDmlq6zaDK(!x<5DB@B1T4V4cNpd-fn!x~G*k)ZcE z!WsDEh}{x`ExAN`l4*N!x}x=*VW`FQxSZkq3jRs;TdCu7H}IyK@pK2l!8z+miNFwG zQEg5%2j+}JJb|M3^bceiV8Ysw`6nOaOvo0VwZT+2l!$tDXJ`_T8AU5PEe~%_ajAd zfytA`?4a{aO;d*DTzlZHLI(1I9F%^%a(KjAd;A5GL4V+M2KX&P=q)|UJ=V>d+b{BUH`sK<^ zz{R@7m_8CO=*Av^aA3Qgq$M`4O&9(x29Kd?c@SE>O^`!uEH;?wyh8bZCa9*xacEbx z2Z9o7m3Q~RgSN|ahk>6p#<&=SjIIpIxVcPDcDG_-Vec?s-4sK-FYt9jaF7k$oEC@_ zn`JBA^#)yFaRC9Fg`IR#QXB#$-iD?sP=>*^K4SqzVgO5j6-6Mp*^>hgFPNo3SEk27 zyTMxoAs7$0>j7|v>tBcC7qdQ1zI*YIIPi=5YK!jxi$LnoXw?G`0XAn|O6!}JO|_N?YViJPv#eTQp0r@s=$iW;CV|Lt+}7>o|KGx?@y~X ztQUYQnEZk)1~(re7{>F}iAXm*trD&vSa|iEPc>{R5oXznqC}!sGTRa2u4uO#jqqOf z34)_QVx;7p^nScna4yCeEg`8Mxd^hHq^K((SsNy~v$#)<=9d$SjuYCC zP&Fv|yxU!dXFvW`Y8g6pHah9L&3@+dJreyn*_$#BTnF*5g;0bZ6v@iGv)F#GeH?ZK z*~3ZRbZ)zv&gRQQT=mB22i3Zc%ju#@KRPQkOW`u^0S5u)> z-qW_jdS_GX@7j9^q+HB6yM5L5`0E%_Ie&hXng9QkZ3 zu!pwkKzP-ZApucgVS$SDi@~=e<|A6zl!@^?nDW>qkP!kRm}migT9uuC?^kDC2YjPk zvSnB}M{;wA)OB39hk2|{+*V01b$Fd5vY>K0^kw+S@GTv#$Z0;&PBz?S!*=xu z`#B93+4Y~V6JQO$kZCgitF%7lN}@jgWl6&j=Ho}tBl9PjH?S^a84_$9+gTNH^b0;R zcOAF$BYaVbd1KgRb@Q)={hE8Jy>L2{E5M*?1-U0n15#<~7}@;FMav3=QGqBOZa-44HyLx|G%3G{1Mel%xf( z6xr|AgmMQt;0JqLu7);}ip4jgLFgt8)#Lfd3ULomJW)p}Eu)Lm;7RZ`hY`ga38FX_ zy8;MVFU*~WoyTaK6mm+#Lc(RpAsm3#`^j?N=^EHDWm`gg1#-{#lCD83<v6F0WFT8V+%7utB_Mi`^C~F0P^-ALIba#{>>YCu9%~UYNpmO7a(JY7 zeGZjB4%`f5>-P${>-^8NCmcz`ez2t>7QpGJrc)&s?BMJ_;;jkp6*)#5VRErzg)AJI z{$u$}vb;dnWj~nL;9AOLs{0;C*s%!WhR&6l)(1~G z{LQ}=W{~ElX_~vmNX?l$ z;jEu>vI|XaJuWW}q2R-xvwO@#QGm;jk(4$Ft-5Pgenra*dvydg*cy%3|Icl?$WGZF zx#v6DDz$uVXy6w)gA&=i&GddXOXG8zPzB0jJ!H}~eR8Zs!E!lmeO3a~W%H$EY&nD$ z&2*fce)9AZ9|GnqY&o$X2{v+=4ST0V!|l|$(B{hYK@$IVv*io-An0r*kd0Lg#lcpl zHT!VhQ2InA2Qb)Rxf2Y+On=Mx>g|FL!sA42CDVIIiE~gU>#-dXsd32iN-{+whIKwF z8Z{!RwYz>!6{I2$^cqIYAw;uT!m#>vvL3%#Oa5Bld)AfsjN{m2&sTGyF^m-Ruib); zy}|~0tH$|P9U*9AXY)`EV=$bpBp#BU@Oj)Fm9PnJrA(if--x+VPNN9|npvnjLgE!L zeR(_HyHMK&3Ej!%zZRbPj& zAZLF|u7p5ICKoaq!3xnizb3l|@!B1N(ykR4HZU_Pno|KPpv(LK00)+FD+|e|LcYV* zgcoXlc2qU94l&=357q5IJjSHt;74^jB;Z3ZqIZT$DT~c|TNL=!5f#I0USQs~)er32 zE#q?bc?xg~ZDm741ff>J^u~eC6`f1~g(n_19fITop1WK0<}#=&1oWV&arw&mTrVqj zDYQ{LH4#Ik8b`_zt8@N|He#S^3g9IiQ<}vay{DAE{G;5*YC?iGd<5ky(l_o7hXhTb z$fRgY{#+N0CHdRg4oC2G!&oh>Yp=0$wH51QJ~vF!AoV~dlVy$`dW#4vS7I<2l>eQX zd{aqdFvjOE_pIA}X%#Gmt&s36(!%0Y&6SAVaK)w+BQ0>o6_ZQJ?OerpniAgl;M`o| zuWBsv9IZfnmDffJZGG3fbpzU)?;Z)je)L?mO4mCAktj(p^$Bx3)-9If%K&Q);X#yM zJml9zfcsgZW}><&L%0#k_-YWIHxxu@W-8&Aq>`2q?k^OEg8Vn*D8UGkP6yhG@`jup zxcDsCS(?YeA(oeQ#<3wErqMLd3;YuXisd+23K7uKI182Zw}4!G{(8pCc;jLrG%Np5 zz61Ef{T=}A@FwJEmQSDwzC=;On0XoY1|n8*$Vb-TnSho36zk|{JWZC~sWBs##Xry( zz-+45DW%N1KK)4E_K3M!=wztbwmz|bNh;=e#?qSLxziW5T?kgR*G3>`2Y2EtN z6eeBdhAlGfM$@e8FJDSotNJ?TnL%FZu(Vyf_-F|dkG-k;83bPm?5t21tc}=AKJIF% zS6Xf!sUApk0;C9H1Gt{g9W7$SMB1KnAV9i{6hvr`cVaE8KAM(=Ku5zRBf*KQ>kf?! zcp;`TBg>6SQj*!FPBkACz4oAT{rJV6*Qi7{QtOmC;bbnBYuSRD6YnVK!$#F23qjiv z<((eZ4mUMi0++*osebK&ZG(tBn=qZcS~ldzFos($^+GjcaLJHKGwkX0*H|$S?b*Oz z8S+5w^eUtIi(4%hqBc`|>Fm*YSSzDj-+am|mP|`PbP)?~^%#5Yu-qbC( zm5+AvME_b?grU2^>#9(QZVc@awR#c~-gYZZd)Vv&%nN`O?_ZFcYc7byIfE;NMLC8= zzO_+Y2DbQ(oJ8m|oI!`0IPk5EO?2cp=3?R8Yhz`!MR zC|4eYKw^$MFANAem-IK0q^D%&S;9PL5rp~rxFB{RUUOh>`NP=*DO zotQb|+w4DDXgKOt?9+P!d9$YPTnp1*3Y@Hb>yoHc~VHtuTx-wcm!9{bu-kt)}6b{xmAEb zNRD>f!|69)G}b|ijRD%}ty@GmPOt-_X5@QR=Pl?*kfJSTZ*dmr1V^vLk>huGQ?oYp zAhN;1NaEQHZ21#J^zja(j*3hQ)N-($20<_5PP5-7hJD`l9_o%=dkz&C4fKG;bCHufW3JkmZ1}iEU|(T$avA#i%g;|q#n0ThtuP_ zQ!$EigGIEo+oy&azM&nJn;Mk^^D=>YBZvA}p(M+C9W6y8Ka{02fM_cgxfW`^$rafo ze-7Wu*JCjqYGCK2`5`Mza7*TByI9HVhGh7KD6#Qh&b;ubg-NK_#7pLpPZ%4TytaG6 zBP^re0W`ZEF^Ft!r8<#`QFzD%hBW;Yc*&7SoRHu!cxOZ0{!L!Fm;htfaz?Qh*B`WA zT4LKFm~tGAtRozEpSwpb2p#Lgl5qv9Na*Df7Oz)VO^Dtveb!}7E>h{%EMAxKKE_ms z2@m22#G8CwOMs;?^{q{z={bVMFwX7GoIB^(b8$qMYb9?!IL|_VzL(=}Vu>!*(HuXn z?Kn&$`h%HX!kbZV*3^f??bxpx-1w6LZZ5~o47tcOzz#OpWx#Y8h+;DXISX?V_S8&q zMU2fxE4*2*F*Eb*OsKYPWRnMD{2u3WsuJ8fK+Uunwi zn|EUn2_;Jku_gSOYKF3SW@~k}ZR4{owY`~AE@t)#E_(2T<4|(5%!Sn;1VO46!ruJ% z^&+!26^HnB=umdR3n3b;bX2a^GUsq=%B?ieLIxJ*1~^TgJgN9E6wIB=M=Hb^xWOOX za4-Lbe6(GzgXHqR>%Ek_>X^J&l$I&V!a{QKGK;?Q&;`-@nJ*ya&Xj)lH2t! zLymF~1n3M~X`ozG;Q9k2U(dj|;1sPkBaFysWbu&fep50Ft`mvFQoNO6!a$`>55#4` z;~Ml>z_~3+d1kqJI}NL=5ImJd@-7Z^&W?ObiqK5+dP_=K0T>d&%n7Zmr^D(^8(Oy0 z?zY-yPjj?DF=-OCl_?gJ)X?Vy!pOKp^hPOPV2G=w50kU^r^R`NA*_S-27a-G4bz`- zB+Nr+ZxUcOd6kf+Yi5047+c+zT5BpZ$gAu;Lxcxkk$m)GS&-ij++X%ykBax4tsI>J zaZ9-2MlDOYuSAMFW(p|bNCky%4JoZi{L89W=;wtL{vBV*T8DTs5f=G|R>n&>Ni1-7 zWYh(h$w==om$zp>GPf$ngpPP??bx?tkbO;3Hnf2&I;-eqi6(e-8j!QF2jo0zZ@b+^R?J%@)2?pUvW4VHLz2g`HLPi^O zXGdg{*b5JVwB5$WT+=B62g`*|rO;r0;@+{4k!fSbxeX-1-&8(;b63O!q_+ugO@8EY{(>=9HF89W0zig zz0pI6xu1#hDAMa+COy>1o6 zj$2BJ%2u%rZ3!$QINp-W>!MJ7w1izkd^=)~P#C{h%SK^@W^_Y)yg!U*-if}mDO!WM zeX=vK4i_6%A+pY7n_SEx4`VPb*9<8*T|pVdeWK;Z`0hpnFQNnD$1ri@`7GQ6smO~N zQrsvKyngPH_1e2|L)}!xoG95_I1=d&B7v@iN?--})DKtRRBH-+yV>Bw4Mn78mo*Yk zN_C4Y+ggDSE{AkQ=g(+!+7`%4>@Z0bo;9TAgPPS5(ZLyXoCA_nU zElg)v!n~OfWIP;|P{8Oz&x-!q;U^1oUDuRAqvcSu$Ob%y=#wb~{hiij>^dW7;$g(| z%WSnp{Tl-yvYCjE%0lx~3(ojiFusZ?lpU|hDtoOS9kv9ph7GwG8u?0$2@h`_S^;X? z0MO)YF1UkWwr&LOc-ws|r;70$mjyd9A&5%tp@{o}%aq2Dx*TBNY;)NV{S8h(NbVEBMG=T0mOMnJISXpASLsl5m%gDj&zlUdMv zAK}k-y7k;;uUS}3f z|E1)!9-rDwieVdT-d*VxG`WGqRliz-_qnvbfBHO-nOGPoxoX_l;L9N|c#rX!9b?RO z@q%1mtHF~ofN+ug{Pfa^Ao525f;enTg&!XTG^}+>{iz!I3@rjZay5k^L_3L?VGRfR z6|LB&InqC@o za(FtK0z{Pd{>DeIDbdCS3 zz@7y_h<{G0-}NIVsX=)d4tErpc>ZrFaM(dZISw1*WSmx?YxYnyz@xN^|65yUeGoc&-wJZwh0-OhZ@#F~@+ zGU+Y@`ttUtg-=PdSJ!m+mckbeG9*M7T*z5w;&FI<2Q&0CgBNMaC#kSA?gdxs-8S@L zjV=kj0)av$g`xlYCcX4IPJFN!$0gv(XT0sb-_8G=&p0I+4bGhxrZ^1fMjZFr&m=-k zMaGG`Z^3=JqJ`+2%J_Ss8IQ;`ij`O(XKz)=I9wQdT==)(4p%&SE~RK_;MNcwy$lnk zilTP3`Gx*IQFvfVBIGWjNY02rRFJz>zmN?bwI>H>Nbt5EePcccR|8g7HBWgI>6F^7 z_>a=b2~zlv2)Nz2OO~t)c5?!4-ne~pSf%@k-J7peIpSW@_u4Ooklt)s4+I>@0i-dl zT|@i(P`|!6YK}!31p1nk5Vce6iwaXJdq(nC<9mzl5K~?|qu{viDlAhZJRoNV(t23e z7V{4)I80r-M||4}R=7oHTv?-vJmT3dIHcz?qbJ8Cq&MSP-E;)n&3WFRXpYJe z#A>w_AhD8wANK|YsyG>cL6a%APqE0PoG>}j8_taL%FrMQQ!W8cC8MGB>GXL_t-z5h zKsB5|x$F^|Rufw>2PC`)!){gU%>jG88Whe#HPdej2EiB2D^(G-KAirS54I&{wo&J% zF=uy79va>m0wzEWX&q$eaLUEa-?ET>hh|)ig({L|Fdms`iSKLO<@JHdh^)|u>~EtL zD5-<}Xh@>>+7L7Hic}2m+|~E6oYD#S+bhwvay#h(2^5bP?cxxe+?eq_=WG$f0gL6k zn&@g&3pW!A7AAmzJbdY{y$dLj=3rY#}Xu4MBW~GBIE`cdW&La#8_yL7~@dn-N_p=6lrg! zBmqLxB(W}QUu;BDBG=KC*FAIEJ(~k(T`sc$TOsf`1jp`gZ#Kb{-%m}nTW0yq_KDg- z1;Si)^I25I&NC%afMEI${^Bqnv(bCLErM6I&8=v5mvj^SbJ>JG;8S4F>K(#QsBnoV)Mo4z&L`(E9LSYbqnICH;o9KS zXZ8xL)J8jV589I4#pp4IS4_+m^o1A5D>O>7@s?>pu0O^5u3DBRp~8m(Np5DCH}PAYZ(mYR!XEZg=74EATSoe(%w6|-k`*6@H@ICGRK z?1uM9hsWh1hL9m?@zO-3+1iH}N-Xe&-vvamqRHnWy*PR$A1(?(9AHiOW`E|g?>fZy zNOMR6x$=JJ&5wrbr+|N>7-4C;Ku(9vv7V|K;OTizrANxD_QJ9U=}obtJjq!kymFHx zBDEGs{mdVdtL&^0A+*d)P-9399Xf8jKUXrvp^d`Bz;srXp0(+cY(`W!2uL-1ybd;6 zn4-^C3S8SYM)xYX*wst&$Dg4EKaRIzSxe6Crn=S~p?xk7)=i~zSrKU(qZ4pK;DsUn-lRfmvoy6dF#mEhYrI6-cJG=VU zUF>q{3z<; z-Y-iz_g)2Iabu*cVnlNf|=;9E)4h+=^HjX=iYxyR8sC;p#1QT8H$_(G#M!T zr*hlIaw^CE-OG7*i~C=}dWSvhm#_Nokn4m3mj9dx zHL3cKi&q6Ysmq`Hx-cuD-@edWpT^aCi>A2qC66(Mzunoxa`8mj#T!BLpLt6nPLuwC z@v+UTmrdV^+RqJMnt;cBNvYArGxFbO{XgcJpIC;&qUBbb>Uiu16}4K>_nf56nEjHFUUv(NA2+S2kUiK-!-SOpb@ExL^giB>6z z4g}3h9KlY*%h$+0Rq!Io5S#>)g$$f!>T{g-2q1tx7`51oabX>_G2*I@sUafbp_A?_ zDyZ{}nv33^1Z_Po(7*$f0R*;28uw-+k^CZY zLqUxwA#xlz>33@cTX6fCl*C7Y%~B;DMaWHYL%{uLVI4eZTUp(?Qxz)PyL35BdsD(OnjI}8#%+PT*T z5ba*%kmKrKPbo!$x$0#umTF*C4 z6Fa}v)e=BxPqKUIZeRPLMfM{v#1ejKRg77#j0?f&;y1`--3lEpgrWW8@B6l8_|vX# zhkFIxjB<=RXuhDpsgdLp(9lFd<6+a?n?IbMBHDi zjd0&ePF)^GAA5}yf{yatI;B7r`Q8+d{quwgR+J5ABT72hoQ2*~KN@S59wqqBk&Aqy zv-XIYk&DTe^%spz>SAKNp8I2$2a8ORle&TX?~tmmrLcXvct!&IGi%!M?I2s9FXn7Z zImw%99oXlgTUQ1^1kusxZtb0OCAn~|`EbVGBN^SmRix}za7||C^t`1W$zHlud0a`Y z&nYmeKo%0hpg!Mu@_1>EP$ItD#%Jn;*Qzy3wcl&BL9e;fNML)5C}bb{M@g>pr1Tbh z%nZbb?_-(cqY0Hk{2rH#!Q_a01}?V_OBTU26&@{m_AM1@nxJY>_lM z=fZ{xCz*4mZQMB#Wecf%3HXV)FRN)WO#Qc_m?hp8FTQ{hI`I=0{8;!_wj4U2BnFm~ zzD9FRlm|Y3=se{G{448wkVs0;Ot@W^(vM;L-J*)DsiThn*a&H%eD29VuMFM5STlKv zN&bM!TsS@~YvENw^|fqvWiRcV+wiw6F^k*pjzma#xZirfCfU=dC}mkI{3!^^EbEjy z1WEfbNS4@NXO|^O1We|-ZlOzk%y2rCjiMDKzVNG~zvTj3EBeYubddh0H4y6g4ma8V zfNbgDW%Rj}sNyS9uP9G7e16xlHsG+#a36h%MAdYW48w8Jv?5=AN4+u-03vG2#%t93 zk}-y|&7XhqzMl-ZDgE-=AJ@>b^-(EPhePc#5e0QTMkGy&CP$sGV8*`5^QAos{0* z_rfQ$Fr!Ehm7Q0yowtRh6NVD#sByBX=$9z{LxDekSpK|xG5oW&w6k#Y&*Mo9>gUJ8 zEZ>g*HsZhJzaKF=2r|xnuRVT>=r8d_m2))g7LYPV-wvD;iiH2XeSO7s<8ZrAq)z%P zK+W(^8ec>7Y*%w}pc2LJrNKo$n3J0Zh(af(i}ZzY31Y(6YvfB_^|#kF&1?69Oq|R` zH*fk(0KBa7r8q$xtfrYvJaEwC=b5|ZTok9zgvhm2A&8wZ9CwKoWmEm|UMiioE&gOE0R=2GbSKP={FHt6&@OXTOC#uxu1hUW4PYmpk zaYGz_{<9~3oroIatB>5k!PoP{cha{J@r5W>AV7WnvbUgp?Ymn^T;bd|)$jG&IiMj- z=+U#g1>u^en$w$F#W=sq7}2Kh@prayCigSdQ(-Yj?*+S*1x zSVgfDt`3>`Du{F!+rNDc^BzFpW-dF>q?*W#6=@b!+kd@R_%NEJeG-AMo*!nu_%1yt znm!Y}SCX_<5@ejMlvaz9`!(JFBA+Z&TN0#5)S17^HoqBK;7-XzyVG8-RJcS;*}xWZW0d{eKcc^T{)MI)Iu0|1bg?7c9w!=&6Ma>vJK&* zXME5+lQjl{&^snkim^J9EbZ$>B#`+tTE@-@}7F`hO1r6X6S)HkxRO0wnw*7m5qjsriYfUTUJGcObeD zx8oz^=ct;5^^$ELm9j`g91O%5WsUu;mM?>8jd}?7*@H1!nGa9Fw5$;U%6v6G+7z9i zty56rl$QnGmgST?F7!D@r< z>=?rX=h7Fi`CMy`P$>0dZnf|NScq-7!RJcgxi9GS05BwR<8j`IHriWCX{TVP432L@ z?LZSp*KWkZH_Ki*rSYHyN4`AA*gA+5KA&XYTS$6WppFnzMO#;9Sh0926#yPeaT{v< zPXN=nT>Ydao?`2~@O9Fma0>`e9U_(-<`0)|H(-tH9%FiT%00QIu4PVESZpdDlFG;H z{xD@`I+(p;TBeO%I(XBP4FWmU=Ry5v!!EIhXR+sMZb9bEA6f#)65Ne96%egF-B!Oi zHV1jXY@4{k=Mew4bCceDj(s|zhFqW>+aXxpj4k{(9p+n<2la6skMroqU^~fx5-wFt zE~UW7@_KT;p|@ZWWf;|0yAj`Og9jIO3#UY?qQj3tS>;++0(46`sqk+As$hc$f6@*2 zxb1irBNYOaT5m6i05*G$C>;q)esWF(@3S85O_f;(PVqrp0dg3N2>!&}GQ9BX8ORd? zaG~sm>xl0o#dpi`4h~S_M$UtC29|d$f63+XaMCYx|MULkJ%Gx-&4y{zbrPBbk1$g# z+Q}@|2AqO@xdej++@mSw%}|V;I1L6TOp*Z|$Gaip44GUTY8rbPSET={`7+8H`gTl% zQ;B4wW%Qz-fF*%a_T9{6B@2So#JH3VE@G5dN`ix!7F~*@95HFpqx#)}Fc5!1Iq?^5rsAm=<+B!}lt`KwB;kdT4Ye`$y zH4L;I?9Kh!=(oV>xIs9PTNo*zSK!Wc+#lCWe;Z`S5vml~2n2_S%K#Fdzy!Is&z7&0JxE-cIQ#MvZ-$MD~e4dTj9(x!Z|tm7VzEV$6$5yD2}6G^a5$!0*8 z@yZaQA+jJ#rU+4;261w8HDiY5#L&^i#DKQ-@af*bdo*j5`;BrAY7fKM2(h4>snPK< zi9!x)NJ1q{Bo34-THjMRS_dUW-@uzJCzpFm5|g{k`= zmd99)l*WO!{A;X_%+5jyAmwoij8UHMF3k8%Ob^a5vx)KUu@GqGazkZDT7m+!_r6m7 zJM7mZ#Hu(s+*}O01gIkUS8kV6#6DcvGrKdcNSEV&jP$l z>|U@b4ja~1`BW&A#q>HxM~5an2y2!OCFW%(LYw z*Ti*!{{zsy!w!ee%){@T@s#4k?HAi{q_ z*Lf$Gz*fn?>RCHK18vDKqbM_$u}WoC(guAE)qUljepMymj-=XiR zZS{m(u7Fxf){h>$`~PTW$D*#EORGJRk*~8U2zeqQIvA@?3Mc$nNd=Btr=|2oab6DM zj{L^scxqsku@4xlA%gy?_rR-~r%>ND&!j8Wk&2Jb4HkM-`+H3xRk*mA+)An0^P`1E zEJcM-6DfPlbiehXGWkV0?t^{>pS8%sOVccvQft}xkm2TT;o4jqGmGAd5gvyID zWHlIpV?xD0ZS(+l-?A@S-FtYF2vrgWoB?voq7bWFsqpuT@Y(&cE!< zr7}A5*Zfylx0S~8+C|<9r|CUkux+*Is(iafO8Qp69fxGeMg4lQBW|Zl@{eFCiZYR- zneLDxx27$cci3yFx5cMX)e6_OnI#AZOFS!ISyCRmzaY88_%x7E=Fc|A(w_m*!PmQ7W%F_NU`IP%3q6dwfWf?`0&KyP& zjxDNIvEtu88tU%^vHc}HwWAMsAy=?6s>KnR9ijBBMG0Gt*uU==WbDy%E!A};*W_M` zm6SxINtebODdBevM0m<$_&=O!JIG$I6TY^J!&O#}dGYzkSP5^x)7sHhGpQGQGnJMfPwKWRzlRA~;XE0{Wuzt47KsXZO}rs}jQ=#p#I*9%HtE?d zZkW{?%SRk+z_H3tj$^PJ2>)rkC{aZh_n3TmkW#kWr^m%9G3vj$-p)U#5y)&UPWX${ zf9F+vDx{DwmjJzYJ?q`kXEoj=^5L)-GT5o61Mq8yv6s(ylaQaBM%u0^>L|MLlD~pb zgsEZQxlMU>@^HCHS=0(j#q*PPzB>7xFvoH!3lW-aN9ZRXy@E+~6w#{-$bETj*zR+X zvRoZ$E}CTX9B18AMBMpL5uhk6?)9Jxf3-}w2TG-@;N*}lGX4Fy#B~8{}ifV6ReeIe+ndJR`^R4<; zISyY%JIKEBCG4A5J>6a93#< zOwGMZfBt3YS4`ARiMXU`P>k|}vrra)ZXzvtLM3ehVw8gDqR3sb=;<>G3)VoMLRjLK zl#Ik$Z?wRG_CG`AqTlm?m>F;*jZ4c=)9)9S{LB zl%2-FYdmTqj=TqeBB94EkE?T|BN7;q65U!C4S6`UvPSo&pW?qaSw)Wac*g+gX&#QB z>aiYPCZ0@doJ})t5hbcL?(11$@1kQ%NkuN7v-Y6Q`tl(Jah3c@UGgTr;80C`9I0*#`rhCR3 zxYL|e3}pa2u_B}tcMEt-e+>-Q!>g2sWR;p|V`IWn1HMfDSpEKFD|IoVro1PE@nPfA z=SpTQ9Ce}*zA|w=a&Y%TilC`W3-K&uecVSyda!QQ`~3Uw?*8D#!{&V&n>x4RPnG`PLn{@Wt0*N2wbQ05%7OZ3MQvbSz(#OVXP;791 z$i<0wtaSz#wW9gO+$nLjzqV8ll@>1PK!F$?(DQ=uZsRAU`p776!{T1f{K zmoGA2VxtD*+B^ZCWDcc&WxjTk7J}XKVg_BWrtvc^B~=IC*)LrHM#>a=zAml~3t}<7 zO*BEwDUy->;-vP&o$LSj(n$k{9+g}$c%U6xt=q_D%LpQq@^f z0Ue@%yi=cI7mGspFFWGn!MEKl*0Gbp;6{39g2}6G@VsW>h19coIoejFyoTc+t`xZ+ zL*4BG%3R`Jh0MB3)vIa~43zvCL3}ZWEg^wopY-G^c%pSuE1Ie@54K0l#fsy7Bo#2( z&va!p{7+dK+>^7c9oI{;Q~-T%Mc+_-On7QPwhCf%3+PvfEC%W>rfEtm$|-F0fu1JF z&eBm~$FZ{pUl6QlKaJdzNY9IA)4bm!eiZ(e{{zEul(35Glg1+Q)FY$BQV9jQQ~8gC zhNmIaRT2tVALJk^-rpA5<0l9{M!fo>8C__;xc7urUT4;nE3kRF#3Lce`Dg!0o^fhe z2TO*`1HsKD6-cFjrxN(Rx%cq#YpfZ6R5mE|Ni!iKfJ}mA)R2Ees73P#r19ktFs9Pw-TX0e`lMlv7d)n`U{B zCx&f87E^HU)pzb1Xuu;Q(|Pt5IF3h4?Xx@kPFjYZBXxDrJhTthTyY&gx?l-oFW<^C>RuK z86L&8;Az?OFEOJ`{VKoO!eY$=wKA`0ll%eR9g)Htfx1--JAK#>S`SA*7nwfH=#oPo zK`l3jF2`yx7w3QWJG3yuN)V{+az%%pL3r9|*`L)uzjpbb)hD&<#r7Z(60L>7Q3={-SJRh3 zU(&n;UoVc|ZHKX(`l2`!^#qqi0(YdIya(S=35?)u(jPtt(Dcas#;paKABH! zvDi~p@2|bed2eqX4T+9PDIQXTLyRed&jI2 zdD_NZ($}Z-_%XE>IL^R#(QdnGk!apIZ9=or7v3G7do*g)7Ej&b6vY60G%9dePayg9 zM>VZ>noFFsE2DO>AFB8^Oo1yfht#X6C*ls3AAvUcihDiyMiD6>bPamy=7|g6jjKCh&B5GKbeL= zJfU|1-PCG3_ZHH7LF=hO7V{kULj3RISi)prx_6uYzPs&aZO+xJsobt)z=})W5LZI= zx1(J2CHAD-?!#9nr)RRsU)gn4FO;@mP)yV=lT6)gxH@AbPMrO&H&f&x0E<)M3hVT! zTLV)xl6G((uf%5K1e&t055{r~#zM-kbe*7FctX0)Bl;d|i}wqd|2lu9E^{Z}anzeU zn~P%4zwL)BUb+P+$B+g;&FuU+2s#>Z6G=>r9j*$_?iUWQAygA~X2bqKy?^yIKxwp_7{ z;CoW>NBK`^IyNkqbNl62IUXs4YgP`$E-$mMkjqr>ZTsjq&7&!A%|W@qP|Vb|(t8z) zuk+Dkq%_n43*|qB5VkrlFI|*=|DsIOoWE#$qs`RTyeC?MJ&;Ao+su`~kl4l%vbe39 z7;?}zF0ExSWp+M>n6(?22sRi4{h$wU)bwVZ?dA7bvLb_ok6SiD2683L0Eb?1N3zI_w6Z3G$ zsw};hwm2p!+utxq8ExIgQg7DNrHmnWPlXfG?58(& zuC~LWp`o60REl{_iZTt}tkGf0kK$nX6(D4L;bBAf$v$#K;N|TTsR~>g`>bC0NnHY~ zG<69~j-5d0{k+~>vVa|TImzt_({8e>tA{Vwsg1zSD!IMQ3&4T1m&i51Sl(A)=RXND zko2Dfp;pYh?R2mizAiO%97r;*j-^g`K}+9#8$jIx8~ypJkmB$WOQ9{edlO;dBqMX)XxviD>1%=%>pJ$`J~5E+>nSA zz({faZR4IBGE~3fd_07zQs$d6kS{2mqz3W1UDJ=E#b()m=C|H*bqe+e=M@b?<)ULD z3H;x`{|xQd&diW<9g%*Wfi(~oU8+aYLwvro+ra|^3a0X(1u5e!Z`sgR{GmGKR8zAb zV1z_8m)+*aWyPo@f0JW2ov<%VdsfNNbzo%bTolM{UM_#ZZ6Q4LoVVot#ei#j2A@Sq zNqg~j=xn(xdDVv*>GGlRPq}@28yz%;xq&kH`~ZK+qMR~1(U>vt@ox43LL)Rd+%V(O zKo?J=O!>i8kg$ZXAU0dF`3|zJs6gmloHk1;c@$JQn1|=8cB{DKXW_M_2^Y7A>)!gC ze%Qq7hk=##D$#a^77@j6g{29r8wVK=rTIv~_J}o$p0XN9BiNAs@n)ccnsD321wnYm zw#?n)H*D>1&xu_rh!=H>^27*V!ifv{&0o$Iw&lZN7G`YR9u4@}BI5mYFR3cErszt! zV9sehr8+FZ)WU==<|YDb|90IJ+hermMFAegn}ylYeL6{4`r|A31caSQK}FE-{rl8= zRS!T@jO^#O{hudiwGAvwPZT$@*;#Ct-ZhZSUFk?Jz<8h5O@DAaePX8 zN8~f%RE86<2>@DqSC!lnab(2=1Ff-ETypD>GyaqScfv&js+>Li;h-8TQ>1#l^r8VW zXIW@r(%L<_f$(BgDDg8NJ-1G?QPb?GErZwNW=3Af9CI{Xw7QB9U`I6E#Z1azpZt0O z-;|}rT;C*In2;dc_`z9B21ds;xvgCoD9og z_cCra2rNcSj&$?!re}ls)jGO64GdO`q1kzS2fNs@rK)T_CjMeL&RM9Jl46rQ^-~$ zBOz{rl|Sj^^NXowY}t>+B`ZHGN*`)WYjH*v!{V||F41NFm4BQQmSIUH8P0~f1v06G z!D4o1bw&K_bW>!|x#5hAv7`c-H`s@o-|%P5-O9Vmke%hGUDtw%s#8Se9&3}Tvho*+xhX17AwJRCkM;A@lx^ng|UljiaC;cg($+k>tZei*YIR1oQ)nh zLib!_!mzYWhsdOwm=T1JlS9wLY+l+F=C_H<r>ZtVy7?Mffk#N`SJNOrwGB^I%?;F)dn*n{Ts@ICZN-=dhVS8{jyK2_-t6PNS*rak0bshhvbt6Q~#1P!b_pz=)7IRYi{k zel}xklI`&;Iq>(tEN%j5=Zqb`IovS`&PY4<O7yk5&RYXM?bv#FGY}GZlywfJ0lK(-a7B76dS3L#hY0u_Z}xU6?pWUlfeFW6McH@0mAL?FRRGC3m*i1;r722bNTbWfOhsQb3Y2#E0wBaeGsAKLVQy>Xnn=v zY_NxHKuCaDd^@v3$91_55L{g`;>-A@^Tlg-b9Rvb&jHFbALcIr!;=DJ#!FBaY{VC+ zv~p_+`_E2rLG8Ve{M--bARC157(2&$8u#-rCd(qKZ>(Tr8EYB zFO@{>80$+KIS(G|>X{os!++}PDkWt4C=W2jvzZU)oZCRZmr&0LnRi&|4CP1ueotRA zn;e>Ts5qN!FXn7IpH;5(@?4HXVO;1(viWcN=U3DUzQ;rpP11qJ+zYzg3-<@eU7AVN z(!Wo(Lb$!BR6k3(JA8jjf%4Y8W1}UA3qD+PW@?$eXQLsoKeyJ5Ijl_clG?5eKxz9M zLcwWs9Znxbx~jbVKZf5s8xdC|G*F;2Pw3THCniH(1wM93&4$}-&+l#Lz%p7W>J2A= zK>MKgVIjjPf@;aNF!ABon#;9H54u_AjSm-(TaP&=>783}?)wjm5t*YVHaTbGz2BY& z{8ff&06)6wk|ZWipH#9!S{x^7Eqk10@+WR-{=eMqEcnvBlj4^aWm||~Dp}$y9H!v}8Y&e<#AoX1D|A_v#O1qn zTI2eGCPAKS>wx_M#0O*Vd=Gy&Arj^_VO+J9Eph>p#}Dy_j$CJZUpUK6!<3>LM2n+$ zavkY3r+59xeT%J~%PLzZgx!iapIh{6zjqznYb+8zwsTg=<}UqS14^481cRx;Z)Tn- z-1cSUT~ohsq)`3g#r{v-p~{5?9!%OlE~w>8nQqv2OPDQx!_xgXMeIq;T+r5=(|})P zU%7z76@_&gSOx&4{y{49+xCAUzqFk`09{?84-4A&+u>gZ zM>1y2rwolOj+N?(3I{xR`yE(i+(I@9Ous4;u7!}KgJc%GLtTA%vuus3rnysyD|jaN z6y2z{7>KN!^tGPVuH5WRh+7=b^LvNRi?7GNHG%vz{rb{^Kh;PoNo;NC8%2Muk-_@e zf?Nr3aAAWl)b$kLd`V__w@!8M?@5HFS{$edojJ%@Of@9Kd%@pTuK-~t-R}@rfDGhx zAEI2ssnfb4=;xOxR+s4^VmZ>u!wxa2!nefb`q$H6OjcB=HMIlOEBtsB%~$-Q3?zgL zJPAhM2k4aqNVUJ}Ns3?zc635+na~dCHAMCO2fhAt5kn4y>VngI|FM|yEeTL=cQUJh z77{h(CGzIfKqoRIm?wfmWYPj9q%A`WO0qXD@1J;^cC77n@j2bLuAPj;V|zEw+G9m` zW(RMR1}@_%kL0p=R~I;yY-xhe2Ga8899mkZ&fAZMNv}%7rV9~i6Vd@TG(z=G#E5(u zafIRhhvc4Lev56!+TCwe%SDPo0gM6V>|Ht(V=cd31r4BkhTW)hTOJ$!*EwwtXew11Yxj;6xd+KH9VM_s0e;_Qr1&})x z_&mc)=EcoFKR?`c-%-YpQ;;9wn0AcE#Oy$cTc#Z}1wO4w*muGl7r9Km%%;YiMw%#< zuPMk2E5t4x$!U5NrwAklwmJ$staPivrhE+^qjq48)1IeqyNwfv`FxK;0TD;d!^Z$7 zO9)^orSl0s3fP2b5I(-vh+{O_xa<`OlXyA(k|SFTqGdu4Zwmxfx`6VYmQ=q zdR;X}B>60EOWCf9xPZNkAdCdmRxbxM{$(?6zTaL=oFbBDl5OQ9)Lu>0UkD16h7}DR zS2Bqz(lNjJ<5#{!Vy%7N{a~Y$iTp|`T7npV*P$Q+PYwMkEfCIZfABNc7^0G?T&f`= z+v&2$LXOH8%7XQiW)fv&tLax- zH}qi-OMJwHw7Yx*`O?4p=Q2ikeZDA$9(oK^hJ35cqpXk{m(cyj z6`(0!wTM@yR9!ViU#Y1{AHXG<=1smmCU#l!t3Zc`DSIfidEun7Nq*Oh9MEUS;C5fc z-^TDOuNj1^)U|cm8Gd?Kg$m`K$swIhe>%r__)7w`t;vbUc=SzJ$8e-_}QuQiI-y`X0f-dZd>QzcJevJQ(6Tc`f z-FB68<(M(cQHp=iqtDU}!z5u{OCQM&X-lK&y6W(j=aVCBi3T$q-TH12BY9EH83^LW zb~DhzsvzGsEpf#v;L}5iMxYG>lTZDUVa<+7Rb%$jpPD2)XN0WW$M$I5nl}XV`kpMt zV&4eX>T+8yeZ*gv=my{*7%VMFE-$25KgAZmoYp)i%E5V|3H@L|k#SB~{2*g-7@2ME zJ##bIPz=J=S|VhaTaT6PUHM3uTE(|Pl2h76)ZOd%C7ZjJHj3pK@s6pYhnQ60i>zV)gz%KA&TSS{^GvLh0JlA@P(6v*$%-%zh73tXp?F_BGN z*^0GGQDfT8fTCg$jzDkk!j_NaoHxOvK#B5na@#1p-{}Kix*unyPhh)I6|`Wn{}D*k zTErHPiSXj}m9is|7{$KPrloj(-A9J;BdWxsp&EU^^2F?)@HrwxFj>7E^Uvg)? zH^iS3z11MC?!w*6o%WfLrX`#>(0j0O=^bdwdpp+fIz3j z*yB9*T6xZA#-7~^xn-^AjbRaG9Mi%))fdvW!tN$$XyI<((orq_yclVw$xu;XhZPUX zqh?1^NZl{Dxo`}8xtskTBO_RPw|tSaMBm^Q$6=%S*+%Zc@;BnKRuiHyc0^Wv@9bqn zaGm;r`+BUU#eZl7_Znx0oZS>524{V_yp)VK4I#4al7&}=6&x;I90NKE=}Qh!u5dQ^ z56Pa^xfHz!?_Y5F?G9k`_*#DWo@RMaPfxhZiOi?{E@0~fUPl`2F7_>bIj+n*K>w~R z<#P6kE#4~7=s{5u!pr6qpQd=tu~wM-@ovXj*D75-%2*I@uXGslslC5V#@WHAB(brJ zpjYqt_V2AXk>7rzv1|%7wT0f9Ec@D^M_$mbk{HMq-o&}u4Y-H&z)<#=Xj{j7m$aFT znNSqdWgZ-ET5=sSd#3@Hja-k5={Vh)3~lk1G+KjpW$|KS?zGE*R-w15O`j7?uDctP zGglsT3;vLPg4$V zw^@t^Mhgr~j@AcoqDoFB_n-RL5RU2n=!cB{q{?VXZKDL5$18F& z}uz|+E`SXswGOjAMwu**uT75j0P7+v2 z>6Y;-31TY{N1vPx;t=ERF}@|Q>I_+wm1)xC;Usn=YDVYS2Ji{(sd20vy~>A|`3jcS z#3Q6%o)Q~+de;$)D^C9IPS1Fd_xqMQLNBhbvuSVMj`!9GMyE5u;x0;oT4Z_&pO-a@ zbE)4=j!3&c^(gcS?2_mIONE9;&vKHyuh+bZC;VPb_re7A*Z-VI?3iy=xTkjc!<1uc ziVl=ku|BW6;;*?V<-*BJ)bHKXU+EM^kIM*`UAPd$wsoBrgND7|)vE@g2I>)_zIB;# z*Y>=PTjO{VxbwIJWnDCw!Op%1P)5}st41GR_HS${PX0=1eBjwuLJJj2wPeC1jBa5I zH9)gmfm$Qxn^XBNkUAr^snodSUK1*FeVvIjI+dY1VUUvgmh?qCpe>XO?#Er*X;6&s zCp(7U)Tw8%>VPN8?bS}nzXOnQ=bnF^YG92i?s~TT4W&HBH~J_eWIpY_58x3=bvZKQHKI1LHLsQ^7F&i9{t|g zw1ZmD=_S+a;)@7V5>K-p3J?I+miV~%o z8<%_Be8JHu(tYx4UasxYn!{F%H`02!p^XrQqM`yxaW*DI| zsSI1;1sm#?1Ig$AY9HeG^8B!ZF&vp+9f3Jn5gRcGyW11G54y%Y5`CRwZZ5RAfQ5zC z?e40e8Kw0pQPAd!sKoy z5{F@zXes&;{bIKCVv2jFR(-Apspvo7jGZRa9TpNoW4a^F0W*g_%O+pPyAURQP2#{0 z$L@dsvAsItepOFk+eP*~-+*y&`*dEhHZDR^UE#MnBk_zRGeff3<#Wkj?*EO69&&ON zjTL_F^YH(FeFfzl&(#rN@e||J-UCe|-ov!_A2a=y-UJ)l&)>Wl@$IAKg z`=2C=AIcw8J(98m&rgU{M~rJ2SAvA{<_}{2JbC^bD+zh)OA~GVf9{}n-9QX_1wNF> zjA88H&`$`>*j&0j-R$@5sj=)qmtQY;JE9CF%8C2$qB=oaSEuRdwvOh6c~1^twTdB0 zs7%ED;==rU^a;idh`fM-A)b(K)IDN%42b-FMcq_`;N;?)+@*mgYog4mmqB&Qp0_Ch zxu(u0mh*Mip!buxXgR$Aa_X#`V=*18RZ6YmG_ zSO6<{SisB8Z&2e#BajfR{kyb0|NbdojaxSG4}J4P8CA>cpS{61#y^Gv+F4g(FXMMD z-TyfgV?OwAp?w>f%_od<+?h)(9q%}ejn_HJknVft;NUkI^_A|+EFsYXBL`Xk-Iqa1 zG((USm0EBK=G>DHZj4w%GMOE?wu@d?2YnvfKX!Qx+H+LRJx#yr?nu8r&%FmNo+XAw z2j^Y;cmLzZc|EEi=UT9~(VR^&z@5u(h#vYg?ulW*Es=-s-Hpg9*ri;hMtY)1ijP#tI^ zS<01T3*$2JwL)Gd72@P*Dbr#U;(t-P9aW9N@ptOl=ysP)2oE)npW=-e4xb9JyvDqj zIt+q(jyt};I=nD8|FPb12$XAv;qV?+aAt0LdIJ^H?|V{Y!yz(qLw82`y_1li2o9cm ztex2r%-|y(?ID2rvu|Tj-I`kR3 z+IzvHU~zcvYUwCDjwq;6mdz<_s9?dQt$_ph!@?F5rsx-e(nBSxJ=%jOD~?d#qn2&H zAt&a=G6IV9uqX+SYKEKa-H^2hzs)<$I0qfIoQv##g<+sZBfuhz zVZiA{QHd5KJ?HU@yEPE^6G_IlG>~7xoAw zfOmT|&nmm`z~Z$~$T$LYweL@u-&gFm!Y$f?gakC6WCJpz!B6{ZVo17O#mq5$ZnL)Z zrdBAe<*VB%kMJ%q6p{700#1~yG733NsKd_!{|oU;de&+Y0ND}b1jF*oF+--R5>BD;SkCTpEshXh^6hqkdV4zb>Sv2P3EMVH-opmOhLspke>OxH{w z{{dc*w5@CYRxuCms3w5&W>nq-0GWWLOe zYCZ~i$LO`A(vx;iRI{yigjKnaGZ{J&x-fhLt&3!6%qZ{B|*$+S3Td2AUp8NtO zWbBe%|CkI+45w-SwVOj{bPEkU9%xQp4j7k(?AAicPOsmdVxkgnO;%D)dA#}3Wg!h` z(me-&XJg|L&GFeWY$(XmUKM6(uS2GJc1hV46TkAp8+{W}`^cxNM`z!YKw|KpPw|_Z zuP0R{9uvlo_msyIDv9xtvpuX5}rk|xck?klk|0vnrz*fgc4esVl26Uhwgs0w(dv$iZVOie=xe}#_#GW zH&2J20P1C-&jB946Q^rDSTTQPq_3fC07R$g5K!uNd#K{V_x^exz50JXSD_n0WAT}0 z1HkofYj+1;j6u+5S$=R_Cp8;JBoDH26S6lnotXK_w#U4sA(vp&NCbWMYNbnQLM-Ypgj^YjytZP zKSb@veTpE{sGf6u8{LS2+Y)r4MccJLv6h(DYgm{R_pL4nrgCvF945QyaLnBJV7AcA zB|GGkka2Ao0TKjx4rrp&m-0s+W&>Tc1O^;omtb81{Ru^!EX1siK-?)*<3z8H+9E@JOf$RStmjCZL@xNw9{!ZS1+Ef`4WVp;|u7ybfITf?5{GOdvwb9e{rw|`C zBh1exUqRqj-D^k@0@|MN{_v=Us$D!aA)Z5K>xYrtR(dDtq)z3X4vNmEaAVo~A|V$M z7!*r%WOL1#(sOvyYB{PFmX??tFiFj_zA6AsnAhkOed_weKHr{4a3~v&6uHfp$T(+| zRkKJ?YX1`vD}eyj>A>r%jjO@RZQ|*Nz-MHdvbzydlG5)18SoVd`WMfUAJ$p>zaPPx z^6T_NFvkwGB07Px>rkVP*@k9IcFfycs2CToF|>l7J3w+a*k0=5Mtm&1I0A-Q3;WVi z&)uKA{zVfl0W92D>kUr}RT#`;^TV%!{R9V{ByG=E`6e2T^tjf<>sB%w9B1G2%|ko< z-%EQQ5UZeiP62WA9qJsI!uoUdN`xfY&Rg?((N&j9hulnrqx#Q7+>l(p8t%m|)6j%W z2xGg?>6+q&Mzt~6yEtNV-?W1vG%+}?v#=U55lly5i#Hr1-&3-F(Q%QyE;V}+2>)DB z7da%6QAr*$;u~VvlX|CGopXM4ZV+P~B!s~#_=sfL=y_F$h4tvk{}o{4g#UjMVCU*c z{_;P?n~LwnkAEuq1TPeKTKg~VOOkL=Yg}a^$B}gHkk31vTO%bMgEL_Bj1LEko&7K* zfT}~^9Ew4+^@u4=D(Zw@ms%n`E!M9Ej{4c&u)Ey<4m#AI+(~Wy zwtGh^Rf<1imnZap)A+?avOqc-@I;-9F%}jM#sBS-;S~LRH?cY%mrWmZZ`9MZ%|)Sd6%d7kLPNdDY0__hB(w zOo@(L!#&bWpiljqr&w6uoUaj=_VDs+{^lkCNq0bNhm?1oYgnRF=b^t`!#x58UkeViDw{W|~7 zT`EtPLyoP2lpd_F`~mpkw?-xjp@PolL)`D``s z4tNT!9_y?;ZV3#{UXhMP&c~kh7^m5;yv}z?fnQ$T-JOVoSM!6Q&@cgLcJ|G2j_ygv ztglW4q;hQ|%ox9j>u59Wya%H&gnEAz>t}VK<(@@zv@7;xQ z?hW64FuEfMTr+kaMt&Jb?%QC`AnP}Ddw zr3!CiVdqK2J(_+%NH#IJw^=FzI-z!Ff03W+ZKHQmcGQr7jPsc^sSan)y@xkIMpTNS zDXzX1C#_T&hr!^@VySA#n%~f6$5A#aFC!r1lX}bAwQq-+tlM$-V4bgJ97canHcmhk zQfK+1#tb?lVZ#K1UzrDM?c`Vkh8rgMe9-HHpv%H{bC3~?n;^Jic#~JKe957s8AY)Y zK5}}_g4ql-iBQ}#IV*9JN(_ZRC?7Ud!SNm2A!aMxoR<{!8g);3WRS_?6t7 zh4f#n_|wN*ZyAOyUK_4!};m+CsUvDGBWzC_-TmoKmE^RL-rnd zdAJJ&QycO?a{ z6|={^xKmM{yKBr#%hS5-!4{oHS6^9P>L3Hsic`SHklS2yJw)XWt~p(oMbTKb<8f!G zjF$_vBINLhdDj)<-`40E%9KSGj8~4X3AVpXxXYIXqOU{ud1g>IXWQ3ZLDB7{d_-?0 zyO>}?Z_#<|h_9V()bt|aqEg?hLQrgw5vK(t&x z$_UnDE_dX~KMMz=k>iw=_do-O1q=+B+Zi>EKJYBnH3&Rn2r&qs=H2?lHziXV5d|>t z322v-8D*8drqs_x-6ny?AhZ~`0CnpCdLMvfyFA$`LZ_j^8Mk_y7p2k4rYsLAMnqR$ z=q$%6od43yV!|_Kk~nXA9&J2 z7_yi$VWvpwydp9`*P`LLyBm#OO!6R{l_Q)F=W;N{u6@c!@OH#f!CMbOJ4Gvc}IoX=%WvoDDxM*e*IC4#vBbfEgLR#)kZyQzQcNe6|ElRk3{Lk(~n-0|tcIWTW1W^4V zSx$_BOw~-vdGsVFk_itQl=LMm2gevzITJNV+2P3K47}LRF&hYWUbV2@(?`xCJU3^# zq@NWM^)~!HXFVT9|2x*BN^6)kF2ZS&^>IKrqA{aPS>$(yIT^kSqg@6JOCGm#mt6S< zOUx%mw`{u<(wK4O;Z+o{90yeK1DL^W`irh&L-`_NAQ(@z!c09Q;y)WasWlT*81F=O zA(FS&)RRD)ccu5Z5h_}UD z*%P?HzJ|QayrUJW)&ZwR-Dp;x>evT>nF$ijAD7k)wzOZ>INGY#Ajk5cv?tD8x!2!9 zPckmX<%@;#U>EOz=i<>rP7R1a#Hii)j6XPVZ1|$}lRm?{>m5U=cj~88@v4(~F!Wua z%;Q|{jKVXy-J?`8ugnVuoq_z#^I;WRv`I$!eJ;XmuzdUgnb7%k5VfY{B;o4s{lQk6YRVn;224-e{1lqzj?zm$b zpO^fIngP9~bga0t?REsj5shC7a@V&;o-ECyFdT=5O_X(_U3uOfix1YkkA3$2p)Uek z0W*587n8i1Oc!PaK7Z1>J$C7}Htyi_GWth}KglC(W7za$3(vT#5A%Yr;Gvy5w}0Ox zzOl&lR%YZg8n_D(Z|7Yob0psc3xyvKw{Br;Y2N~m5{V-`UTr(+KVDZ6CM|*9ytcgi z;_DG+7_R5Y9%NyAc#-l(`55)3dFYn1wtu>+l@w8N(Zs#|jR?>;iecjp=iAl~6jzx1 z;A9CJh3`!NKdik4R9wxnD2xRO4nYzef(3%R4H6{5Aq0mIJh;0B5AF^jKp?^0o!~G) zfWaLGAAEpeW*+DK_q^}kyZ*c0JLkN;SnS<u|Wv=J$I#&p9uv%hPgY7tL$xzz|k(?_GUFpjZZJ9KY|5UpGds*8;4?uQ|bv>oc9` zOHN)QZN^pgGoUm?HE{h?5EMClx(&D=QvYz!A$iwguxNTYIf$fz6)|;tT0Q_a_dQ!D z)l78QK>#gfVoj;hQDK-X5Wf_`2)^AZ$Z`Ov= zJTD;Q|HoL^5!3_TUxH}1BsX^%Zqq`#Knp!Mo|ZxCM$ha_L{R2a6Uxv%B~XtHKKZs) z*DYfip~i1Md!c^pToPaX8g`@MVrO~lx8}X519mojv{XPc4ukCZQrvL zc)ePm^tz91&Pox(oW*P_9U8I*RW_w)Bh(AGvE0Uw*FGn#9=1W44dM&~O~Qn{Zkl-v||0_jE6u0!m$l8uO0-2RjCCW*#lnyqS6dAu(1 zimljjC0{o467RzpgJY<0gAQAPQXT_&OaI*X*5;3vmmjL;kf6O-?yYXslZ< zpN=a}zW<3CJ9W+bXc=^TXlYf8Bum&Addh=UX78I^;3l(XTGvrdS#wG_<1Jh}f81R3 z>QpBn?zB>?iuv+6M`ug7Toq}>L-(>N7^iuuAn>gbT=NDLSZf#bfa&uS$Yk1#{Op7k z_{K+Pm$0YGz{89Dt#hQmFP0JmrIsB#(9>{*lXV#9RrY>ySq$pQ!2x3Osk zUQ6T?c>U<$f+z61j0dCCO zF$=QzUTMjPwU!L$a6H$)0qzCe%3f!*C7>0&cL}S~eh2~~(c2LO>!}A4IsK5^ph`m) zpyWf46*At?KLQCQyoS2f_?~Kj*`F)!@9r=5{tECj0EJKTm)B=G3jh9$pm2uiUUpA< zS?#*tKw9Lxy?}S?hC`ho@la@ZE%Kv1;2&1=AA{WA{E0K@Cb8f2BJ3)uH;@!rano5p zG_!6?{Lx9}#^-S-)#+#dx~-8*^s(}#e*h92f-*x06V4ye_Vf^)P=ubG|2(elHt*|V zx>-DsYUTufb~>xP@bbH!i@2vHikzoft&3EFVcbcUJLv8oUJUbjm=@o}RUkzcs?&E5 z3O+mK1KO9U>gDvs5c z3)RIXkQGR`ya%6*oYTVDfE?7NoG!cQfWZ6M)7m-zM%Cm92&>3*x%U)^s=^8kYK?)Ce3@$qG((&wa1o0`$82I_}H$=CVYxY(>}q z&q$z)q-kLniqEeu)%KNh@Zuus#1J&SdS@uX4uR@k3i+fh$+rjdFPW(Y`ZTC5nFgp= zpIU7*KA z49!jfN5ij;7*BM^#@CE@FDph759;Dwe5}%4$J^3@?ut~C4`OZQ55K^EyQ>}{qliOc zR0rM|vi&Sg<8=+)Jh~5HDn6KYRs626F|fq9V8)Fu51ur#4C0^qZR`mqPdfdzvg++M zlYg};wv-{Y2su)vg<2uZTVSL47-lnm2V0D;CT;eU6F|EY3MJzF2?Nx4B50}2Y7&tK%{Uj9>P z{)ftsjf zAG+(YeeD8KcW%AM~g%PRzB`bSUA--^y&ItfAiB}-F(Gx>5q8|QfC}$ zdzLt;%gu{0Z&O@Ox*Xx%qx_Im)YO#^(_3*sv}?E`nLFuZJBJ#PFZZZoY&nsQ9RP%{ zLNiZv3z!{T(uIIE)qF`Axo4mO#S2iYD5qZger=I&;zv{ILHTD3*F7~cFaO%=Wt!{#qbyWUIVeSUbn^v z?6kcVD}OtF&TvxMDq9M(S(e$T%Hg(#Fiod0z05^%{ODO6 z)KHYB&HR$SYwORX<6c~40DnC&$GUy>^f`(|aOmj?Z0lz?7L@PE1&>J&<}Y z!K|t)^7jGb*E3N0s`ZzFIeNg9A>olWZXfTo8<%;1(XMe9zEM@iAll`*B6^u6M4F&m6wT z9_w9@Mk4{oiLG|^oVj6rocSP}WmSW4zDuywq1)HwsIy=E)8YD$3Fsx&`MSVS#CpWF zLBJXaUU&kXU55r~p2E4V7jh&ntKE=J$uX`E>5|>Yo7M+GNjDy!BY~@D2q*s0%?_$H z?zGE466WvxK(jRE;y2WYTmvw7d*NP=@LiXh+K0u*E?!BsGi}@KG!1~%Lz?~JmClKx z9ywA+q*A2B{J0+6(R+cBs9!2e0lXD@BOk29cW+0OG3@yAw_o zm)Ul6R!mh~;XL^e*ArKXwfJ<=^->A-Jk_cU>tk(`gdwxplC_jBcRuxzKZ)ieu-`U9 z_o=Ri-8;ubB}Vssm-~FJYb?l|mG-ys%BR&cAAI(V|0tgBB43Wef~Y&kD68NbEQgJr zRgmN{_{(Z$$Fxh;B~Ax_wV(yT?FYBh*QC(dak`Ft{WZUlgXPqW=a;*;+VS;o9Y0KT zNaf77D*2Uk*pC{gY&#}HnrP3&$g>KNllPsIx!n`@MhOn%5=Xu?-RhEq3LMJGU*h ztLO8Ybn#M-PU_qC)_&vidL-yU8eyYqr$DXt!RFoY#s`c1y6U#E7iSA}-P1rGWoxNOD7GK2yuYx|1hg-F%&{`;I{0P*=5!jvtFK>jIUGA)Z=BQgFp!G36VDu^{oCu*$} zLqWm#Pm`MOLjM}V{|fb}G1<`$M~_>T#{VVOE(#!YYc650v{-9#n~jC%p14&zCdb&g z&QX%8^^W~-|KK1f6pA=HvU?Z49$H76p#md0FxA#6SalTMy}Wco-rwK51&(=?((25= z*69lJ@ey5kT!E^tyh6fYFz$CA6~2HXq%91%fy|PUk_ucxaYJ<|s^W?EIum0`v-JL zg(*NLhrVNGEB8k6A^!u-m~cl%k_j|GD#dmtzpd^ynEG}fQDD1=JQfegS9y0^bF6p5 zGW32_1IiD7zs6L3wO&SJjjTF*M@Kh*XHP&+Yqyx$nK=F;eesUE1h)aG4XN;Ny7KahXn3(hnvQHwIJ^O?YHrbi%_de&H2y= zU%%mVi9Z(O2SNuHS&nz&`_)UM$dWqEF7$K~(A#gE%WSyID@{Cu~3Lb$^A|t-zQ} z=Or$3Z~FLKC-WU%LQO=i@iY8HS!%rMSvnr$@UxDhJrb_1=CkkHw8Eic^PMUj4!T2E z&l7b`ifBs*e3_wdGdfR8_zH?nGwhv;5I_T}CM!UfoxqK5$I8&_eWr@bN*urk?&Az| z6J#?3l!3_axyN|pXoJp=#mg6q%}7$2+-Z0cQqfXMF#rMhjeH(-gGlt;%I$m}f6I>? z(IXA~+BJYA2FWIhPtH^r3f^u^Nu$4yqDlpmO z_4PS>KxlW=m_(D#EpNLuWz!B^3~V;&y!8p(An2EO%MWEsNDB?JJ7;iUbr{WG97Y!L z6z)?%12_+na^5(ot=_+0ZW zNw3GKP>}*I^V3?PjmkE*ozjwBSKa@ikbl=oV^wkD|K~@N_zqoUM*QbR@%Y?F^YQT4 zuw5knU(LzCR(do-bG*clQ9e(mq_M+@*dpB75@N%rIkOBg!-<}nX*{*u8uhv`<{fbI zW*wvLcBg&Ejy~0R;JJRo6S0gkK?J&P-8~X8C zgeH~?F_sGvg$vQ&E^0eMaGQTHAiv^(L*#PQVMnU=liJBI-~P8hx@i|`a2G@!EIQWc z1?_HAhdLR9+^C1#vVRN#k164t(AiE8^07JzlOZ0wpsq-FNS%3FK)sn~ z8xePE+H~aiLG-9#*EcT!Hn`Z`X7UF<=GFx`=C0y5e_Levi|ew^{{i5iy8Ug2VNw@P_Z3+x^tADA7cg4!=0fNlUJYWi6!jRwr*U!vzffTSh4 z#bvpzOy$u2W}VLdl7KqLe+TV9U>~`jc??I>z>}Z0mlnE>?LkSh(VFIweK&}WFKC~r zNqMrZ#Kng$^*bs5=%^4XrLkri*x?D2q7y<^%OCma)x(4#zX?-$6^>r3Y-X+M!j)SU zAUTNL273fS=}N)W)xYKp{(s~J&jcE?GL_>Nf7yGyaq$=L^(+6N|KB-3@;=Q=+$a4^ zep-Z{#F^+#F&2({>IS{-%r?r)4HR6Zo{0x>W=@ZO@oX7bVTtQ~quLG@sF0)P?WIqQ(wQ(sp%&|^!Sa7J@$PzgQjB2 zrQ8(6@?SQ{)DdkkD9!GvAHV7!%vVE0VCa^ar-SNc=!?M8<}_MbrVsf66@ObstoEvB z_+%Ln?V~pzFs?KL7PV#U9@ii}g##XRO@De_tE7T$g(jQWk z)l09xSsd84zH8(@?O`4g8e0jf^Exp@{usA}KuQ`4PrK#mHXDNYFOYzU6)BZne`x!E zde%RE84PZ{}d8Gnp*kZR9RL^iPsy6h3Gss z`(g9@^wj)6QQv&1=+1(2r)iN)b(m*Dr8v#-b#GxTT}egP?_o}ju%AJsZTtR_&0h1} z`T=lct>ec(|5m4D-=Mg1bAfWF?S@cLUQztT?(AbU>Hm|xjR208W48I5WF=0L=mEwg zrI+N-AJ0rldM`R1G1!=-^PxJE+?q-p*Q3h@YQaXMhoEk1jJJp_sh$H=07G-u=APwY_E!vp&-KhbQ2JS9SHdP+5w|FYL>HD$3jtoMAv-|gXC z&Iu(gXH|w{&V|3J%l=!AFfz+hP|xU3CS3C&-jE;xkK&u}=ZGwQ;XQUdVq3#)o93!7TGoT2QI-)MaT{4cxY}>8xSMOPf_j5 zdE(68L`F|`Gm!h5dXARQxrdc7(nHzhBU)F(glY4}(q0eU9Cu3=Oz1&?Mj{X;9Jhg1 zSXldzDr9I=ZFNpo6SO&ha(Pr*mg=Fp0rg9WhY1cdbIJZt8~KV$X(vXBW0#}W)8P;z zxR!aG76Vx{DgIC;Mg;eTSV^ks^meW6PDP372$D&O3MawgGL zL-h`a?_|yO@>qs4-*u9@V_3Fxjoy$vlmT)0xhOwdvZVq6vl4*3*SrTWo%7UDB~jo( z-p^i;#Nr~C;5c-~67Ssm3Y$Mz=VX8Mf6FPc(~=gjp>Ro{`Pq2NiP=!YY#NRl^*G-G#;1Lqu45_3OdZ%!np=fv({>00ZJsT(t;H2J>_KJTR zhv}%gG4x}V)M5O|sGStxdVfS^=`)0|o=h@$m2ipKE7Ty$)>q-ZH)aUYRoF}7kZL=P z8<8CO=0t~!Tb$1_>RIQrp!>Dp@_cHkKtyuH?#jkOL{b~(fvo6#;}%W??tC$th)!j> zGBtr*zh}eePe+6*xcj?cxehc)uut`qLR>IyoOrPV#b;a%uGuH_8MoVzH+JV_eTQC% zLLH=hUtci))k;}!YEoLVi1(3BPx!mhhgLU|gd&pYe50^>Y=Zrff_M&b%m6G5w@OL{ zqHP*YHd^Jkm8Z}jdaF5MgJn-!d2z??5gf`1_htJQda;jLFy9Rn#Y4=oqr6|{mA;t< zHLnp8<$ovD`)CWIr9Un^nkJIAA5Va}I@UP63@IBl0f|nAL40Kuf%)GwCCLUIt%!E) z!rmO-R9K2Xl_-PXlAHZ`km79I`ktTjc@Sb3$s=1}=*)J#^|G4=r7d#kThj8)xHDV; z&vESen9Ijhy}^__oO@4T0q$>TcNc0j7j#jbt@{fx#8EPR)fTU75Ii4NH z6oP+nl(KER`tG2v&AnSQMKb6MDkqNc;1FixdOQ615bTCOAeFfNo&UB8vbG{*_+#2S ztt? zcqWZ7moB`65-+PffiCN62H$a|m@o$ML&IV>WaTq(vP#&~zO=FUEXV}7?*e3Dhq(I3 z4s3n8Z=E+oMrtpD&v9G)JNYs=_Td{we9brXCu{79_A4UI^X~SPPpEsP4Y*`GgNq=P z7-^R0;W2TcTH5PZA%md~QWlwSLkC)7+n-KUQbz)AQ-_`mA%+~o6Pe+UjtM4X@w7`cE*QA zW>rPAo`(RxKL5%|Rk6Qg`pQvU=}YhZpgg(kU~L4=yt#dM;O*pTEf{|+&oDHe+s&-N zy5%hyg*-OjE~hX04DS+!dkB?SvYpD{AMj)^X5qvM^>7w8;ciikBKscotRIQ+sMFcl zZ%2!=+v5G^v&}R=Y1eCwOevy4yFRa2J5Xm=Audx3p`9Lul}{4My!;R}dsyb@glwN^ zpNA?@&GMRnhGeTL#vl9S#6fG_gsO$eRkgHdb4=-`j#-h4kYZJ;s3}NATkSPUA zogy!PcsOU*E!|wdUo2{O;@4o0x@|DrFqsqDo?p7${z(5i+k%B;^Oa;1^FYt2m432B zw@Gs7Li0ycp}ey7VSgK%mhqz}{0oIr!C`##&o$bJ?p=@|VJtFWd_69Fj^Ke)&8_Qm zyF!+vY~$C5kGN$gA@yl;r586Cw(&a2?5J7?i3!pwzt=Hms={KB(KKkyL!}O%B=|@b zlv1=@YU-%_TNOHKceih$dem*UaXayK*Xj-xiZbw3qUNia0I{Z5FS^D^J@5vso-Byb zNRO6lDP?h?Uo1kt)(G{TchvR^#eYuRMJ+YoQ&e|We~nLcUnxYRL@@)uUl|Qj&Kr5R zx2)4Mc}y$P|a{@aVVXDGt>0Q5E5 zE%jqIeOLTN3(KLWz!3$^Q40LsES#D9=@MkR>+c1nbRxR3UbEw&q2B|st!mSPf zEnKt0l`>AK-dO`(_+y7zRz%BziDVd77<@zv++<1-ah+Aq?obpqB-QhVpNY1w2(QDG z6(9T-(MK~<=|MOVBiB3nS}V?x$a1?ntiBF-N$2L4)^n-?9G4ib8eZZ|A*)aB~e7p_W4AGp3fuP=$Z zdV!proljs5PJ+Z{g|h|VZaCr8oroFlSClRbl`7cSd(}pCNXO3j4*ChTX_#gK@KBrZ z<&UUlRw<`!>c8Ktw-$x=dw$*{g58|-sq&%T4{U&6Vx&#hJvv8?;S>rT0{K~oJ@h#H8|2uRjq9!b@&d6Tm<;Ll zE&w9?olLC6YniHRf~W#={l}Mo-NYQUXn(OOVj*h`)_s-~UBWoLc!=56d|@}>O^+!3 ztJl9-(n=HddlBn-ijT-&mc zs*Q!|aT&?7{9ABGt$x-Rp1&`~)tQ)8G!;`{MUazCE1%xyklUe-xBk5I3%2~EGHm{L zrJh7qyuZ;&OXl&_l!K$PReC1MUo3GI9Q`>0%(yNZ_q)hye=}inBELXz*#|RY_@ZrX zg~Z@j4?y*2wgYXWc2Yw%s!*a_h-i;IScKWao>1TEh|8iCCfn2dDja!(;xX$(zQ?HM zK*ug{IsG-P@IGA6f4i~!lEj*$)^_!2Je9lfrMy~N>#wIu=rSPNHJB!@l;9-jDic69(PZRw*?c`D?huI5spot|Gf2J6y2VeUGQ}d z9j}=8v@fZ&m&6SvN}wehY0*F4AMz<6Tj>&XM~8?1m?6dmImm~G_~vsw{Gx%VQq^|F zNR_E{+YL#^xVqvA#G&6EAC^8maERRgK zeo?fozl`pwRiMjC6%qN=PryUd+C!$0dx@~E74rv{9$4j1+(0FHn zyo#@p4o!e0-VLuH_h|~-$p!M1{i_m~J`zv_P?#0i5o@V!A-}O^1isZ_=(D@fMGX#7 ziOn$pUBAi1P*YCpEqMYRFVxw_#4E}L4nX0n;tko><0KH3Kr=Su-Rd<4+0UN)Y|~a3 zL)Uag-K|$f&6l#fPXdx%#!;Mw?Rm|oaXF#-OUas1d7S#^-)Jjo=Lo_%gG;EUtJH^| z*5zLFwAvs%BgY;+jAU_I$u`Kf>Idc$(i>>b=&vZ(hf1lUDd)oiZdXK|T9wYrW@)7I%k z1C5gQ`ppxq>84S=-Aa;eN;V!cNe{s0_mSlrNc8jXLOv0!FKvko7?bk$b73>zC>^)&t+)}m`ce%1;_aaO78DVzcvAgCZvVy1)iE#0AxSd!GKn2X za~>YcZ~M-MYK3zM8GOHeAN@kPEn6!J`g`E)JJ~?r@XfF~>c{(GaQJ9ldqjc+!)2Ty zQGSb>*Wy)^*}%$e(|3d5_#W?QBQ1B&Y}6SOgLfyZW=3qNqqM^YSsL=`2}j6NdfufC6jC?idO<&zKpLND&V7xd;qZn<*=Y)Y>SEF z8PuBmQk@8aP4;`{sJq!uLZ=k6BB*eqZ_nuJQJfpEvqz50EhP@yPP7kNi4wmo94~SF z`RsN!;2ay)g1ycx!SdYQj~@_Qgk9mUhRN`v5R&R&2ZThO|-F9y=(R z9JR3XEJ`n<0IkPhNlM(~Hjlm7&Iz5JNq2L2LOa{B%3Q0{`zqDXu*Xf$lef4+R4|&@ zwBkhtkMaTKbuZ;t;-5At$3s`c#Rvp!M3zHaG7HQVi}F%D6;8ir;tJ7bdQMtN2)=gRYtVkSUptUb<}N z=@`Mg#vCj@tbvTLY5Gap*$8L#P^j)!_ju`P-Z?)Qc|s;qCe^u-OuHql+dsJ98};PrC9quu_7Ya@+?R$4L5e`ZNSCxlS* zPfw<3>irq>R@~<_;SxZHF5+&88ESaIkc4|*()f~-Zn8?Hve`17G2w~tk6q@sYY{Ss zb}Qo)#9BM{4E!GVA{$E~KBVhM08-O@-QNeD?4dHB3YS&IU z&SwR5`!=HmKb*c=50wk~qKUEF%_7xen9#xWR2D^PVyJW7 z&$G~S;|a)4y&v>`#NLH1K}QMwY@*R7fe^2KHC2SDjZ@martxODf9{LQ@?*NihUaMy zbkW=kuf|ju_`~lZ^R?~h0_hW$fz6N z%*&ln$mA9f?=VH%4(%P-BOj`xfdz$c=PRbjFR-^R*XZ7KyL1|JtWjFZ2kugh`A_Pc`h9S)$!&Lu$`whbOD%68@ez?+;<{W4GW9lJE=9C39@|GAMri@%}@IQ)!m!m>IpODb>8a(s9@POl2telTT2xeMtacz*UGH<|ME zOpslOM2Y+6dR%{kH?oDkR#R&)){c(Tacmx@r_@=AIU0RNkQ6#P26!fgq|COkO2I${ zvk27(Jv?-p$OnAWeUtx5Q59 zrIDyUTJtK>d=mzm+6mxY;t^s5H89L4ToxRO9$MIov8Lm}c$FA?C6v^f&{&Ld2LypP z2|`VxLk#3^Pk6-{6Gv!oPxZZJfFR}989vuR4*oVlblG?o)cD^Sjn9A}<0T}MV4H1Jx(3mO{n?-gZM7oPub?Wz(itPA&4wm7oSFAr%|OR zVhAqg_0qq_Nk2IEwWhHI>1g@H62m6LZhkB5OaVyiB25&)Z&j#u%S_Xr8RtYc@Q5tF zXbRJ{`pxylIf9U5OwIpTe?tEuD_#ixnJU8-op+j-%ue9;{_zW*BhMeKLXE^$EUVT! zp!6$&ts0`)yED8e>v0M7PjBcVScKz6Gz-m~Ew6{pArbpGQG)cMPHsO`mwYmCu9Y!f zPcM6XE%qQ6-CMzuweS{Jiu{n(HNU{}!<4YBI*&o_qR1YV(prUp9?2sRT^rQwqYXtX z3Ghd_EY`2tO`RR1F5ZuSs&W%UwQ6JKo_hGwLqN0LQ7_GaFlKHIUGZfCNe;X#b{qQ0 zpAn=>Z|N%$r}0+tf>18yOBIZ#OnP77WC+%ci$1qT3lnTX6SQtj^G2G-pSyr zw^)I(cAIbSJ{e|T?e;B3%z=>)v@O{D3Dwfb7~ALqZ!BkJ$IshrUB#(2M)OaQy@r>v zaNP01BcjuiXcQAO&N(_$g#9PB*&g0Vzav)WeQ%O`qW(y)n%c zUYbYb@?Btj7HmjtWF;@Tl`E-MHhQnJE$kdT^^!=jn0%7-&)Mv1ZeGIj5b9JKC2ef= znGHW{NKaMYZEAB0=8#_p^)uAkY+71z@%cc7Z#T-P{K8Xq+0W9)JtVN5ZyGH|<9GL? zIONKLo@WFwpw2^49ld?xHWBgII@ zlaO!Y)=rY0=xSw;C1i}^W3!Ef5-iU4;R-)CTkoHQftTz zZD#+YFOySg5I5BK9)tFlz1PW~vSk8fT8{Qk$nz%}5WL%PDxMx0Ke`d+yOhyPs%L-N zI@~``V_ghQS&*x|m2}O=AtwB;p=Esu8@e=A`P8CSUvz-~JO7Bt9#FoOn3~VdP&02> z9<9)~hwU^E#`UsgL9;VSmHWWvF75oF%l8LbM{wz9Gvghil%c5QScfqY9cxL9A@}Lt z`^ju{O~|hUA;sSMpHP~lia5>ic?&*aqw$4ui(Ks_su4+}b_KLjt5+R72T3&O%S9+F z1nL^-iT6W-Y_4Gj>sh4Unn^?kq(=7f6frSO`IXl zgkq$Ka<`UxeEGzF9b!;#PbqeU=eF5F&`K{-hb`FC^X@uZDiCSg5Rw~`ICYu%RwB_Z z?}VVQ2|sGFc-!Q=Hpn~MFlHaCZr+U`xKi;AMaw36&o)~G3P*GXqkK_oy^`a6gp6s< zrjbGouEAaB;&bMiajKZ)ff>LWQs84FMn#2J9*EY|Z&A3Anwq4Qi1BKbr(FL8^Snwr z#VR1Pq-g{R{;eVZx!PfP$x{rXIZR6v)r|p}S#wqEsy6f*zsmF7cy&|zRgfAx#vJhd zGhG34mol{?)hbW8u`vUnY&!iyBX63OlitmM&FMY9f6`%piqUK4!~N7`m`zynu}^64 z?eEJ`BOG&OZVH^SQhmkQ_N7EbL>$SqFN--N-m4)t&h_b_6=bu|iF|)ZYp#FAdvnU5aLH`rW8 z)YmY;{htHmcvF%Gi5iWK-->^h^nP-5i?3`qIi%k6F2tLYCTY&0X{ahBfon{d5-N! z(M)jlz*8OgdxN`NhG6v~XV zqgUowt({^oyqCSg{EH{@y(%-9;g&X9)-}5e_o#a-dlucI;D(3sv|nTWp85Pep7?L9 zv*K*PQc?iq1^+>`O@aO!yF_cbZ8r4LR-(SpU$bd(S0L>X)aHna*lt zxV4pd19ilxgA_8|dOu`L)#EGq3WB=`4SzkYGyMtdZQiG9&~(r3b%^#<8h=s3Q^&rp z<(IbVq6_Vt(E_pzS}tE)U(%34h8&)x8#*lJ%3*~?9tv7fusz_Z&hN}Gs@bA<$Ls4& zc~6y*mh8<*mI^%e8Bn5BPmJj8fy8nMo@NSV+|^j(YWM| z2;V*p(?#^yJFJIhrhK&m2;{>%+Qm9A#zP2GOp9hyJ?UWyG%(c-al3pm=ZX2CIy!NwN+yG^&x3-K;q#xE5jivp;T-^tp2%JD%U80RNS*17!}wa7_?)#?bdFx!UW9eFW5ncnRWfo5)UVAaJi4k~r*d7I9}S=Qsn@4qw3!b( zRvV|GH*uu-E&El1JJ#kVan*)Ro=z12Ku zxA&HnAZ(`Bh#pih2|U?8vi9I4n(Sz9$@Y59O@6h`zg%+Hc7CE(bF!t!mSc_|8vkd@ z=~|We%~_J$==1Mp%}ftWJbvc*y~90c%#9vzbme4GNlOfZWez3`gxWb562LHTI4+w3 zb7XDf0@y2fx@YsN(kD!t_n-Lg5E3t;gRjhcI`*&~?V$Ckrch8~+FAJ&w42HA4Tmg| zL>9x=(1SL2hcyztKjGu8Xlf;w36^m|LVrQlpxntghg8-vKO~eR?Fn3P@W{9r(^(3(tDA@m9hL9- z`}c;aS~-SZ11J;hZ(}kaCg38{kmPj^WXq9-F`1V(sS0|U&k7Jdvydmhoh-S4F7P!?W z8++GDy`GwI!lG2Nr}L9aaig8ukQnx5)7%xif8s~TSBd-Nm_k}mcOWeyS|DI4oHGB! z=6lVgc=f}Dy|awLSp##j-mC$+xOGMDiS@3|&)Pa*#50in(3p^7de4mk;B~tX)ys(v+1t;gRm@PRDY0h|j*rmEo%fe> z+$6Vx)Q5|4NjtbOSM}~krq({rZvJRtQg{HcxY85Es`t%gk2>bt#>WZenG~r*tyz8a z%HQlFJtDPr+jg>szP@3P&E(?+O*cM|{?Hg@X02PXp%GtS=MvWmE(Z=L198zO$lX%u z06~3CY0|sajO@Qoeu00w8O^`H*t+stLp?0F;){Ae+e>nL+aF%Wd!?oCLTMc9jgRS{KHuQbUjEa;={J{;Qq4V;y7d925Z2BiA%VXz zj$K^U<3vweu(bx>pN+IsbG|cCMyl3J1o4ND zfp*DSKy)v;b>K-|sz=|C?dNudpXD=2{bA8Az@PE6&oI6yf8Ye-ZUA3BDk{R;ZgV9- zGts+Or}cmoGnZR+`C$!xpl>roG7qcf1Gmc*#KEJ8!Etu9_u<*Ec`Q{X;uQ*grAwx-&SKk*{P{|QqC*45RCi%re zWcJOL=lqBBKg!uLx2>z}#B$pPN^!yK(AxSk#+<%%i`)CJzpRcsxE%@^PW}DR>tls= zuFc+*0eeb9CDt=@dD8-UW|`i7v}j?=@^WN+}Qg zpZ}FM^p;>QgYk>cg8~c|7CY866-7Nz#X1-Ao*5a&c2G_;C8{P5{lYxs==itlt~-_4 zXp%>A)`P!;s(Rt=Q_Zt%NPXQ!iqmEMq|hIVhKAo29)9pp9Y4;i&og>uBApvrYq(GA ztm~q`x;!WDmFFHT>o%)Zg36Ic?rKHBz4P)VNaOIzoDO$t}2v<4rWn9tLM}m1LpG zZ}ycy>*f5{N6cUcbOjaglRG`Rk52&}^CG<$4dvwI%)29O`|qJI)liOv*w|QJY!c&t z%_uFq!9~t^EM+=yQ3scy5?qYsL?o$#i!_k`Y5%JH)4W_+U%$VaD__yNSl7nO8(Woo3w`8JOz>9cZ!e5%TY5$w=na{rBde+@fP4Zy5 zxGcMwsNM{gE^e{iFr^p@T5c)fY~Ilpg!FL-*0b)9%+!q5ee6wWRbA^`SpIcx!R|Rk z_Izh1LQVcay17*m^bl#)tzI`)ZiYa%VmP(HHfhNz4TMI~w}-5dzOA!Pq~Icd$hD0O zy8rlWS^kRRRL<><;r=JU8gX@62I1G8a0wQC z9|j|#(lW4!aYekHIVCbu#7;vVZju<)R`P@#QDNa&WS+^6z%^7<{_}LFM?F11fm8%Y_PPDAnETi6b?Ytv66QH*rSh*;c}V#b^(vk96Q9}WxR_vqFC)8?4Sv+A zf)5W)JcU+HG#Zrs(n9S*NDs0;)4D0ikluy@P18sunhy%{R0Y}ckgjKBHDvA*PU zDRff5TWgxc*nBsk+`_DwVADZM|FZU_Uj-{{Oeo8yJ1_S|IZ~(8K&C5TZ>n45XI% z!LRCeRU(|MtRVTiagcrfuP843){io{%N~?&VSLKy=9UtoM~eERkqoufiKdcukW)4k0F$65Rf?dVbQ-#^J2z5X4@~ z7b*UMBjMur%EQN1L(P%$*F*Acqfs@jcMQtr5ItjW+&6pJ7JF-$n>9`7zqr~>)(Vt* zNzsdeX4{2V)2&4#LjU!az>$#YhqfdX z66KpTeUb}Xu=Pq3ikk2W;@#7D(xX#6KJ7AR&BVyaSd^^__6TTdnym;)3SlD=i-sO8 zJ#3p_s&T=l6Ek41F(C!Vo1rY#QiF&x)Uem>rF_BI+wMvdRh^{1wTq)%-Tz|v+#)`4 zO^qvkWmKFj0w>}+*Lgleb*y@#l~Ml7^8&Q1iVk=qERC{8Vc2_Xdw$e67|%)`Sf~n=Pg9yL6IIy2J`Oq%La>6O)F1cy$;|99=~rg{<>$3i|3Z zx9JFt2D@%I7j8e-%%y2zAuZmPFZ}xU`qkG3;#m(K_G?+o6*`i8V*k-A*6(Wl-I&Wu zbh^KgXeLOn9^}$*ssCTHIb)t6W(zb*u9;v!DkB?P*W_fnE7)3R>|^e|=ka-#9v-?s zOP&UNWO+PlqCcb2Z0<_TlaP?m($!u0{`vg~uvIi#_T8_d?X#+h4}b>(<;Ycal|0ozvM^qM>^B=DeDVzCzHpys_>c}6LfUjr zY>KEHw+eESX{~KWW5T56@SGZ|s^%j{#7T>aqM1r|(2g1Ssyf0VB9s>~HtB5MGy>)9 z(Dt1NCPqe~dAtnF%n7pTKa1i$>RC(HLm+TG|2sMkNWr46_Uca9!A2psyiqA z8;5Te0_R6<#u=?AJR&U-9vNfePvJd;OvBTY0WjR~)bqNdSBu-^VJ9|-)9a_4nq$I` z9?|=0$Dsq&5?NI%j7ZQzQ@X!sOkUBDzC!8$fI=&)BKx1u5=}; zUF>&WWc}&tvSEJm{?aF`43(ah^>H@TfbO6jx_h_ zattChBI}a=py$I3>yKDyA!<6*U;N`5dQvEbVtWDju&S!6;##SOKSh05oV3%rLTID# z>@Uize{fJqf4qATn2XTPPSxjHT2JWIfgw6v>AJTy=Uxd;JJiH?#E`2=L79B&Dic-$ z;8|cKK;yvOexBF>=cpbYN;~cB!LsemR7t%1@UbGcL9DFt#LCcZ+PYckZbS%M2_R;D zeSKM?Pe$mDH+KsCv2vQCqwm1bkd2FrV5+5V@wl+8?A@N2nxdkhEdhyu0J6JMG#9W8 zF!^uaRP%KS14~Rz8%P~=g7+twqf3(Th>ch|c%v`x;7hkum9|6r%Hbu-iIBcP8H{V# z0OrvxvqD3e&Fj}sHhX!BfjU;zF`@oAH(9<;4TSB@2^>v5ebSR4@c`txnxQL0rPArptz#z@OiKB^ zjquh3cEZSXVVu+jXOEq(%UXfFEa>s!hg+=fTl|PWR~kAeX<2@FFCKoSz3J0U{xPAi zoKcXg$4971BAC|KZ7Z6Ig|fD`Zg+3(rhR{Tx{J~Xr6uLwde`9fwiViUmu<1eq*Q{# z?BtE%m^c&)wYkXjE@Tc8S@?Ts_t*94igEhxWfqOiY}folWoW3Ya6wuD(#A z1m*Aeb3T#l87~bHIG*O~wr_wNf`b8w`PEg^{?N~qqN48CRi7-PWctCp#4kH6R!;iX zV~mU-ec$258=)E!0q;@jb`wt&DvWJNA*s9bV9UO{^G5JM&uK^emLjI1qY)AK(9*VE$%NNF_ zBpGSxzNGPp57#aTm{G$d;^jh+l~*5kIs*(Z{3lN8(hKtg-5qq(#N%k zReBhSqo3*5!H~Xdvmka+C~(X~BqXA&D;TD&!;-nIfSTJB0-GZQWbi!c0ruK`XHtYk z>RtCEOXGaq2jCm;u$yrbD@`L1Y%qugk4mTw7-XUOTH-AsqHfj}hyMbp`?~UWk(as73WvWLcBH^+x%s1fGC6&_2FQH2VlaDHtBb+t^$9e z$VL`l(BP?kWZ8QBn?6Bx$^2uEXLyNLrsUFPmHiDRDp#J1GMLJrU5B`;0njgoXITf*Tb+$z*+e zd`tP{GkR5NB|w4OLY^xdiFL5UO=PFkRKH6LTl8!~p3k9b#VJhl2keheY2V>P z9i>YkeYslYex^GE4)>~=#dlgrYa>%;Om1moxv4tm?{ zMQqWVz_d9-h{J&?iNxCFC`jOt+h~}rl}@B@)%>VDGhN%e|Fh)CGF~xy3GO3KDKj3XN^wnUzJNuAlfJ4SV{daq`171uxy;CgOh}An zrK;Zfp}#CTdo(G<8vmi0qK(0Z^vSVo`2-Hv+ZLa`-g`CUMrtINIB^^xYkqCqb&ixC zv4G9>=jWoiyQwHRRs3IkqkH}#-hRk+G#dGxNvYs|bP4OX;B%P?>{RZ>x+tu23Qigr zi+@t4(tB5hZ70VZ{aNKZMpy?q61Eaq`!e@SLhUAIgps266l83mnh=&8188_tl`5vPUrJ2D_=ky=Sb>HW)dc1USeX%@W4y`FCv?vfpfheaTNbW`&IJ`Xdyrq@AOYp32D zna48!qv=k$OB&xuA1&KTLjyV*guZ%m5E@kz6oz9!4k;B7mdJkO=qZ(EI>)&`p5HXk zme|A=fSIkT1qFnq9R;wcigt7mvaNgtu#X`nKw5 z&AH$3NF_#xe0yo8qSRaVs?pm1ne<2&G#V-jxGU$e8SgZXoeO4C!!~3fIQUXOjBI0D z&N43Y*-Su1&kj?YMeq`Ng@l)*XV*Y6;^^fr-{msJ|PbNNzv!NUjB=Kl^HMpSr9z|KUnSVh9Cw>+Q`c{rnm6;%H#N^+XPmvYKUj znl5i=*W+eiPndZ>1FrciIm^zVh9%*;m^OYxECb)~WZSHTnWF z2w}{vTLKJtgeF;CF=sc?STVP;v3YGt`e|yvAj$q#?9M)S}8C6 z_E+HfE}e%RY@JyF-qX{%1Z6>NzQ>n{4^^8|p^%pYL@YZynTT~=V^dck;jT_;Jy%> zD7SL?bbMq@CF@Usj5x)noAX~!qTi({cr9yEYVe>P z4|uEj+UeyEIr?5VPest`BZ!LS;Ow?@`@T&alVpzem2Bh~fB1%iqe?&}jcQySw~A(- zyrVloDF{GwJ^ot&6+P=H+(=lnAjFPC14m^u_^j89ICTLVsWsFV*Tr|RQ%zxnOi50= zZ~_kS{HRlmU8|$CQ`b9|{TF|*V16`zwN4`9m7{3V6r11H7ra$kJ0l?c@{iDOPEJqR zv8rQYvTzKJmlp4(*1+b?T?EI5DQ#!{{R6R6WG8*mG=z9uF*#eb!B@SKwH-^2yJr$^ zlSAi5cU9zndhgHQb=Qc^s5Gt!NQjTlg2j^1gTVVnQAq&sz;wW^G(Zd=t5zZ_qQ=ML0L<~CV%ePnzWMZ;#U_K z6ccK*58Ae0PrC~;`1Pz^#h_Qnj5#-Kgy@WcZ1H*y?GEtNa>!vq@nVi#0A2jDOEEcz z*R{x*EP}lUl{I}5-ILpBB8Q1C7`ATuahJCoiOIbS4(?~Vo5#<6tKJ@Qj(*KY`8!#? zLVD$9l_=#>C_C~#0JNzF5$;{= z-si4}I+UKjl5%EU%LK+LiCZd=I&zcC+9X@WzY=Tl@2{7X@E^Z)f1Ra1D;&!_(Q*cz z|7~igpddD?g<<>RLmBWzF(%PO3+AVH*cAifp^3qYyieJQs9@o^Kg?(Fu%y`_r6XQ< z#~t*4?f}pddtBg1ks9-YoLhr0MM*9jBT!i6KvGI6Jp@1@YkNX&LS=)*z4-@I(Im~- zKpVn)P0g$DppMR1q43}j-Plj%u?>uNsYxC7S#U}zcOg#;$HF#j;!1o4m=5f(nb_Dc z0%P{#oa81M1?OZM>d9O*L~nzDTc~)M#4#;@R&lXO4|8gM6d@}$O;BJlvFsA+kWuuhBF#JEr zNQ^mrPueag9`1C6008OR`@PYbH5S;g-*Y3#Zi@)d)(c;`Ue%I+{A|@iTWcmc@wIt6JJ}OQMoPsPn5N!VWGx<{M8wj3Y8(DV; z2)D~1eG2@RHFt1JYL6z0l*!oLNgqEM7rU=J^sVOt?`M&N?Gi|7Eaf)D#l@A~NYQ_* zEV2nF|n34GFBOeZNIm^|H26| zwxIoOv6xUB7kC{|0{Klf+jp>IEo7~5Yl5}1LN>a>e4JF10UFZ979w-9RBcik4W_1N zkh)g3kshmMf}gRkU#+RQ+3->KSLD{#mQni$Cd0tjdPR}>3<9V`tIjiNh zz`26L!k~aa;wU99!-Y{d%Wk5c?`(DC-+fAM!qH9P!~B+Q=Vvwa?d0rvkO%J-R;S2f z$~7IcUj{|{HaE&Aa5;!G@usNfMhWQayPs_8EFA&VqVPEGL@r%Vzw_ke9dE~5Fv&F! zMu4w;2pUZ5j&auOFzF~Wf?h;VKKV}BJEYTWuJ%jsh;*Y8N^tSG5FNw8ukwMP02X6$bClL-&Z#mc4giG9Q%UvYNb8F3p1sw#FI$;~pL>wc z#;M8s%4^-McCLQ}8I!T3T(4F~*jw6nFVFD-7>C)Lb2dC4M|u5qkO0TeA|~IT(CncY?*|u?lMKLP zzd;luQKgvlf!6@+vo-c+i60XuZ75S76W1#q4@+0b?y&`EW#C3=N}nC*An;-=o6ck} zJfm_73L?0DHj>wg2KPU=ot@PUgU4>vRef9XxSpkFX0En>UrpfPx3xI?P2jeUJ~j$O zUu^@J*)F?$ykh90Qk#N`h`sij6J489fn;W9_sZm7Jj~i3Iz1~3A#_roFoWv6js+;) zotpVTxrJll+_|NW7(jPzT(W?12Z>L|Y4M$$;+n^#K`H8Z-~hM+KnU(ZKZ_lcV|~h+ z`iEv|Yr_q!eTY=onT+z_e%6RQb|7`N=vq^^t6?>F`*mrfKxeP+4vzjwJmpi>v9_R;jSs~W=V@bm?12kp3uT>x(c_B(kvzB$ zF}mzm(ey(f=r^r>FMbTf@vL(S`I%vrC;w~^8k2I_nJr0*K}x~ zXv;~y(9%|6wz&`gOc(bzEdY5C6%|=~dp}I}^K-vt&RuFxqOF+4@mV@sN?e*f=Ra$e zmruxUfkmcVcxC!&cB!ubP87yAm{h!9v`DvpID;vZle;r}Xl1DZyF_uT0$y8Pf*L>g3;7+>fEH(3rKL;l;%v8Z?fwLEdj+ zo<1n%YdM7ZN6nElTC%#(nRyW1?%iYzws~tNXOU4i}3!Rv2=Xg`1 zk?f=k6eGY0sAmj^r`8xg=+Ajw4EM^cN$ac4j*Ydy12V;043M5R-Dj*cofP&=KRdAuO^qYhfIwuH0(Q+`YGUHXf6PpMV=_o;&Ce|(9}LnNhe-ECGZ zz9r_j#3Ouqcf-Ti7Lf;O%Yt%l6GWH%a3?ilRlMH~%R?QeUYmFMH2O>HL|*w<0`S+` zfsnG4hr~E;ncjYpDhU_IKnUJ7m5MWeu7>#7x-g4br^>l?U92g;WYeY*X-!$3`mCy= z^KUkab>z9tffsC8AsZIeaL;32x1ntD4x|wIB~qE@lS9q6X*97ul@86r(?$r5f~o8H z_QyJ$R4e`v)EuI0s2=V&W4<^qZ-vNf`K8B~Rn8wz^-?3&z8R$EGlB`A0YN@Dlm{P6 z=bc*u@~T*m&rH=i=O5|NZ=)MrwG9N*5`IajRL=v-^!yPRQ2P!b@cGXv(<=*mK2DCO z_K#~&52K;+gK^Y6CXf2PZJI|OQtG5j^6)=%X)eEHErekkAeDmz(P!vzO0Q@7`U|=3 zARqHi>h8;ge?!nVNd7TD6G*e$6E9`Si2uUk#1&)8kH{YzL_6JvE`H^qDlFnt&rf!( zKRi5SFi}=P(JC8^I?c3RaQ(=F4*8SZUJMRg!2Pzi2K@(C#@Oh5$5fVk*DBo*)PgZIzDzn46N`}ARFwMJd}80o6~X%o62cT8auU_ zHD-kr$4HK_>0HVUqiDHtZ{XTh5aQYoDVN(a+b?iN>9^zK#HRMi`R7{Kay-72CYz$$>Gkf`|03 zms`4BE0vBiB*{R*o$xuM+Q*ukJx3y8@x*(c%|uSVFdYw z%&GOOe%$u0*^rC<{pB6ts(`^MW*qGN<_To%0^l1yVzHRgAk?^bPM797U ztEfZ68z1iUu+N;IlSz`9*5Vj#7LY>wgitU=EtgVQ;JA?I>9CqFIx^BAV zQJIhEf8M=v#S?smbYJbJv=v2p-k8*wboTc@pJ@Tw@zWgAS}HiSdy5eyPqVHIKb>&^^{!~)d1Sdtjy^h(gwlqJk-Y15|yp+)S{7#SZDMTfPd0{1>s975-1a2bpOrE`Qh$nD zT;d{2*u(hj&pc*b_Gp5LL48!NO?SL9xpL^K@G5;JNrzj>%x<7nbO}48cm^qx{m4hM zHVl*=xsVv^9B-9+Z2MKp(G!}v*j?A|c1b!nQtpOT?t9ME;{RY*?7uOy{R-NGD2|f) zTP!Qr^C?VRbTNBw|4qY8O1KN;skqq`{F?Rp6tXh{Xwru8s?1vzCMb3uJEXv%D|YOz zuv4B+9!+ojAyJLCs&4Q5^MP4<@QuJ5);F?g5@*%hqVFe|jG0+jcP)x1TE{d z%z!yuBa&!yKl&NDtl{1-Fy*Oj9ABy-OMQxH@H;MWWE2ygQvS^N&SkzS?gR7O{-Zsb zl9F;~7(N%$WcHl3YZw$ChyWraUEc(`V2-Qs=`ZCj@0qzM+w60D1Psjc+s?h&|8T_2 zS>577ZlrabHygbp6@Ae#?4EgTMq&i2@qh~Cox=I#JoDh)V?4nCzrq|_R!0}pfNz=6 zdnFrUb4`9PefN@Q0-Iw*h2XQ_LS1Ipz7z^JP-jQdxWbn$E;wJ1a+l{a=eUgJ zIkpRAx^!-Y2H4L3>JyojC$QYF4DLh#pWJ7RB|ZPPZ+)h!rBbG38UDWjVUf?Z literal 0 HcmV?d00001 diff --git a/notebooks/img/python_and_iris.png b/notebooks/img/python_and_iris.png new file mode 100644 index 0000000000000000000000000000000000000000..052e3bd185cfb052543150ace07ad3d712ad9d3f GIT binary patch literal 16912 zcmZ|1Wmr{f7dDEmh_rx!fOL0D2$E9Lok~e}gQ7@_NP~dXLb|0vTDrTXyIbIlwcqbM zf6jIGzP1}-G1r_=jB(eq0$jg^(LwIlo$1?8o^v7w{!TQV1OM>8@>X}Q;LnT_wEppc*b=XJ zU0+XZxX}8)e1<}T8Yo(bLfOFV{5a^_6D=hPHG$%{l6$>xGX8D8rS36fmnK%AR%2w4 z|2wuodFB1Iyj=nNY5On6KyoUzKyq5O*9P|jW+qdJ^S7_AP>%bzr*BYFy|V1JSPrPJ zt)5=^b#ibfkbDz6P>eiW%GwQAZjiH*h!XkN%Ce$Ax@6%}@E2Ui|9(uV)JOH-3w1Co z?eUR6cuW0vj~53Ar`d=NzKBN{7HJe}<&9Z#6QkdAuGZbArCa^)QkrfXdF8IxmnVEK z+r-n;(;=auDcSV$nK%WbGJ1L>EiElwiO*w-i`kcZlNGG3^QY{1P@XI?!<&DL6gXRq z(5dr`lcKyy#&{s6qAIS4tHX>R7Z(>99lgJr7G{4k?b4Y@dq)?ZfRg81{nbYO@>cmQ z_ruSrvKMD!bp4!!~V3|Cz7 z(^rdl6Zb^3l#OJzjv$1&s{o1j^@&e1llCuGpDWMGj~PE?;IS76=M=6M6?onDDe;2E z14iZzhL_H?)QlolVwXYF9@5pO;6x_4NFnr(GU2TJ8548Ba=p*8xU|%Mi~N71t}gTD4TbRKn!|iA#I=VGU z&_i~oWx+0*QBzc3pY-X|r_?7N?(Y1;=lx+nfByV>PYSgPxjYeRnVJ3+l3#ZJ2D1zd z4SnieNvoGcC<#ON^{ay(^7EN-#h=m8_-AL+-@SK_j)kRd$^qwcB>(N}&cLqh|3ZDw*hj`^U{cDz>++owp|Zx=nD@D)tJPC#rt5E!Y_q5un_; zbH^*UP!B8=6?S`50L;vYQ3hlx?Z@9*H14?wl_jge%Hq~%*DmUyJw!3lfOdG&)wJ8*T;(9+zS)Fsu1|8)JGGT zL%32c;d=R&W=C%|!-rCgF+Vknkai+6z=Bk3CH`)F$5`{?Mo&W)j>=#m?bnF;zYWGz z0;Sm@sZ(ff$5V?^Y%x>PL&L*+F+OK8P|{&_;{_MlEl6bN|JUtcSy4?*LVyInh^8vG&4>*K0{!b-L86teBR&^ZRqD6r(H$Kf zw$;=nT&|&dr>=9f?wIS@ za!_g^-1NJ5?>>=f=c&Qs|I^++|L^ReD~`k8fHfeMRy0JA1OsNkES@^3VRiPApD1!a zUtM{_w&PBa3n*(b!YT;GNa+4Nxkb&yB!?RXn+o&eoy^6*J~r5 z>%G@(Y{RyeKb&|!VAUuh@9yqosqfPN*P?%aFSKo8Xk?@q-o?Pa$HUPP zw|ZJ$M&@DLm#1l^r7F0APe@7e+xUcqlQ%al75C)u51=d@Z%@n6;x^9P#@>D&6}wTu zg!hn$+w%9$$-@TcN*!Wh?#B!ISMThOG{h(!QGE2uC;p5IizG{(u#|fG}KpmlQZG=P0*((qt9IG zFLa;P^_xXbOlZModDdK$mlwLcY*JiOVs2$c#ljNS*eJ@*!J()cl_vRLlULT$lNS-W z(bUvrw5@}$QHvR}ZK7b=^NpTB-lbAOR@R_ML+oq}E(aUK^=Mc3DC2|MR$0_ESIH zgH>rC97Y#1>`;e8BOZ)=+NNZRmB9j@4=>(BJsa%n`@Pf|vv+YRu-A-Z-{$EH^$;5B zN>AdgABBZqVaJBSv;+kQ@3{&b9v|CpjUxVHR>NT_q?A>I#K)V46vOen=Lnw)ZJMMdHJ`}VJ1y&8iK+ZoM7K@#?+eDZ;x zXh<0H3%MKitrvNUT}}_ZEiKW+6)Rl#$lcuBkZlll=={MM!PBQygrV5z{_R~|Z?~r^ zp^HOLYj!{4$Ii|U3UH0hRmof_(3fi>pj$2H%|@`X;w62*9wDRY{xE1D?(v=5ejxEK z8&ANoO1cMq%*CPyX&ni{19rlY7heRz^J!qw33?nCy6osR&a=iNr1ws7;aQ;8)#$MV zrGAZy5?52hYcTi<3k61~ySp3kOlP9g$F-fEm8{Gp?C8oCqlPW#62qpu&nldpoJz~f z7o4jVaqq-*ws@UPOL7vnY&jpCZxk%p^4|Av(y6fhaIsUL{P(YsmX?-Sw3N5EP-0>t z^aI24$(G}gqdy@IyWvuw*4N*ebjP<$+SJSO5>peSmspH4tL5uR!&b5`Pl%5v+&?&g z@qa2VE{^!{Z*Gq4S@B4}BR5=DFK6gRwRa8{O3dUnH>W=4{avIf@{)h%+ z^d#JjxG%th5Ejc5^v`j|E@>!Rw-z`{(d8u!=m~CXgh;)d#n4rap|Qc`dAqed1zm%`7J;2fG9y0IW{LaqKsR>+{ou`ZFRx6mmDK4H|Aj z$^UdQvE}>_YlJftfCMJ0AK(<&_wb7L&d#)q48LE$xFe1xM@RizjGke}hTse^tu)`{ zsEUO;3mryE(t($lQKRsM%KH)xMx(wT!ERbw@fy8=kHnw-wB-eagM)_zc2QA9_DiqO zpYk{F?y>@q`p)kZgs<-z?oa9+YntRHkwh@H?Y2rdmWxUgf6sNhJhQUA3iG{g<^=EX zK$xnclzqX5(U%nR{AkAIA6TI|5e-h*?OTrH1i1yS0`f410PMc=+W7*U1pK8IQfF7Q z+xU?9xpNm~{*xz9a`o%=y42y80eeZRtK;vv5{oOsw#}C&Tj@?{^LvO7k8R7#IAUYz z|1Ly8L3L19Ki`}X;OlUXIxLH^dLLmx0OWYVc31!0VAM_<@#}tnqmpU<@z%)5_aQ#B zEqvc@W^E-}=sKSzti>o-qsSM5pguo8Z{7i1Tyr=e17ol^_9jePq`uomE+Wx9 zFu;mYt26*^HsHetJMFAjzt=Z>+kbbwrUkUyWK>iL3t}W+w-dUsU)1dMw4Am!k(HH| z^j|B-m5s@MpXBUpH2dtSO*gwRD$eXQM*Pf%OS66c8p9P25AGX8p@yeKsK> z=1<%tVam$NZ`MuoNuTEocfjO~6&nY;3M92y;UI6pLp9_+eV)aH6TZYpP# zM7tTdI&uM^AMniL;$q*_RM$e7u)K*00`mgKO&PbAc`>lpsc1xabZksYULO7I>&uA1%(wE{c~*Va&57G z{Tf%r#Y7^X%zpmS&>|oO;j`NZXN8knn-gWhG|8UdfY#1C^W@u{Y)>O@e8N4Pyq(k1 zsJ@-^H<*awY_}#s)Ai##?e*2V-34@U3SL`l|c4{kdS~gY3K?P5_hf3 zFRIENhSLJu+Slk zNm%euu`O@Nv~@D4nS`YH`$=7w=@wY7vPRZZ&Zz`Mezm!|A#J2S#QseUzkj3T<>f(x zqt27G$$VEnDgMaK>nV-=_aD{O+KYKC`gJ;DowE+Tg2aOEDxQ+pPoexDo}9>t)DH)= zaNWc)oVe%fh<^78MjPVo(aQ}@HuDNa$54lPQtZIiRT9GF^BK;^i?Y_vk5nENiq;VM z9=(_<)OsB0Scw0j7Be?V!O}-8P4Tn8KXT5XnmRf=4~&k|ykcB8TH14^Wnwbk``ZHL z?|oNS7Xzw;0EwxqYwXB~n$YRoEnrfo9qM(W^71`gmvyiP0k^aq!w%4_^Q>HRfJOvY z!wzdRH#cXSrsaSB{OqW}CluHle(mgz>2S8{XlVg?`2B^2g~P+czW#m@AD?MAN<1Wk)+sHi2e!0HXVb0;nM z*74S4(YPfiH+S)yHgu>-Z_cej5Ya1$0V2GimjYD{$}at2RAl7bo+~WEHj|S6 z!NHeKPF&FTi;CEQw>Qo=`Gc&2xW2f$yr5%Xi178!>EppRx*jKSPTpQrI-$i0r!9&N zk`Tpp|E8_W5m0FOMd$hp!cdW#wDrhLE69kWb<4o-k2t{?%OQf7#5+Yif>%_}Z@xQ0aN@ ziC0xs#m2^xF)(bz=XFX^HiAyz24Ydm4zlN$m6cK3W#!~7?9Mj<6;tF_%FM|LhJ_K~ zny*>%86*rnMa(1qA4MqiCVn6G35~tIn&W~r>^L@UX zXLfOasq<5l;h@fsx==uF%=&e*y1Gx1+&Rf(+Yt7bx-J$2G5R2kpRR7=DnlNr!?bv| zjj|$cYisN3>gpUYIu%t_yPet-C1quYX~Emy6h=0j4_6hRxk`koIysePc~|#WN0}8( zT5^vR==VZ7tpu>=T%8C&FFYwp9)uH6*ba}56qS@j&CTgDGBO+;9VrvFv+jP%&Sp35 zA^v4G`MKNV4QzwsV`qRvbOJZ4owpjT%iok~ncLW8R#n9V&anO4`~XI~VkOB#tSAn^ zLRxlqh0xKeOZ}{ZhsSdOz$?=(vs_$Z{hXm*7sq=;$_mgnA6Ep5$z=JF3sRIcu_CYH@z|ao=CeEx+IL z0q8HcNk5dVR&53Yd`2e`_!CYc2}6U)vs+rq34jt-C+rK5zW`7+G>8Df3y?^I8X*6j zw*fF*nBXzN@bK{9j1&|Fa|?@?s;Y|RXB3HM%4c~J^Rkp29Lim@Yn4CwovWu8Un#3b zg@okf^o>qWcf&5_bK6g+HO#sunQnxO{xunfIR|}Bo(yv?#h;{cBeBxhnw8+~Y@OHU zc!@vkLd7P23W{6Fy)?_|k`fXGBqY=XXs89^rlvI7<<`d2RZgiiM~+CuKjX1u2SYkB zIjN}nIHpq^0FkDqCg9-UFB-RQ-GYk9!N&GXC;ri+M=*I$ zbrQ#%j%nuf&Vpl1Q62(W=i2lPlYkxnX@;&%=Ag#78@>OYMH^ZdmlfVPhE=#MGK1d` ze_V7d4hyROtlI{uQsJT+mT4hb%1n)0SF$iEEH}7q<`|hF7ZPIP^t!sFTldi6{%v`Q zfh8R5cd|sp#Yw|I9ad{;2MQEBuCUvHJY$DS@VV}i!M?<*Pk~_o{WV^T$;8;W+bnSd zZx7@qq{fu;`hMnM;OtIjYU<7U*)ZVyusO%Z{$wd<0%dA>R|eJJ4K^ca7nZYi(<JG7-lZbmB53I)=}s|rKP3NHGmVqig)+$ zXt@+S2^zQLo^jt`+OFOa+O9p(oAJ5!is;lmaiv24N9wW32K<`OVHpj;KEk6FggFq^ z{yH(@rRC+x=`cWb2Y3v`9<+AgC|`*A8iO7)hy{-M`rh1o{#~9XJ6lOtSI)vBN2)Di zO4Ro%VZmzCYW40AorPAd=%rIyMZE6Da)1k$bZMEnMP<$dW|tOk*&P~Ci%0c5LZRFA zR~U}w>w4}5>(|VOVlH>Z-I6`FlqWVfH8DX}Ou2)J^U#8l5>VJdku@De$dP;h))2R7 z33`kK_pn@oUo@I=b^w_9nV)Y06`8Kw?sV7icypX$Dg}6m<#@4QC=pLkbT~g?LL=|} zVRik-%uTOpo1u~Kxz_?u5z6qNFR#DMtGEG0_?Pu`2PppSJw5VnH5?oqboBI%J0}MN zGA#XLW3*zmplaaI$g_GJTduj+-vLRLy|V9r@;B%ksr^6Kh-GsBBD4o#>qbZ8!2&Wc zAj@Ki-&R$^^@AO0*DH8pP^NXZX)4?ag(!)gMt8*_`GOek4NyX%$B8vk)km18E?Sad zg7AxqiVABLln5x4z-Ez{E8tfuZOuW?^Yn}i*x#-P-8_LUM(_%5n;FKDOzjQ#!)l?| zeH0hfRaLZ%j5QR!QQD0wBLl*%Jvh2Q}B1Y zdyT{B-d)N!^hxA>z|~NUHrdpJH#F3`d!$&Zs!yIi<;t)?N^a0PK;`FNcr>wOU*vu1 z4wcEe>H&aoEzZS?>AnPUq>BA-E%}O$h{u|eg+&2(h;^i4roxWmWY(wNT+iCT;63b- z2Qf9_upFItW|*3%=4}g|x3sqFF07$2DOHu`sWDVmRtg;Uy=2s>crCX6S@apa&fpE`A3?U>615zX`X-5m@0k;SpW~0a_+$eQGNCV5CZR zL++JJZ;~L$>Gjg_77C6T8=WXfM1cZ~X4kz|bT{;`O_`Qv@!JO_roGhIfk@>8$}i}1 z3jhFa-@F06NQ4&G2$UK|{krb}PJ)7hkZQE4>6?=A`*%Mg8bqO`073()m{YE4&5>Gj z{v6kLJDP``m)Er|iJ|<{k7P@dbO*EV?SyO+4BA{8t?%B+=&E+(Rkk}>{~9YxUy2>I z8vBJXuOL?Y&OMp_f~Y=Id%1Ndi{1?DzBkId-KwpGHB>=a|F#7~C@-nYCDvG^eD;(X zX44(32b=om12L|L{gQGmJcu+H7!VX9JPK=Tr&S1XsMD@zp-|YB40DFo)CeG9VaGz! zm)u;&kvwhx(T&HG>)YGQr+W+PUQ-3pAhLkwE{oL*RRlOD)?pUzWd%4}&>$noCvm1X zQ8MKdQ_IU;S`8{y%*_FgHgX^(`2-D-}#O+FENs-Lp3!jp9CTH2WW|$I+~UCRPdW7@Ms7xgOYJGE31}`qaa?wg==Yr z$w*)C2z!K=hKd`Eh~R#H>OKzapvchf!jIBlJoo7+V>=kki_I4(P3njXB) zQA#b4O<^%Ux##8{JOp(-&|paA;tjtY=n|>T??C2+28@qa!@L`SS;}Y&_Fq5da%f0!mN+bg^9>231Q*Q&SooKZoV66p#+#MzLru{!N3|SL<=| zEjl`S=yFSbo5ObS;rXgqq|9_0ZC38PX{&rWiixbC2Fkpb_y@Ne3i>7aV-X84gk~Qf~vI^n^ukP{F80*Z0Nlp#I#PQF2jiDf+PKNRZJ!?zebV3~ zMmH?#QPCD8K#NbE!O1&Rsa$GZ0i6|kJqprn2rqsI>TcfM7b*pVx6F>#Z8;ugW0x=4 z^3pOhbKgl`ub+NbHZV2CIPxT{O%v!6R8zn`=_6SZ7J8`XauU}X0ayKB`#0IOd(D>p zqcLyC(C%h6f5+w9$kN$yKO=lp%rRxD#UF;|A^eG1wmT)lNS8VRYv}&%1nX6yVaZkr zkuWiGD7am`EG{&ayr!?#Q2m=q%gO@PBC9TJp?QqfBgeEZnGL zJjm~%6O+Lv|M$-m*@Qak){*GvE5$RNSep6Lkwm6XSvz{dqNg0XNc(ct|f3Qow4Vwe$eMcuHU4`p-xx2}vMX_^p zN0)jBro$G}zg$;Ojqyd8e}C@s<>_;0TO?H2ne7Gt5B%5BGPBpb#LJ*50hGhSjOhpl zhWw|u*L1$oFBeE;rNfGRf`mueN7IEDE@%5osZ%-LPrrQmLY=pehL)S*cSXlW7=jtx z7V)srjP5)-6VpLX*-k63B9S}DesGW1@~4)OV%(=4y4EA#?(DB?c1qj5hN`Mq4_Ds4 zFc3bx#%Ok@`8ZwrDLQAc=YZphSmxaZ`-NrqkPPC`Xj7xz7|OC1+gkEw<;v%2{XesW z%fwQZb#%HEy!UZ{+M8Qj6nIYV|Mn<<(^kfhBANXcoKC7E7)-Fl)t=TabMJ`uNI>fUBvQsAz|H5 z>czAO;yvqZZkL6=&Ll#=w}=3hz(tegcZ{`h%honj`}_N2HEt!eot7c21vxo5q3R*m z%I^K z4O2y>d3BW*P#@T10(8rn2!sSwi_2S?>tzZX^2vzv1cbSzhDI~~PM)D*_|t@e+w(G* z4=K~@M3f}CSnrjYD>qp7>)m&G;W^i2#3uWQS4q6WLd(A4iCkg|Yfq+s5)S>@soK#I zE=6t6Wg8v}WrG5s0A>alYdn|H&1$(>Fg0W(VS}Ti zZAkW!eDkuJK|LS3AxFfTok95vPUBso_JbM1X4R;?&gK2g`tp#*F7Nwwcf(75eDNie zxvwWqfpOsFaWZ^7Hd!)c)0VNCcF<9lG0~3wJ`O87FwXYQke`43^;U2=Pt@o^3lHDIN=Fvjn*YE{wz`qCKE)< zF{`VF{;fevsxig#)5KxjzbQs2_2e*`{l2_h;RudQrBP3$4E9yl(z_t5wOd#@_>9{` zRr((r3sB@6Cxp5Yid4WP|KZzQl3^&5C+guNnfAE{RY8_Kl4=8 zYG!68)Id6BW&||!kPx(ifdSbQKUfyXG>(L%WESuh&>SO-*oV8BhEYTYIbq+fZEsWa z@WcQJ140&z&jKdIYsZKL>8_(Au-|@Jj*EiMWKIU&C@npGRa(Kv1iik8B?1+eYB%X9 z2G|0NK7UR%v(#4=QB|Z4xxyyT6y9`2bni;h(?^Jg#35E?l{yI99~p*V?aB*l=9JT&RfNB3`+}4je*XLcyxYG?1jG=42*BF+PZz?1KdkiieT{AUrIiN(EO2s^ z&?TJuNeKv$;+W@d!#yJu6kE^&kzp|jiO*({-&Xl~gkXb!6bKun$o=SDIJyg@%?^$y zZGy?=Il2#kr$J^63@GTSMYWF^)V@YXJ4+@L@znk>HRWw@w;kZ%l<4@u`_VYBRdv5a zAXi%ht%&=6y)ab`-hqqin;6cQeTn>XpWNw3EBQkW5~hwRJ@xLi+%=ElaZGMqumids z@kz`^iya3fHV8`eu2eg)5GI5I7KB+uMyJBpKqP0>t2vDy83se6xNmS^0I*B+78%tb zJ6I~kil7yS48Jpm8HSro@;cT8QxG=qTad58FS56{7gHB17!4lXNVL05OG^WhpOu|m z6xjED=Rt8Dd_{4^fEFX_rnz^^8%Lx57^H}rn(rMQucoYdAOVZ!XV|;1b+c6U_-Wb#a^+HpKVGwwxhE z5j?nt+X=I#QRjK~)W>=X8|(GMV6Pfy+#%O&okNU`vYdDc#N?OmY>{-E4tD?a9t*_G zk}Solj-Ro7<5YF@YQZa7UL3#Dvk2xBg;nx;LL_ddp-KdGG1z;t)u~E{S%*2MaG4_f zKD4SD#3AOwkGVAal8nKn<>g|>H6<`1#NQi&vj>9&>9NJ^k^Y$(>kg`4lUuMuX8JQ2 zsMK5kQ)>ey(nNK@*x_^DBmlDvCgA>!@4%3t*d`^B0GYxIZW+2IxR-+eg)PW6^#>w5 z@rOAfC{OUDY*wbY4wr76gj5hEC>d||01L3TLiBxev6rx7{;E+AZ*sL$;qa5zwPe$nVRnI#`EEQ24}eo z+Rowj7rZ;V1~T>57ZQV|kx`u{#XT5L`6*v|i%2v%$>Pay+Hl9Cn_xq8Z-4TdG zlb`iL3KUjP&wugO8YE$DjxS+GYuBym~!z!l@S{4=>aI_i_iYiB(EDI2wzzJ(>aqw~j#P5>zUwplnyPhD`R>()1<{EHwbGPnzpFEdO7P2b# z%z;Q)mE&4zv>B2|CFYfv$HeG+#{r>x;-k$;n30n5;rcB3dLHB!b*l_0c93h3yWtKq z%A?D}D;V1b9w?EqmzN;Omd7DcGq3?KjVr?95Rb=x$#27kE;QA=>C2cG^lRbqk%Vtrzt>6uh{nY_b<|5)VHGJCE`4OMvaU6*~l1Ofd!dNsjg`yj8}C;lEczAB1ViMCY%=wOScpb!R<<@9%@h zGfF*)y=2P~^l<_<1-#EZa4J^xPA+j!{anH3$toxSJog#$K%l*dy&DF3GloTfx%Omc z0s07X2e2PsTtb%4YQm8LawhRy7Q8-J0$`pPVfI0`2SN}QBe^LMF$D<{0+W!_x_{fu z+IqP;5GR#>sI2s{U%LseP_lyTBPeBiBic5wilH7=n4jwufM5aR=6x|an@WocLMqRU z>&F*lzd=7~Z*OPQBm_#cIawa&GV7%txe5b-R2{{G@!Fq%Tg<+#i*co-%9RzN2he9@ zv;Y?G!ij?X4%m@U2;^N{$}6sp{I|ViWcOqk>C>ufLX$hYyIa;AgBUTqyi#8O;l!}c z70W6pNlk5B6hT=9tph5NHyR|1m5^mx4q-J@_awNBI@?jA2ofQ zq?X@%uiXxCFPj!34!)31#3|>!4t+d^h{I22?(62n$d4OIP;uuTu5#LW|L$KdKiziF zqZ$Uok)01q=PPd2I?RlC524S)e15H};`bCH1#C?lB+5#VUSFRKfKK8#D0S}S!fi2J zl9quX!R`_y0)g|@w9T=ik5ID055{L^dVpxTLSVdEN{}!V^u0zv0~O;C-NF^GM4T^D zQBip=b0ixAV+NrOR5vi{p*w)V`O@24$h%&6$wonSdmo3$Qi~BOErP;^jK;ANKv=s7 zS_l$30)Pfl+bmv!4D&}>Sroi8n?hVvR10*;Zpa&*1ZrnzCCOL|!UHhJFk}$~>!oag zhK~0k+C4}Uei>=#f!p`i%xpD?Nmltz+FIrMx%*@BXOI?TT|A(#nl_T&6Bwk^60dn8%dA`#(FwofC{3-T1r`BpvDoEPW z3JT!5_yQ|{spD9 zs10~^h3))Jm>T0A*S{8mX37drIP_Lp(L!_L3V8GsAUX#o*Vp9aWZYqI2%ka-%x`o9 z>BjwASFbk$ZEENX7g!3JN$#)I%4?|ZJT25>vdm^SHnd|7)qQz*$2TOzpXSbYX^~{* zxhCWC2C*Q#pIQ4|s?$`~{vq9S`J9W0kCom6u@swZ+D8afXS_n!-@2$t_Juz74rwsr zx!UDlz(a+oHFz}?&~VYv(Sy#YYpXOtodYW$X>N^1%H-3cB7W8E}yRNiWw{FC^s#`9XCnr~uKs0ZJV-#g%~!8F2mwpr(*vV)6+3 zH$5X%Q&Ce>Qd4tQZTr1)fb<^jWB7NQR4-Q^!xg|druNMOXtWr*i)YgG`4RcumkKn) zVVP`U+W0Rn3&0kKf(w)L*SQ)Benspn8DfIf=yLBw>Z%nhZX%HAQOMn=V}C`z>H>`q z3M5;v4e<}qPC%^hP74!yB_i@+3?U>1nNQ(=O~N&)E{dq<-8Mft7#Kn|HO+sv(JKD3`DqVp8;z^cOpostY$7ovCuNV(y&Y{Wv1T&S!-AGT~-C>WJeRgkMS@2My#n%QpxKe@ z!F|I~7R#45Lk75xwM0Wv_w3ZzSiu}lRVx*elK$rd;GD$!)Nt^{qLyC{ENFOsy#xNk z<;U>2Nbw&ocY0bOb>_gI2&T(-`OMh1nhCEutI1!K1;5Ks&sT&_D#Oaq+q;_}`F6JL zQqLeZ@~#XOL!OmDHs1MFY5vh#1u|-|K14S$G11JIM7!wzFSw{M;>OpyU24Kz+Ei)}h!g?R zO#Z`t`0p^MJx>0y@usuBHj{^-!ttx9AB=dNZTXS~HX9VlF?bK*fKTS2TX)&CDL;aA zL#q<~LfrlUnkpjz_ZH6z=5^LMKM-wYrKJPcsyKqGuBJ>%6g4#=WPy|(8z&JS_8}kT zFQ1?Peg^o>;T@E!zZ`*bdI%4c#=*DWCD>?<)Bardg`?n!{l9H7r?fU!hgD>-6cYz*+ zTtc%=e`ZvOXukHkgyCqO-_jB=2)`pl_#X!sir<1d`v3=Df8Z zR`Ki3oI3I?5s;upSSe*LH$7fiWPdDnp;9sL)opVJ5E^j2zfcCY*k`rK&te7k|4>MW zFICYxJ388e;hauZrlMA=_qb=vSy@Bl54cX_bzaZm$iQ!tlE75ZhhD?$>jft6<&#CBo6gDOR4kR`pqPI6aKmoiU4R5jmLgnAh)^vj%Adsj4`ol4 ztpqt1a5OS{(H_e6K!>p+4K&CRs;WLt;IT0QRn%x2ZcBraS_^R#QZ=HtTQah#O+5+j z-G+87?Xbn4on34*D+GWMM1@BMHTyvVb1u0*GG(7DD-YR^A~X>!R_4Qu`Ptoq4zi5d4c-3%^6dILskeh=8 zN2Wru3D|j?Gqnl&SNky>Y7LQ7+jvziR{12Edg5*)&2BEi_t@2a2wJS2M0zd_q?3zh zrg>@#&br~)(K2LMLcV+n;;R7m+2K8l-R@)n)dp%2rRL1}tO4sEWF7&k@U2ZT9#12b z1jS7*xrMy)8Em7cfEQ}qIN->PS$r!fhLG=*zG>}Pt3Y$?-cl~c1|Ezt#8E)((epY| zRqR^7JeiHT_wNg?V+$&`PjM_qVl0Oo-zcrvz3z=9GrzI1MVC#tWHaxxJb5rE0Ynk= zJ4&SwcO~$IL6EjHks@5@9%O421dmj{ZA_V2g@uM9k8Odr+x*>$-cX@*=&^VTgpOa3 zy+@eCDG_+B#b`bxB_MUzmQzp{|2A-A`$Q$**^3Cy)YZ@0pdyrU{UDx#^iTVx<$W;b zLV0Gs!X1|N2{QbyB^atmVU;y{sM5vsTAKEfkmzGljNv9)vxMO$@!>!B;{Ko(F3lS~ z;WWLebcaNLpf&*B`?p9VYzR+Hen*1EAwDsY$t7CMK2f9EIWG%SDO*xf@?QPL^bTMI zQKiZ;F^g&18td{&$}tEn;SW zE7P~NO0U6@O}@EH!2q-u6%N_^XmqdY3B?4WsDzd7#Z>)fdnl^Q>TRdgRWc$v!(BL4 z*}?~V7LY!;JAeM%2kQ#j8yumNg8u*E#S4wwP&F;5tD?9pMy7T@(?f2!RrqQ_xEK=Y z%K5HFoTt$C!4&}qA4F3*r}3j82lt_B<_-uu0c;*QLV8H=ArBCU-IWzIMsSU=-;*TA zg0cdl59me6)HcNXGV>nV5Ti(Ki;1W+eyw~^*f__)swb?PGyTo7C^L7|+IILJOT*Z> zbmvq!MqTLZf0A>|RnOE4g^VtL4$tJ{1EfQ;lDaw}m~P~e0Rprj?2PmKKK-fUmJ_9c z5H_3Lon;K4`T}oR2P3>6YUBBGipVjX8!rNKU~o7ODbh}E;qd_-IBIwgAti`I^?zww z@Vvg5y+>W0)AZ3r-3|d4RT=;5vMbdbDFH;@@6**mX3= z=s(Y6c<2>d!K;d9LN6+qWt?q@t{eIhFTt}{5#>oRP2PT&@mvL);)HYcQwR!y6poCt z2=ovcrX=$@e1?2hk!%6y(tlE;0W^Pz*0qbWW4F_ELEYA<_ZEaxb6?DV7f42JG(Nq5 zdkjnuWcUOQl4ivd|Ar%Kk|30U-asyB4ebD!g!lPiG6;O(17lK_cxg7mQGb#lO+3`z zO}p6IyMd$|`((5IzWKpbIrmMxu!_q?b{RvGeCN)j)ob{L=%(JecCeSrYn|X-yv^iP zxRcJ}8$uNks%H5lVrQ1@utyInOd7CxaC`feb_c29bRoz_IH3}D{E2^$zVkUio|TG* zMpEMjoI;I&O}GE=pci>+qW^%b|9m8;pschM^3pHm<-f!ZewIG*fYJj#eX4*1;7Hlo% zQU8sAI|xs8`NA`5CVLO`F%IEylI780h~mK69#DkNhNj11&&{}JBzw2o2M!Pin>bxo7lo^6VE5);^I^ zzqx@-<|2Xg>({TzF#aZzt;Ro#(UEyJz!BsUw4)RHQ(wC8u{hSqxomP29JN*m24=Dg zmxr8UVB`t+f|og@raU*aXN|zX*TbK)O_rQSf?9y;z{2t0vfaQ0F7^y8Cy zU|1x`HU#(r&f$Q!{iH>pADgFY5n?DHR3NOXb&A`EpVF;PsPyAA`B~8H8R8zU@uN{4 zKN!&!leod7rmTd(vhIwmo<1F?e5k9nj$DcJX(|buaF7Yf!??Kmf%AcOTU%QToDU}Q zn^7D%Gw={d2Mg?1*u=3Mrsz>oQ9vBrFw=inNc#xq|DX}dr(DgNk%?NN%RQiDi*cYN zRPBV%BG5s8F2EYRjq@`Apn+mQJP^k}p|kooeSkAl@5+qIw2CITc!|;ZSgsy8bgBl) zgdm1I^3$=U(|9)sWHRK{v->LY#9}=D?#C_nvfb@^;#~lvG_?*27+s%IUqNyq2i0=) zC)^^H=yS)vR@i%Drs6?-wuoPCoFaB~ALp^JAf6s5Wob6d{G16{|5~z*dPD^ literal 0 HcmV?d00001 diff --git a/notebooks/img/two_runids.jpg b/notebooks/img/two_runids.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c2e5ba40622eca181d495fca59b1e685ada49f29 GIT binary patch literal 75890 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 TIzwOnw~g7qYSO^@W8{ATXkk~j literal 0 HcmV?d00001 diff --git a/notebooks/makedata.ipynb b/notebooks/makedata.ipynb new file mode 100755 index 0000000..51abdd8 --- /dev/null +++ b/notebooks/makedata.ipynb @@ -0,0 +1,236 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import glob\n", + "import os\n", + "import iris\n", + "from iris.time import PartialDateTime\n", + "from iris.experimental.equalise_cubes import equalise_attributes\n", + "\n", + "DATADIR = '/project/ciid/projects/PRECIS/worksheets/data_v2/EAS-22/'\n", + "# write outputs to own directory so that can be checked before upload under ciid\n", + "OUTDIR = f'{os.getenv(\"SCRATCH\")}/cordex_inputs/'\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Make data for worksheet 4" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Prep future data (2041-2060) from ESGF CORDEX files\n", + "# Note this assumes that only want to process the REMO2015 data.\n", + "\n", + "shortnames = {'MOHC-HadGEM2-ES':'hadgem2-es', 'MPI-M-MPI-ESM-LR':'mpi-esm-lr'}\n", + "\n", + "# Make future 2021-2050 data\n", + "future_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=2041) \n", + " <= cell.point <= PartialDateTime(year=2060))\n", + "for gcmid in ['MOHC-HadGEM2-ES', 'MPI-M-MPI-ESM-LR']:\n", + "\n", + " # set a short name consistent with what used in the exercises [would it be better to use full names?]\n", + " shortgcm = shortnames[gcmid]\n", + " for var in ['pr', 'tas']:\n", + "\n", + " # find all the files to consolidate \n", + " flist = glob.glob(DATADIR + f'{var}_*_{gcmid}_rcp85_*_GERICS-REMO2015_*_mon_*.nc')\n", + " print (f'input files: {flist}')\n", + "\n", + " # merge the cubes\n", + " datacubes = iris.load(flist, future_time_constraint)\n", + " equalise_attributes(datacubes)\n", + " cube = datacubes.concatenate_cube()\n", + " \n", + " if cube.name() == 'air_temperature':\n", + " cube.convert_units('celsius')\n", + " outpath = os.path.join(OUTDIR, 'future', shortgcm + '.mon.2041_2060.GERICS-REMO2015.tm.C.nc')\n", + " iris.save(cube, outpath)\n", + " if cube.name() == 'precipitation_flux':\n", + " cube.convert_units('kg m-2 day-1')\n", + " cube.units = 'mm day-1'\n", + " outpath = os.path.join(OUTDIR, 'future', shortgcm + '.mon.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(cube, outpath)\n", + " print(f'saved file: {outpath}')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Prep baseline data (1986-2005) from \n", + "historical_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", + " <= cell.point <= PartialDateTime(year=2005))\n", + "for gcmid in ['MOHC-HadGEM2-ES', 'MPI-M-MPI-ESM-LR']:\n", + "\n", + " # set a short name consistent with what used in the exercises [would it be better to use full names?]\n", + " shortgcm = shortnames[gcmid]\n", + " for var in ['pr', 'tas']:\n", + "\n", + " # find all the files to consolidate \n", + " flist = glob.glob(DATADIR + f'{var}_*_{gcmid}_historical_*_GERICS-REMO2015_*_mon_*.nc')\n", + " flist = glob.glob(DATADIR + f'{var}_*_{gcmid}_historical_*_GERICS-REMO2015_*_mon_*.nc')\n", + " print (f'input files: {flist}')\n", + "\n", + " # merge the cubes\n", + " datacubes = iris.load(flist, historical_time_constraint)\n", + " equalise_attributes(datacubes)\n", + " cube = datacubes.concatenate_cube()\n", + " \n", + " if cube.name() == 'air_temperature':\n", + " cube.convert_units('celsius')\n", + " outpath = os.path.join(OUTDIR, 'historical', shortgcm + '.mon.1986_2005.GERICS-REMO2015.tm.C.nc')\n", + " iris.save(cube, outpath)\n", + " if cube.name() == 'precipitation_flux':\n", + " cube.convert_units('kg m-2 day-1')\n", + " cube.units = 'mm day-1'\n", + " outpath = os.path.join(OUTDIR, 'historical', shortgcm + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(cube, outpath)\n", + " print(f'saved file: {outpath}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Make data for Worksheet 5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The files needed are daily precipitation, with the two periods (historical and future) consolidated into a single file\n", + "\n", + "Note that these datasets should be saved with compression to reduce their file size. If for some reason this needs to be done during a PRECIS course, it is quicker to save them without compression using `iris.save(cube, outfile)` but the filesize is significantly larger.\n", + "\n", + "Unlike the previous PRECIS data, the memory requirements of this code are modest (probably due to the lack of rim removal meaning the data remains lazy). It does take several minutes (~5) to run each example." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Prep future data (2041-2060) from CORDEX files\n", + "\n", + "shortnames = {'MOHC-HadGEM2-ES':'hadgem2-es', 'MPI-M-MPI-ESM-LR':'mpi-esm-lr'}\n", + "\n", + "# Make future 2041-2060 data\n", + "future_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=2041) \n", + " <= cell.point <= PartialDateTime(year=2060))\n", + "for gcmid in ['MOHC-HadGEM2-ES', 'MPI-M-MPI-ESM-LR']:\n", + "\n", + " # set a short name consistent with what used in the exercises [would it be better to use full names?]\n", + " shortgcm = shortnames[gcmid]\n", + "\n", + " # find all the files \n", + " flist = glob.glob(DATADIR + f'pr_EAS-22_{gcmid}_rcp85_*_GERICS-REMO2015_*_day_*.nc')\n", + " print (f'input files: {flist}')\n", + " \n", + " # load using time constraint above\n", + " datacubes = iris.load(flist, future_time_constraint)\n", + "\n", + " # merge the cubes\n", + " equalise_attributes(datacubes)\n", + " cube = datacubes.concatenate_cube()\n", + " \n", + " if cube.name() == 'air_temperature':\n", + " cube.convert_units('celsius')\n", + " outpath = os.path.join(OUTDIR, 'future', shortgcm + '.day.2041_2060.GERICS-REMO2015.tm.C.nc')\n", + " iris.save(cube, outpath, least_significant_digit=3, \n", + " complevel=4, zlib=True)\n", + " if cube.name() == 'precipitation_flux':\n", + " cube.convert_units('kg m-2 day-1')\n", + " cube.units = 'mm day-1'\n", + " outpath = os.path.join(OUTDIR, 'future', shortgcm + '.day.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(cube, outpath, least_significant_digit=3, \n", + " complevel=4, zlib=True)\n", + " print(f'saved file: {outpath}')\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Prep baseline data (1986-2006) from CORDEX files\n", + "historical_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", + " <= cell.point <= PartialDateTime(year=2005))\n", + "# Make baseline data\n", + "for gcmid in ['MOHC-HadGEM2-ES', 'MPI-M-MPI-ESM-LR']:\n", + "\n", + " # set a short name consistent with what used in the exercises [would it be better to use full names?]\n", + " shortgcm = shortnames[gcmid]\n", + "\n", + " # find all the files \n", + " flist = glob.glob(DATADIR + f'pr_EAS-22_{gcmid}_historical_*_GERICS-REMO2015_*_day_*.nc')\n", + " print (f'input files: {flist}')\n", + " \n", + " # load using time constraint above\n", + " datacubes = iris.load(flist, historical_time_constraint)\n", + "\n", + " # merge the cubes\n", + " equalise_attributes(datacubes)\n", + " cube = datacubes.concatenate_cube()\n", + " \n", + " if cube.name() == 'air_temperature':\n", + " cube.convert_units('celsius')\n", + " outpath = os.path.join(OUTDIR, 'historical', shortgcm + '.day.1986_2005.GERICS-REMO2015.tm.C.nc')\n", + " iris.save(cube, outpath, least_significant_digit=3, \n", + " complevel=4, zlib=True)\n", + " if cube.name() == 'precipitation_flux':\n", + " cube.convert_units('kg m-2 day-1')\n", + " cube.units = 'mm day-1'\n", + " outpath = os.path.join(OUTDIR, 'historical', shortgcm + '.day.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(cube, outpath, least_significant_digit=3, \n", + " complevel=4, zlib=True)\n", + " print(f'saved file: {outpath}')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "pyprecis-environment", + "language": "python", + "name": "pyprecis-environment" + }, + "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.6.10" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebooks/py_makedata.sh b/notebooks/py_makedata.sh new file mode 100644 index 0000000..fb1c1c6 --- /dev/null +++ b/notebooks/py_makedata.sh @@ -0,0 +1,7 @@ +#!/bin/bash -l +#SBATCH --qos=normal +#SBATCH --mem=100G +#SBATCH --ntasks=8 +#SBATCH --time=00-06:00:00 +module load scitools +python3 -u /project/ciid/projects/PRECIS/worksheets/data/pp/wks5dataprep.py diff --git a/notebooks/utils.py b/notebooks/utils.py new file mode 100644 index 0000000..10b4615 --- /dev/null +++ b/notebooks/utils.py @@ -0,0 +1,162 @@ + +import io +import os +import boto3 +from urllib.parse import urlparse +from fnmatch import fnmatch +from shutil import copyfile +import iris + + +def _fetch_s3_file(s3_uri, save_to): + + bucket_name, key = _split_s3_uri(s3_uri) + # print(f"Fetching s3 object {key} from bucket {bucket_name}") + + client = boto3.client("s3") + obj = client.get_object( + Bucket=bucket_name, + Key=key, + ) + with io.FileIO(save_to, "w") as f: + for i in obj["Body"]: + f.write(i) + + +def _save_s3_file(s3_uri, out_filename, file_to_save="/tmp/tmp"): + bucket, folder = _split_s3_uri(s3_uri) + out_filepath = os.path.join(folder, out_filename) + # print(f"Save s3 object {out_filepath} to bucket {bucket}") + client = boto3.client("s3") + client.upload_file( + Filename=file_to_save, + Bucket=bucket, + Key=out_filepath + ) + + +def _split_s3_uri(s3_uri): + parsed_uri = urlparse(s3_uri) + return parsed_uri.netloc, parsed_uri.path[1:] + + +def find_matching_s3_keys(in_fileglob): + + bucket_name, file_and_folder_name = _split_s3_uri(in_fileglob) + folder_name = os.path.split(file_and_folder_name)[0] + all_key_responses = _get_all_files_in_s3_folder(bucket_name, folder_name) + matching_keys = [] + for key in [k["Key"] for k in all_key_responses]: + if fnmatch(key, file_and_folder_name): + matching_keys.append(key) + return matching_keys + + +def _get_all_files_in_s3_folder(bucket_name, folder_name): + client = boto3.client("s3") + response = client.list_objects_v2( + Bucket=bucket_name, + Prefix=folder_name, + ) + all_key_responses = [] + if "Contents" in response: + all_key_responses = response["Contents"] + while response["IsTruncated"]: + continuation_token = response["NextContinuationToken"] + response = client.list_objects_v2( + Bucket=bucket_name, + Prefix=folder_name, + ContinuationToken=continuation_token, + ) + if "Contents" in response: + all_key_responses += response["Contents"] + return all_key_responses + + +def copy_s3_files(in_fileglob, out_folder): + ''' + This function copy files from s3 bucket to local directory. + args + --- + in_fileglob: s3 uri of flies (wild card can be used) + out_folder: local path where data will be stored + ''' + if os.path.isdir(out_folder) == 0: + mode = 0o777 + os.makedirs(out_folder, mode, exist_ok = False) + matching_keys = find_matching_s3_keys(in_fileglob) + in_bucket_name = _split_s3_uri(in_fileglob)[0] + out_scheme = urlparse(out_folder).scheme + for key in matching_keys: + new_filename = os.path.split(key)[1] + temp_filename = os.path.join("/tmp", new_filename) + in_s3_uri = os.path.join("s3://{}".format(in_bucket_name), key) + _fetch_s3_file(in_s3_uri, temp_filename) + if out_scheme == "s3": + _save_s3_file( + out_folder, + new_filename, + temp_filename, + ) + else: + copyfile( + temp_filename, os.path.join(out_folder, new_filename) + ) + os.remove(temp_filename) + + +def load_data(inpath): + ''' + This methods copy the data from s3 bucket and load the data as iris cubelist. + Data is stored in data/ directory. + + input: file(s) path on s3 bucket + output: iris cubelist + ''' + if inpath.startswith('s3'): + keys = find_matching_s3_keys(inpath) + s3dir = _get_directory(inpath) + temp_path = 'data/' + if os.path.exists(temp_path) == 0: + os.mkdir(temp_path) + + for key in keys: + file = key.split('/')[-1] + if os.path.exists(os.path.join(temp_path, file)) == 0: + copy_s3_files(os.path.join(s3dir, file), temp_path) + else: + print(key, ' already exist') + files = inpath.split('/')[-1] + data = iris.load(os.path.join(temp_path, files)) + + return data + + +def _get_directory(inpath): + path = inpath.split('/') + dirpath = 's3://' + for p in path[2:-1]: + dirpath = os.path.join(dirpath, p) + return dirpath + + +def flush_data(path): + ''' + It delete the data from compute node. + + Input: file(s) path + ''' + import glob + files = glob.glob(path) + for file in files: + os.remove(file) + + +def main(): + in_fileglob = 's3://ias-pyprecis/data/cmip5/.nc' + out_folder = '/home/h01/zmaalick/myprojs/PyPRECIS/aws-scripts' + copy_s3_files(in_fileglob, out_folder) + + +if __name__ == "__main__": + main() diff --git a/notebooks/worksheet1.ipynb b/notebooks/worksheet1.ipynb new file mode 100755 index 0000000..8f08b0b --- /dev/null +++ b/notebooks/worksheet1.ipynb @@ -0,0 +1,864 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Worksheet 1: File locations and pre-processing\n", + "The exercises in this worksheet demonstrate some of the tools available for data analysis, and how to prepare CORDEX output for analysis (pre-processing). This can be time consuming for large amounts of data, so in this worksheet a small subset of data is used to easily demonstrate the steps involved. \n", + "\n", + "[CORDEX data](https://cordex.org/data-access/how-to-access-the-data/) is in [NetCDF](https://www.unidata.ucar.edu/software/netcdf/) format (a standard format in climate science) so that it can be used in post processing packages such as Python and the Python library [Iris](http://scitools.org.uk/iris/docs/latest/index.html)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "By the end of this worksheet you should be able to:
    \n", + "- Identify and list the names of CORDEX output data in netCDF format using standard Linux commands.
    \n", + "- Use basic Iris commands to load data files, and view Iris cubes.
    \n", + "- Use Iris commands to merge netCDF files\n", + "- Take a subset of the data based on a date range\n", + "- Save the output as NetCDF files.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: In the boxes where there is code or where you are asked to type code, click in the box, then press Ctrl + Enter to run the code.
    \n", + "Note: An percentage sign % is needed to run some commands on the shell. It is noted where this is needed.
    \n", + "Note: A hash # denotes a comment; anything written after this character does not affect the command being run.
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contents\n", + "### [1.1: Data locations and file names](#1.1) \n", + "### [1.2: Getting started with Python and Iris](#1.2)\n", + "### [1.3: Merge Problems](#1.3)\n", + "### [1.4 Extracting data within a specific time range](#1.4)\n", + "### [1.5: Saving data to a new file](#1.5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "## 1.1 Data locations and file names\n", + "The datasets used within these worksheets are already linked to the notebook in order to provide quick and easy access for the purpose of this training. However the commands learned in this worksheet provide useful context for future work in a linux and unix scripting environment." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**a)** Firstly, find out what location you are currently in by using the **`pwd`** command; **`pwd`** stands for **print working directory**.\n", + "\n", + "In the cell below type **`%pwd`** on a new line and then press Ctrl + Enter.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Type %pwd below and press 'ctrl' + 'enter'\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**b)** List the contents of this directory; **`ls`** stands for **list** and using the **`-l`** option gives a longer listing with more information, such as file size and modification date. \n", + "\n", + "In the cell below type **`%ls`** on a separate line then press Ctrl + Enter." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Type %ls and press 'ctrl' + 'enter'.\n", + "\n", + "\n", + "# Type %ls -l and press 'ctrl' + 'enter'.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: What is the difference between ls and ls -l? What extra information do you see? Which file was edited most recently?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + "*...Double click here to type your answer...*\n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**c)** To avoid conflicts of data when running locally, we will take a copy of the source files used in the training (this is not needed if running on the cloud, we instead download from an S3 bucket). Run the command in the following cell. It might take a few minutes to complete." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import subprocess\n", + "subprocess.run(['rsync', '-r', '/project/ciid/projects/PRECIS/worksheets/data_v2', '.'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If the command works correctly you should see the message:\n", + "\n", + "`CompletedProcess(args=['rsync', '-r', '/project/ciid/projects/PRECIS/worksheets/data_v2', '.'], returncode=0)`\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**d)** Move to the directory (i.e. folder) called `data_v2/EAS-22`. This directory contains CORDEX data for the East Asia Domain.\n", + "\n", + "**Hint:** The `cd` command stands for _change directory_\n", + "\n", + "Type your command(s) below and press Ctrl + Enter.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Type your %cd [directory-path] command below and press 'ctrl' + 'enter'.\n", + "\n", + "\n", + "# List the contents of this directory, using a previous command.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**d)** There are a lot of files in this directory! The file names contain information on the simulated date of the data they contain - you'll learn more about the naming convention for CORDEX data in another presention.\n", + "\n", + "For now, list only the files containing monthly temperature data using the following command:\n", + "\n", + "Type **`%ls tas*mon*`** in the code block below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Type %ls tas*mon* and press 'ctrl' + 'enter'.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: The asterisk character * (also known as glob) matches any string within the filename\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**e)** This still returns too many files to comfortably count manually. **`wc`** stands for **word count**; combining this command with **`ls`** allows us to count the number of items in that directory. \n", + "\n", + "In the cell below type **`%ls tas*mon* | wc -l`** then press Ctrl + Enter." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Type %ls *mon* | wc -l command below and press 'ctrl' + 'enter'\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: How many nc files are in this directory, in total?\n", + "
    How many of these nc files contain the string 'historical'; relating to the historical climate simulation? What command do you need to use to find this out?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer: \n", + "
    *Total number of nc files: \n", + "
    Number of historical nc files:\n", + "
    Command used to find number of historical nc files:*\n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**f)** To list all the files containing monthly data from a period starting 202101, we use the code **`*mon_202101-??????.nc`**\n", + "\n", + "Type below **`%ls *mon_202101-??????.nc`**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Type %ls *mon_202101-??????.nc and press 'ctrl' + 'enter'.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: The question mark character ? matches any single character\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**g)** Now move up one level in the directory tree and list the directories.\n", + "\n", + "Type `cd ..` to move up one level in the directory tree and press Ctrl + Enter to execute the command" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Type %cd .. and press 'ctrl' + 'enter'.\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: Which directory are you in now? What else can you see in this directory?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + "*...Double click here to type your answer...*\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "***\n", + "\n", + "## 1.2 Getting started with Python and Iris\n", + "

    \"python

    \n", + "\n", + "\n", + "Python is a general purpose programming language. Python supports modules and packages, which encourages program modularity and code reuse. \n", + "\n", + "\n", + "We also use the Python library [Iris](http://scitools.org.uk/iris/docs/v2.4.0/index.html), which is written in Python and is maintained by the Met Office. Iris seeks to provide a powerful, easy to use, and community-driven Python library for analysing and visualising meteorological and oceanographic data sets.\n", + "\n", + "The top level object in Iris is called a cube. A cube contains data and metadata about a phenomenon (i.e. air_temperature). Iris handles several different types of file formats, loading them into Iris cubes.\n", + "\n", + "\n", + "For a brief introduction to Iris and the cube formatting please read this Introduction page here: \n", + "\n", + "http://scitools.org.uk/iris/docs/v2.4.0/userguide/iris_cubes.html\n", + "\n", + "For future reference please refer to the Iris website:\n", + "\n", + "http://scitools.org.uk/iris/docs/v2.4.0/index.html\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**a)** First, run the code-block below to **load** a file into Iris and **print** its metadata structure.
    \n", + "\n", + "To run the code, click in the box below and press Ctrl + Enter." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%cd /home/h03/fris/code/PyPRECIS/notebooks/data_v2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "# import the necessary modules\n", + "import iris\n", + "import glob\n", + "import os\n", + "\n", + "# this is needed so that the plots are generated inline with the code instead of a separate window\n", + "%matplotlib inline \n", + "\n", + "# provide the path of your sample data\n", + "sample_data = 'EAS-22/sample_data.nc'\n", + "\n", + "# Constraint the reading to a single variable and load it into an Iris cube\n", + "cube = iris.load_cube(sample_data)\n", + "\n", + "# Print the Iris cube\n", + "print(cube)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: Can you explain how our sample data we printed above relates to this picture?\n", + "\"diagram
    \n", + "\n", + "- Is our data above a 3D or a 2D cube?
    \n", + "- What are the cube dimensions?
    \n", + "- How many grid boxes is the latitudinal range divided into?
    \n", + "- What meteorological variable does this cube represent?
    \n", + "- What unit is used for this variable?
    \n", + "
    \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Double click here to type your answer::\n", + "
    *Is this cube 3D or 2D? \n", + "
    What are the cube dimensions? \n", + "
    How many grid boxes is the latitudinal range divided into? \n", + "
    What meteorological variable does this cube represent? \n", + "
    What unit is used for this variable?* \n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**b)** Now **plot** the data for the selected variable:
    \n", + "\n", + "To run the code, click in the box below and press Ctrl + Enter." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import iris.quickplot as qplt\n", + "\n", + "plt.figure(figsize=(12,12)) # Set the figure size\n", + "\n", + "# find the edges of grid cells (Aka the boounds)\n", + "cube.coord('grid_latitude').guess_bounds()\n", + "cube.coord('grid_longitude').guess_bounds()\n", + "\n", + "qplt.pcolormesh(cube) # Plot the cube\n", + "plt.title(cube.name()) # Add plot title\n", + "plt.clim(0, 5e-4) # Set colour bar range\n", + "plt.show() # Show the plot" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Sense check the data plotted: \n", + "\n", + "* Can you make out sections of the East Asian coastline? \n", + "* How about the scale? \n", + "\n", + "As we progress through these workbooks, we'll learn how to process the data into more intuitive units and mask / add country boundaries, so it's easier to understand the information.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 1.3 Merge problems\n", + "\n", + "**a)** When using data, we want a single cube for all fields with the same standard name and sequential timesteps. `iris.load` will return as few cubes as possible, by collecting cubes from multiple files together. However, on some occasions this merge process does not give a single cube when we would expect it to. \n", + "\n", + "This section demonstrates how to deal with cases like this and make a single cube for these data." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "You can read more about iris loading behaviour here.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As an example we will load some temperature data from the [East Asia Domain](https://cordex.org/domains/region-7-east-asia/) at 25 km resolution" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# these variables form part of the standard CORDEX filename convention\n", + "domain = \"EAS-22\"\n", + "rcm = \"GERICS-REMO2015\"\n", + "experiment = \"historical\"\n", + "gcm = \"NCC-NorESM1-M\"\n", + "variable = \"tas\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's find out which of the files match the pattern above." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "root_dir = \"./\"\n", + "\n", + "path_dir = root_dir+domain+\"/\"\n", + "file_name = variable+\"*\"+gcm+\"*\"+experiment+\"*\"+rcm+\"*\"\n", + "file_list = glob.glob(path_dir+file_name)\n", + "\n", + "# Complete the print statement to see which East Asian files match the specified criteria\n", + "print()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "How many files were returned? \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Double click here to type your answer:**\n", + "\n", + "How many files were returned? " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**b)** If we try and force Iris to load a single cube we get an error:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cube = iris.load_cube(file_list)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The important part of this error is the following message: \n", + " \n", + " ConstraintMismatchError: failed to merge into a single cube.\n", + " cube.attributes values differ for keys: 'history', 'creation_date', 'tracking_id'\n", + " \n", + "Instead we will load this data with `iris.load()` and then look more closely at the data, before we fix the issues." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cubes = iris.load(file_list)\n", + "print(cubes)\n", + "print()\n", + "for cube in cubes:\n", + " print(cube.attributes['creation_date'], cube.attributes['tracking_id'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Question:\n", + "\n", + "- How many cubes are in the cube list you loaded?
    \n", + "- Are they all the same size in space?
    \n", + "- Do they have the same number of timesteps? Why do you think this is? (Hint: look again at the filenames we are loading)\n", + "- What are the differences in the attributes and do you think this is important when analysing your data?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:\n", + "
    *How many cubes are in the cube list you loaded?\n", + "
    Are they all the same size in space?\n", + "
    Do they have the same number of timesteps? Why do you think this is? (Hint: look again at the filenames we are loading)\n", + "
    What are the differences in the attributes?\n", + "
    Do you think these differences are important when analysing your data?* \n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**c)** Now let's solve this problem so we can get a single cube. We will do this using the [equalise_attributes](https://scitools.org.uk/iris/docs/v2.4.0/iris/iris/experimental/equalise_cubes.html) function from Iris." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from iris.experimental.equalise_cubes import equalise_attributes\n", + "\n", + "equalise_attributes(cubes)\n", + "\n", + "# now print the attributes of each cube\n", + "for cube in cubes:\n", + " print(list(cube.attributes.keys()))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "\n", + "The equalise_attributes function has removed the metadata which is inconsistent between the cubes. \n", + "\n", + "Question:\n", + " - Why might it be a bad idea to apply this function without looking at the data first?\n", + "\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Type your answer::\n", + "
    *Why might it be a bad idea to apply this function without looking at the data first?*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following loop is an alternative method to eliminate the mismatching attributes\n", + "\n", + " for i, icube in enumerate(cube):\n", + " del cube[i].attributes['creation_date']\n", + " del cube[i].attributes['tracking_id']\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**d)** We can now merge the data into a single cube." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cube = cubes.concatenate_cube()\n", + "print(cube)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
  • Now that we have combined multiple files into a single cube, what is the cube's shape? \n", + "
  • How does this compare with the cube_list created in 1.2e? \n", + "
  • Based on all the information you've gained about the data so far, what time period do you expect the data in this cube to span?\n", + "
  • " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Type your answers here**\n", + "* Now that we have combined multiple files into a single cube, what is the cube's shape? \n", + "* How does this compare with the cube_list created in 1.2e? \n", + "* Based on all the information you've gained about the data so far, what time period do you expect the data in this cube to span?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 1.4 Extracting data within a specific time range\n", + "\n", + "**a)** This is a lot of data, and so for now, we will cut this down to include December 1989 to November 1991 inclusive using a time constraint. Edit the code below to specify the missing end date.\n", + "(**Hint:** specify the adjacent months BEFORE and AFTER the time period you wish to keep.)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from iris.time import PartialDateTime\n", + "\n", + "print('original cube first and last dates')\n", + "print(cube.coord(\"time\")[0])\n", + "print(cube.coord(\"time\")[-1])\n", + "\n", + "time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1989,month=11) \n", + " < cell.point < PartialDateTime(year=YYYY,month=MM))\n", + "sub_cube = cube.extract(time_constraint)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**b)** Check the first and last timesteps in your constrained cube are correct:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print()\n", + "print('new cube first and last dates')\n", + "print(sub_cube.coord(\"time\")[0])\n", + "print(sub_cube.coord(\"time\")[-1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 1.5 Save data to a new file\n", + "\n", + "**a)** We will now save this data to a new file.\n", + "\n", + "Take note of the file names. Well chosen filenames can help you keep track of the contents of your files. We suggest developing a consistent syntax based on the filename patterns of the CORDEX data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "out_file_name = f'{variable}_{domain}_{gcm}_{experiment}_r1ip1_{rcm}_v2_mon_198912-199111.nc'\n", + "\n", + "save_location = root_dir + 'cordex_training/'\n", + "\n", + "%mkdir {save_location}\n", + "\n", + "print('saving file to: ' + save_location + out_file_name)\n", + "iris.save(sub_cube, save_location + out_file_name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note:\n", + "As we progress through these worksheets, keep a note of how we update the file names when making further changes to the data.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "b) Question: Use the cd and ls commands to check the NetCDF directory that you have been creating new files in.
    \n", + "\n", + "- Confirm the names of the new files you have been creating.
    \n", + "- What is the size of the concatenated file (containing December 1979 to November 1989 data)?\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# use %cd and %ls to list the contents of your new directory containing NetCDF files:\n", + "\n", + "\n", + "# use %ls -lh to compare the size of the original files and final netcdf file you saved\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + "*Size of the file written out at the end:*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "This completes worksheet 1.
    You have created pre-processed files (metdata fixed, concenated over time, extracted data in a specific time range and saved in NetCDF format).
    \n", + "In worksheet 2, you will begin to analyse these files.\n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    \"python

    \n", + "
    © Crown Copyright 2022, Met Office
    " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "pyprecis-environment", + "language": "python", + "name": "pyprecis-environment" + }, + "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.6.10" + }, + "widgets": { + "state": {}, + "version": "1.1.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebooks/worksheet2.ipynb b/notebooks/worksheet2.ipynb new file mode 100755 index 0000000..21a8572 --- /dev/null +++ b/notebooks/worksheet2.ipynb @@ -0,0 +1,772 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Worksheet 2: Using the Python Iris library for analysis and visualisation\n", + "\n", + "In this worksheet, sample CORDEX output over Southeast Asia is compared with observations for validation purposes. Validating model results by comparing with observed data is an essential step - this is the measure by which we can assess the quality of the model and it informs appropriate uses of the data.\n", + "\n", + "\n", + "Here, we validate CORDEX output driven by two different GCMs (HadGEM2-ES and MPI-ESM-LR) created with the REMO2015 Regional Climate Model. Using data from both experiments will give us two representations of present day climate and two possible climate scenarios. For more details on multimodel approaches, refer to the workshop lecture on climate model ensembles.\n", + "\n", + "The following exercises provide examples of how analysis can be undertaken as part of a model validation. The methods shown are not necessarily the only way to proceed and are intended to demonstrate the use of Iris in model validation, and provide a starting point for your own analyses." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "By the end of this worksheet you should be able to:
    \n", + "- Apply basic statistical operations to Iris cubes.
    \n", + "- Plot information from Iris cubes.
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contents\n", + "### [2.1: Inspecting the data](#2.1) \n", + "### [2.2: Converting units](#2.2)\n", + "### [2.3: Climatological mean calculation](#2.3)\n", + "### [2.4: IRIS quick plotting and visualising data](#2.4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Preamble\n", + "Run the code preamble below to import the necessary libraries for this worksheet.\n", + "\n", + "To run the code, click in the box below and press Ctrl + Enter." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Code preamble - these libraries will be used in this worksheet.\n", + "# This code block needs to be re-run every time you restart this worksheet!\n", + "%matplotlib inline\n", + "import os\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.cm as cm\n", + "import matplotlib.dates as mdates\n", + "import calendar\n", + "import iris\n", + "import iris.coord_categorisation\n", + "import iris.quickplot as qplt\n", + "from iris.experimental.equalise_cubes import equalise_attributes\n", + "from iris.time import PartialDateTime\n", + "import cartopy.crs as ccrs\n", + "from mpl_toolkits.axes_grid1 import AxesGrid\n", + "from cartopy.mpl.geoaxes import GeoAxes\n", + "from utils import copy_s3_files, flush_data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "# 2.1 Inspecting the data\n", + "\n", + "The datasets used here contain daily and monthly data from two REMO2015 runs carried out over Southeast Asia, one driven by HadGEM2-ES and the other driven by MPI-ESM-LR. The observations used for comparison are from the CHIRPS gridded observational data set (https://chc.ucsb.edu/data/chirps).\n", + "\n", + "Remember, in Iris, data are read into an object called a **cube**. A single cube describes only one variable; it is not possible for a cube to contain both temperature and rainfall, for example. A cube always has a name, a unit and an n-dimensional data array to represent the cube’s data. Additionally, the cube contains collections of coordinates. Coordinate types can include spatial information (latitude, longitude, altitude), a time dimension, or other information, e.g., an ensemble number.\n", + "\n", + "

    \"Example

    \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__a) Load the NetCDF file for the HadGEM2-ES and MPI-ESM-LR model data and the CHIRPS rainfall observation data and print the cube output__\n", + "\n", + "A cube has coordinates (e.g. time, longitude, latitude, model levels) which can be accessed with Python commands. In the following exercise we find the latitude and longitude covered by the CHIRPS data. This can be done either by printing the latitude and longitude coordinates (`.points`), noting the first and last values in the array, or in the case of the CHIRPS data, printing the cube and looking through the attributes. A similar example can be found in the [Iris documentation](https://scitools.org.uk/iris/docs/v2.4.0/userguide/navigating_a_cube.html#accessing-coordinates-on-the-cube). \n", + "\n", + "Before running the code, take a look at it line-by-line to understand what steps are being taken. Then click in the box and press ctrl + enter to run the code." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we first need to download APHRODITE data\n", + "copy_s3_files('s3://ias-pyprecis/data/APHRODITE/*.nc', 'data/APHRODITE/')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Provide the names of the directories where the netCDF model files are stored\n", + "DATADIR = 'data_v2/'\n", + "\n", + "# Load and concatenate the HadGEM2-ES model cube data\n", + "infile = os.path.join(DATADIR, 'EAS-22/pr_EAS-22_MOHC-HadGEM2-ES_historical_r1i1p1_GERICS-REMO2015_v1_mon_*.nc')\n", + "cubes = iris.load(infile)\n", + "equalise_attributes(cubes)\n", + "hadgem2 = cubes.concatenate_cube()\n", + "\n", + "# Load and concatenate the MPI-ESM-LR model cube data\n", + "infile = os.path.join(DATADIR, 'EAS-22/pr_EAS-22_MPI-M-MPI-ESM-LR_historical_r1i1p1_GERICS-REMO2015_v1_mon_*.nc')\n", + "cubes = iris.load(infile)\n", + "equalise_attributes(cubes)\n", + "mpiesm = cubes.concatenate_cube()\n", + "\n", + "# finally load the CHIRPS data and print the cube \n", + "infile = os.path.join(DATADIR, 'CHIRPS', 'chirps-v2.0.monthly.global.1981_2018.nc')\n", + "chirpsData = iris.load_cube(infile)\n", + "print(chirpsData)\n", + "\n", + "# print the first and last latitude points\n", + "print(chirpsData.coord('latitude').points[0], chirpsData.coord('latitude').points[-1])\n", + "# print the first and last longitude points\n", + "print(chirpsData.coord('longitude').points[0], chirpsData.coord('longitude').points[-1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + " Question: How many years of data does the CHIRPS dataset contain? What longitudes and latitudes are covered by the CHIRPS data?\n", + "
    \n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:*(Double click here to fill in the answers)*
    \n", + "\n", + "Number of years:\n", + "\n", + "Latitude and longitude covered: \n", + "

    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__b) Extract a subset of the data within a cube__\n", + "\n", + "Data extraction is an important function in Iris. The extraction of a subset of data is called **slicing**. For example, it could be necessary to extract data over all latitude and longitude grid points on the first time step. For more information around subsetting cubes please read the [Iris documentation on slicing](https://scitools.org.uk/iris/docs/v2.4.0/userguide/subsetting_a_cube.html#cube-indexing).\n", + "\n", + "__Using the HadGEM2-ES data, the example below shows how to subset a cube for the first and last timesteps. This method will be used later for plotting data from a cube.__ \n", + "\n", + "Work through the example below line by line then click in the box and press Ctrl + Enter to run the code.\n", + "\n", + "First, print the HadGEM2-ES cube, containing all the time steps:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Use the print() command to display a summary of the HadGEM2-ES cube\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: What dimensions does this cube have?
    \n", + " t = number of timesteps
    \n", + " y = number of latitude steps
    \n", + " x = number of longitude steps
    \n", + " Write your answer in the form `[ t, y, x ]`\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer: *(Double click here to fill in the answers)*
    \n", + "HadGEM2-ES dimensions: [ t, y, x]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: When indexing a cube dimension, you either can specify a single coordinate, e.g. 0 is the first (zeroth) item, -1 is the last item, or you can use : to include all items.
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Display the cube's **first** timestep and check the associated `time` value:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Use the print() funiction with slicing notation\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Display the cube's **last** timestep and check the associated `time` value:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Use the print() function with slicing notation\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For the analysis here, we will use data from 1986 to 2005 inclusive as used in the AR5 WG1 atlas. To do this we will use the same approach as in Worksheet 1 by using time constraints" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", + " <= cell.point <= PartialDateTime(year=2005))\n", + "hadgem2 = hadgem2.extract(time_constraint)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now apply the same time constraint to the mpiesm data to restrict to the same period" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "mpiesm = mpiesm.extract(time_constraint)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 2.2 Converting units\n", + "\n", + "__c) Convert the precipitation units from kg/m2/s (equivalent to mm/s) to mm/day__\n", + "\n", + "To convert to mm/day, we could just multiply the raw data (in mm/s) by 86400 seconds, but a clearer way is to use the __`.convert_units()`__ method with the name of the units we want to convert the data into.\n", + "\n", + "Let's do this for the __HadGEM2-ES__ historical data first and break down the steps as follows:\n", + "\n", + "* Print the units and summary statistic about the data\n", + "* Convert the unit and print the information again\n", + "* Rename the `.units` value in the cube and save it as a new netCDF file" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(hadgem2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# print the unit\n", + "print('The current unit for data is: {}'.format(hadgem2.units))\n", + "# print the summary statistic (maximum monthly precipitation)\n", + "maxpr = np.max(hadgem2.data)\n", + "print('This is an example rainfall rate (kg m-2 s-1) prior to conversion: {:f}'.format(maxpr))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Convert units to kg m-2 day-1 (same as multiplying by 86400 seconds)\n", + "hadgem2.convert_units('kg m-2 day-1')\n", + "# Print cube.units to view new units for precipitation\n", + "print(f'The new rainfall units are: {hadgem2.units}')\n", + "maxpr = np.max(hadgem2.data)\n", + "# print the summary statistic (maximum monthly precipitation) after the unit conversion\n", + "print(f'This is the same rainfall rate but now in (kg m-2 day-1): {maxpr:f}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Rename the new cube units for consistency, then save the converted cube:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Rename cube units\n", + "hadgem2.units = 'mm day-1'\n", + "\n", + "# Save the new cube as a new netCDF file\n", + "OUTDIR = 'data_v2/EAS-22'\n", + "\n", + "# Check to see if this directory exists, if not create it\n", + "if not os.path.isdir(OUTDIR):\n", + " # Make directory\n", + " os.mkdir(OUTDIR)\n", + " # Set directory permissions \n", + " os.chmod(OUTDIR, 0o776)\n", + "\n", + "outfile = os.path.join(OUTDIR, 'hadgem2-es.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + "iris.save(hadgem2, outfile)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Complete the following code block to repeat the same procedure for MPI-ESM-LR:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Print the current MPI-ESM-LR cube units\n", + "\n", + "\n", + "# convert units to kg m-2 day-1\n", + "\n", + "\n", + "# Rename the units to mm day-1. Recall that 1 kg m-2 is equivalent to 1 mm of rain\n", + "\n", + "\n", + "# Save the new cube as a new netCDF file using the `outfile` filename we've provided below!\n", + "outfile = os.path.join(OUTDIR, 'mpi-esm-lr.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 2.3 Climatological seasonal mean calculation\n", + "\n", + "__d) Calculate the 1986-2005 seasonal mean precipitation__ field for October-December (OND) from both the HadGEM2-ES and MPI-ESM-LR driven runs.\n", + "\n", + "Work through the example below line by line then click in the box and press ctrl + enter to run the code." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Set up directory for the climatology\n", + "CLIMDIR = 'data_v2/EAS-22/climatology'\n", + "\n", + "# Check to see if this directory exists, if not create it\n", + "if not os.path.isdir(CLIMDIR):\n", + " # Make directory\n", + " os.mkdir(CLIMDIR)\n", + " # Set directory permissions \n", + " os.chmod(CLIMDIR, 0o776)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# Loop through two model runs\n", + "for gcmid in ['hadgem2-es', 'mpi-esm-lr']:\n", + " infile = os.path.join(OUTDIR, gcmid + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + "\n", + " # Load the data\n", + " data = iris.load_cube(infile)\n", + "\n", + " # In order to calculate OND mean, we use the command below to add a season membership coordinate.\n", + " # The seasons can be any sequence of months, identified by the first letters of the names of the months.\n", + " # Here, we define two seasons, jfmamjjas (the months we are not interested in) and ond (October, November and\n", + " # December); the months we do want.\n", + " iris.coord_categorisation.add_season(data, 'time', name='seasons', seasons=('jfmamjjas','ond'))\n", + "\n", + " # This command extracts data for the OND season using a constraint\n", + " data_ond = data.extract(iris.Constraint(seasons='ond'))\n", + "\n", + " # The cube 'data_ond' contains data from October-December for all years. \n", + " # The command below calculates the mean over all years.\n", + " seasonal_mean = data_ond.aggregated_by(['seasons'], iris.analysis.MEAN)\n", + " \n", + " # Save the OND seasonal mean as a netCDF\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.1986_2005.pr.mmday-1.nc')\n", + " iris.save(seasonal_mean, outfile)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: What dimensions does this cube have now?
    \n", + " t = number of timesteps
    \n", + " y = number of latitude steps
    \n", + " x = number of longitude steps
    \n", + " Write your answer in the form `[ t, y, x ]`
    \n", + " Compare your answer to the answer you found in (b). Which dimensions have changed?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer: *(Double click here to fill in the answers)*
    \n", + "Seasonal mean dimensions: [ t, y, x]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__e) Calculate the 1986-2005 seasonal mean for OND from the CHIRPS observation data__\n", + "\n", + "CHIRPS is a daily high resolution (0.05 degree) data set for 1981 to almost the present day. See https://chc.ucsb.edu/data/chirps for more information.\n", + "\n", + "Follow step d) and complete the code yourself. The file name to load is: `chirps-v2.0.monthly.global.1981_2018.nc`. We've given you the infile and outfile names to make sure you load and save it in the right place for later!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we first need to download APHRODITE data\n", + "copy_s3_files('s3://ias-pyprecis/data/climatology/*.nc', 'data/climatology/')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Directory names where data is read from and stored to\n", + "infile = os.path.join(DATADIR, 'CHIRPS', 'chirps-v2.0.monthly.global.1981_2018.nc')\n", + "\n", + "# Load the CHIRPS data, only for the period 1986-2005 \n", + "chirps = iris.load_cube(infile, constraint=time_constraint)\n", + "\n", + "# convert the units to mm day^-1 \n", + "chirps.convert_units('mm day-1')\n", + "\n", + "# In order to calculate OND mean, we need to a add season membership coordinate\n", + "iris.coord_categorisation.add_season(chirps, 'time', name='seasons', seasons=('jfmamjjas','ond'))\n", + "\n", + "# Then constrain the cube just for the OND season\n", + "chirps_ond = chirps.extract(iris.Constraint(seasons='ond'))\n", + "\n", + "# Now calculate the climatological mean for this season\n", + "seasonal_mean = chirps_ond.aggregated_by(['seasons'], iris.analysis.MEAN)\n", + "\n", + "# save the seasonal mean cube as a NetCDF file\n", + "outfile = os.path.join(CLIMDIR, 'chirps.OND.mean.1986_2005.pr.mmday-1.nc')\n", + "iris.save(seasonal_mean, outfile)\n", + "\n", + "# print the CHIRPS seasonal mean cube\n", + "print(seasonal_mean)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: How would you calculate the standard deviation of mean rainfall? How about annual maximum rainfall?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer: Write the line of code required to calculate CHIRPS's (a) standard deviation and (b) annual maximum rainfall in the code block below.
    \n", + "Hint: How could you adapt chirps_ond.aggregated_by(['seasons'], iris.analysis.MEAN) from above? You can refer to the [Iris documentation](https://scitools.org.uk/iris/docs/v2.4.0/iris/iris/analysis.html) if needed." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# From chirps, calculate: \n", + "# (a) chirps_std \n", + "\n", + "\n", + "# (b) chirps_max\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 2.4 IRIS quick plotting and visualising data\n", + "\n", + "Now we will plot the output to take a first look at what climatological winter precipitation (1986-2005 OND seasonal mean) looks like for each dataset. This section provides an initial introduction to visualising data quickly using iris, for further reading and instructions please visit: https://scitools.org.uk/iris/docs/v2.4.0/userguide/plotting_a_cube.html\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**f) Plot and compare** the climatological winter preciptation over South East Asia for three datasets." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Question: Work through the code block below line by line. Think about what you expect the plot setup to look like:
    \n", + "\n", + "* Which lines of code specify the layout of sub-plots?
    \n", + "* Will the plots have a common colour scale or separate ones?
    \n", + "* What are the maximum and minimum precipitation values that will be displayed?
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Think about your answers, then click in the box and press ctrl + enter to run the code and create the plots." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# load hadgem2-es model data\n", + "infile = os.path.join(CLIMDIR, 'hadgem2-es.OND.mean.1986_2005.pr.mmday-1.nc')\n", + "hadgem_cube = iris.load_cube(infile)\n", + "\n", + "# load mpi-esm model data\n", + "infile = os.path.join(CLIMDIR, 'mpi-esm-lr.OND.mean.1986_2005.pr.mmday-1.nc')\n", + "mpi_cube = iris.load_cube(infile)\n", + "\n", + "# load CHIRPS data\n", + "infile = os.path.join(CLIMDIR, 'chirps.OND.mean.1986_2005.pr.mmday-1.nc')\n", + "obs_cube = iris.load_cube(infile)\n", + "\n", + "# Do some plotting!\n", + "# Create a figure of the size 12x10 inches\n", + "plt.figure(figsize=(12, 10))\n", + "\n", + "plt.subplot(1, 3, 1) # Create a new subplot for the model data; 1 row x 3 columns, 1st plot\n", + "levels = range(0, 22, 2) # Define the contour levels for all plots\n", + "\n", + "# Note this is where cube slicing is needed as you can only plot 2-coordinate\n", + "# dimensions with qplt.contourf, so here we have selected time[0] as there is only\n", + "# one timestep (the baseline 1986-2005 mean)\n", + "qplt.contourf(hadgem_cube[0], levels=levels, cmap=cm.RdBu, extend='max')\n", + " \n", + "\n", + "plt.title('HadGEM2-ES model') # plots a title for the plot\n", + "ax = plt.gca() # gca function that returns the current axes\n", + "ax.coastlines() # adds coastlines defined by the axes of the plot\n", + "\n", + "plt.subplot(1, 3, 2) # Create a new subplot for the model data; 1 row x 3 columns, 2nd plot\n", + "qplt.contourf(mpi_cube[0], levels=levels, cmap=cm.RdBu, extend='max')\n", + "\n", + "plt.title('MPI-ESM-LR model') # plots a title for the plot\n", + "ax = plt.gca() # gca function that returns the current axes\n", + "ax.coastlines() # adds coastlines defined by the axes of the plot\n", + "\n", + "plt.subplot(1, 3, 3) # Create a new subplot for the observed data 1 row x 3 columns, 3rd plot\n", + " # This plot will be centred and below the two model plots\n", + "qplt.contourf(obs_cube[0], levels=levels, cmap=cm.RdBu, extend='max')\n", + "\n", + "plt.title('CHIRPS obs') # plots a title for the plot\n", + "ax = plt.gca() # gca function that returns the current axes\n", + "ax.coastlines() # adds coastlines defined by the axes of the plot\n", + "ax.set_extent((65.0, 155.0, 0.0, 40.0))\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: \n", + "
    What are the differences between the following plots for HadGEM2-ES, MPI-ESM and CHIRPS? Note the colour bars. \n", + "
    Where are the largest daily rainfall rates distributed?\n", + "
    Why do you think this is happening?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer: *(Double click here to fill in the answers)*
    \n", + "\n", + "What differences do you see between the three plots?\n", + "\n", + "\n", + "Location of greatest rainfall\n", + "
    *HadGEM2-ES*: \n", + "
    *MPI-ESM*: \n", + "
    *CHIRPS*:\n", + "\n", + "\n", + "What is happening and why?\n", + "\n", + "\n", + "How could comparison be made easier?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "This completes worksheet 2.
    You have covered converting units, created seasonal means and visualised your results.
    \n", + "In worksheet 3, you will start to consider more advanced analysis, extract regional means, look at annule cycles, work with ensemble data and produce difference plots.\n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    \"python

    \n", + "
    © Crown Copyright 2022, Met Office
    " + ] + } + ], + "metadata": { + "instance_type": "ml.t3.medium", + "kernelspec": { + "display_name": "pyprecis-environment", + "language": "python", + "name": "pyprecis-environment" + }, + "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.6.10" + }, + "widgets": { + "state": {}, + "version": "1.1.2" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/worksheet3.ipynb b/notebooks/worksheet3.ipynb new file mode 100755 index 0000000..3919b84 --- /dev/null +++ b/notebooks/worksheet3.ipynb @@ -0,0 +1,1054 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Worksheet 3: Comparing models and observations for the historical period\n", + "\n", + "In the last worksheet we started to undertake basic data analysis and visulisation in python using Iris. This worksheet picks-up where we left off and introduces us to more advanced data analysis. This worksheet ends with an extended exercise to start you thinking about coding more independently." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "By the end of this worksheet you should be able to:
    \n", + "- Extract specific regions of interest from large datasets
    \n", + "- Apply more advanced statistical operations to multi-annual data.
    \n", + "- Produce your own data processing workflow.
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contents\n", + "### [3.1: Region extraction](#3.1)\n", + "### [3.2: Mean annual cycle calculation](#3.2)\n", + "### [3.3: Comparing models and observations](#3.3)\n", + "### [3.4: Climatological mean and annual cycle for an ensemble](#3.4)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Preamble\n", + "Run the code preamble below to import the necessary libraries for this worksheet.\n", + "\n", + "To run the code, click in the box below and press Ctrl + Enter." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Code preamble - these libraries will be used in this worksheet.\n", + "# This code block needs to be re-run every time you restart this worksheet!\n", + "%matplotlib inline\n", + "import os\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.cm as cm\n", + "import matplotlib.dates as mdates\n", + "import calendar\n", + "import iris\n", + "import iris.coord_categorisation\n", + "import iris.quickplot as qplt\n", + "import cartopy.crs as ccrs\n", + "from mpl_toolkits.axes_grid1 import AxesGrid\n", + "from cartopy.mpl.geoaxes import GeoAxes\n", + "from utils import copy_s3_files, flush_data\n", + "\n", + "\n", + "# Provide the names of the directories where the netCDF model files are stored\n", + "DATADIR = 'data_v2/'\n", + "\n", + "# CHIRPS dir\n", + "CHIRPSDIR = os.path.join(DATADIR, 'CHIRPS/')\n", + "\n", + "# Directory name where processed data is stored \n", + "HISTDIR = 'data_v2/EAS-22/historical'\n", + "\n", + "# Directory name where climtology data is stored \n", + "CLIMDIR = 'data_v2/EAS-22/climatology'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 3.1 Region extraction \n", + "\n", + "If you have an area or region you want to focus on, you can extract data for the region of interest. This example works through how to constrain your cube by latitude and longitude.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**a) Extract the area** around Bangkok for each of the three datasets, by specifiying latitude and longitude coordinates" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: Sort these jumbled values into the correct latitude and longitude extent for Bangkok, then enter them into the code block below so that they can be used to extract CHIRPS precipitation data over the city. \n", + "
    14.5\n", + "
    99.5\n", + "
    100.5\n", + "
    13.5\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Solution:**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Enter the ordered latitude and longitude coordinates for Bangkok here:\n", + "# lon=( , ) # longitude (East - West extent)\n", + "# lat=( , ) # latuitude (South - North extent)\n", + "lon =\n", + "lat =" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Run the code block below to extract the specified lat, lon coordinates from the **CHIRPS** dataset:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# load CHIRPS data\n", + "obs_cube = iris.load_cube(CHIRPSDIR + 'chirps-v2.0.monthly.global.1981_2018.nc')\n", + "\n", + "# Note that the CHIRPS data are on a regular grid (unlike the model data) so real latitudes and longitudes are\n", + "# used to define the region around KL (more on this in section 2.6)\n", + "obs_cube_BK = obs_cube.intersection(latitude=lat, longitude=lon)\n", + "\n", + "# save the constrained cube to directory\n", + "outfile = os.path.join(CHIRPSDIR, 'chirps.mon.1981_2018.BK.nc')\n", + "iris.save(obs_cube_BK, outfile)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: Recall that CORDEX uses a rotated pole grid for these simulations, so coordinates in the rotated pole frame of reference are required to correctly extract Bangkok from the model data.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__b) Extract the area around Bangkok for HadGEM2-ES and MPI-ESM__ driven simulations. To do this we must specify the **rotated latitude and longitude coordinates**. \n", + "\n", + "To convert the true Bangkok coordinates onto the rotated pole frame of reference, we need know the latitude and longitude of the pole in our rotated pole coordinate system. We can find this from the model cube:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load the HadGEM2-ES model cube data as need grid information from it\n", + "infile = os.path.join(HISTDIR, 'hadgem2-es.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + "hadgem2_cube = iris.load_cube(infile)\n", + "\n", + "pole_lat = hadgem2_cube.coord_system().grid_north_pole_latitude\n", + "pole_lon = hadgem2_cube.coord_system().grid_north_pole_longitude\n", + "print(f'Pole Latitude: {pole_lat}')\n", + "print(f'Pole Longitude: {pole_lon}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Iris includes a function to help us convert between coordinates in a rotated and non-rotated coordinate frame. We can use this to convert our non-rotated Bangkok coordinates:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "lon=np.array([99.5, 100.5])\n", + "lat=np.array([13.5, 14.5])\n", + "rotated_lons, rotated_lats = iris.analysis.cartography.rotate_pole(lon, lat, pole_lon, pole_lat)\n", + "print(f'Rotated Longitudes: {rotated_lons[0]:.2f}, {rotated_lons[1]:.2f}')\n", + "print(f'Rotated Latitudes: {rotated_lats[0]:.2f}, {rotated_lats[1]:.2f}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can run the code below to constrain the HadGEM2-ES and MPI-ESM data to Bangkok in rotated pole coordinates: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Constrain the cube area over Bangkok (BK).\n", + "# CORDEX EAS-22 uses a rotated grid, so the co-ordinates required are different to real world coordinates.\n", + "\n", + "for gcm in ['hadgem2-es', 'mpi-esm-lr']:\n", + " # Directory name where data are read from and stored to\n", + " infile = os.path.join(HISTDIR, gcm + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + " \n", + " # Load the baseline precipitation data using the BK_constraint - the command below\n", + " # loads the data into a cube constrained by the area chosen\n", + " data = iris.load_cube(infile)\n", + "\n", + " # All grid cells whose longitudes and latitudes lie within the limits shown will be selected.\n", + " data_BK = data.intersection(grid_longitude=rotated_lons,\n", + " grid_latitude=rotated_lats)\n", + "\n", + " # save the constrained cube\n", + " outfile = os.path.join(CLIMDIR, gcm + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.BK.nc')\n", + " iris.save(data_BK, outfile)\n", + " print(f'Saved: {outfile}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: How many grid cells are in the newly constrained Bangkok file?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Answer:**\n", + "*Write your answer here...*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 3.2 Mean annual cycle calculation\n", + "\n", + "Average over a given area (e.g Bangkok) to calculate multi-annual monthly mean values. \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**c) We now calculate monthly mean fields** for 1986-2005 for each of the twelve months for the Bangkok area." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: To accurately find averages over latitudinal areas, we must account for changes in the \n", + " distance between lines of latitude. These changes make the areas of grid boxes smaller as we move towards the\n", + " model pole. Iris provides a tool to help us do this: iris.analysis.cartography.area_weights(). Find out more in the Iris documentation here\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for gcm in ['hadgem2-es', 'mpi-esm-lr']:\n", + " # Set up the path to the data\n", + " infile = os.path.join(CLIMDIR, gcm + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.BK.nc')\n", + "\n", + " # Load the data extracted around Bangkok created in previous step\n", + " data = iris.load_cube(infile)\n", + "\n", + " # Add monthly coord categorisation to the time dimension coordinate\n", + " iris.coord_categorisation.add_month_number(data, 'time', name='month_number')\n", + "\n", + " # Calculate monthly mean values\n", + " monthly_mean = data.aggregated_by(['month_number'], iris.analysis.MEAN)\n", + " \n", + " # due to a limitation in Iris remove the 2D 'True' lat and lon coords\n", + " monthly_mean.remove_coord('longitude')\n", + " monthly_mean.remove_coord('latitude')\n", + "\n", + " # Find latitude weights\n", + " monthly_mean.coord('grid_longitude').guess_bounds()\n", + " monthly_mean.coord('grid_latitude').guess_bounds()\n", + " grid_areas = iris.analysis.cartography.area_weights(monthly_mean)\n", + " # Calculate area averaged monthly mean rainfall\n", + " monthly_mean = monthly_mean.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN, \n", + " weights=grid_areas)\n", + "\n", + " # Save the area averaged monthly mean data\n", + " outfile = os.path.join(CLIMDIR, gcm + '.mon.mean.1986_2005.pr.mmday-1.BK.nc')\n", + " iris.save(monthly_mean, outfile)\n", + " print('Saved: {}'.format(outfile))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**d) Plot the BK area averaged monthly mean precipitation** amount in mm/day for the HadGEM2-ES and MPI-ESM driven runs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for gcm in ['hadgem2-es', 'mpi-esm-lr']:\n", + " # Load the model cube\n", + " inpath = os.path.join(CLIMDIR, gcm + '.mon.mean.1986_2005.pr.mmday-1.BK.nc')\n", + " print(inpath)\n", + " cube = iris.load_cube(inpath) \n", + " # Quick line plot for each cube \n", + " qplt.plot(cube.coord('month_number'), cube)\n", + " plt.title('BK area averaged ' + gcm + '\\n monthly average of daily rainfall')\n", + " ax = plt.gca()\n", + " ax.xaxis.set_label_text('Month Number')\n", + " ax.set_xlim(0.5, 12.5)\n", + " ax.set_ylim(0, 16)\n", + " plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: Considering the plots of HadGEM2-ES and MPI-ESM-LR data, note down their approximate values in mm day-1 for the following features: \n", + "\n", + "- Which month experiences the most rainfall? (also note the amount)\n", + "- If a second rainfall peak exists in another season, note the month and amount\n", + "- Which month experiences the least rainfall? (also note the amount)\n", + "\n", + "What comparisons can be made about these two datasets?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + " \n", + "HadGEM2-ES\n", + "- Most rainfall: *month, amount*\n", + "- Secondary peak of rainfall: *month, amount*\n", + "- Least rainfall: *month, amount*\n", + "\n", + "MPI-ESM-LR\n", + "- Most rainfall: *month, amount*\n", + "- Secondary peak of rainfall: *month, amount*\n", + "- Least rainfall: *month, amount*\n", + "\n", + "How comparable are these datasets? How are they different?
    \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**e) Find the multi-annual monthly means (1986-2005) over the BK area for CHIRPS observations** by following the same methodology as above in step d). As before we've given you the input and output files names." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load the BK extracted data created in previous step\n", + "infile = os.path.join(CHIRPSDIR, 'chirps.mon.1986_2005.BK.nc')\n", + "\n", + "\n", + "# Add monthly coord categorisation to the time dim coordinate\n", + "\n", + "\n", + "# Now calculate monthly means\n", + "\n", + "\n", + "# and change units to mm/day from mm/month\n", + "\n", + "\n", + "# create the area averaged monthly mean of daily rainfall\n", + "\n", + "# Save output\n", + "outfile = os.path.join(CLIMDIR, 'chirps.mon.mean.1986_2005.mmday-1.nc')\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: Plot the CHIRPS observations, compare with the HadGEM2-ES and MPI-ESM-LR driven REMO2015 runs. What are the differences between the observations and models; in which months are the differences greatest?\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Complete your plotting script here\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + "*Write your findings here...*\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 3.3 Comparing models and observations\n", + "\n", + "In Section 2.4 we saw how to plot model output on individual maps, but in order to do a rigorous comparison, **spatial model and observation fields must be on the same grid.**\n", + "\n", + "**You should regrid to the coarsest resolution grid.** For the data used here, the observations have the coarsest resolution so we will regrid the model data onto the observation grid.\n", + "\n", + "Recall that the REMO2015 model data are on a grid known as a **Rotated Pole** coordinate system. The idea is that the \"real\" north pole in the Arctic is shifted such that the equator relative to our rotated pole then runs through the centre of the regional model domain." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**f) Regrid the multiannual OND mean model** fields onto the observations grid.\n", + "\n", + "Here we use the `regrid` method to regrid the target cube. Here we will use linear interpolation. First, load in the data.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# load HadGEM2-ES\n", + "infile = os.path.join(CLIMDIR, 'hadgem2-es.OND.mean.1986_2005.pr.mmday-1.nc')\n", + "hadgem2_model_cube = iris.load_cube(infile)\n", + "# load MPI-ESM-LR\n", + "infile = os.path.join(CLIMDIR, 'mpi-esm-lr.OND.mean.1986_2005.pr.mmday-1.nc')\n", + "mpi_model_cube = iris.load_cube(infile)\n", + "# load \n", + "infile = os.path.join(CLIMDIR, 'chirps.OND.mean.1986_2005.pr.mmday-1.nc')\n", + "obs_cube = iris.load_cube(infile)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Before we can regrid any data, both the model and observation datasets must have a **specified coordinate system**. \n", + "\n", + "In this case, CHIRPS's coordinate system is missing from the original netCDF file, but the observations are on a regular longitude-latitude grid so the correct coordinate system is [WGS84](https://epsg.io/32600/). \n", + "\n", + "In the code below, we define the WGS84 coordinate system and then apply it to the x- and y-axes (i.e. longitudes and latitudes) of the observations. \n", + "\n", + "The coordinate system used by the model (the rotated grid) is already defined.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# Define WGS84 projection for obs data\n", + "wgs84 = iris.coord_systems.GeogCS(semi_major_axis=6378137.0, inverse_flattening=298.257223563)\n", + "\n", + "# Apply WGS84 to obs cube\n", + "obs_cube.coord(axis='x').coord_system = wgs84\n", + "obs_cube.coord(axis='y').coord_system = wgs84\n", + "\n", + "# Print out and compare the two coordinate systems\n", + "print(obs_cube.coord_system())\n", + "print(hadgem2_model_cube.coord_system())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The next few lines of code **regrid the model data from rotated pole to the regular grid used by the observations**. \n", + "\n", + "From the plots created in section 2.4, we know that the area covered by CHIRPS data is larger than the EAS-22 model domain. Hence, the **extrapolation mode** is set to `mask` so that any grid cells on the CHIRPS grid which do not overlap with model grid cells are masked `off`; otherwise, the model data would be interpolated and would produce misleading results.\n", + "\n", + "Note also that as CHIRPS is a near global data set, we take a subset of the data over our region of interest.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Note: When working with data arrays masks can be extremely useful. Masks are an array of boolean values matching the shape of the data arrya, where a particular condition is met. These boolean arrays can then be used to hide or show parts of the dataset, given the value of the mask. You can see more examples of masks here \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "lon = (60., 150.)\n", + "lat = (10., 50.)\n", + "\n", + "obs_cube_sub = obs_cube.intersection(latitude=lat, longitude=lon)\n", + "\n", + "# Regrid the climate model data onto CHIRPS grid\n", + "hadgem2_regrid = hadgem2_model_cube.regrid(obs_cube_sub, iris.analysis.Nearest(extrapolation_mode='mask'))\n", + "mpi_regrid = mpi_model_cube.regrid(obs_cube_sub, iris.analysis.Nearest(extrapolation_mode='mask'))\n", + "\n", + "# Save HadGEM2 output\n", + "outpath = os.path.join(CLIMDIR, 'hadgem2-es.OND.mean.1986_2005.pr.mmday-1.rg.nc')\n", + "iris.save(hadgem2_regrid, outpath)\n", + "print('Saved: {}'.format(outfile))\n", + "\n", + "# Save MPI-ESM output\n", + "outpath = os.path.join(CLIMDIR, 'mpi-esm-lr.OND.mean.1986_2005.pr.mmday-1.rg.nc')\n", + "iris.save(mpi_regrid, outpath)\n", + "print('Saved: {}'.format(outfile))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: Now that the cubes are all on the same grid, what differences do you see?
    Complete the code template below to help answer this question.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Hint:** You need to (i) load the NetCDF files, (ii) plot the CHIRPS and model data again (as in section 2.4) to compare them visually once again." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Directory name where data is read from\n", + "indir = os.path.join(DATADIR, 'EAS-22', 'climatology')\n", + "\n", + "# load HadGEM2-ES downscaled model data\n", + "\n", + "# load MPI-ESM-LR downscaled model data\n", + "\n", + "# load CHIRPS data and extract region\n", + "\n", + "# Do some plotting!\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Answer:**\n", + "\n", + "_Write your findings here..._" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**g) Find the difference between the model and the observation OND multiannual mean** fields and plot maps to view the differences\n", + "\n", + "To find differences, now that the model and observations are on the same grid we can simply subtract the model data from the observations. \n", + "\n", + "There is a subtract function within Iris but it cannot be used here. The model cubes contain extra coordinates which are not present in the obs cube; Iris requires all coordinates within the cubes to match exactly." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Make sure units are the same\n", + "obs_cube.units = hadgem2_regrid.units\n", + "\n", + "# Make recieving cube\n", + "hadgem2_obs_diff = obs_cube.copy()\n", + "mpi_obs_diff = obs_cube.copy()\n", + "\n", + "# Replace data with the differences\n", + "hadgem2_obs_diff.data = hadgem2_regrid.data - obs_cube.data\n", + "mpi_obs_diff.data = mpi_regrid.data - obs_cube.data\n", + "\n", + "# Plotting\n", + "plt.figure(figsize=(12, 10))\n", + "plt.subplot(1, 2, 1) # Create a new subplot for the first differences, 2 rows, 1 column, 1st plot\n", + "\n", + "# Only plot the region containing data. We use the intersection method to do this.\n", + "qplt.pcolormesh(hadgem2_obs_diff[0].intersection(longitude=(90, 135), latitude=(-20, 32)), \n", + " vmax=10, vmin=-10, \n", + " cmap=plt.get_cmap('RdBu')) # Note this is where cube slicing is needed as you can only plot 2-coordinate\n", + " # dimensions with qplt.contourf, so here we have selected time[0] as there is only\n", + " # one timestep (the baseline 1986-2005 mean)\n", + "\n", + "plt.title('HadGEM2-ES - obs') # plots a title for the plot\n", + "ax = plt.gca() # gca function that returns the current axes\n", + "ax.coastlines() # adds coastlines defined by the axes of the plot\n", + "\n", + "plt.subplot(1, 2, 2) # Create a new subplot for the model data 2 row, 2 columns, 2nd plot\n", + "qplt.pcolormesh(mpi_obs_diff[0].intersection(longitude=(90, 135), latitude=(-20, 32)),\n", + " vmax=10, vmin=-10,\n", + " cmap=plt.get_cmap('RdBu'))\n", + "\n", + "plt.title('MPI-ESM-LR - obs') # plots a title for the plot\n", + "ax = plt.gca() # gca function that returns the current axes\n", + "ax.coastlines() # adds coastlines defined by the axes of the plot\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Questions: We have now created difference plots; to more easily validate the model(s) directly against observations. \n", + " \n", + "- Why has the data over the oceans disappeared?\n", + "- Which of the two model datasets (HadGEM2-ES and MPI-ESM-LR) has the greatest wet bias? In which region? \n", + "- Are there any areas in HadGEM2-ES or MPI-ESM-LR with a strong dry bias? Roughly what is the extent of this bias (in mm/day)? \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answers\n", + "- The data over the oceans has disappeared because [...] \n", + "\n", + "- The greatest wet bias occus in model [...], in region [...] \n", + "\n", + "- A strong dry bias exists in model [...] in region [...] (roughly [...] mm/day drier than CHIRPS observations). \n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 3.4 Climatological mean and annual cycle for an ensemble\n", + "\n", + "So far data from two GCMs downscaled with the REMO2015 RCM have been analysed. In this section we will add data from an extra RCM (REGCM4) and an extra GCM giving 6 runs in total. We will also make use of the CRU observational data set. \n", + "\n", + "The CRU data are a monthly global land-only dataset (1901-present) at 0.5 degree resolution. Nine variables are available, including mean, min, max temperature and precipitation. For further details please see: https://crudata.uea.ac.uk/cru/data/hrg/ \n", + "\n", + "This gives us an ensemble of 6 GCM-RCM pairs:\n", + "\n", + "* RCM REMO2015 downscaling:\n", + " * HadGEM2-ES\n", + " * MPI-ESM-LR\n", + " * NorESM1-M\n", + "* RCM REGCM4-7 downscaling:\n", + " * HadGEM2-ES\n", + " * MPI-ESM-MR (note medium resolution not low resolution)\n", + " * NorESM1-M\n", + "\n", + "And observational datasets:\n", + "\n", + "* CHIRPS\n", + "* CRU\n", + "\n", + "Taking an ensemble approach allows us to account for a range of uncertainty in the model projections.\n", + "\n", + "Write a series of scripts to do the following:\n", + "\n", + "**h) Calculate the OND seasonal mean and annual cycle** (for the BK area) for 1.5m temperature and precipitation for CRU and CHIRPS observations\n", + "\n", + "**i) Calculate OND seasonal-mean and monthly-mean anomalies** for the BK area for the 4 additional models\n", + "\n", + "**j) Plot a series of figures** that shows 1) the monthly cycles of temperature and rainfall comparing the 6 models and the observations; and 2) the monthly differences between the models and observations" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# we first need to download CRU and netcdf data\n", + "copy_s3_files('s3://ias-pyprecis/data/CRU/*.nc', 'data/CRU/')\n", + "copy_s3_files('s3://ias-pyprecis/data/netcdf/*.nc', 'data/netcdf/')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "Here are some useful variables you might like to use in your scripts\n", + "'''\n", + "# Some helpful data locations\n", + "DATADIR = 'data_v2'\n", + "CHIRPSDIR = os.path.join(DATADIR, 'CHIRPS')\n", + "CRUDIR = os.path.join(DATADIR, 'CRU')\n", + "CLIMDIR = 'data_v2/EAS-22/climatology'\n", + "MODELDIR = os.path.join(DATADIR, 'cordex/EAS-22')\n", + "\n", + "# Some helpful model variables\n", + "GCMS = ['hadgem2-es', 'mpi-esm-lr']\n", + "RCMS = ['GERICS-REMO2015','ICTP-RegCM4-7']\n", + "\n", + "# Bangkok domains...\n", + "# ... in true lat-lon coordiates\n", + "lon=(99.5, 100.5)\n", + "lat=(13.5, 14.5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "h) Calculate the OND seasonal-mean and monthly-mean 1.5m temperature and precipitation \n", + "for the BK area, for CRU and CHIRPS observations\n", + "'''\n", + "# Load CHIRPS data\n", + "\n", + "# Load CRU data\n", + "\n", + "# Extract BK area\n", + "\n", + "# Add OND season catagorisation\n", + "\n", + "# Add monthly catagorisation\n", + "\n", + "# Extract season\n", + "\n", + "# Aggregate cubes\n", + "\n", + "# Find BK area average\n", + "\n", + "# Check and add cube metadata\n", + "\n", + "# Save cubes to CLIMDIR\n", + "# Remember to use the same naming convention we used earlier\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "i) Calculate OND seasonal-mean and monthly-mean anomalies for the BK area \n", + "for the 4 additional models runs \n", + "'''\n", + "# Load ensemble members\n", + "# Remember you need to do this for both precipitation AND temperature\n", + "\n", + "# Regrid ensemble members onto observational grid\n", + "# Remember you need to check your model and obs cubes have the appropriate coordinate systems defined\n", + "\n", + "# Extract the BK area. Remember you are now working in true lat-lon coordinates!\n", + "\n", + "# Find OND and monthly means\n", + "\n", + "# Calculate model anomalies\n", + "# Remember temp anomaly = model - CRU data\n", + "# precip anomaly = model - CHIRPS data\n", + "\n", + "# Check cube metadata consistency and save\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + " Question: What difference would it make if we first extracted the BK area and then regrid the models?
    \n", + "Which order is best for preserving data integrity?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create four figures:\n", + " \n", + " i) the monthly cycle of temperature (model and observations) \n", + " ii) the monthly cycle of rainfall (model and observations)\n", + " iii) the monthly temperature anomaly for each model\n", + " iv) the monthly precipitation anomaly for each model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "Plot 1: The monthly cycle of temperature (model and observations)\n", + "'''\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "Plot 2: The monthly cycle of precipitation (model and observations)\n", + "'''\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "Plot 3: The monthly temperature anomaly for each model\n", + "'''\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "Plot 4: The monthly precipitation anomaly for each model\n", + "'''\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + " Question: How could you summarise the ensemble variability amongst model members in a plot?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Question: How does the monthly temperature and precipitation anomaly compare to the OND average?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Question: What are the advantages and disadvantages of plotting spatial maps of temperature and rainfall variability over Bangkok?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
    \n", + "
    This completes worksheet 3.

    \n", + " You have used Python and Iris to validate the model's climatology (30 years of baseline data: 1986-2005) against observations, in order to analyse the model's capability of representing real-world trends.
    \n", + "To do so, you have:\n", + " \n", + "- calculated and plotted multiannual seasonal and monthly mean data,\n", + "- regridded rotated pole model data to a regular latitude-longitude grid,\n", + "- created difference plots to compare model data with observations, and \n", + "- written your own code to do all of these post-processing and analysis tasks with an multi-model ensemble!
    \n", + "\n", + "In worksheet 4, you will consider future model projections and their changes with respect to the baseline period (calculated in this worksheet).\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    \"python

    \n", + "
    © Crown Copyright 2022, Met Office
    " + ] + } + ], + "metadata": { + "instance_type": "ml.t3.medium", + "kernelspec": { + "display_name": "pyprecis-environment", + "language": "python", + "name": "pyprecis-environment" + }, + "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.6.10" + }, + "widgets": { + "state": {}, + "version": "1.1.2" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/worksheet4.ipynb b/notebooks/worksheet4.ipynb new file mode 100755 index 0000000..64f072e --- /dev/null +++ b/notebooks/worksheet4.ipynb @@ -0,0 +1,629 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Worksheet 4: Creating future climate scenarios and analysing climate change\n", + "\n", + "The following exercises demonstrate basic methods for analysing changes in climate, using two CORDEX-Core experiments (REMO2015 driven by HadGEM2-ES and MPI-ESM-LR) As with worksheets 2 & 3, these are examples of some of the many types of analyses that can be performed using Python and Iris." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "By the end of this worksheet you should be able to:
    \n", + "\n", + "- Calculate difference and percentage differences across cubes
    \n", + "- Plot cubes using different plotting methods and with an appropriate colour scale
    \n", + "- Create time series anomalies of precipitation and tempeature
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: As in Worksheet 2, the data used here has been processed in the same way as in Worksheet 1. The whole period has been concatenated into a single file to avoid issues with loading multiple files.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contents\n", + "### [4.1: Calculate future OND mean precipitation](#4.1) \n", + "### [4.2: Find OND anomalies](#4.2)\n", + "### [4.3: Plot precipitation and temperature](#4.3)\n", + "### [4.4: Future time series](#4.4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Preamble" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Code preamble - these libraries will be used in this worksheet.\n", + "# This code block needs to be re-run every time you restart this worksheet!\n", + "%matplotlib inline \n", + "import os\n", + "import iris\n", + "import iris.coord_categorisation\n", + "from iris.experimental.equalise_cubes import equalise_attributes\n", + "import iris.quickplot as qplt\n", + "import iris.plot as iplt\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import numpy.ma as ma\n", + "\n", + "# Some helpful data locations\n", + "DATADIR = 'data_v2/EAS-22/'\n", + "CLIMDIR = os.path.join(DATADIR, 'climatology')\n", + "HISTDIR = os.path.join(DATADIR, 'historical')\n", + "FUTRDIR = os.path.join(DATADIR, 'future')\n", + "GCMIDS = ['hadgem2-es', 'mpi-esm-lr']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 4.1 Calculate future OND mean precipitation\n", + "**a)** First, we **calculate future OND (October, November, December) mean precipitation** for the period 2041-2060 for the HadGEM2-ES driven REMO2015 simulation and the MPI-ESM-driven simulation :" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for gcmid in GCMIDS:\n", + " infile = os.path.join(FUTRDIR, gcmid + '.mon.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", + " data = iris.load_cube(infile)\n", + "\n", + " # in order to calculate OND mean, we divide the months into two seasons: \n", + " # one for OND and a second for the remaining months\n", + " iris.coord_categorisation.add_season(data, 'time', name='seasons', seasons=('jfmamjjas','ond'))\n", + "\n", + " # Extract the data for the OND season only\n", + " data_ond = data.extract(iris.Constraint(seasons='ond'))\n", + "\n", + " # Now calculate the mean over the OND season\n", + " ond_mean = data_ond.aggregated_by(['seasons'], iris.analysis.MEAN)\n", + "\n", + " # save the OND mean as a netCDF\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(ond_mean, outfile)\n", + " print('Saved: {}'.format(outfile))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: Within the loop, we have created two cubes: a seasonal OND constrained cube data_ond, and a seasonal mean cube ond_mean. Inspect the cube metadata. What are the differences? \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Use this code block to inspect the two cubes\n", + "# e.g. print(cube)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer
    \n", + " *Type your answer here...*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Note: Remember, the loop has created and saved two cubes, one for each downscaled GCM.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 4.2 Find OND anomalies\n", + "**b)** Next, we **subtract the baseline (1986-2005) mean from the future (2041-2060) mean** for OND to get the change in precipitation (or **anomaly**) from both simulations. The changes are also converted to percentages:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for gcmid in GCMIDS:\n", + " # Load the baseline cube\n", + " infile = os.path.join(CLIMDIR, gcmid + '.OND.mean.1986_2005.pr.mmday-1.nc')\n", + " OND_baseline = iris.load_cube(infile)\n", + " # Set the correct units\n", + " OND_baseline.units = \"mm day-1\"\n", + " # Load the future cube\n", + " infile = os.path.join(CLIMDIR, gcmid + '.OND.mean.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", + " OND_future = iris.load_cube(infile)\n", + " # Subtract the baseline cube from the future cube\n", + " diff = iris.analysis.maths.subtract(OND_future, OND_baseline)\n", + " # rename the cube to reflect the data processing\n", + " diff.rename('precipitation flux difference')\n", + " # Save the resulting cube\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.diff.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(diff, outfile)\n", + " print('Saved {}'.format(outfile))\n", + " # Find the percentage change\n", + " pcent_change = iris.analysis.maths.multiply(iris.analysis.maths.divide(diff, OND_baseline), 100)\n", + " # remember to change the title and units to reflect the data processing\n", + " pcent_change.rename('precipitation flux percent difference')\n", + " pcent_change.units = '%'\n", + " # And save this too\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.diffperc.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(pcent_change, outfile)\n", + " print('Saved {}'.format(outfile))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**c)** Now, repeat the calculations yourself for **temperature**. \n", + "\n", + "First, we calculate the **OND mean** temperatures. \n", + "\n", + "**Fill in the missing commands in the code block below**:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# HINT: Your filenames should have the format: \n", + "# gcmid + '.OND.mean.' + time_periods[period] + '.GERICS-REMO2015.tm.C.nc'\n", + "time_periods = {'historical':'1986_2005', 'future':'2041_2060'}\n", + "\n", + "for gcmid in GCMIDS:\n", + " for period in time_periods.keys():\n", + " # Load the data:\n", + "\n", + " # In order to calculate OND mean, add a season coordinate, separating OND from the other months:\n", + "\n", + " # Extract the data for the OND season only:\n", + " \n", + " # Now calculate the mean over the OND season:\n", + "\n", + " # save the OND mean as a netCDF ('outfile' specifies the output file name for your OND mean cube):\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.' + time_periods[period] + '.GERICS-REMO2015.tm.C.nc')\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**d)** Next, we **calculate the difference** between the baseline and future periods." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for gcmid in GCMIDS:\n", + " # Load files:\n", + " baselinefile = os.path.join(CLIMDIR, gcmid + '.OND.mean.1986_2005.GERICS-REMO2015.tm.C.nc')\n", + " futurefile = os.path.join(CLIMDIR, gcmid + '.OND.mean.2041_2060.GERICS-REMO2015.tm.C.nc')\n", + " OND_baseline = iris.load_cube(baselinefile)\n", + " OND_future = iris.load_cube(futurefile)\n", + " \n", + " # Calculate 'future mean' minus 'baseline mean':\n", + " diff = iris.analysis.maths.subtract(OND_future, OND_baseline)\n", + " diff.rename('surface temperature difference')\n", + " \n", + " # Save\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.diff.GERICS-REMO2015.tm.C.nc')\n", + " iris.save(diff, outfile)\n", + " print('Saved: {}'.format(outfile))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 4.3 Plot precipitation and temperature\n", + "\n", + "**e)** **Plot changes** to precipitation (in %) and temperature (in deg.C)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Create a figure of the size 12x12 inches\n", + "plt.figure(figsize=(12, 12))\n", + "\n", + "# Read in the percentage changes in precipitation\n", + "for n, gcmid in enumerate(GCMIDS):\n", + " prpath = os.path.join(CLIMDIR, gcmid + '.OND.mean.diffperc.GERICS-REMO2015.pr.mmday-1.nc')\n", + " tmpath = os.path.join(CLIMDIR, gcmid + '.OND.mean.diff.GERICS-REMO2015.tm.C.nc')\n", + " pcent_change = iris.load_cube(prpath)\n", + " degc_change = iris.load_cube(tmpath)\n", + "\n", + " # Remove extra time dimension using an iris utility \n", + " pcent_change = iris.util.squeeze(pcent_change)\n", + " degc_change = iris.util.squeeze(degc_change)\n", + " \n", + " plot_num = n*2 + 1\n", + " plt.subplot(2, 2, plot_num) # Create a new subplot with 2 rows, 2 columns, 1st plot\n", + " qplt.pcolormesh(pcent_change, vmax=30, vmin=-30, cmap='BrBG')\n", + " plt.title(gcmid + ' precipitation change (%)')\n", + " ax = plt.gca() # gca function that returns the current axes\n", + " ax.coastlines() # adds coastlines defined by the axes of the plot\n", + "\n", + " plt.subplot(2, 2, plot_num+1)\n", + " qplt.pcolormesh(degc_change, vmax=2.5, vmin=0, cmap='Reds')\n", + " plt.title(gcmid + ' temperature change ($\\degree$C)')\n", + " ax = plt.gca()\n", + " ax.coastlines()\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: How would you use a discrete contoured colour map to show changes in precipitation and temperature?
    \n", + " Modify the code above to use qplt.pcontourf(). Remember to choose appropriate contours.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Question: The plots show projected changes in precipitation and temperature using two models; what are the common features between the two model projections? \n", + " \n", + "What differences exist between the two model projections? Which is hotter, wetter, how does the spatial distribution differ? \n", + " \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + "*Type your answers here...*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 4.4 Future time series\n", + "\n", + "**f)** Calculate and then plot a 2041-2060 monthly **time series of precipitation anomalies** for land\n", + "points only, relative to the 1986-2005 baseline monthly mean. Do this for both the downscaled HadGEM2-ES and MPI-ESM-LR \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Read in the land-sea mask. \n", + "# The cube data array has a land fraction associated with it which we'll use to mask out ocean points.\n", + "land_fraction_file = 'sftlf_EAS-22_MOHC-HadGEM2-ES_historical_r0i0p0_GERICS-REMO2015_v1_fx_r0i0p0.nc'\n", + "land_fraction = iris.load_cube(DATADIR + land_fraction_file)\n", + "\n", + "# convert this to a binary (i.e. 1 or 0 mask)\n", + "land_sea_mask = land_fraction.copy()\n", + "land_sea_mask.data = np.where(land_sea_mask.data < 50, 0, 1)\n", + "land_sea_mask.name = 'land_binary_mask'\n", + "# apply a mask to the cube \n", + "land_sea_mask = iris.util.mask_cube(land_sea_mask, land_sea_mask.data < 0.5)\n", + "\n", + "\n", + "for gcmid in GCMIDS:\n", + " # Read in original data for baseline and future\n", + " baselinepath = os.path.join(HISTDIR, gcmid + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + " futurepath = os.path.join(FUTRDIR, gcmid + '.mon.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", + " baseline = iris.load_cube(baselinepath)\n", + " future = iris.load_cube(futurepath)\n", + " \n", + " # Apply land mask\n", + " baseline.data = ma.array(baseline.data, mask=baseline.data*land_sea_mask.data.mask[np.newaxis, :,:])\n", + " future.data = ma.array(future.data, mask=future.data*land_sea_mask.data.mask[np.newaxis, :,:])\n", + "\n", + " # the code to calculate area weights requires a single longitude and latitude coordindate - \n", + " # remove the 2D \"true\" lat and lon\n", + " baseline.remove_coord('longitude')\n", + " baseline.remove_coord('latitude')\n", + " future.remove_coord('longitude')\n", + " future.remove_coord('latitude')\n", + " \n", + " # Guess bounds\n", + " for cube in [baseline, future]:\n", + " for coord in ['grid_longitude', 'grid_latitude']:\n", + " cube.coord(coord).guess_bounds()\n", + " \n", + " # Calculate mean values over land points\n", + " baseline_land = baseline.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN,\n", + " weights = iris.analysis.cartography.area_weights(baseline))\n", + " future_land = future.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN,\n", + " weights = iris.analysis.cartography.area_weights(future))\n", + "\n", + " # Save future & baseline area averaged monthly data (time series)\n", + " baselineout = os.path.join(CLIMDIR, gcmid + '.mon.1986_2005.series.GERICS-REMO2015.pr.mmday-1.nc')\n", + " futureout = os.path.join(CLIMDIR, gcmid + '.mon.2041_2060.series.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(baseline_land, baselineout)\n", + " iris.save(future_land, futureout)\n", + "\n", + " # Subtract baseline from future\n", + " diff = future_land.copy()\n", + " diff.data = future_land.data - baseline_land.data.mean()\n", + " diff.rename('future anomaly relative to mean historical precipitation')\n", + "\n", + " # Save the area averaged monthly future anomalies (time series)\n", + " outpath = os.path.join(CLIMDIR, gcmid + '.mon.2041_2060.anom.series.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(diff, outpath)\n", + " print('Saved: {}'.format(outpath))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + " Question: Why do we only want to produce a time series for changes over land?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Answer:**\n", + "\n", + "_Type your answer here..._" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**g)** **Plot the precipitation anomalies** of HadGEM2-ES and MPI-ESM-LR downscaled" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# Read in the monthly series\n", + "hadgem2es = iris.load_cube(CLIMDIR + '/hadgem2-es.mon.2041_2060.anom.series.GERICS-REMO2015.pr.mmday-1.nc')\n", + "mpiesm = iris.load_cube(CLIMDIR + '/mpi-esm-lr.mon.2041_2060.anom.series.GERICS-REMO2015.pr.mmday-1.nc')\n", + "time = hadgem2es.coord('time')\n", + "\n", + "# Plot the two model time series' on the same figure\n", + "plt.figure(figsize=(16,5))\n", + "iplt.plot(time, hadgem2es, label = 'HadGEM2-ES')\n", + "iplt.plot(time, mpiesm, label = 'MPI-ESM-LR')\n", + "plt.legend()\n", + "plt.suptitle('2041-2060 Precipitation anomaly (relative to 1986-2005)')\n", + "plt.ylabel(f'Precipitation change ({hadgem2es.units}')\n", + "plt.xlabel('Years')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**h) Produce and plot a montly time series of temperature data** relative to the 1986-2005 baseline. As for (f) and (g) produce time series for HadGEM2-ES and MPI-ESM-LR driven runs.\n", + "\n", + "**Fill in the missing commands in the code blocks below**:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# HINT: The temperature data has filenames with the pattern:\n", + "# gcmid + '.mon.1986_2005.GERICS-REMO2015.tm.C.nc' or gcmid + '.mon.2041_2060.GERICS-REMO2015.tm.C.nc'\n", + "\n", + "# Loop over GCMIDS\n", + "\n", + "\n", + "# Read in original data for baseline and future\n", + "\n", + "# Apply land mask\n", + "\n", + "# remove the 2D \"true\" lat and lon\n", + "\n", + "# Guess bounds\n", + "\n", + "# Calculate mean values over land points\n", + "\n", + "# Save future & baseline area averaged monthly data (time series)\n", + "\n", + "# Subtract baseline from future\n", + "\n", + "# Save the data, make sure you follow the file naming convention!\n", + "\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Do some plotting...\n", + "# Read in the monthly series\n", + "\n", + "\n", + "# Plot the two model time series' on the same figure\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: Write a short summary of these two graphs. Include:\n", + " \n", + "- A description of what each plot shows\n", + "- The differences between the two models\n", + "- A consideration of the ways the climate in East Asia might be different in the future\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Answer:**\n", + "\n", + "_Type your answer here..._" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + " Question: Conside the plots we produced in Section 4.3. What additional time series analysis could you do to support your consideration of future changes to climate in the question above?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    This completes worksheet 4.

    \n", + " You have used Iris to investigate differences between historical and future changes in model output by comparing 20 years of baseline data (1986-2005) against a future period (20241-2060).
    \n", + "To do so, you have:\n", + " \n", + "- calculated and plotted seasonal mean changes in temperature and precipitation\n", + "- masked out ocean data to focus on changes over land\n", + "- calculated anomalies by comparing future data to the historical mean period\n", + "- plotted time series of both temperature and precipitation anomalies over land for two different models
    \n", + "\n", + "In worksheet 5, you will investigate climate extremes by investigating threshold and extreme climate indicies.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    \"python

    \n", + "
    © Crown Copyright 2022, Met Office
    " + ] + } + ], + "metadata": { + "instance_type": "ml.t3.medium", + "kernelspec": { + "display_name": "pyprecis-environment", + "language": "python", + "name": "pyprecis-environment" + }, + "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.6.10" + }, + "widgets": { + "state": {}, + "version": "1.1.2" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/worksheet5.ipynb b/notebooks/worksheet5.ipynb new file mode 100755 index 0000000..4a6d417 --- /dev/null +++ b/notebooks/worksheet5.ipynb @@ -0,0 +1,853 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Worksheet 5: Thresholds and climate extremes\n", + "The following exercises demonstrate analysis of moderate extremes in climate simulated in CORDEX. As with the other worksheets, these are just examples of some of the analysis that you might perform using packages such as Python and and the python Library IRIS.\n", + "\n", + "The basis of climate extremes analysis is a common set of standard extreme climate indices, defined by the World Climate Research Programme [Expert Team on Climate Change Detection and Indices (ETCCDI)](https://www.wcrp-climate.org/etccdi).\n", + "\n", + "There are 27 climate extremes indices, nicely summarised by the [Climdex](https://www.climdex.org/learn/indices/) website. You can read more about them in the frame below..." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from IPython.display import IFrame\n", + "IFrame('https://www.climdex.org/learn/indices/', width=950, height=350)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this worksheet we'll be looking at wet days, a threshold measure giving the count of days when $\\mathrm{pr} \\geq 1 mm \\;day^{-1}$, and **R95p**, the 95th percentile of precipitation on wet days ($\\mathrm{pr} \\geq 1 mm \\;day^{-1}$) in the 1986-2005 period." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "By the end of this worksheet you should be able to:
    \n", + "- Have an appreciation for working with daily model data
    \n", + "- Understand how to calculate some useful climate extremes statistics
    \n", + "- Be aware of some coding stratagies for dealing with large data sets
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contents\n", + "### [5.1: Frequency of Wet days](#5.1) \n", + "### [5.2: Calculating percentiles](#5.2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Preamble" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Code preamble - these libraries will be used in this worksheet.\n", + "# This code block needs to be re-run every time you restart this worksheet!\n", + "%matplotlib inline \n", + "import os\n", + "import iris\n", + "import iris.coord_categorisation\n", + "import iris.quickplot as qplt\n", + "import iris.plot as iplt\n", + "from iris.time import PartialDateTime\n", + "import cartopy.crs as ccrs\n", + "import cartopy.feature as cfeature\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import dask\n", + "dask.config.set(scheduler=dask.get)\n", + "import dask.array as da\n", + "from iris.analysis import Aggregator\n", + "\n", + "# Some helpful data locations\n", + "DATADIR = 'data_v2/EAS-22'\n", + "CLIMDIR = os.path.join(DATADIR, 'climatology')\n", + "HISTDIR = os.path.join(DATADIR, 'historical')\n", + "FUTRDIR = os.path.join(DATADIR, 'future')\n", + "CHIRPSDIR = os.path.join('data_v2', 'CHIRPS')\n", + "GCMIDS = ['hadgem2-es', 'mpi-esm-lr']\n", + "TIME_PERIODS = {'historical':'1986_2005', 'future':'2041_2060'}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + " Question: Thinking about climate extremes, what model averaging period should we be using for our data analysis? Why?
    \n", + " How do we identify this model avergaing period in the model output filenames?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer:
    \n", + "*Type your answer here...*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 5.1 Frequency of wet days\n", + "\n", + "**a)** Start by finding the frequency of wet days using daily data for both _HadGEM2-ES_ and _MPI-ESM-LR_ driven runs. Calculate the number of days in both the baseline and future periods which are wet days - **a wet day is defined as having precipitation >=1 mm/day**. Then calculate the percentage of wet days.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# For each day: is rainfall >= 1? True/False\n", + "# Sum over all days to get number of wet days at each grid point\n", + "# Do for both model simulations and time periods\n", + "# Then calcuate the percentage of wet days.\n", + "\n", + "# Define a new aggregator to help count non-zero days\n", + "# (This uses a dask array to reduce memory load)\n", + "# To learn more about custom aggregators see\n", + "# https://scitools.org.uk/iris/docs/v2.4.0/examples/General/custom_aggregation.html#general-custom-aggregation \n", + "\n", + "count_nonzero = Aggregator('count', None,\n", + " units_func=lambda units: 1,\n", + " lazy_func=da.count_nonzero)\n", + "\n", + "for gcmid in GCMIDS:\n", + " for period in TIME_PERIODS.keys():\n", + " # Get path to daily data\n", + " infile = os.path.join(DATADIR, period, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.pr.*.nc')\n", + " data = iris.load_cube(infile)\n", + " # Select only wet days using our custom aggregator\n", + " model_wetdays = data.collapsed('time', count_nonzero)\n", + " model_wetdays.rename(f'{gcmid} number of wet days (>=1mm/day) {TIME_PERIODS[period]}')\n", + " # Save the file\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.wetday.nc')\n", + " iris.save(model_wetdays, outfile)\n", + " print(f'Saved: {outfile}')\n", + " \n", + " # Find wet days as a percentage of total days\n", + " total_days = len(data.coord('time').points) \n", + " model_pcent_wetdays = (model_wetdays / total_days) * 100\n", + " # Add metadata\n", + " model_pcent_wetdays.rename(f'{gcmid} percentage of wet days (>=1mm/day) {TIME_PERIODS[period]}')\n", + " model_pcent_wetdays.units = '%'\n", + "\n", + " # Save the file\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.wetday.pcent.nc')\n", + " iris.save(model_pcent_wetdays, outfile)\n", + " print('Saved: {}'.format(outfile))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "**b) Calculate numbers of wet days and percentage of wet days from the _CHIRPS_ observations**. \n", + "\n", + "Climate Hazards Group InfraRed Precipitation with Station data ([CHIRPS](https://chc.ucsb.edu/data/chirps)) is a 35+ year quasi-global rainfall data set. Spanning 50°S-50°N (and all longitudes) and ranging from 1981 to near-present, CHIRPS incorporates climatology, 0.05° resolution satellite imagery, and in-situ station data to create gridded rainfall time series for trend analysis and seasonal drought monitoring. \n", + "\n", + "We'll use CHIRPS as our observational data from which to compare our CORDEX model data.\n", + "\n", + "**Fill in the missing code** to calculate the observed wet days: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load CHIRPS daily precipitation data, but only period of interest\n", + "historical_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", + " <= cell.point <= PartialDateTime(year=2005))\n", + "\n", + "infile = os.path.join(CHIRPSDIR, 'chirps-v2.0_pr_day_1981-2018_p25.nc')\n", + "\n", + "# Find number of wet days\n", + "\n", + "# Save wet days cube\n", + "outfile = os.path.join(CLIMDIR, 'chirps.wetday.nc')\n", + "\n", + "# Find number of days in dataset (number_chirps_days)\n", + "\n", + "# Find wet days as percent of all chirps days \n", + "\n", + "# Save \n", + "outfile = os.path.join(CLIMDIR, 'chirps.wetday.pcent.nc')\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + " Question: Are there any additional considerations that have to be made with daily data?
    \n", + " From a coding perspective, how does working with daily data compare to working with monthly data?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer
    \n", + "*Type your answer here...*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plotting" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**c)** **Plot** the modelled and observed **numbers of wet days** from 1986-2005. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Plot modelled and observed numbers of wet days for a common baseline period.\n", + "# Create a figure of the size desired\n", + "fig = plt.figure(figsize=(16, 4))\n", + "fig.suptitle('Number of wet days (1986-2005)', fontsize=16)\n", + "\n", + "# Set common limits for each subplot\n", + "cbar_lims=(0,number_chirps_days)\n", + "easia_domain = [70,160,10,50]\n", + "\n", + "# Load and plot the models' wet day count\n", + "for n, gcmid in enumerate(GCMIDS):\n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.1986_2005.GERICS-REMO2015.wetday.nc')\n", + " nwetdays = iris.load_cube(infile)\n", + " ax1 = fig.add_subplot(1, 3, n+1, projection=ccrs.PlateCarree())\n", + " qplt.pcolormesh(nwetdays, vmin=cbar_lims[0], vmax=cbar_lims[1])\n", + " plt.title(gcmid)\n", + " ax1.coastlines() # adds coastlines defined by the axes of the plot\n", + " ax1.set_extent(easia_domain, crs=ccrs.PlateCarree())\n", + "\n", + "# Load and plot CHIRPS wet day count\n", + "infile = os.path.join(CLIMDIR, 'chirps.wetday.nc')\n", + "obs_nwetdays = iris.load_cube(infile)\n", + "fig.add_subplot(1, 3, 3, projection=ccrs.PlateCarree())\n", + "qplt.pcolormesh(obs_nwetdays, vmin=cbar_lims[0], vmax=cbar_lims[1])\n", + "plt.title('Observations (CHIRPS)')\n", + "ax = plt.gca() # gca function that returns the current axes\n", + "ax.coastlines()\n", + "ax.set_extent(easia_domain, crs=ccrs.PlateCarree())\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question: Which of the following steps are required in order to calculate the model bias (the difference between CORDEX model output and observed data)?
    \n", + " \n", + "* Regrid data onto a common grid, to the finer (higher) resolution
    \n", + "* Regrid data onto a common grid, to the coarser (lower) resolution
    \n", + "* Convert CODREX data to a regular lat-lon grid if the simulation used a rotated pole
    \n", + "* Ensure the units are comparable (e.g not comparing K with C)
    \n", + " \n", + "Which of these steps are required when __comparing output for different time periods from the same model simulation__ (e.g. _future - baseline_ difference calculations)? \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer
    \n", + "Steps required to calculate the model bias:
    \n", + "* *type your answer here...*
    \n", + "\n", + "Steps required when comparing output from the same simulation:
    \n", + "* *type your answer here...*
    \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**d)** Calculate the **difference in modelled future and baseline** wet day frequency and also the **difference in modelled baseline and observation** wet day frequency." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load percentage of wet days data for the CHIRPS observations\n", + "infile = os.path.join(CLIMDIR, 'chirps.wetday.pcent.nc')\n", + "obs = iris.load_cube(infile)\n", + "# Add coordinate system information to facilitate regridding later\n", + "wgs84_cs = iris.coord_systems.GeogCS(6371229.0) \n", + "obs.coord('latitude').coord_system = wgs84_cs \n", + "obs.coord('longitude').coord_system = wgs84_cs\n", + "\n", + "# constrain the observations to a smaller domain \n", + "obs_sub = obs.intersection(longitude=(70, 160), latitude=(10, 50))\n", + "\n", + "\n", + "# The observed rainfall data have been created using surface rain gauges, and so are only available\n", + "# over land points. Define a mask to remove sea points. The mask is True for masked points.\n", + "mask = np.where(obs.data > 0.0, False, True)\n", + "\n", + "# Redefine the obs data array as a masked array.\n", + "obs.data = np.ma.array(obs.data, mask=mask)\n", + "\n", + "# Define regridding method\n", + "scheme = iris.analysis.Linear(extrapolation_mode='mask')\n", + "\n", + "for gcmid in GCMIDS:\n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.wetday.pcent.nc')\n", + " model_baseline = iris.load_cube(infile)\n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['future'] + '.GERICS-REMO2015.wetday.pcent.nc')\n", + " model_future = iris.load_cube(infile)\n", + " # In order to compare the modelled and observed numbers of wet days,\n", + " # the model data needs to be regridded to the CHIRPS grid\n", + " model_baseline_rg = model_baseline.regrid(obs_sub, scheme)\n", + " model_future_rg = model_future.regrid(obs_sub, scheme)\n", + "\n", + " # Find the difference between futue and baseline models\n", + " diff_model = model_future_rg - model_baseline_rg\n", + " diff_model.rename('{} change in number of wet days (>=1mm/day) 2041-2060 vs 1986-2005 ')\n", + " # Save the file\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.GERICS-REMO2015.wetday.pcent.diff.nc')\n", + " iris.save(diff_model, outfile)\n", + " print('Saved {}'.format(outfile))\n", + "\n", + " # Subtract the observed percentages of wet days from the modelled percentages\n", + " diff_mod_obs = model_baseline_rg - obs_sub\n", + " diff_mod_obs.rename(f'{gcmid} number of wet days (>=1mm/day) bias compared to CHIRPS')\n", + " # Save the file\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.GERICS-REMO2015.wetday.pcent.bias.nc')\n", + " iris.save(diff_mod_obs, outfile)\n", + " print(f'Saved {outfile}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: A cube can be easily constrained to a given domain using the cube.intersection method. More information on this (and other) Iris cube functionality can be found in the Iris Documentation online.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**e)** **Plot the percentage change and model bias for wet day frequency**. \n", + "\n", + "**First**, run the code block below to produce a series of plots showing the model bias and future precipitation change for _cahpa_ and _cahpb_ simulations.
    \n", + "\n", + "As the model domain is smaller than the observations domain, you will see that the data is plotted on a domain which is larger than necessary. \n", + "\n", + "**Next, read the Iris documentation** to learn how to use the `cube.intersection` method, then **add the necessary code** below, to constrain the plots to the model domain.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Create a figure of the size 12x12 inches\n", + "plt.figure(figsize=(12, 12))\n", + "\n", + "\n", + "# Load the model's future percentage change in wet days (future - baseline)\n", + "for n, gcmid in enumerate(GCMIDS):\n", + " infile = os.path.join(CLIMDIR, gcmid + '.GERICS-REMO2015.wetday.pcent.diff.nc')\n", + " pcent_change = iris.load_cube(infile)\n", + " \n", + " # Add in a line of code to constrain the model domain to these coordinates: \n", + " # longitude=(70, 160)\n", + " # latitude=(10, 50)\n", + " pcent_change_subset = \n", + " \n", + " # plot percentage changes on first row\n", + " plt.subplot(2, 2, n+1)\n", + " qplt.pcolormesh(pcent_change_subset, \n", + " vmax=10, vmin=-10, cmap='BrBG')\n", + " plt.title(gcmid + ' future-historical \\n precipitation change (%)')\n", + " ax = plt.gca()\n", + " ax.coastlines()\n", + "\n", + " \n", + "# Load the percentage bias (differences in precipitation between the models and obs)\n", + "for n, gcmid in enumerate(GCMIDS):\n", + " infile = os.path.join(CLIMDIR, gcmid + '.GERICS-REMO2015.wetday.pcent.bias.nc')\n", + " pcent_bias = iris.load_cube(infile)\n", + " \n", + " # Add in a line of code to constrain the model domain to these lat-lon coordinates: \n", + " # longitude=(70, 160)\n", + " # latitude=(10, 50)\n", + " pcent_bias_subset = \n", + " \n", + " # plot bias on the second row\n", + " plt.subplot(2, 2, n+3)\n", + " qplt.pcolormesh(pcent_bias_subset, \n", + " vmax=20, vmin=-20, cmap='BrBG')\n", + " plt.title(gcmid + ' model-observations \\n precipitation difference (%)')\n", + " ax = plt.gca()\n", + " ax.coastlines()\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + " Question:
    \n", + "\n", + "* Which simulation (HadGEM2-ES or MPI-ESM-LR) has better agreement with observations for wet day frequency?
    \n", + "* What is the magnitude and location of any notable wet or dry biases for each simulation during the baseline period?
    \n", + "* Summarise the projected change in wet day frequency over South-East Asia for both simulations.
    \n", + "* Given any wet/dry biases in each simulation's baseline period, what adjustments might we make to our summary of projected change from HadGEM2-ES or MPI-ESM-LR? \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Answers:**\n", + "\n", + "Which simulation has better agreement with observations?\n", + " \n", + "* \n", + "\n", + " \n", + "Magnitude and location of any notable wet or dry biases:\n", + "\n", + "* HadGEM2-ES driven run: \n", + "* MPI-ESM-LR driven run: \n", + "\n", + "Summarise the projected change in wet day frequency:\n", + "\n", + "* HadGEM2-ES driven run: \n", + "* MPI-ESM-LR driven run: \n", + "\n", + "Adjustments in light of model bias:\n", + "\n", + "* HadGEM2-ES driven run: \n", + "* MPI-ESM-LR driven run: \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 5.2. Calculating percentiles\n", + "\n", + "**f)** Calculate in mm/day the baseline (1986-2005) and future (2041-2060) **95th percentile of precipitation**. Do this for HadGEM2-ES, MPI-ESM-LE driven runs and also for CHIRPS baseline.\n", + "\n", + "This introduces some new processing challenges: **the size of the daily future data set is (probably) too large to load into memory**. Sometimes Iris can handle this for us (see [Iris and Lazy Data](https://scitools.org.uk/iris/docs/v2.4.0/userguide/real_and_lazy_data.html)), but in this case we need to manually **'chunk' the data to load and process smaller sections**. This way Iris only loads a section of the data at a time and keeps within the memory limits imposed by this computer." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Specify the number of chunks for the lat and lon dimensions\n", + "# This will give us 3 x 3 = 9 cubes\n", + "steps = (3, 3) \n", + "\n", + "# Define a helper function to extract our cube chunks\n", + "def chunks(cube, x, y):\n", + " \"\"\"Yield successive x-y sized chunks from cube\"\"\"\n", + " for i in range(0, cube.coord(axis='x').shape[0], x):\n", + " for j in range(0, cube.coord(axis='y').shape[0], y):\n", + " yield cube[:, j:j + y, i:i + x]\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now process the data:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Loop over job ID and time period\n", + "for gcmid in GCMIDS:\n", + " for period in TIME_PERIODS.keys():\n", + " infile = os.path.join(DATADIR, period, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.pr.mmday-1.nc')\n", + " model_precip = iris.load_cube(infile)\n", + " # if cube has both latitude (2d true latitude) and grid_latitude, then\n", + " # coord(axis='y') does not work, so remove unused 'latitude' and 'longitude'\n", + " model_precip.remove_coord('latitude')\n", + " model_precip.remove_coord('longitude')\n", + " \n", + " # Calculate lat-lon chunks in terms of their index\n", + " lat_chunk = int(model_precip.coord(axis='y').shape[0] / steps[0])\n", + " lon_chunk = int(model_precip.coord(axis='x').shape[0] / steps[1])\n", + " # Make list of cubes\n", + " subcubes = list(chunks(model_precip, lon_chunk, lat_chunk))\n", + " # Loop through subcubes\n", + " model_pc95 = iris.cube.CubeList()\n", + " for cube in subcubes:\n", + " model_pc95.append(cube.collapsed('time', iris.analysis.PERCENTILE, percent=95.))\n", + " # Concatenate the cube list back into one cube\n", + " model_pc95 = model_pc95.concatenate_cube()\n", + " # Give cube a helpful name\n", + " model_pc95.rename(f'R95p of {gcmid} daily rainfall {TIME_PERIODS[period]}')\n", + " # Save output\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.day.pc95.' + TIME_PERIODS[period] + '.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(model_pc95, outfile)\n", + " print(f'Saved: {outfile}')\n", + " # Tidy up memory\n", + " del model_precip, model_pc95" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + " Question: Why can we only 'chunk' in the lat-lon dimensions? Why can't we 'chunk' the time dimension?\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer
    \n", + "Type your answer here..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now do the same for the CHIRPS data. First we take a subset of the CHIRPS data to make the code run quicker - constraining the data in time to the same period as the RCM data above and in space to a similar area to the EAS-22 domain (62-185 degrees longitude, -2 to 50 degree latitude)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "historical_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", + " <= cell.point <= PartialDateTime(year=2005))\n", + "# now load CHIRPS daily data\n", + "infile = os.path.join(CHIRPSDIR, 'chirps-v2.0_pr_day_1981-2018_p25.nc')\n", + "obs_precip = iris.load_cube(infile, historical_time_constraint)\n", + "obs_precip = obs_precip.intersection(longitude=(62, 185), latitude=(-2, 50))\n", + "\n", + "\n", + "# save this to disk \n", + "subsetfile = os.path.join(CHIRPSDIR, 'chirps-v2.0_pr_day_1986-2005_p25_eastasia.nc')\n", + "iris.save(obs_precip, subsetfile)\n", + "\n", + "# save memory\n", + "del obs_precip\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Repeat the percentile calculation for the CHIRPS data\n", + "\n", + "# load subset of CHRIRPS in \n", + "obs_precip = iris.load_cube(subsetfile)\n", + "\n", + "# Calculate lat-lon chunks in terms of their index\n", + "lat_chunk = int(obs_precip.coord(axis='y').shape[0] / steps[0])\n", + "lon_chunk = int(obs_precip.coord(axis='x').shape[0] / steps[1])\n", + "\n", + "# Make list of cubes\n", + "subcubes = list(chunks(obs_precip, lon_chunk, lat_chunk))\n", + "# Loop through subcubes\n", + "obs_pc95 = iris.cube.CubeList()\n", + "for cube in subcubes:\n", + " cube.data = np.ma.filled(cube.data, np.nan)\n", + " obs_pc95.append(cube.collapsed('time', iris.analysis.PERCENTILE, percent=95.))\n", + " print(f'Done {len(obs_pc95)} chunks')\n", + "\n", + "# Concatenate the cube list back into one cube\n", + "obs_pc95 = obs_pc95.concatenate_cube()\n", + "\n", + "# Redefine the data array of pc95 as a masked array. \n", + "obs_pc95.data = np.ma.masked_where(np.isnan(obs_pc95.data), obs_pc95.data)\n", + "outfile = os.path.join(CLIMDIR, 'chirps.pc95.1986_2005.mmday-1.nc')\n", + "iris.save(obs_pc95, outfile)\n", + "print(f'Saved: {outfile}')\n", + "\n", + "# Tidy up memory\n", + "del obs_precip, obs_pc95" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "**g)** **Calculate the change in extreme precipitation** _(the difference between the future and baseline 95th percentiles of precipitation)_ **and the associated model bias** _(the difference between the baseline and CHIRPS 95th percentiles of precipitation)._\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Define WGS84 coordinate system\n", + "wgs84 = iris.coord_systems.GeogCS(semi_major_axis=6378137.0, inverse_flattening=298.257223563)\n", + "\n", + "# Load CHIRPS data\n", + "infile = os.path.join(CLIMDIR, 'chirps.pc95.1986_2005.mmday-1.nc')\n", + "obs_cube = iris.load_cube(infile)\n", + "obs_cube.coord('latitude').coord_system = wgs84 \n", + "obs_cube.coord('longitude').coord_system = wgs84\n", + "\n", + "# constrain the observations to a smaller domain \n", + "obs_cube = obs_cube.intersection(longitude=(70, 160), latitude=(10, 50))\n", + "\n", + "\n", + "# Define regridding method\n", + "scheme = iris.analysis.Linear(extrapolation_mode='mask')\n", + "\n", + "for gcmid in GCMIDS:\n", + " # First, calculate the difference between the modelled future and baseline 95th percentiles\n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.pc95.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + " print(infile)\n", + " model_base = iris.load_cube(infile)\n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.pc95.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", + " model_fut = iris.load_cube(infile)\n", + " diff = iris.analysis.maths.subtract(model_fut, model_base)\n", + " diff.rename(f'{gcmid} change in R95p (future - historical)')\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.day.pc95.diff.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(diff, outfile)\n", + " print('Saved: {}'.format(outfile))\n", + "\n", + " # Next, calculate the differences between the modelled baseline and observed 95th percentiles\n", + " # Remember, to compare the model and observations, the model data need to be regridded.\n", + " model_base_rg = model_base.regrid(obs_cube, scheme)\n", + " bias = obs_cube.copy()\n", + " bias.data = model_base_rg.data - obs_cube.data\n", + " bias.rename(f'{gcmid} bias in R95p (model - obs)')\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.day.pc95.bias.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(bias, outfile)\n", + " print(f'Saved: {outfile}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**h)** **Plot the differences in the 95th percentiles** between the models and observations, and the future changes in the 95th percentiles of precipitation from both models.\n", + "\n", + "**Complete the code block to plot the figures...**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "Note: You will probably find it useful to consult the matpltlib documentation to help you produce your plots. In this case, take a look at the plt.subplot() docs to help you arrange your plots: plt.subplot().\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# HINT: The filenames have the following pattern: gcmid + '.day.pc95.bias.pr.mmday-1.nc'\n", + "# Create a figure of the size 12x12 inches\n", + "plt.figure(figsize=(12, 12))\n", + "\n", + "for n, gcmid in enumerate(GCMIDS):\n", + " # HINT: Use the `n` variable to help arrange you plots using: plt.subplot()\n", + " # Use the matplotlib documention to help you! \n", + "\n", + " # Load and plot the model bias (model - obs)\n", + "\n", + " # Load and plot the percentage change in precipitation between future and baseline\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + " Question:
    \n", + "\n", + "* Where do we see the greatest changes in extreme precipitation for each simulation?
    \n", + "* Comment on each model's ability to reprent observed extremes in precipitation at the 95th percentile.
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Answer:**\n", + "\n", + "Greatest changes:\n", + "\n", + "* HadGEM2-ES driven run: \n", + "* MPI-ESM-LR driven run: \n", + "\n", + "Abilty to represent observed extremes:\n", + "\n", + "* HadGEM2-ES driven run: \n", + "* MPI-ESM-LR driven run: \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "This completes worksheet 5.
    You have calculated and compared climate indices for future and baseline rainfall. You have also learned an effective method for working with large quantities of daily data.
    \n", + "In the final worksheet you will combine all the techniques learned to this point, through writing your own code to post-process and analyse CORDEX simulations of extreme temperature over East Asia. \n", + "
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    \"python

    \n", + "
    © Crown Copyright 2022, Met Office
    " + ] + } + ], + "metadata": { + "instance_type": "ml.t3.medium", + "kernelspec": { + "display_name": "pyprecis-environment", + "language": "python", + "name": "pyprecis-environment" + }, + "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.6.10" + }, + "widgets": { + "state": {}, + "version": "1.1.2" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/worksheet6.ipynb b/notebooks/worksheet6.ipynb new file mode 100755 index 0000000..a2bab3c --- /dev/null +++ b/notebooks/worksheet6.ipynb @@ -0,0 +1,258 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Worksheet 6: Investigating Extremes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This final worksheet is a chance for you to put together all the techniques you have learned in the previous worksheets.\n", + "\n", + "Working with the same datasets, write some code to undertake an analysis of temperature extremes over our East Asia domain.\n", + "\n", + "You have the following datasets available to you:\n", + "\n", + "**CORDEX data** (REMO2015 dowscaling _HadGEM2-ES_ and _MPI-EMS-LR_)\n", + " * Maximum daily temperature\n", + " * Minimum daily temperature\n", + " * Mean daily temperature\n", + " * Daily precipitation flux\n", + " * Monthly mean preciptation and temperature data as used in previous worksheets\n", + "\n", + "**Observations**\n", + " * CHIRPS rainfall data\n", + " * CRU temperature data\n", + " \n", + "**Extremes indicies**
    \n", + "The full list of 27 core extreme indices are listed on the [CLIMDEX website](https://www.climdex.org/learn/indices/), or look at the summary table take from the IPCC AR5 report below. We suggest you look at one of the following:\n", + "\n", + " * Number of tropical nights (*TR*): $\\mathrm{TN}_{ij} > 20^{\\circ}C$\n", + " * Percentage of days when max temperature is > 90th percentile (*TX90p*): $\\mathrm{TX}_{ij} > \\mathrm{TX}_{in}90$\n", + " * Monthly maximum 1-day precipitation (*Rx1day*): $\\mathrm{Rx1day}_j = max (\\mathrm{RR}_{ij})$\n", + "\n", + "Speak to your instructor if you would like to look at alternative indicies.\n", + "\n", + "

    \"AR5

    \n", + "\n", + "**Table 1:** Definitions of extreme temperature and precipitation indices used in IPCC Assessment Report 5 (after Zhang et al., 2011). The most common units are shown but these may be shown as normalized or relative depending on application in different chapters. Figure, Tables and Section numbers refer to the IPCC AR5 report [here](https://www.ipcc.ch/report/ar5/wg1/)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "By the end of this worksheet you should be able to:
    \n", + "\n", + "- Build a coding workflow to undertake extremes analysis
    \n", + "- Understand the different stages of post-processing
    \n", + "- Have an appreciation of data storage and file naming issues.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Preamble" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Code preamble - these libraries will be used in this worksheet.\n", + "# This code block needs to be re-run every time you restart this worksheet!\n", + "%matplotlib inline \n", + "import os\n", + "import iris\n", + "import iris.coord_categorisation\n", + "import iris.quickplot as qplt\n", + "import iris.plot as iplt\n", + "import cartopy.crs as ccrs\n", + "import cartopy.feature as cfeature\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import dask\n", + "dask.config.set(get=dask.get)\n", + "import dask.array as da\n", + "from iris.analysis import Aggregator\n", + "\n", + "# Some helpful data locations\n", + + "DATADIR = 'data_v2/EAS-22'\n", + + "PPDIR = os.path.join(DATADIR, 'pp')\n", + "CLIMDIR = os.path.join(DATADIR, 'climatology')\n", + "HISTDIR = os.path.join(DATADIR, 'historical')\n", + "FUTRDIR = os.path.join(DATADIR, 'future')\n", + "APHRODIR = os.path.join(DATADIR, 'APHRODITE')\n", + "CRUDIR = os.path.join(DATADIR, 'CRU')\n", + "GCMIDS = ['hadgem2-es', 'mpi-esm']\n", + "TIME_PERIODS = {'historical':'1986-2005', 'future':'2041_2060'}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Step 1: Process raw CORDEX netCDF files" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Remember to:\n", + " * Select the raw data with the correct variable\n", + " * Remove incompatible attributes\n", + " * Concatenate into a single netCDF file\n", + " * Save the netCDF file so you can access it later" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "Step 1: Process the raw pp files\n", + "'''\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Step 2: Calculate the extreme index\n", + "\n", + "Remember to:\n", + " * Consider which observational data set to use for comparison\n", + " * Calculate the index for both the model data you prepared in step 1, but also the observed data\n", + " * Calculate the index for present and future model periods\n", + " * Save your index data sets as a netCDF file with appropriate metadata" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "Step 2: Calculate the extreme index\n", + "'''\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Step 3: Plot some results\n", + "\n", + "Remember to:\n", + " * Think about plotting absolute values, differences, or scaled differences. Which one communicates your message best?\n", + " * Choose an appropriate colour scale" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'''\n", + "Step 3: Plot some results\n", + "'''\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "
    \n", + "Question:
    \n", + "Which extreme index did you chose to analyse?
    \n", + "Summarise the results of your analysis of this extreme index.
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Answer
    \n", + "_Summarise the results of your extremes analysis here..._" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "This completes worksheet 6.
    \n", + "You have independently converted raw CORDEX output into files ready for analysis and used them to undertake scientific verification and analysis of a commonly recognised extreme index. \n", + " \n", + "These will be the same steps required to post-process and analyse CORDEX simulations over your region of interest, so keep hold of these worksheets to refer back to in the future. \n", + "
    \n", + "
    \n", + "\n", + "_Useful resources for future work is available online:_
    \n", + "* [IRIS Documentation](https://scitools.org.uk/iris/docs/v2.4.0/userguide/index.html) is the first port of call for IRIS usage.
    \n", + "* [Stack Overflow - Python](https://stackoverflow.com/questions/tagged/python) provides solutions for common Python queries.
    \n", + "* [Stack Overflow - Iris](https://stackoverflow.com/questions/tagged/python-iris) is a forum for queries about Iris.
    \n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    \"python

    \n", + "
    © Crown Copyright 2022, Met Office
    " + ] + } + ], + "metadata": { + "instance_type": "ml.t3.medium", + "kernelspec": { + + "display_name": "pyprecis-environment", + "language": "python", + "name": "pyprecis-environment" + + }, + "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.6.10" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/worksheet6example.ipynb b/notebooks/worksheet6example.ipynb new file mode 100755 index 0000000..639a7df --- /dev/null +++ b/notebooks/worksheet6example.ipynb @@ -0,0 +1,392 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Worksheet 6 example code\n", + "\n", + "## Example 1 Frequency of warm days (TX90P) in the future\n", + "\n", + "Calculate the baseline (1986-2005) 90th percentile of maximum temperature. Then calculate the frequency of warm days in the future (2041-2060). Do this for HadGEM2-ES and MPI-ESM-LR." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Code preamble - these libraries will be used in this worksheet.\n", + "# This code block needs to be re-run every time you restart this worksheet!\n", + "%matplotlib inline \n", + "import os\n", + "import iris\n", + "import iris.coord_categorisation\n", + "import iris.quickplot as qplt\n", + "import iris.plot as iplt\n", + "from iris.experimental.equalise_cubes import equalise_attributes\n", + "import cartopy.crs as ccrs\n", + "import cartopy.feature as cfeature\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from iris.analysis import Aggregator\n", + "\n", + "# Some helpful data locations\n", + "DATADIR = 'data_v2'\n", + "CHIRPSDIR = os.path.join(DATADIR, 'CHIRPS')\n", + "CRUDIR = os.path.join(DATADIR, 'CRU')\n", + "CLIMDIR = os.path.join(DATADIR, 'EAS-22', 'climatology/')\n", + "MODELDIR = os.path.join(DATADIR, 'EAS-22/')\n", + "GCMIDS = ['hadgem2-es', 'mpi-esm-lr']\n", + "GCM_FULL = {'hadgem2-es':'MOHC-HadGEM2-ES' , 'mpi-esm-lr':'MPI-M-MPI-ESM-LR'}\n", + "TIME_PERIODS = {'historical':'1986_2005', 'rcp85':'2041_2060'}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First calculate the 90th percentile of tsmax in the baseline and future periods for both set of downscaled GCMs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Define a helper function to extract our cube chunks\n", + "def chunks(cube, x=200, y=200):\n", + " \"\"\"\n", + " Yield successive x-y sized chunks from cube,\n", + " works for 3D Time-Lat-Lon\n", + " \n", + " Args:\n", + " cube (Iris cube): input cube to be chunked\n", + " x: size of chunks in x direction\n", + " y: size of chunk in y direction\n", + " \"\"\"\n", + " coord_names = [coord.name() for coord in cube.coords()]\n", + " if 'grid_latitude' in coord_names and 'latitude' in coord_names:\n", + " cube.remove_coord('latitude')\n", + " if 'grid_longitude' in coord_names and 'longitude' in coord_names:\n", + " cube.remove_coord('longitude')\n", + " \n", + " for i in range(0, cube.coord(axis='x').shape[0], x):\n", + " for j in range(0, cube.coord(axis='y').shape[0], y):\n", + " yield cube[:, j:j + y, i:i + x]\n", + "\n", + " \n", + "def chunks_2d(cube, x=200, y=200):\n", + " coord_names = [coord.name() for coord in cube.coords()]\n", + " if 'grid_latitude' in coord_names and 'latitude' in coord_names:\n", + " cube.remove_coord('latitude')\n", + " if 'grid_longitude' in coord_names and 'longitude' in coord_names:\n", + " cube.remove_coord('longitude')\n", + " \n", + " for i in range(0, cube.coord(axis='x').shape[0], x):\n", + " for j in range(0, cube.coord(axis='y').shape[0], y):\n", + " yield cube[j:j + y, i:i + x]\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for gcmid in GCMIDS:\n", + " for period in TIME_PERIODS.keys():\n", + " filename = f'tasmax_EAS-22_{GCM_FULL[gcmid]}_{period}_*GERICS-REMO2015*_*_day_*.nc'\n", + " model_tasmax = iris.load(MODELDIR + filename)\n", + " # solve merge issues\n", + " equalise_attributes(model_tasmax)\n", + " model_tasmax = model_tasmax.concatenate_cube()\n", + "\n", + " # 90th percentile calculation\n", + " model_pc90 = iris.cube.CubeList()\n", + " for model_data in chunks(model_tasmax):\n", + " model_pc90_chk = model_data.collapsed('time', iris.analysis.PERCENTILE, percent=90.0)\n", + " model_pc90.append(model_pc90_chk)\n", + " model_pc90 =model_pc90.concatenate_cube()\n", + "\n", + " # save to file\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.tasmax.90pc.nc')\n", + " print(f'saving to file: {outfile}')\n", + " iris.save(model_pc90, outfile)\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Calculate the frequency of warm days in the future (extreme index TX90P), i.e. the number of days which exceed the 90th percentile temperatures in the baseline. Then calculate the numbers of days as a percentage.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for gcmid in GCMIDS:\n", + " \n", + " # load daily data for future \n", + " filename = f'tasmax_EAS-22_{GCM_FULL[gcmid]}_rcp85_*GERICS-REMO2015*_*_day_*.nc'\n", + " future_tasmax = iris.load(MODELDIR + filename)\n", + "\n", + " # solve merge issues\n", + " equalise_attributes(future_tasmax)\n", + " future_tasmax = future_tasmax.concatenate_cube() \n", + " ndays = len(future_tasmax.coord('time').points)\n", + " \n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.tasmax.90pc.nc')\n", + " print(infile)\n", + " hist_90pc = iris.load_cube(infile)\n", + " \n", + " \n", + " # need to do next operation chunking data, also chunk 90th percentile \n", + " nwarmdays_future = iris.cube.CubeList() \n", + " for chunk_ft_tasmax, chunk_hist_90pc in zip(chunks(future_tasmax), chunks_2d(hist_90pc)):\n", + "\n", + " # Use np.where to identify all cells where daily temperatures \n", + " # in the future exceed the 90th percentile\n", + " assert(chunk_ft_tasmax.coord('grid_longitude') == chunk_hist_90pc.coord('grid_longitude'))\n", + " assert(chunk_ft_tasmax.coord('grid_latitude') == chunk_hist_90pc.coord('grid_latitude'))\n", + " temp_gt_chunk = np.where(chunk_ft_tasmax.data >= chunk_hist_90pc.data, 1, 0)\n", + " \n", + " # use the 90th percentile cube as a template to copy warm days data into \n", + " nwarmdays_future_chunk = chunk_hist_90pc.copy()\n", + " nwarmdays_future_chunk.data = np.ma.sum(temp_gt_chunk.data, axis=0)\n", + " nwarmdays_future.append(nwarmdays_future_chunk)\n", + " \n", + " nwarmdays_future = nwarmdays_future.concatenate_cube()\n", + "\n", + " # the sum above removes the mask - reinstate it with \n", + " nwarmdays_future.data.mask = hist_90pc.data.mask\n", + " nwarmdays_future.units = '1'\n", + " nwarmdays_future.rename('days > 90th %ile of baseline ')\n", + " \n", + " print (\"Saving numbers of warm days in the future from \" + gcmid)\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.tasmax.nwarmdays.nc')\n", + " iris.save(nwarmdays_future, outfile)\n", + " \n", + " # calculate percentage of days (see below)\n", + " nwarm_pc = nwarmdays_future/ndays*100.\n", + " nwarm_pc.units = '%'\n", + " nwarm_pc.rename('percentage of days T > 90th %ile of baseline ')\n", + " \n", + " # save percentage\n", + " print (\"Saving precentage of warm days in the future from \" + gcmid)\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.tasmax.nwarmpc.nc') \n", + " iris.save(nwarm_pc, outfile)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plot the numbers of warm days in the future and the percentage of warm days." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.figure(figsize=(12, 12))\n", + "\n", + "for i, gcmid in enumerate(GCMIDS):\n", + " \n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.tasmax.nwarmdays.nc')\n", + " nwarmdays = iris.load_cube(infile)\n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.tasmax.nwarmpc.nc') \n", + " nwd_pcent = iris.load_cube(infile)\n", + "\n", + " plotnum = 1 + 2*i\n", + " plt.subplot(2, 2, plotnum)\n", + " qplt.pcolormesh(nwarmdays, vmin=0, vmax=10000)\n", + " plt.title(gcmid + ': Number of warm days')\n", + " plt.gca().coastlines()\n", + " plt.subplot(2, 2, plotnum+1)\n", + " qplt.pcolormesh(nwd_pcent, vmin=0, vmax=30)\n", + " plt.title(gcmid + ': Percentage of warm days')\n", + " plt.gca().coastlines()\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2. Percentage of total precipitation which falls on very wet days\n", + "\n", + "Calculate the percentage of total precipitation which falls on very wet days in the future over Thailand\n", + "(where a very wet day is one on which daily rainfall exceeds the 95th percentile of the baseline).\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First find the 95th percentile of rainfall during baseline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for gcmid in GCMIDS:\n", + " filename = f'pr_EAS-22_{GCM_FULL[gcmid]}_historical_*GERICS-REMO2015*_*_day_*.nc'\n", + " model_pr = iris.load(MODELDIR + filename)\n", + " # solve merge issues\n", + " equalise_attributes(model_pr)\n", + " model_pr = model_pr.concatenate_cube()\n", + "\n", + " # 95th percentile calculation\n", + " model_pc95 = iris.cube.CubeList()\n", + " for model_data in chunks(model_pr):\n", + " model_pc95_chk = model_data.collapsed('time', iris.analysis.PERCENTILE, percent=95.0)\n", + " model_pc95.append(model_pc95_chk)\n", + " model_pc95 = model_pc95.concatenate_cube()\n", + "\n", + " # save to file\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.pr.95pc.nc')\n", + " print(f'saving to file: {outfile}')\n", + " iris.save(model_pc95, outfile)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Coordinates of a box around Thailand\n", + "thai_lons = np.array([98.0, 98.0, 105.0, 105.0])\n", + "thai_lats = np.array([10.0, 21.0, 10.0, 21.0])\n", + "\n", + "# Load a cube on the rotated grid\n", + "gcmid = 'hadgem2-es'\n", + "infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.pr.95pc.nc')\n", + "rotg = iris.load_cube(infile)\n", + "rcs = rotg.coord('grid_latitude').coord_system\n", + "\n", + "# Get the rotated pole coordinates\n", + "pole_lat = rcs.grid_north_pole_latitude\n", + "pole_lon = rcs.grid_north_pole_longitude\n", + "\n", + "# Convert the coordinates of a box around Thailand from real coordinates to rotated polar coordinates\n", + "grid_lons, grid_lats = iris.analysis.cartography.rotate_pole(thai_lons, thai_lats, pole_lon, pole_lat)\n", + "\n", + "# Find the max / min of the lons / lats on the rotated grid. They will be used to extract the data around Malaysia\n", + "# N.B. The conversion to float is needed, as numpy data are of type float64 by default. If the coordinate limits\n", + "# are passed as float64, they are interpreted as a list of two floats and the program will stop with an error:\n", + "# ValueError: setting an array element with a sequence.\n", + "lon_0 = float(min(grid_lons))\n", + "lon_1 = float(max(grid_lons))\n", + "lat_0 = float(min(grid_lats))\n", + "lat_1 = float(max(grid_lats))\n", + "\n", + "# Set up constraints on the rotated grid for Thailand\n", + "lon_con = iris.Constraint(grid_longitude = lambda cell: lon_0 <= cell <= lon_1)\n", + "lat_con = iris.Constraint(grid_latitude = lambda cell: lat_0 <= cell <= lat_1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# loop over GCMs\n", + "for i, gcmid in enumerate(GCMIDS):\n", + " # load the RCP 8.5 daily precip data\n", + " file_f = f'pr_EAS-22_{GCM_FULL[gcmid]}*_rcp85_*_GERICS-REMO2015*_*_day_*.nc'\n", + "# precip = iris.load_cube(data_path + file_f, lon_con).intersection(grid_latitude = (-14.767, -5,623))\n", + " precip = iris.load(MODELDIR + file_f, lat_con & lon_con)\n", + " # solve merge issues\n", + " equalise_attributes(precip)\n", + " precip = precip.concatenate_cube()\n", + " \n", + " \n", + " # load the historical 95th percentile\n", + " file_f = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.pr.95pc.nc')\n", + " precip_pc95 = iris.load_cube(file_f, lat_con & lon_con)\n", + " \n", + "# Use broadcasting to identify all cells in precip where p95 is exceeded\n", + " pre_gt_pc95 = np.where(precip.data > precip_pc95.data, precip.data, 0.0)\n", + " pre_p95 = np.sum(pre_gt_pc95, axis=0)\n", + " pre_tot = precip.collapsed('time', iris.analysis.SUM)\n", + " pre_tot.data = np.divide(pre_p95, pre_tot.data, out=np.zeros_like(pre_tot.data), where = pre_tot.data != 0)\n", + " pre_tot = iris.analysis.maths.multiply(pre_tot, 100)\n", + " file_out = gcmid + '.R95pTOT.future.GERICS-REMO2015.nc'\n", + " iris.save(pre_tot, CLIMDIR + file_out)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plot the percentages of heavy rainfall in the future." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.figure(figsize=(12, 6))\n", + "\n", + "for i, gcmid in enumerate(GCMIDS):\n", + " filename = gcmid + '.R95pTOT.future.GERICS-REMO2015.nc'\n", + " pcent_heavy_rain = iris.load_cube(CLIMDIR + filename)\n", + " plotnum = 1 + i\n", + " plt.subplot(1, 2, plotnum)\n", + " qplt.pcolormesh(pcent_heavy_rain, vmin=0, vmax=100)\n", + " plt.title(gcmid + ': Percentage of heavy rain \\n over Thailand in the future')\n", + " plt.gca().coastlines()\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.10" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebooks/worksheet_solutions.ipynb b/notebooks/worksheet_solutions.ipynb new file mode 100755 index 0000000..a643be1 --- /dev/null +++ b/notebooks/worksheet_solutions.ipynb @@ -0,0 +1,461 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Worksheet Solutions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2.2c\n", + "\n", + "Complete the following code block to repeat the same procedure for MPI-ESM-LR:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Print the current MPI-ESM-LR cube units\n", + "print(f'The current unit for data is: {mpiesm.units}')\n", + "\n", + "# convert units to kg m-2 day-1\n", + "mpiesm.convert_units('kg m-2 day-1')\n", + "\n", + "\n", + "# Rename the units to mm day-1. Recall that 1 kg m-2 is equivalent to 1 mm of rain\n", + "mpiesm.units = 'mm day-1'\n", + "\n", + "# Save the new cube as a new netCDF file using the `outfile` filename we've provided below!\n", + "outfile = os.path.join(OUTDIR, 'mpi-esm-lr.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + "\n", + "iris.save(mpiesm, outfile)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2.3e\n", + "\n", + "Answer: Write the line of code required to calculate CHIRPS's (a) standard deviation and (b) annual maximum rainfall in the code block below.
    \n", + "Hint: How could you adapt chirps_ond.aggregated_by(['seasons'], iris.analysis.MEAN) from above? You can refer to the [Iris documentation](https://scitools.org.uk/iris/docs/v2.4.0/iris/iris/analysis.html) if needed." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# From chirps, calculate: \n", + "# (a) chirps_std \n", + "chirps_std = chirps_ond.aggregated_by(['seasons'], iris.analysis.STD_DEV) \n", + "\n", + "# (b) chirps_max\n", + "chirps_std = chirps.collapsed('time', iris.analysis.MAX) \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3.1a" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Enter the ordered latitude and longitude coordinates for Kuala Lumpur here:\n", + "# lon=( , ) # longitude (East - West extent)\n", + "# lat=( , ) # latuitude (South - North extent)\n", + "lon = (99.5, 100.5)\n", + "lat = (13.5, 14.5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3.2e part 1\n", + "\n", + "e) Find the multi-annual monthly means (1986-2005) over the BK area for CHIRPS observations by following the same methodology as above in step d). As before we've given you the input and output files names.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load the BK extracted data created in previous step\n", + "infile = os.path.join(CHIRPSDIR, 'chirps.mon.1986_2005.BK.nc')\n", + "data = iris.load_cube(infile)\n", + "\n", + "# Add monthly coord categorisation to the time dim coordinate\n", + "iris.coord_categorisation.add_month_number(data, 'time', name='month_number')\n", + "\n", + "# Now calculate monthly means\n", + "monthly_mean = data.aggregated_by(['month_number'], iris.analysis.MEAN)\n", + "\n", + "# and change units to mm/day\n", + "monthly_mean.convert_units('mm day-1')\n", + "\n", + "# create the area averaged monthly mean of daily rainfall\n", + "# Find latitude weights\n", + "monthly_mean.coord('longitude').guess_bounds()\n", + "monthly_mean.coord('latitude').guess_bounds()\n", + "grid_areas = iris.analysis.cartography.area_weights(monthly_mean)\n", + "# Calculate area averaged monthly mean rainfall\n", + "monthly_mean = monthly_mean.collapsed(['longitude', 'latitude'], iris.analysis.MEAN, \n", + " weights=grid_areas)\n", + "\n", + "\n", + "# Save output\n", + "outfile = os.path.join(CLIMDIR, 'chirps.mon.mean.1986_2005.mmday-1.nc')\n", + "iris.save(monthly_mean, outfile)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3.2e part 2\n", + " Plot the CHIRPS observations, compare with the HadGEM2-ES and MPI-ESM-LR driven REMO2015 runs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load the CHIRPS cube\n", + "inpath = os.path.join(CLIMDIR, 'chirps.mon.mean.1986_2005.mmday-1.nc')\n", + "cube = iris.load_cube(inpath) \n", + "\n", + "# Quick line plot for cube \n", + "qplt.plot(cube.coord('month_number'), cube)\n", + "plt.title('BK area averaged ' + gcm + '\\n monthly average of daily rainfall')\n", + "ax = plt.gca()\n", + "ax.xaxis.set_label_text('Month Number')\n", + "ax.set_xlim(0.5, 12.5)\n", + "ax.set_ylim(0, 16)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3.3f\n", + "Question: Now that the cubes are all on the same grid, what differences do you see?
    Complete the code template below to help answer this question." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Directory name where data is read from\n", + "indir = os.path.join(DATADIR, 'EAS-22', 'climatology')\n", + "\n", + "# load HadGEM2-ES downscaled model data\n", + "hadgem2 = iris.load_cube(f'{indir}/hadgem2-es.OND.mean.1986_2005.pr.mmday-1.rg.nc')\n", + "\n", + "# load MPI-ESM-LR downscaled model data\n", + "mpiesm = iris.load_cube(f'{indir}/mpi-esm-lr.OND.mean.1986_2005.pr.mmday-1.rg.nc')\n", + "\n", + "# load CHIRPS data and extract region\n", + "chirps = iris.load_cube(f'{indir}/chirps.OND.mean.1986_2005.pr.mmday-1.nc')\n", + "chirps = chirps.intersection(latitude=lat, longitude=lon)\n", + "\n", + "# Do some plotting!\n", + "plt.figure(figsize=(12, 10))\n", + "plt.subplot(1,3,1)\n", + "qplt.pcolormesh(hadgem2[0], vmin=0., vmax=8.)\n", + "plt.title('HadGEM2-ES')\n", + "plt.gca().coastlines()\n", + "plt.subplot(1,3,2)\n", + "qplt.pcolormesh(mpiesm[0], vmin=0., vmax=8.)\n", + "plt.title('MPI-ESM-LR')\n", + "plt.gca().coastlines()\n", + "plt.subplot(1,3,3)\n", + "qplt.pcolormesh(chirps[0], vmin=0., vmax=8.)\n", + "plt.title('CHIRPS')\n", + "plt.gca().coastlines()\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 4.2c\n", + "\n", + "Now, repeat the calculations yourself for **temperature**. \n", + "\n", + "First, we calculate the **OND mean** temperatures. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for gcmid in GCMIDS:\n", + " infile = os.path.join(FUTRDIR, gcmid + '.mon.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", + " data = iris.load_cube(infile)\n", + "\n", + " # in order to calculate OND mean, we divide the months into two seasons: \n", + " # one for OND and a second for the remaining months\n", + " iris.coord_categorisation.add_season(data, 'time', name='seasons', seasons=('jfmamjjas','ond'))\n", + "\n", + " # Extract the data for the OND season only\n", + " data_ond = data.extract(iris.Constraint(seasons='ond'))\n", + "\n", + " # Now calculate the mean over the OND season\n", + " ond_mean = data_ond.aggregated_by(['seasons'], iris.analysis.MEAN)\n", + "\n", + " # save the OND mean as a netCDF\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", + " iris.save(ond_mean, outfile)\n", + " print('Saved: {}'.format(outfile))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 4.4h\n", + "Produce and plot a montly time series of temperature data** relative to the 1986-2005 baseline. As for (f) and (g) produce time series for HadGEM2-ES and MPI-ESM-LR driven runs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Read in the land-sea mask. \n", + "# The cube data array has a land fraction associated with it which we'll use to mask out ocean points.\n", + "land_fraction_file = 'sftlf_EAS-22_MOHC-HadGEM2-ES_historical_r0i0p0_GERICS-REMO2015_v1_fx_r0i0p0.nc'\n", + "land_fraction = iris.load_cube(DATADIR + land_fraction_file)\n", + "\n", + "# convert this to a binary (i.e. 1 or 0 mask)\n", + "land_sea_mask = land_fraction.copy()\n", + "land_sea_mask.data = np.where(land_sea_mask.data < 50, 0, 1)\n", + "land_sea_mask.name = 'land_binary_mask'\n", + "# apply a mask to the cube \n", + "land_sea_mask = iris.util.mask_cube(land_sea_mask, land_sea_mask.data < 0.5)\n", + "\n", + "\n", + "# Loop over GCMIDS\n", + "for gcmid in GCMIDS:\n", + " # Read in original data for baseline and future\n", + " baselinepath = os.path.join(HISTDIR, gcmid + '.mon.1986_2005.GERICS-REMO2015.tm.C.nc')\n", + " futurepath = os.path.join(FUTRDIR, gcmid + '.mon.2041_2060.GERICS-REMO2015.tm.C.nc')\n", + " baseline = iris.load_cube(baselinepath)\n", + " future = iris.load_cube(futurepath)\n", + " \n", + " # Apply land mask\n", + " baseline.data = ma.array(baseline.data, mask=baseline.data*land_sea_mask.data.mask[np.newaxis, :,:])\n", + " future.data = ma.array(future.data, mask=future.data*land_sea_mask.data.mask[np.newaxis, :,:])\n", + "\n", + " # remove the 2D \"true\" lat and lon\n", + " baseline.remove_coord('longitude')\n", + " baseline.remove_coord('latitude')\n", + " future.remove_coord('longitude')\n", + " future.remove_coord('latitude')\n", + " \n", + " # Guess bounds\n", + " for cube in [baseline, future]:\n", + " for coord in ['grid_longitude', 'grid_latitude']:\n", + " cube.coord(coord).guess_bounds()\n", + " \n", + " # Calculate mean values over land points\n", + " baseline_land = baseline.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN,\n", + " weights = iris.analysis.cartography.area_weights(baseline))\n", + " future_land = future.collapsed(['grid_longitude', 'grid_latitude'], iris.analysis.MEAN,\n", + " weights = iris.analysis.cartography.area_weights(future))\n", + "\n", + " # Save future & baseline area averaged monthly data (time series)\n", + " baselineout = os.path.join(CLIMDIR, gcmid + '.mon.1986_2005.series.GERICS-REMO2015.tm.C.nc')\n", + " futureout = os.path.join(CLIMDIR, gcmid + '.mon.2041_2060.series.GERICS-REMO2015.tm.C.nc')\n", + " iris.save(baseline_land, baselineout)\n", + " iris.save(future_land, futureout)\n", + "\n", + " # Subtract baseline from future\n", + " diff = future_land.copy()\n", + " diff.data = future_land.data - baseline_land.data.mean()\n", + " diff.rename('future anomaly relative to mean historical precipitation')\n", + "\n", + " # Save the area averaged monthly future anomalies (time series)\n", + " outpath = os.path.join(CLIMDIR, gcmid + '.mon.2041_2060.anom.series.GERICS-REMO2015.tm.C.nc')\n", + " iris.save(diff, outpath)\n", + " print('Saved: {}'.format(outpath)) \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Read in the monthly series\n", + "hadgem2es = iris.load_cube(CLIMDIR + '/hadgem2-es.mon.2041_2060.anom.series.GERICS-REMO2015.tm.C.nc')\n", + "mpiesm = iris.load_cube(CLIMDIR + '/mpi-esm-lr.mon.2041_2060.anom.series.GERICS-REMO2015.tm.C.nc')\n", + "time = hadgem2es.coord('time')\n", + "\n", + "# Plot the two model time series' on the same figure\n", + "plt.figure(figsize=(16,5))\n", + "iplt.plot(time, hadgem2es, label = 'HadGEM2-ES')\n", + "iplt.plot(time, mpiesm, label = 'MPI-ESM-LR')\n", + "plt.legend()\n", + "plt.suptitle('2041-2060 Temperature anomaly (relative to 1986-2005)')\n", + "plt.ylabel(f'Temperature change ({hadgem2es.units}')\n", + "plt.xlabel('Years')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 5.1b\n", + "\n", + "We'll use CHIRPS as our observational data from which to compare our CORDEX model data.\n", + "\n", + "**Fill in the missing code** to calculate the observed wet days: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load CHIRPS daily precipitation data, but only period of interest\n", + "historical_time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", + " <= cell.point <= PartialDateTime(year=2005))\n", + "\n", + "infile = os.path.join(CHIRPSDIR, 'chirps-v2.0_pr_day_1981-2018_p25.nc')\n", + "obs = iris.load_cube(infile, historical_time_constraint)#, 'daily precipitation analysis interpolated onto 0.25deg grids [mm/day]')\n", + "\n", + "# Find number of wet days\n", + "chirps_wetdays = obs.collapsed('time', count_nonzero)\n", + "chirps_wetdays.rename(f'CHIRPS number of wet days (>=1mm/day)')\n", + "\n", + "# Save wet days cube\n", + "outfile = os.path.join(CLIMDIR, 'chirps.wetday.nc')\n", + "iris.save(chirps_wetdays, outfile)\n", + "\n", + "# Find number of days in dataset (number_chirps_days)\n", + "number_chirps_days = len(obs.coord('time').points)\n", + "\n", + "\n", + "# Find wet days as percent of all chirps days \n", + "chirps_pcent_wetdays = (chirps_wetdays / number_chirps_days) * 100\n", + "chirps_pcent_wetdays.rename(f'CHIRPS percent of wet days (>=1mm/day)')\n", + "chirps_pcent_wetdays.units='%'\n", + "\n", + "# Save \n", + "outfile = os.path.join(CLIMDIR, 'chirps.wetday.pcent.nc')\n", + "iris.save(chirps_pcent_wetdays, outfile)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 5.1e" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + " # Add in a line of code to constrain the model domain to these coordinates: \n", + " # longitude=(70, 160)\n", + " # latitude=(10, 50)\n", + " pcent_change_subset = pcent_change.intersection(longitude=(70, 160), latitude=(10, 50))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 5.2h\n", + "**Plot the differences in the 95th percentiles** between the models and observations, and the future changes in the 95th percentiles of precipitation from both models.\n", + "\n", + "**Complete the code block to plot the figures...**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Create a figure of the size 12x12 inches\n", + "plt.figure(figsize=(12, 12))\n", + "\n", + "for n, gcmid in enumerate(GCMIDS):\n", + " # HINT: Use the `n` variable to help arrange you plots using: plt.subplot()\n", + " # Use the matplotlib documention to help you! \n", + "\n", + " # Load and plot the model bias (model - obs)\n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.pc95.bias.GERICS-REMO2015.pr.mmday-1.nc')\n", + " bias = iris.load_cube(infile)\n", + " plt.subplot(2,2,2*n+1)\n", + " qplt.pcolormesh(bias)\n", + " plt.gca().coastlines()\n", + "\n", + "\n", + " # Load and plot the percentage change in precipitation between future and baseline\n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.pc95.diff.GERICS-REMO2015.pr.mmday-1.nc')\n", + " pc_change = iris.load_cube(infile)\n", + " plt.subplot(2,2,2*n+2)\n", + " qplt.pcolormesh(pc_change)\n", + " plt.gca().coastlines()\n", + "\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.10" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/pyprecis-environment.lock b/pyprecis-environment.lock new file mode 100644 index 0000000..506ecef --- /dev/null +++ b/pyprecis-environment.lock @@ -0,0 +1,217 @@ +# This file may be used to create an environment using: +# $ conda create --name --file +# platform: linux-64 +@EXPLICIT +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/ca-certificates-2021.10.8-ha878542_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/ld_impl_linux-64-2.36.1-hea4e1c9_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libgfortran4-7.5.0-h14aa051_19.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libstdcxx-ng-11.2.0-he4da1e4_12.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/llvm-openmp-12.0.1-h4bd325d_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pandoc-2.17.1.1-ha770c72_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/_openmp_mutex-4.5-1_llvm.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libgfortran-ng-7.5.0-h14aa051_19.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libgcc-ng-11.2.0-h1d223b6_12.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/c-ares-1.18.1-h7f98852_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/expat-2.4.4-h9c3ff4c_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/fftw-3.3.8-nompi_hfc0cae8_1114.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/geos-3.9.1-h9c3ff4c_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/icu-64.2-he1b5a44_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/jbig-2.1-h7f98852_2003.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/jpeg-9e-h7f98852_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/lerc-3.0-h9c3ff4c_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libaec-1.0.6-h9c3ff4c_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libdeflate-1.8-h7f98852_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libev-4.33-h516909a_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libffi-3.2.1-he1b5a44_1007.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libiconv-1.16-h516909a_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libmo_unpack-3.1.2-hf484d3e_1001.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libopenblas-0.3.10-pthreads_hb3c22a3_5.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libsodium-1.0.18-h36c2ea0_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libwebp-base-1.2.2-h7f98852_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libzlib-1.2.11-h36c2ea0_1013.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/ncurses-6.3-h9c3ff4c_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/openssl-1.1.1n-h166bdaf_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/ossuuid-1.6.2-hf484d3e_1000.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libice-1.0.10-h7f98852_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libxau-1.0.9-h7f98852_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-xextproto-7.3.0-h7f98852_1002.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xxhash-0.8.0-h7f98852_3.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xz-5.2.5-h516909a_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/gettext-0.19.8.1-hf34092f_1004.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/jasper-1.900.1-h07fcdf6_1006.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libblas-3.8.0-17_openblas.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libxcb-1.13-h7f98852_1004.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/readline-8.1-h46c0cb4_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/udunits2-2.2.27.27-hc3e0081_3.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libsm-1.2.3-hd9c2040_1000.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/zeromq-4.3.4-h9c3ff4c_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/zlib-1.2.11-h36c2ea0_1013.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/zstd-1.5.2-ha95c52a_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/hdf4-4.2.15-h10796ff_3.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libcblas-3.8.0-17_openblas.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libglib-2.66.3-hbe7bbb4_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/liblapack-3.8.0-17_openblas.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libnghttp2-1.46.0-h812cca2_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libssh2-1.10.0-ha56f1ee_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libtiff-4.3.0-h6f004c6_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libxml2-2.9.10-hee79883_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/sqlite-3.37.0-h9cd32fc_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/tk-8.6.11-h27826a3_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libx11-1.7.2-h7f98852_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/gsl-2.6-he838d99_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/krb5-1.19.2-hcc1bbae_3.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/liblapacke-3.8.0-17_openblas.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/python-3.6.10-h8356626_1011_cpython.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libxext-1.3.4-h7f98852_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libxt-1.2.1-h7f98852_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/backports-1.0-py_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/blas-2.17-openblas.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/click-7.1.2-pyh9f0ad1d_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/cloudpickle-2.0.0-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/colorama-0.4.4-pyh9f0ad1d_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/entrypoints-0.3-pyhd8ed1ab_1003.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/fontconfig-2.13.1-hba837de_1005.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/fsspec-2022.1.0-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/glib-2.66.3-h58526e2_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/heapdict-1.0.1-py_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/jmespath-0.10.0-pyh9f0ad1d_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libcurl-7.81.0-h2574ce0_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/locket-0.2.0-py_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/nest-asyncio-1.5.4-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/olefile-0.46-pyh9f0ad1d_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/parso-0.7.1-pyh9f0ad1d_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/prometheus_client-0.13.1-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pyke-1.1.1-pyhd8ed1ab_1004.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pyparsing-3.0.7-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pyshp-2.1.3-pyh44b312d_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/python_abi-3.6-2_cp36m.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pytz-2021.3-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/send2trash-1.8.0-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/sip-4.19.8-py36hf484d3e_1000.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/tblib-1.7.0-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/testpath-0.5.0-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/toolz-0.11.2-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/typing_extensions-4.0.1-pyha770c72_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libxmu-1.1.3-h7f98852_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libxpm-3.5.13-h7f98852_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/zipp-3.6.0-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/antlr-python-runtime-4.7.2-py36h5fab9bb_1002.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/certifi-2021.5.30-py36h5fab9bb_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/cffi-1.14.4-py36h211aa47_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/curl-7.81.0-h2574ce0_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/cytoolz-0.11.0-py36h8f6f2f9_3.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/dbus-1.13.6-hfdff14a_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/gstreamer-1.14.5-h36ae1b5_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/hdf5-1.10.6-nompi_h7c3c948_1111.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/importlib-metadata-4.8.1-py36h5fab9bb_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/jedi-0.17.2-py36h5fab9bb_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/kiwisolver-1.3.1-py36h605e78d_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/markupsafe-2.0.1-py36h8f6f2f9_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/mistune-0.8.4-py36h8f6f2f9_1004.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/msgpack-python-1.0.2-py36h605e78d_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/numpy-base-1.17.4-py36h2f8d375_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/partd-1.2.0-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pexpect-4.8.0-pyh9f0ad1d_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pillow-8.3.2-py36h676a545_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/proj-7.2.0-h277dcde_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/psutil-5.8.0-py36h8f6f2f9_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pyrsistent-0.17.3-py36h8f6f2f9_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pysocks-1.7.1-py36h5fab9bb_3.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/python-xxhash-2.0.2-py36h8f6f2f9_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pyyaml-5.4.1-py36h8f6f2f9_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pyzmq-22.3.0-py36h7068817_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/setuptools-58.0.4-py36h5fab9bb_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/tornado-6.1-py36h8f6f2f9_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/tqdm-4.64.0-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/traitlets-4.3.3-pyhd8ed1ab_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/typing-extensions-4.0.1-hd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libxaw-1.0.14-h7f98852_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/zict-2.0.0-py_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/backports.functools_lru_cache-1.6.4-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/bleach-4.1.0-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/brotlipy-0.7.0-py36h8f6f2f9_1001.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/cryptography-35.0.0-py36hb60f036_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/dask-core-2.11.0-py_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/gst-plugins-base-1.14.5-h0935bb2_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/immutables-0.16-py36h8f6f2f9_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/jinja2-3.0.3-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/jsonschema-4.1.2-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/jupyter_core-4.6.3-py36h5fab9bb_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libnetcdf-4.7.4-nompi_h56d31a8_107.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/numpy-1.17.4-py36hd5be1e1_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pip-21.3.1-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pygments-2.11.2-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/terminado-0.12.1-py36h5fab9bb_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/bokeh-2.3.3-py36h5fab9bb_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/cftime-1.4.1-py36h92226af_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/contextvars-2.4-py_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/eccodes-2.19.1-hea64003_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/jupyter_client-6.1.7-py_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/jupyterlab_pygments-0.1.2-pyh9f0ad1d_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/matplotlib-base-3.1.3-py36h250f245_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/mo_pack-0.2.0-py36h92226af_1005.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/nbformat-5.1.3-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/ncview-2.1.7-hb1f9ec4_5.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/netcdf-fortran-4.5.3-nompi_hfef6a68_101.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pandas-1.1.5-py36h284efc9_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pyopenssl-22.0.0-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/qt-5.9.7-h0c104cb_3.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/scipy-1.5.3-py36h976291a_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/shapely-1.7.1-py36h93b233e_4.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/tempest-remap-2.0.5-h1b20e2d_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/wcwidth-0.2.5-pyh9f0ad1d_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/cartopy-0.18.0-py36h104b3a8_13.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/cdo-1.9.9-h04f682f_14.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/cf-units-2.1.4-py36h92226af_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/distributed-2.30.1-py36h5fab9bb_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/esmf-8.0.1-nompi_hcaa3220_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/nbclient-0.5.9-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/nc-time-axis-1.2.0-pyhd8ed1ab_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/netcdf4-1.5.6-nompi_py36hc29086f_100.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/prompt-toolkit-3.0.26-pyha770c72_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pyqt-5.9.2-py36hcca6a23_4.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/urllib3-1.26.8-pyhd8ed1ab_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/botocore-1.24.21-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/dask-2.11.0-py_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/ipython-7.16.1-py36he448a4c_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/matplotlib-3.1.3-py36_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/nbconvert-6.0.7-py36h5fab9bb_3.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/nco-4.9.9-h1e74faa_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/ipykernel-5.5.5-py36hcb3619a_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/iris-2.4.0-py36h5fab9bb_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/s3transfer-0.5.1-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/boto3-1.21.21-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/notebook-5.7.8-py36_1.tar.bz2 From b4c3e72c7110b068f737b11f2e716e35ebfe5d81 Mon Sep 17 00:00:00 2001 From: Nick Savage Date: Fri, 22 Apr 2022 08:43:46 +0100 Subject: [PATCH 04/23] modified worksheet 1 for AFR domain --- notebooks/AFR-22/worksheet1.ipynb | 33 +++++++++++-------------------- 1 file changed, 11 insertions(+), 22 deletions(-) diff --git a/notebooks/AFR-22/worksheet1.ipynb b/notebooks/AFR-22/worksheet1.ipynb index 8f08b0b..577e688 100755 --- a/notebooks/AFR-22/worksheet1.ipynb +++ b/notebooks/AFR-22/worksheet1.ipynb @@ -130,7 +130,9 @@ "outputs": [], "source": [ "import subprocess\n", - "subprocess.run(['rsync', '-r', '/project/ciid/projects/PRECIS/worksheets/data_v2', '.'])" + "%mkdir $DATADIR/data_afr22\n", + "subprocess.run([\"ln\", \"-s\", \"$DATADIR/data_afr22 data_afr22\"])\n", + "subprocess.run(['rsync', '-r', '/project/ciid/projects/PRECIS/worksheets/data_afr22', '.'])" ] }, { @@ -139,14 +141,14 @@ "source": [ "If the command works correctly you should see the message:\n", "\n", - "`CompletedProcess(args=['rsync', '-r', '/project/ciid/projects/PRECIS/worksheets/data_v2', '.'], returncode=0)`\n" + "`CompletedProcess(args=['rsync', '-r', '/project/ciid/projects/PRECIS/worksheets/data_af22', '.'], returncode=0)`\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "**d)** Move to the directory (i.e. folder) called `data_v2/EAS-22`. This directory contains CORDEX data for the East Asia Domain.\n", + "**d)** Move to the directory (i.e. folder) called `data_afr22/AFR-22`. This directory contains CORDEX data for the Africa Domain.\n", "\n", "**Hint:** The `cd` command stands for _change directory_\n", "\n", @@ -341,15 +343,6 @@ "To run the code, click in the box below and press Ctrl + Enter." ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%cd /home/h03/fris/code/PyPRECIS/notebooks/data_v2" - ] - }, { "cell_type": "code", "execution_count": null, @@ -367,7 +360,7 @@ "%matplotlib inline \n", "\n", "# provide the path of your sample data\n", - "sample_data = 'EAS-22/sample_data.nc'\n", + "sample_data = 'AFR-22/sample_data.nc'\n", "\n", "# Constraint the reading to a single variable and load it into an Iris cube\n", "cube = iris.load_cube(sample_data)\n", @@ -427,10 +420,6 @@ "\n", "plt.figure(figsize=(12,12)) # Set the figure size\n", "\n", - "# find the edges of grid cells (Aka the boounds)\n", - "cube.coord('grid_latitude').guess_bounds()\n", - "cube.coord('grid_longitude').guess_bounds()\n", - "\n", "qplt.pcolormesh(cube) # Plot the cube\n", "plt.title(cube.name()) # Add plot title\n", "plt.clim(0, 5e-4) # Set colour bar range\n", @@ -444,7 +433,7 @@ "
    \n", "Sense check the data plotted: \n", "\n", - "* Can you make out sections of the East Asian coastline? \n", + "* Can you make out sections of the Africa coastline? \n", "* How about the scale? \n", "\n", "As we progress through these workbooks, we'll learn how to process the data into more intuitive units and mask / add country boundaries, so it's easier to understand the information.\n", @@ -476,7 +465,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "As an example we will load some temperature data from the [East Asia Domain](https://cordex.org/domains/region-7-east-asia/) at 25 km resolution" + "As an example we will load some monthly temperature data from the [Africa Domain](https://cordex.org/domains/region-5-africa/) at 25 km resolution" ] }, { @@ -486,7 +475,7 @@ "outputs": [], "source": [ "# these variables form part of the standard CORDEX filename convention\n", - "domain = \"EAS-22\"\n", + "domain = \"AFR-22\"\n", "rcm = \"GERICS-REMO2015\"\n", "experiment = \"historical\"\n", "gcm = \"NCC-NorESM1-M\"\n", @@ -497,7 +486,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Let's find out which of the files match the pattern above." + "Let's find out which of the monthly files match the pattern above." ] }, { @@ -509,7 +498,7 @@ "root_dir = \"./\"\n", "\n", "path_dir = root_dir+domain+\"/\"\n", - "file_name = variable+\"*\"+gcm+\"*\"+experiment+\"*\"+rcm+\"*\"\n", + "file_name = variable+\"*\"+gcm+\"*\"+experiment+\"*\"+rcm+\"*\"+\"mon\"+\"*\"\n", "file_list = glob.glob(path_dir+file_name)\n", "\n", "# Complete the print statement to see which East Asian files match the specified criteria\n", From 9ce40c7a3d78266ca53f2613e15df0034b50769f Mon Sep 17 00:00:00 2001 From: Nick Savage Date: Fri, 22 Apr 2022 09:25:41 +0100 Subject: [PATCH 05/23] add changes for worksheet 2 --- notebooks/AFR-22/worksheet2.ipynb | 37 +++++----------------- notebooks/AFR-22/worksheet_solutions.ipynb | 4 +-- 2 files changed, 10 insertions(+), 31 deletions(-) diff --git a/notebooks/AFR-22/worksheet2.ipynb b/notebooks/AFR-22/worksheet2.ipynb index 21a8572..39c9133 100755 --- a/notebooks/AFR-22/worksheet2.ipynb +++ b/notebooks/AFR-22/worksheet2.ipynb @@ -68,8 +68,7 @@ "from iris.time import PartialDateTime\n", "import cartopy.crs as ccrs\n", "from mpl_toolkits.axes_grid1 import AxesGrid\n", - "from cartopy.mpl.geoaxes import GeoAxes\n", - "from utils import copy_s3_files, flush_data" + "from cartopy.mpl.geoaxes import GeoAxes" ] }, { @@ -79,7 +78,7 @@ "\n", "# 2.1 Inspecting the data\n", "\n", - "The datasets used here contain daily and monthly data from two REMO2015 runs carried out over Southeast Asia, one driven by HadGEM2-ES and the other driven by MPI-ESM-LR. The observations used for comparison are from the CHIRPS gridded observational data set (https://chc.ucsb.edu/data/chirps).\n", + "The datasets used here contain daily and monthly data from two REMO2015 runs carried out over Africa, one driven by HadGEM2-ES and the other driven by MPI-ESM-LR. The observations used for comparison are from the CHIRPS gridded observational data set (https://chc.ucsb.edu/data/chirps).\n", "\n", "Remember, in Iris, data are read into an object called a **cube**. A single cube describes only one variable; it is not possible for a cube to contain both temperature and rainfall, for example. A cube always has a name, a unit and an n-dimensional data array to represent the cube’s data. Additionally, the cube contains collections of coordinates. Coordinate types can include spatial information (latitude, longitude, altitude), a time dimension, or other information, e.g., an ensemble number.\n", "\n", @@ -97,16 +96,6 @@ "Before running the code, take a look at it line-by-line to understand what steps are being taken. Then click in the box and press ctrl + enter to run the code." ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we first need to download APHRODITE data\n", - "copy_s3_files('s3://ias-pyprecis/data/APHRODITE/*.nc', 'data/APHRODITE/')" - ] - }, { "cell_type": "code", "execution_count": null, @@ -114,16 +103,16 @@ "outputs": [], "source": [ "# Provide the names of the directories where the netCDF model files are stored\n", - "DATADIR = 'data_v2/'\n", + "DATADIR = 'data_afr22/'\n", "\n", "# Load and concatenate the HadGEM2-ES model cube data\n", - "infile = os.path.join(DATADIR, 'EAS-22/pr_EAS-22_MOHC-HadGEM2-ES_historical_r1i1p1_GERICS-REMO2015_v1_mon_*.nc')\n", + "infile = os.path.join(DATADIR, 'AFR-22/pr_AFR-22_MOHC-HadGEM2-ES_historical_r1i1p1_GERICS-REMO2015_v1_mon_*.nc')\n", "cubes = iris.load(infile)\n", "equalise_attributes(cubes)\n", "hadgem2 = cubes.concatenate_cube()\n", "\n", "# Load and concatenate the MPI-ESM-LR model cube data\n", - "infile = os.path.join(DATADIR, 'EAS-22/pr_EAS-22_MPI-M-MPI-ESM-LR_historical_r1i1p1_GERICS-REMO2015_v1_mon_*.nc')\n", + "infile = os.path.join(DATADIR, 'AFR-22/pr_AFR-22_MPI-M-MPI-ESM-LR_historical_r1i1p1_GERICS-REMO2015_v1_mon_*.nc')\n", "cubes = iris.load(infile)\n", "equalise_attributes(cubes)\n", "mpiesm = cubes.concatenate_cube()\n", @@ -366,7 +355,7 @@ "hadgem2.units = 'mm day-1'\n", "\n", "# Save the new cube as a new netCDF file\n", - "OUTDIR = 'data_v2/EAS-22'\n", + "OUTDIR = 'data_afr22/AFR-22'\n", "\n", "# Check to see if this directory exists, if not create it\n", "if not os.path.isdir(OUTDIR):\n", @@ -425,7 +414,7 @@ "outputs": [], "source": [ "# Set up directory for the climatology\n", - "CLIMDIR = 'data_v2/EAS-22/climatology'\n", + "CLIMDIR = 'data_afr22/AFR-22/climatology'\n", "\n", "# Check to see if this directory exists, if not create it\n", "if not os.path.isdir(CLIMDIR):\n", @@ -509,16 +498,6 @@ "Follow step d) and complete the code yourself. The file name to load is: `chirps-v2.0.monthly.global.1981_2018.nc`. We've given you the infile and outfile names to make sure you load and save it in the right place for later!" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we first need to download APHRODITE data\n", - "copy_s3_files('s3://ias-pyprecis/data/climatology/*.nc', 'data/climatology/')" - ] - }, { "cell_type": "code", "execution_count": null, @@ -676,7 +655,7 @@ "plt.title('CHIRPS obs') # plots a title for the plot\n", "ax = plt.gca() # gca function that returns the current axes\n", "ax.coastlines() # adds coastlines defined by the axes of the plot\n", - "ax.set_extent((65.0, 155.0, 0.0, 40.0))\n", + "ax.set_extent((-25.0, 65.0, -30.0, 30.0))\n", "\n", "plt.show()" ] diff --git a/notebooks/AFR-22/worksheet_solutions.ipynb b/notebooks/AFR-22/worksheet_solutions.ipynb index a643be1..7712b2c 100755 --- a/notebooks/AFR-22/worksheet_solutions.ipynb +++ b/notebooks/AFR-22/worksheet_solutions.ipynb @@ -59,7 +59,7 @@ "chirps_std = chirps_ond.aggregated_by(['seasons'], iris.analysis.STD_DEV) \n", "\n", "# (b) chirps_max\n", - "chirps_std = chirps.collapsed('time', iris.analysis.MAX) \n" + "chirps_max = chirps.collapsed('time', iris.analysis.MAX) \n" ] }, { @@ -75,7 +75,7 @@ "metadata": {}, "outputs": [], "source": [ - "# Enter the ordered latitude and longitude coordinates for Kuala Lumpur here:\n", + "# Enter the ordered latitude and longitude coordinates for Luanda here:\n", "# lon=( , ) # longitude (East - West extent)\n", "# lat=( , ) # latuitude (South - North extent)\n", "lon = (99.5, 100.5)\n", From 47590a590ec500871cd129e4acb0df3cc734b8e1 Mon Sep 17 00:00:00 2001 From: Nick Savage Date: Fri, 22 Apr 2022 15:35:46 +0100 Subject: [PATCH 06/23] update worksheet 3 --- notebooks/AFR-22/worksheet3.ipynb | 222 ++++++++------------- notebooks/AFR-22/worksheet_solutions.ipynb | 16 +- 2 files changed, 89 insertions(+), 149 deletions(-) diff --git a/notebooks/AFR-22/worksheet3.ipynb b/notebooks/AFR-22/worksheet3.ipynb index 3919b84..3e6f183 100755 --- a/notebooks/AFR-22/worksheet3.ipynb +++ b/notebooks/AFR-22/worksheet3.ipynb @@ -60,23 +60,23 @@ "import iris\n", "import iris.coord_categorisation\n", "import iris.quickplot as qplt\n", + "from iris.time import PartialDateTime\n", "import cartopy.crs as ccrs\n", "from mpl_toolkits.axes_grid1 import AxesGrid\n", "from cartopy.mpl.geoaxes import GeoAxes\n", - "from utils import copy_s3_files, flush_data\n", "\n", "\n", "# Provide the names of the directories where the netCDF model files are stored\n", - "DATADIR = 'data_v2/'\n", + "DATADIR = 'data_afr22/'\n", "\n", "# CHIRPS dir\n", "CHIRPSDIR = os.path.join(DATADIR, 'CHIRPS/')\n", "\n", "# Directory name where processed data is stored \n", - "HISTDIR = 'data_v2/EAS-22/historical'\n", + "HISTDIR = DATADIR+'/AFR-22/historical'\n", "\n", "# Directory name where climtology data is stored \n", - "CLIMDIR = 'data_v2/EAS-22/climatology'" + "CLIMDIR = DATADIR+'/AFR-22/climatology'" ] }, { @@ -93,7 +93,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**a) Extract the area** around Bangkok for each of the three datasets, by specifiying latitude and longitude coordinates" + "**a) Extract the area** around Luanda for each of the three datasets, by specifiying latitude and longitude coordinates" ] }, { @@ -102,11 +102,11 @@ "source": [ "---\n", "
    \n", - "Question: Sort these jumbled values into the correct latitude and longitude extent for Bangkok, then enter them into the code block below so that they can be used to extract CHIRPS precipitation data over the city. \n", - "
    14.5\n", - "
    99.5\n", - "
    100.5\n", - "
    13.5\n", + "Question: Sort these jumbled values into the correct latitude and longitude extent for Luanda, then enter them into the code block below so that they can be used to extract CHIRPS precipitation data over a 10 x 10 degree box centred on the city. \n", + "
    -4\n", + "
    18\n", + "
    -14\n", + "
    8\n", "
    " ] }, @@ -123,11 +123,11 @@ "metadata": {}, "outputs": [], "source": [ - "# Enter the ordered latitude and longitude coordinates for Bangkok here:\n", + "# Enter the ordered latitude and longitude coordinates for Luanda here:\n", "# lon=( , ) # longitude (East - West extent)\n", "# lat=( , ) # latuitude (South - North extent)\n", - "lon =\n", - "lat =" + "lon = \n", + "lat = " ] }, { @@ -141,7 +141,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Run the code block below to extract the specified lat, lon coordinates from the **CHIRPS** dataset:" + "Run the code block below to extract the specified lat, lon coordinates and period of interest from the **CHIRPS** dataset:" ] }, { @@ -153,13 +153,16 @@ "# load CHIRPS data\n", "obs_cube = iris.load_cube(CHIRPSDIR + 'chirps-v2.0.monthly.global.1981_2018.nc')\n", "\n", - "# Note that the CHIRPS data are on a regular grid (unlike the model data) so real latitudes and longitudes are\n", - "# used to define the region around KL (more on this in section 2.6)\n", - "obs_cube_BK = obs_cube.intersection(latitude=lat, longitude=lon)\n", + "time_constraint = iris.Constraint(time=lambda cell: PartialDateTime(year=1986) \n", + " <= cell.point <= PartialDateTime(year=2005))\n", "\n", + "# take only 20 year period used for analysis above\n", + "obs_cube = obs_cube.extract(time_constraint)\n", + "\n", + "obs_cube_LU = obs_cube.intersection(latitude=lat, longitude=lon)\n", "# save the constrained cube to directory\n", - "outfile = os.path.join(CHIRPSDIR, 'chirps.mon.1981_2018.BK.nc')\n", - "iris.save(obs_cube_BK, outfile)" + "outfile = os.path.join(CHIRPSDIR, 'chirps.mon.1986_2005.LU.nc')\n", + "iris.save(obs_cube_LU, outfile)" ] }, { @@ -167,7 +170,7 @@ "metadata": {}, "source": [ "
    \n", - "Note: Recall that CORDEX uses a rotated pole grid for these simulations, so coordinates in the rotated pole frame of reference are required to correctly extract Bangkok from the model data.\n", + "Note: CORDEX uses a rotated pole grid for some simulations, so coordinates in the rotated pole frame of reference are required. However the Africa domain does not use a rotated pole so we will not cover this here. If you need to work with rotated pole data, see the examples for the EAS-22 domain in the folder above this.\n", "
    " ] }, @@ -175,52 +178,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "__b) Extract the area around Bangkok for HadGEM2-ES and MPI-ESM__ driven simulations. To do this we must specify the **rotated latitude and longitude coordinates**. \n", - "\n", - "To convert the true Bangkok coordinates onto the rotated pole frame of reference, we need know the latitude and longitude of the pole in our rotated pole coordinate system. We can find this from the model cube:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Load the HadGEM2-ES model cube data as need grid information from it\n", - "infile = os.path.join(HISTDIR, 'hadgem2-es.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", - "hadgem2_cube = iris.load_cube(infile)\n", - "\n", - "pole_lat = hadgem2_cube.coord_system().grid_north_pole_latitude\n", - "pole_lon = hadgem2_cube.coord_system().grid_north_pole_longitude\n", - "print(f'Pole Latitude: {pole_lat}')\n", - "print(f'Pole Longitude: {pole_lon}')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Iris includes a function to help us convert between coordinates in a rotated and non-rotated coordinate frame. We can use this to convert our non-rotated Bangkok coordinates:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "lon=np.array([99.5, 100.5])\n", - "lat=np.array([13.5, 14.5])\n", - "rotated_lons, rotated_lats = iris.analysis.cartography.rotate_pole(lon, lat, pole_lon, pole_lat)\n", - "print(f'Rotated Longitudes: {rotated_lons[0]:.2f}, {rotated_lons[1]:.2f}')\n", - "print(f'Rotated Latitudes: {rotated_lats[0]:.2f}, {rotated_lats[1]:.2f}')" + "__b) Extract the area around Luanda for HadGEM2-ES and MPI-ESM__ driven simulations. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Now we can run the code below to constrain the HadGEM2-ES and MPI-ESM data to Bangkok in rotated pole coordinates: " + "Now we can run the code below to constrain the HadGEM2-ES and MPI-ESM data to Luanda: " ] }, { @@ -229,24 +194,23 @@ "metadata": {}, "outputs": [], "source": [ - "# Constrain the cube area over Bangkok (BK).\n", - "# CORDEX EAS-22 uses a rotated grid, so the co-ordinates required are different to real world coordinates.\n", + "# Constrain the cube area over Luanda (LU).\n", "\n", "for gcm in ['hadgem2-es', 'mpi-esm-lr']:\n", " # Directory name where data are read from and stored to\n", - " infile = os.path.join(HISTDIR, gcm + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + " infile = os.path.join(DATADIR, 'AFR-22', gcm + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", " \n", - " # Load the baseline precipitation data using the BK_constraint - the command below\n", + " # Load the baseline precipitation data using the LU_constraint - the command below\n", " # loads the data into a cube constrained by the area chosen\n", " data = iris.load_cube(infile)\n", "\n", " # All grid cells whose longitudes and latitudes lie within the limits shown will be selected.\n", - " data_BK = data.intersection(grid_longitude=rotated_lons,\n", - " grid_latitude=rotated_lats)\n", + " data_LU = data.intersection(grid_longitude=lon,\n", + " grid_latitude=lat)\n", "\n", " # save the constrained cube\n", - " outfile = os.path.join(CLIMDIR, gcm + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.BK.nc')\n", - " iris.save(data_BK, outfile)\n", + " outfile = os.path.join(CLIMDIR, gcm + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.LU.nc')\n", + " iris.save(data_LU, outfile)\n", " print(f'Saved: {outfile}')" ] }, @@ -256,7 +220,7 @@ "source": [ "---\n", "
    \n", - "Question: How many grid cells are in the newly constrained Bangkok file?\n", + "Question: How many grid cells are in the newly constrained Luanda file?\n", "
    " ] }, @@ -282,14 +246,14 @@ "\n", "## 3.2 Mean annual cycle calculation\n", "\n", - "Average over a given area (e.g Bangkok) to calculate multi-annual monthly mean values. \n" + "Average over a given area (e.g Luanda) to calculate multi-annual monthly mean values. \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "**c) We now calculate monthly mean fields** for 1986-2005 for each of the twelve months for the Bangkok area." + "**c) We now calculate monthly mean fields** for 1986-2005 for each of the twelve months for the Luanda area." ] }, { @@ -311,9 +275,9 @@ "source": [ "for gcm in ['hadgem2-es', 'mpi-esm-lr']:\n", " # Set up the path to the data\n", - " infile = os.path.join(CLIMDIR, gcm + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.BK.nc')\n", + " infile = os.path.join(CLIMDIR, gcm + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.LU.nc')\n", "\n", - " # Load the data extracted around Bangkok created in previous step\n", + " # Load the data extracted around Luanda created in previous step\n", " data = iris.load_cube(infile)\n", "\n", " # Add monthly coord categorisation to the time dimension coordinate\n", @@ -335,7 +299,7 @@ " weights=grid_areas)\n", "\n", " # Save the area averaged monthly mean data\n", - " outfile = os.path.join(CLIMDIR, gcm + '.mon.mean.1986_2005.pr.mmday-1.BK.nc')\n", + " outfile = os.path.join(CLIMDIR, gcm + '.mon.mean.1986_2005.pr.mmday-1.LU.nc')\n", " iris.save(monthly_mean, outfile)\n", " print('Saved: {}'.format(outfile))" ] @@ -344,7 +308,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**d) Plot the BK area averaged monthly mean precipitation** amount in mm/day for the HadGEM2-ES and MPI-ESM driven runs." + "**d) Plot the LU area averaged monthly mean precipitation** amount in mm/day for the HadGEM2-ES and MPI-ESM driven runs." ] }, { @@ -355,16 +319,16 @@ "source": [ "for gcm in ['hadgem2-es', 'mpi-esm-lr']:\n", " # Load the model cube\n", - " inpath = os.path.join(CLIMDIR, gcm + '.mon.mean.1986_2005.pr.mmday-1.BK.nc')\n", + " inpath = os.path.join(CLIMDIR, gcm + '.mon.mean.1986_2005.pr.mmday-1.LU.nc')\n", " print(inpath)\n", " cube = iris.load_cube(inpath) \n", " # Quick line plot for each cube \n", " qplt.plot(cube.coord('month_number'), cube)\n", - " plt.title('BK area averaged ' + gcm + '\\n monthly average of daily rainfall')\n", + " plt.title('LU area averaged ' + gcm + '\\n monthly average of daily rainfall')\n", " ax = plt.gca()\n", " ax.xaxis.set_label_text('Month Number')\n", " ax.set_xlim(0.5, 12.5)\n", - " ax.set_ylim(0, 16)\n", + " ax.set_ylim(0, 12)\n", " plt.show()" ] }, @@ -414,7 +378,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**e) Find the multi-annual monthly means (1986-2005) over the BK area for CHIRPS observations** by following the same methodology as above in step d). As before we've given you the input and output files names." + "**e) Find the multi-annual monthly means (1986-2005) over the LU area for CHIRPS observations** by following the same methodology as above in step d). As before we've given you the input and output files names." ] }, { @@ -423,8 +387,8 @@ "metadata": {}, "outputs": [], "source": [ - "# Load the BK extracted data created in previous step\n", - "infile = os.path.join(CHIRPSDIR, 'chirps.mon.1986_2005.BK.nc')\n", + "# Load the LU extracted data created in previous step\n", + "infile = os.path.join(CHIRPSDIR, 'chirps.mon.1986_2005.LU.nc')\n", "\n", "\n", "# Add monthly coord categorisation to the time dim coordinate\n", @@ -437,6 +401,10 @@ "\n", "\n", "# create the area averaged monthly mean of daily rainfall\n", + "# Find latitude weights\n", + "\n", + "# Calculate area averaged monthly mean rainfall\n", + "\n", "\n", "# Save output\n", "outfile = os.path.join(CLIMDIR, 'chirps.mon.mean.1986_2005.mmday-1.nc')\n" @@ -526,7 +494,7 @@ "\n", "In the code below, we define the WGS84 coordinate system and then apply it to the x- and y-axes (i.e. longitudes and latitudes) of the observations. \n", "\n", - "The coordinate system used by the model (the rotated grid) is already defined.\n" + "The coordinate system used by the model is already defined.\n" ] }, { @@ -553,7 +521,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The next few lines of code **regrid the model data from rotated pole to the regular grid used by the observations**. \n", + "The next few lines of code **regrid the model data to the grid used by the observations**. \n", "\n", "From the plots created in section 2.4, we know that the area covered by CHIRPS data is larger than the EAS-22 model domain. Hence, the **extrapolation mode** is set to `mask` so that any grid cells on the CHIRPS grid which do not overlap with model grid cells are masked `off`; otherwise, the model data would be interpolated and would produce misleading results.\n", "\n", @@ -578,8 +546,8 @@ }, "outputs": [], "source": [ - "lon = (60., 150.)\n", - "lat = (10., 50.)\n", + "lon = (-25.0, 65.0)\n", + "lat = (-35.0, 55.0)\n", "\n", "obs_cube_sub = obs_cube.intersection(latitude=lat, longitude=lon)\n", "\n", @@ -622,7 +590,7 @@ "outputs": [], "source": [ "# Directory name where data is read from\n", - "indir = os.path.join(DATADIR, 'EAS-22', 'climatology')\n", + "indir = os.path.join(DATADIR, 'AFR-22', 'climatology')\n", "\n", "# load HadGEM2-ES downscaled model data\n", "\n", @@ -669,23 +637,23 @@ "outputs": [], "source": [ "# Make sure units are the same\n", - "obs_cube.units = hadgem2_regrid.units\n", + "obs_cube_sub.units = hadgem2_regrid.units\n", "\n", "# Make recieving cube\n", - "hadgem2_obs_diff = obs_cube.copy()\n", - "mpi_obs_diff = obs_cube.copy()\n", + "hadgem2_obs_diff = obs_cube_sub.copy()\n", + "mpi_obs_diff = obs_cube_sub.copy()\n", "\n", "# Replace data with the differences\n", - "hadgem2_obs_diff.data = hadgem2_regrid.data - obs_cube.data\n", - "mpi_obs_diff.data = mpi_regrid.data - obs_cube.data\n", + "hadgem2_obs_diff.data = hadgem2_regrid.data - obs_cube_sub.data\n", + "mpi_obs_diff.data = mpi_regrid.data - obs_cube_sub.data\n", "\n", "# Plotting\n", "plt.figure(figsize=(12, 10))\n", "plt.subplot(1, 2, 1) # Create a new subplot for the first differences, 2 rows, 1 column, 1st plot\n", "\n", "# Only plot the region containing data. We use the intersection method to do this.\n", - "qplt.pcolormesh(hadgem2_obs_diff[0].intersection(longitude=(90, 135), latitude=(-20, 32)), \n", - " vmax=10, vmin=-10, \n", + "qplt.pcolormesh(hadgem2_obs_diff[0], \n", + " vmax=5, vmin=-5, \n", " cmap=plt.get_cmap('RdBu')) # Note this is where cube slicing is needed as you can only plot 2-coordinate\n", " # dimensions with qplt.contourf, so here we have selected time[0] as there is only\n", " # one timestep (the baseline 1986-2005 mean)\n", @@ -695,8 +663,8 @@ "ax.coastlines() # adds coastlines defined by the axes of the plot\n", "\n", "plt.subplot(1, 2, 2) # Create a new subplot for the model data 2 row, 2 columns, 2nd plot\n", - "qplt.pcolormesh(mpi_obs_diff[0].intersection(longitude=(90, 135), latitude=(-20, 32)),\n", - " vmax=10, vmin=-10,\n", + "qplt.pcolormesh(mpi_obs_diff[0],\n", + " vmax=5, vmin=-5,\n", " cmap=plt.get_cmap('RdBu'))\n", "\n", "plt.title('MPI-ESM-LR - obs') # plots a title for the plot\n", @@ -741,48 +709,22 @@ "\n", "## 3.4 Climatological mean and annual cycle for an ensemble\n", "\n", - "So far data from two GCMs downscaled with the REMO2015 RCM have been analysed. In this section we will add data from an extra RCM (REGCM4) and an extra GCM giving 6 runs in total. We will also make use of the CRU observational data set. \n", + "So far data from two GCMs downscaled with the REMO2015 RCM have been analysed. In this section we will add data from an an extra GCM (NorESM1-M) giving 3 runs in total. We will also make use of the CRU observational data set. \n", "\n", "The CRU data are a monthly global land-only dataset (1901-present) at 0.5 degree resolution. Nine variables are available, including mean, min, max temperature and precipitation. For further details please see: https://crudata.uea.ac.uk/cru/data/hrg/ \n", "\n", - "This gives us an ensemble of 6 GCM-RCM pairs:\n", - "\n", - "* RCM REMO2015 downscaling:\n", - " * HadGEM2-ES\n", - " * MPI-ESM-LR\n", - " * NorESM1-M\n", - "* RCM REGCM4-7 downscaling:\n", - " * HadGEM2-ES\n", - " * MPI-ESM-MR (note medium resolution not low resolution)\n", - " * NorESM1-M\n", - "\n", - "And observational datasets:\n", - "\n", - "* CHIRPS\n", - "* CRU\n", "\n", "Taking an ensemble approach allows us to account for a range of uncertainty in the model projections.\n", "\n", "Write a series of scripts to do the following:\n", "\n", - "**h) Calculate the OND seasonal mean and annual cycle** (for the BK area) for 1.5m temperature and precipitation for CRU and CHIRPS observations\n", + "**h) Calculate the OND seasonal mean and annual cycle** (for the LU area) for 1.5m temperature and precipitation for CRU and CHIRPS observations\n", "\n", - "**i) Calculate OND seasonal-mean and monthly-mean anomalies** for the BK area for the 4 additional models\n", + "**i) Calculate OND seasonal-mean and monthly-mean anomalies** for the LU area for the additional models\n", "\n", "**j) Plot a series of figures** that shows 1) the monthly cycles of temperature and rainfall comparing the 6 models and the observations; and 2) the monthly differences between the models and observations" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# we first need to download CRU and netcdf data\n", - "copy_s3_files('s3://ias-pyprecis/data/CRU/*.nc', 'data/CRU/')\n", - "copy_s3_files('s3://ias-pyprecis/data/netcdf/*.nc', 'data/netcdf/')" - ] - }, { "cell_type": "code", "execution_count": null, @@ -793,20 +735,18 @@ "Here are some useful variables you might like to use in your scripts\n", "'''\n", "# Some helpful data locations\n", - "DATADIR = 'data_v2'\n", + "DATADIR = 'data_afr22'\n", "CHIRPSDIR = os.path.join(DATADIR, 'CHIRPS')\n", "CRUDIR = os.path.join(DATADIR, 'CRU')\n", - "CLIMDIR = 'data_v2/EAS-22/climatology'\n", - "MODELDIR = os.path.join(DATADIR, 'cordex/EAS-22')\n", + "CLIMDIR = DATADIR+'/AFR-22/climatology'\n", + "MODELDIR = os.path.join(DATADIR, 'cordex/AFR-22')\n", "\n", "# Some helpful model variables\n", - "GCMS = ['hadgem2-es', 'mpi-esm-lr']\n", - "RCMS = ['GERICS-REMO2015','ICTP-RegCM4-7']\n", + "GCMS = ['hadgem2-es', 'mpi-esm-lr', 'nor']\n", "\n", - "# Bangkok domains...\n", - "# ... in true lat-lon coordiates\n", - "lon=(99.5, 100.5)\n", - "lat=(13.5, 14.5)" + "# Luanda domain...\n", + "lon = (8.0, 18.0)\n", + "lat = (-14.0, -4.0)" ] }, { @@ -817,13 +757,13 @@ "source": [ "'''\n", "h) Calculate the OND seasonal-mean and monthly-mean 1.5m temperature and precipitation \n", - "for the BK area, for CRU and CHIRPS observations\n", + "for the LU area, for CRU and CHIRPS observations\n", "'''\n", "# Load CHIRPS data\n", "\n", "# Load CRU data\n", "\n", - "# Extract BK area\n", + "# Extract LU area\n", "\n", "# Add OND season catagorisation\n", "\n", @@ -833,7 +773,7 @@ "\n", "# Aggregate cubes\n", "\n", - "# Find BK area average\n", + "# Find LU area average\n", "\n", "# Check and add cube metadata\n", "\n", @@ -848,8 +788,8 @@ "outputs": [], "source": [ "'''\n", - "i) Calculate OND seasonal-mean and monthly-mean anomalies for the BK area \n", - "for the 4 additional models runs \n", + "i) Calculate OND seasonal-mean and monthly-mean anomalies for the LU area \n", + "for the additional models run\n", "'''\n", "# Load ensemble members\n", "# Remember you need to do this for both precipitation AND temperature\n", @@ -857,7 +797,7 @@ "# Regrid ensemble members onto observational grid\n", "# Remember you need to check your model and obs cubes have the appropriate coordinate systems defined\n", "\n", - "# Extract the BK area. Remember you are now working in true lat-lon coordinates!\n", + "# Extract the LU area. Remember you are now working in true lat-lon coordinates!\n", "\n", "# Find OND and monthly means\n", "\n", @@ -874,7 +814,7 @@ "source": [ "---\n", "
    \n", - " Question: What difference would it make if we first extracted the BK area and then regrid the models?
    \n", + " Question: What difference would it make if we first extracted the LU area and then regrid the models?
    \n", "Which order is best for preserving data integrity?\n", "
    " ] @@ -984,7 +924,7 @@ "metadata": {}, "source": [ "
    \n", - "Question: What are the advantages and disadvantages of plotting spatial maps of temperature and rainfall variability over Bangkok?\n", + "Question: What are the advantages and disadvantages of plotting spatial maps of temperature and rainfall variability over Luanda?\n", "
    " ] }, diff --git a/notebooks/AFR-22/worksheet_solutions.ipynb b/notebooks/AFR-22/worksheet_solutions.ipynb index 7712b2c..838325f 100755 --- a/notebooks/AFR-22/worksheet_solutions.ipynb +++ b/notebooks/AFR-22/worksheet_solutions.ipynb @@ -78,8 +78,8 @@ "# Enter the ordered latitude and longitude coordinates for Luanda here:\n", "# lon=( , ) # longitude (East - West extent)\n", "# lat=( , ) # latuitude (South - North extent)\n", - "lon = (99.5, 100.5)\n", - "lat = (13.5, 14.5)" + "lon = (8.0, 18.0)\n", + "lat = (-4.0, -14.0)" ] }, { @@ -97,8 +97,8 @@ "metadata": {}, "outputs": [], "source": [ - "# Load the BK extracted data created in previous step\n", - "infile = os.path.join(CHIRPSDIR, 'chirps.mon.1986_2005.BK.nc')\n", + "# Load the LU extracted data created in previous step\n", + "infile = os.path.join(CHIRPSDIR, 'chirps.mon.1986_2005.LU.nc')\n", "data = iris.load_cube(infile)\n", "\n", "# Add monthly coord categorisation to the time dim coordinate\n", @@ -107,7 +107,7 @@ "# Now calculate monthly means\n", "monthly_mean = data.aggregated_by(['month_number'], iris.analysis.MEAN)\n", "\n", - "# and change units to mm/day\n", + "# and change units to mm/day from mm/month\n", "monthly_mean.convert_units('mm day-1')\n", "\n", "# create the area averaged monthly mean of daily rainfall\n", @@ -145,11 +145,11 @@ "\n", "# Quick line plot for cube \n", "qplt.plot(cube.coord('month_number'), cube)\n", - "plt.title('BK area averaged ' + gcm + '\\n monthly average of daily rainfall')\n", + "plt.title('LU area averaged CHIRPS \\n monthly average of daily rainfall')\n", "ax = plt.gca()\n", "ax.xaxis.set_label_text('Month Number')\n", "ax.set_xlim(0.5, 12.5)\n", - "ax.set_ylim(0, 16)\n", + "ax.set_ylim(0, 12)\n", "plt.show()" ] }, @@ -168,7 +168,7 @@ "outputs": [], "source": [ "# Directory name where data is read from\n", - "indir = os.path.join(DATADIR, 'EAS-22', 'climatology')\n", + "indir = os.path.join(DATADIR, 'AFR-22', 'climatology')\n", "\n", "# load HadGEM2-ES downscaled model data\n", "hadgem2 = iris.load_cube(f'{indir}/hadgem2-es.OND.mean.1986_2005.pr.mmday-1.rg.nc')\n", From 54de3b7d7694875348ab64cf9643df9740a2a08b Mon Sep 17 00:00:00 2001 From: Nick Savage Date: Mon, 25 Apr 2022 11:08:08 +0100 Subject: [PATCH 07/23] Add changes to makedata notebook --- notebooks/AFR-22/makedata.ipynb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/notebooks/AFR-22/makedata.ipynb b/notebooks/AFR-22/makedata.ipynb index 51abdd8..3bf28e3 100755 --- a/notebooks/AFR-22/makedata.ipynb +++ b/notebooks/AFR-22/makedata.ipynb @@ -12,7 +12,7 @@ "from iris.time import PartialDateTime\n", "from iris.experimental.equalise_cubes import equalise_attributes\n", "\n", - "DATADIR = '/project/ciid/projects/PRECIS/worksheets/data_v2/EAS-22/'\n", + "DATADIR = '/project/ciid/projects/PRECIS/worksheets/data_afr22/AFR-22/'\n", "# write outputs to own directory so that can be checked before upload under ciid\n", "OUTDIR = f'{os.getenv(\"SCRATCH\")}/cordex_inputs/'\n" ] @@ -139,7 +139,7 @@ " shortgcm = shortnames[gcmid]\n", "\n", " # find all the files \n", - " flist = glob.glob(DATADIR + f'pr_EAS-22_{gcmid}_rcp85_*_GERICS-REMO2015_*_day_*.nc')\n", + " flist = glob.glob(DATADIR + f'pr_AFR-22_{gcmid}_rcp85_*_GERICS-REMO2015_*_day_*.nc')\n", " print (f'input files: {flist}')\n", " \n", " # load using time constraint above\n", @@ -179,7 +179,7 @@ " shortgcm = shortnames[gcmid]\n", "\n", " # find all the files \n", - " flist = glob.glob(DATADIR + f'pr_EAS-22_{gcmid}_historical_*_GERICS-REMO2015_*_day_*.nc')\n", + " flist = glob.glob(DATADIR + f'pr_AFR-22_{gcmid}_historical_*_GERICS-REMO2015_*_day_*.nc')\n", " print (f'input files: {flist}')\n", " \n", " # load using time constraint above\n", From 9954daa2af8dd84aa2a18b66e6d527f91861dd13 Mon Sep 17 00:00:00 2001 From: Nick Savage Date: Tue, 26 Apr 2022 11:59:05 +0100 Subject: [PATCH 08/23] update worksheet 4 for AFR-22 and some other fixes --- notebooks/AFR-22/worksheet4.ipynb | 40 +++++++++++++++------- notebooks/AFR-22/worksheet_solutions.ipynb | 32 ++++++++++++++--- 2 files changed, 55 insertions(+), 17 deletions(-) diff --git a/notebooks/AFR-22/worksheet4.ipynb b/notebooks/AFR-22/worksheet4.ipynb index 64f072e..5fc04fe 100755 --- a/notebooks/AFR-22/worksheet4.ipynb +++ b/notebooks/AFR-22/worksheet4.ipynb @@ -69,10 +69,10 @@ "import numpy.ma as ma\n", "\n", "# Some helpful data locations\n", - "DATADIR = 'data_v2/EAS-22/'\n", + "DATADIR = 'data_afr22/AFR-22/'\n", "CLIMDIR = os.path.join(DATADIR, 'climatology')\n", "HISTDIR = os.path.join(DATADIR, 'historical')\n", - "FUTRDIR = os.path.join(DATADIR, 'future')\n", + "FUTRDIR = os.path.join(DATADIR, 'rcp85')\n", "GCMIDS = ['hadgem2-es', 'mpi-esm-lr']" ] }, @@ -218,20 +218,32 @@ "source": [ "# HINT: Your filenames should have the format: \n", "# gcmid + '.OND.mean.' + time_periods[period] + '.GERICS-REMO2015.tm.C.nc'\n", - "time_periods = {'historical':'1986_2005', 'future':'2041_2060'}\n", "\n", "for gcmid in GCMIDS:\n", - " for period in time_periods.keys():\n", - " # Load the data:\n", "\n", - " # In order to calculate OND mean, add a season coordinate, separating OND from the other months:\n", + " # first historical\n", "\n", - " # Extract the data for the OND season only:\n", - " \n", - " # Now calculate the mean over the OND season:\n", + " # in order to calculate OND mean, we divide the months into two seasons: \n", + " # one for OND and a second for the remaining months\n", "\n", - " # save the OND mean as a netCDF ('outfile' specifies the output file name for your OND mean cube):\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.' + time_periods[period] + '.GERICS-REMO2015.tm.C.nc')\n" + " # Extract the data for the OND season only\n", + "\n", + " # Now calculate the mean over the OND season\n", + "\n", + " # save the OND mean as a netCDF\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.1986_2005.GERICS-REMO2015.tm.C.nc')\n", + " \n", + " # then RCP8.5\n", + "\n", + " # in order to calculate OND mean, we divide the months into two seasons: \n", + " # one for OND and a second for the remaining months\n", + "\n", + " # Extract the data for the OND season only\n", + "\n", + " # Now calculate the mean over the OND season\n", + "\n", + " # save the OND mean as a netCDF\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.2041_2060.GERICS-REMO2015.tm.C.nc')\n" ] }, { @@ -244,7 +256,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "scrolled": false + }, "outputs": [], "source": [ "for gcmid in GCMIDS:\n", @@ -367,7 +381,7 @@ "source": [ "# Read in the land-sea mask. \n", "# The cube data array has a land fraction associated with it which we'll use to mask out ocean points.\n", - "land_fraction_file = 'sftlf_EAS-22_MOHC-HadGEM2-ES_historical_r0i0p0_GERICS-REMO2015_v1_fx_r0i0p0.nc'\n", + "land_fraction_file = 'sftlf_AFR-22_MOHC-HadGEM2-ES_historical_r0i0p0_GERICS-REMO2015_v1_fx_r0i0p0.nc'\n", "land_fraction = iris.load_cube(DATADIR + land_fraction_file)\n", "\n", "# convert this to a binary (i.e. 1 or 0 mask)\n", diff --git a/notebooks/AFR-22/worksheet_solutions.ipynb b/notebooks/AFR-22/worksheet_solutions.ipynb index 838325f..c56d000 100755 --- a/notebooks/AFR-22/worksheet_solutions.ipynb +++ b/notebooks/AFR-22/worksheet_solutions.ipynb @@ -215,8 +215,32 @@ "metadata": {}, "outputs": [], "source": [ + "# HINT: Your filenames should have the format: \n", + "# gcmid + '.OND.mean.' + time_periods[period] + '.GERICS-REMO2015.tm.C.nc'\n", + "\n", "for gcmid in GCMIDS:\n", - " infile = os.path.join(FUTRDIR, gcmid + '.mon.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", + "\n", + " # first historical\n", + " infile = os.path.join(HISTDIR, gcmid + '.mon.1986_2005.GERICS-REMO2015.tm.C.nc')\n", + " data = iris.load_cube(infile)\n", + "\n", + " # in order to calculate OND mean, we divide the months into two seasons: \n", + " # one for OND and a second for the remaining months\n", + " iris.coord_categorisation.add_season(data, 'time', name='seasons', seasons=('jfmamjjas','ond'))\n", + "\n", + " # Extract the data for the OND season only\n", + " data_ond = data.extract(iris.Constraint(seasons='ond'))\n", + "\n", + " # Now calculate the mean over the OND season\n", + " ond_mean = data_ond.aggregated_by(['seasons'], iris.analysis.MEAN)\n", + "\n", + " # save the OND mean as a netCDF\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.1986_2005.GERICS-REMO2015.tm.C.nc')\n", + " iris.save(ond_mean, outfile)\n", + " print('Saved: {}'.format(outfile))\n", + " \n", + " # then RCP8.5\n", + " infile = os.path.join(FUTRDIR, gcmid + '.mon.2041_2060.GERICS-REMO2015.tm.C.nc')\n", " data = iris.load_cube(infile)\n", "\n", " # in order to calculate OND mean, we divide the months into two seasons: \n", @@ -230,9 +254,9 @@ " ond_mean = data_ond.aggregated_by(['seasons'], iris.analysis.MEAN)\n", "\n", " # save the OND mean as a netCDF\n", - " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.2041_2060.GERICS-REMO2015.pr.mmday-1.nc')\n", + " outfile = os.path.join(CLIMDIR, gcmid + '.OND.mean.2041_2060.GERICS-REMO2015.tm.C.nc')\n", " iris.save(ond_mean, outfile)\n", - " print('Saved: {}'.format(outfile))" + " print('Saved: {}'.format(outfile))\n" ] }, { @@ -251,7 +275,7 @@ "source": [ "# Read in the land-sea mask. \n", "# The cube data array has a land fraction associated with it which we'll use to mask out ocean points.\n", - "land_fraction_file = 'sftlf_EAS-22_MOHC-HadGEM2-ES_historical_r0i0p0_GERICS-REMO2015_v1_fx_r0i0p0.nc'\n", + "land_fraction_file = 'sftlf_AFR-22_MOHC-HadGEM2-ES_historical_r0i0p0_GERICS-REMO2015_v1_fx_r0i0p0.nc'\n", "land_fraction = iris.load_cube(DATADIR + land_fraction_file)\n", "\n", "# convert this to a binary (i.e. 1 or 0 mask)\n", From 927198c31bae164a2bba641218ffe224cb7a6f3d Mon Sep 17 00:00:00 2001 From: Nick Savage Date: Tue, 26 Apr 2022 15:59:04 +0100 Subject: [PATCH 09/23] finish sec 5.1 --- notebooks/AFR-22/worksheet3.ipynb | 2 +- notebooks/AFR-22/worksheet5.ipynb | 59 ++++++++++++---------- notebooks/AFR-22/worksheet_solutions.ipynb | 12 +++-- 3 files changed, 42 insertions(+), 31 deletions(-) diff --git a/notebooks/AFR-22/worksheet3.ipynb b/notebooks/AFR-22/worksheet3.ipynb index 3e6f183..d7fa8c6 100755 --- a/notebooks/AFR-22/worksheet3.ipynb +++ b/notebooks/AFR-22/worksheet3.ipynb @@ -523,7 +523,7 @@ "source": [ "The next few lines of code **regrid the model data to the grid used by the observations**. \n", "\n", - "From the plots created in section 2.4, we know that the area covered by CHIRPS data is larger than the EAS-22 model domain. Hence, the **extrapolation mode** is set to `mask` so that any grid cells on the CHIRPS grid which do not overlap with model grid cells are masked `off`; otherwise, the model data would be interpolated and would produce misleading results.\n", + "From the plots created in section 2.4, we know that the area covered by CHIRPS data is larger than the AFR-22 model domain. Hence, the **extrapolation mode** is set to `mask` so that any grid cells on the CHIRPS grid which do not overlap with model grid cells are masked `off`; otherwise, the model data would be interpolated and would produce misleading results.\n", "\n", "Note also that as CHIRPS is a near global data set, we take a subset of the data over our region of interest.\n", "\n" diff --git a/notebooks/AFR-22/worksheet5.ipynb b/notebooks/AFR-22/worksheet5.ipynb index 4a6d417..ebf7f71 100755 --- a/notebooks/AFR-22/worksheet5.ipynb +++ b/notebooks/AFR-22/worksheet5.ipynb @@ -82,13 +82,19 @@ "from iris.analysis import Aggregator\n", "\n", "# Some helpful data locations\n", - "DATADIR = 'data_v2/EAS-22'\n", + "DATADIR = 'data_afr22/AFR-22'\n", "CLIMDIR = os.path.join(DATADIR, 'climatology')\n", "HISTDIR = os.path.join(DATADIR, 'historical')\n", "FUTRDIR = os.path.join(DATADIR, 'future')\n", - "CHIRPSDIR = os.path.join('data_v2', 'CHIRPS')\n", + "CHIRPSDIR = os.path.join('data_afr22', 'CHIRPS')\n", "GCMIDS = ['hadgem2-es', 'mpi-esm-lr']\n", - "TIME_PERIODS = {'historical':'1986_2005', 'future':'2041_2060'}" + "TIME_PERIODS = {'historical':'1986_2005', 'rcp85':'2041_2060'}\n", + "\n", + "# Approximate region covered by AFR-22\n", + "lon_0 = -25.0\n", + "lon_1 = 65.0\n", + "lat_0 = -35.0\n", + "lat_1 = 30.0\n" ] }, { @@ -265,7 +271,8 @@ "\n", "# Set common limits for each subplot\n", "cbar_lims=(0,number_chirps_days)\n", - "easia_domain = [70,160,10,50]\n", + "\n", + "africa_domain = [lon_0, lon_1, lat_0, lat_1]\n", "\n", "# Load and plot the models' wet day count\n", "for n, gcmid in enumerate(GCMIDS):\n", @@ -275,7 +282,7 @@ " qplt.pcolormesh(nwetdays, vmin=cbar_lims[0], vmax=cbar_lims[1])\n", " plt.title(gcmid)\n", " ax1.coastlines() # adds coastlines defined by the axes of the plot\n", - " ax1.set_extent(easia_domain, crs=ccrs.PlateCarree())\n", + " ax1.set_extent(africa_domain, crs=ccrs.PlateCarree())\n", "\n", "# Load and plot CHIRPS wet day count\n", "infile = os.path.join(CLIMDIR, 'chirps.wetday.nc')\n", @@ -285,7 +292,7 @@ "plt.title('Observations (CHIRPS)')\n", "ax = plt.gca() # gca function that returns the current axes\n", "ax.coastlines()\n", - "ax.set_extent(easia_domain, crs=ccrs.PlateCarree())\n", + "ax.set_extent(africa_domain, crs=ccrs.PlateCarree())\n", "plt.show()" ] }, @@ -299,7 +306,7 @@ " \n", "* Regrid data onto a common grid, to the finer (higher) resolution
    \n", "* Regrid data onto a common grid, to the coarser (lower) resolution
    \n", - "* Convert CODREX data to a regular lat-lon grid if the simulation used a rotated pole
    \n", + "* Convert CORDEX data to a regular lat-lon grid if the simulation used a rotated pole
    \n", "* Ensure the units are comparable (e.g not comparing K with C)
    \n", " \n", "Which of these steps are required when __comparing output for different time periods from the same model simulation__ (e.g. _future - baseline_ difference calculations)? \n", @@ -346,24 +353,23 @@ "obs.coord('latitude').coord_system = wgs84_cs \n", "obs.coord('longitude').coord_system = wgs84_cs\n", "\n", - "# constrain the observations to a smaller domain \n", - "obs_sub = obs.intersection(longitude=(70, 160), latitude=(10, 50))\n", + "# constrain the observations to a smaller domain but still one larger than CORDEX\n", + "obs_sub = obs.intersection(longitude=(lon_0-20., lon_1+20.), latitude=(lat_0-20, lat_1+20))\n", + "# due to a bug in iris, we need to force it to load the mask \n", + "obs_sub.data.mask\n", "\n", "\n", "# The observed rainfall data have been created using surface rain gauges, and so are only available\n", "# over land points. Define a mask to remove sea points. The mask is True for masked points.\n", "mask = np.where(obs.data > 0.0, False, True)\n", "\n", - "# Redefine the obs data array as a masked array.\n", - "obs.data = np.ma.array(obs.data, mask=mask)\n", - "\n", "# Define regridding method\n", "scheme = iris.analysis.Linear(extrapolation_mode='mask')\n", "\n", "for gcmid in GCMIDS:\n", " infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['historical'] + '.GERICS-REMO2015.wetday.pcent.nc')\n", " model_baseline = iris.load_cube(infile)\n", - " infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['future'] + '.GERICS-REMO2015.wetday.pcent.nc')\n", + " infile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS['rcp85'] + '.GERICS-REMO2015.wetday.pcent.nc')\n", " model_future = iris.load_cube(infile)\n", " # In order to compare the modelled and observed numbers of wet days,\n", " # the model data needs to be regridded to the CHIRPS grid\n", @@ -372,12 +378,14 @@ "\n", " # Find the difference between futue and baseline models\n", " diff_model = model_future_rg - model_baseline_rg\n", - " diff_model.rename('{} change in number of wet days (>=1mm/day) 2041-2060 vs 1986-2005 ')\n", + " diff_model.rename(f'{gcmid} change in number of wet days (>=1mm/day) 2041-2060 vs 1986-2005 ')\n", " # Save the file\n", " outfile = os.path.join(CLIMDIR, gcmid + '.GERICS-REMO2015.wetday.pcent.diff.nc')\n", " iris.save(diff_model, outfile)\n", " print('Saved {}'.format(outfile))\n", "\n", + " # due to a bug in iris, we need to force it to load the mask \n", + " obs_sub.data.mask\n", " # Subtract the observed percentages of wet days from the modelled percentages\n", " diff_mod_obs = model_baseline_rg - obs_sub\n", " diff_mod_obs.rename(f'{gcmid} number of wet days (>=1mm/day) bias compared to CHIRPS')\n", @@ -402,7 +410,7 @@ "source": [ "**e)** **Plot the percentage change and model bias for wet day frequency**. \n", "\n", - "**First**, run the code block below to produce a series of plots showing the model bias and future precipitation change for _cahpa_ and _cahpb_ simulations.
    \n", + "**First**, run the code block below to produce a series of plots showing the model bias and future precipitation change for the two GCM driven simulations.
    \n", "\n", "As the model domain is smaller than the observations domain, you will see that the data is plotted on a domain which is larger than necessary. \n", "\n", @@ -424,14 +432,15 @@ " infile = os.path.join(CLIMDIR, gcmid + '.GERICS-REMO2015.wetday.pcent.diff.nc')\n", " pcent_change = iris.load_cube(infile)\n", " \n", - " # Add in a line of code to constrain the model domain to these coordinates: \n", - " # longitude=(70, 160)\n", - " # latitude=(10, 50)\n", - " pcent_change_subset = \n", + " # Add in a line of code to constrain the model domain to the coordinates \n", + " # used above\n", + " # longitude=(lon_0, lon_1)\n", + " # latitude=(lat_0, lat_1)\n", + " #pcent_change_subset = \n", " \n", " # plot percentage changes on first row\n", " plt.subplot(2, 2, n+1)\n", - " qplt.pcolormesh(pcent_change_subset, \n", + " qplt.pcolormesh(pcent_change, \n", " vmax=10, vmin=-10, cmap='BrBG')\n", " plt.title(gcmid + ' future-historical \\n precipitation change (%)')\n", " ax = plt.gca()\n", @@ -443,15 +452,13 @@ " infile = os.path.join(CLIMDIR, gcmid + '.GERICS-REMO2015.wetday.pcent.bias.nc')\n", " pcent_bias = iris.load_cube(infile)\n", " \n", - " # Add in a line of code to constrain the model domain to these lat-lon coordinates: \n", - " # longitude=(70, 160)\n", - " # latitude=(10, 50)\n", - " pcent_bias_subset = \n", + " # Add in a line of code to constrain the model domain to same lat-lon coordinate again\n", + " #pcent_bias_subset = \n", " \n", " # plot bias on the second row\n", " plt.subplot(2, 2, n+3)\n", - " qplt.pcolormesh(pcent_bias_subset, \n", - " vmax=20, vmin=-20, cmap='BrBG')\n", + " qplt.pcolormesh(pcent_bias, \n", + " vmax=40, vmin=-40, cmap='BrBG')\n", " plt.title(gcmid + ' model-observations \\n precipitation difference (%)')\n", " ax = plt.gca()\n", " ax.coastlines()\n", diff --git a/notebooks/AFR-22/worksheet_solutions.ipynb b/notebooks/AFR-22/worksheet_solutions.ipynb index c56d000..28c748b 100755 --- a/notebooks/AFR-22/worksheet_solutions.ipynb +++ b/notebooks/AFR-22/worksheet_solutions.ipynb @@ -413,10 +413,14 @@ "metadata": {}, "outputs": [], "source": [ - " # Add in a line of code to constrain the model domain to these coordinates: \n", - " # longitude=(70, 160)\n", - " # latitude=(10, 50)\n", - " pcent_change_subset = pcent_change.intersection(longitude=(70, 160), latitude=(10, 50))" + " # Add in a line of code to constrain the model domain to the coordinates\n", + " # used above\n", + " # longitude=(lon_0, lon_1)\n", + " # latitude=(lat_0, lat_1)\n", + " pcent_change_subset = pcent_change.intersection(longitude=(lon_0, lon_1), latitude=(lat_0, lat_1))\n", + " \n", + " # Add in a line of code to constrain the model domain to same lat-lon coordinate again\n", + " pcent_bias_subset = pcent_bias.intersection(longitude=(lon_0, lon_1), latitude=(lat_0, lat_1))\n" ] }, { From 0b1be25072d3b20f0ccbdb64a64f52b73fa3b429 Mon Sep 17 00:00:00 2001 From: Nick Savage Date: Fri, 29 Apr 2022 09:35:50 +0100 Subject: [PATCH 10/23] Final changes, including bug fix for 1mm threshold --- notebooks/AFR-22/worksheet5.ipynb | 35 ++++++++++++---------- notebooks/AFR-22/worksheet6.ipynb | 6 +--- notebooks/AFR-22/worksheet_solutions.ipynb | 11 ++++--- 3 files changed, 27 insertions(+), 25 deletions(-) diff --git a/notebooks/AFR-22/worksheet5.ipynb b/notebooks/AFR-22/worksheet5.ipynb index ebf7f71..0d06d8e 100755 --- a/notebooks/AFR-22/worksheet5.ipynb +++ b/notebooks/AFR-22/worksheet5.ipynb @@ -144,22 +144,16 @@ "# Do for both model simulations and time periods\n", "# Then calcuate the percentage of wet days.\n", "\n", - "# Define a new aggregator to help count non-zero days\n", - "# (This uses a dask array to reduce memory load)\n", - "# To learn more about custom aggregators see\n", - "# https://scitools.org.uk/iris/docs/v2.4.0/examples/General/custom_aggregation.html#general-custom-aggregation \n", - "\n", - "count_nonzero = Aggregator('count', None,\n", - " units_func=lambda units: 1,\n", - " lazy_func=da.count_nonzero)\n", "\n", "for gcmid in GCMIDS:\n", " for period in TIME_PERIODS.keys():\n", " # Get path to daily data\n", " infile = os.path.join(DATADIR, period, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.pr.*.nc')\n", " data = iris.load_cube(infile)\n", - " # Select only wet days using our custom aggregator\n", - " model_wetdays = data.collapsed('time', count_nonzero)\n", + " \n", + " # count wet days \n", + " model_wetdays = data.collapsed('time', iris.analysis.COUNT,\n", + " function=lambda values: values > 1)\n", " model_wetdays.rename(f'{gcmid} number of wet days (>=1mm/day) {TIME_PERIODS[period]}')\n", " # Save the file\n", " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.wetday.nc')\n", @@ -261,7 +255,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "scrolled": false + }, "outputs": [], "source": [ "# Plot modelled and observed numbers of wet days for a common baseline period.\n", @@ -296,6 +292,13 @@ "plt.show()" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "markdown", "metadata": {}, @@ -458,7 +461,7 @@ " # plot bias on the second row\n", " plt.subplot(2, 2, n+3)\n", " qplt.pcolormesh(pcent_bias, \n", - " vmax=40, vmin=-40, cmap='BrBG')\n", + " vmax=20, vmin=-20, cmap='BrBG')\n", " plt.title(gcmid + ' model-observations \\n precipitation difference (%)')\n", " ax = plt.gca()\n", " ax.coastlines()\n", @@ -618,7 +621,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now do the same for the CHIRPS data. First we take a subset of the CHIRPS data to make the code run quicker - constraining the data in time to the same period as the RCM data above and in space to a similar area to the EAS-22 domain (62-185 degrees longitude, -2 to 50 degree latitude)" + "Now do the same for the CHIRPS data. First we take a subset of the CHIRPS data to make the code run quicker - constraining the data in time to the same period as the RCM data above and in space to a similar area to the AFR-22 domain " ] }, { @@ -632,11 +635,11 @@ "# now load CHIRPS daily data\n", "infile = os.path.join(CHIRPSDIR, 'chirps-v2.0_pr_day_1981-2018_p25.nc')\n", "obs_precip = iris.load_cube(infile, historical_time_constraint)\n", - "obs_precip = obs_precip.intersection(longitude=(62, 185), latitude=(-2, 50))\n", + "obs_precip = obs_precip.intersection(longitude=(lon_0, lon_1), latitude=(lat_0, lat_1))\n", "\n", "\n", "# save this to disk \n", - "subsetfile = os.path.join(CHIRPSDIR, 'chirps-v2.0_pr_day_1986-2005_p25_eastasia.nc')\n", + "subsetfile = os.path.join(CHIRPSDIR, 'chirps-v2.0_pr_day_1986-2005_p25_africa.nc')\n", "iris.save(obs_precip, subsetfile)\n", "\n", "# save memory\n", @@ -704,7 +707,7 @@ "obs_cube.coord('longitude').coord_system = wgs84\n", "\n", "# constrain the observations to a smaller domain \n", - "obs_cube = obs_cube.intersection(longitude=(70, 160), latitude=(10, 50))\n", + "#obs_cube = obs_cube.intersection(longitude=(lon_0, lon_1), latitude=(lat_0, lat_1))\n", "\n", "\n", "# Define regridding method\n", diff --git a/notebooks/AFR-22/worksheet6.ipynb b/notebooks/AFR-22/worksheet6.ipynb index a2bab3c..36e0737 100755 --- a/notebooks/AFR-22/worksheet6.ipynb +++ b/notebooks/AFR-22/worksheet6.ipynb @@ -13,7 +13,7 @@ "source": [ "This final worksheet is a chance for you to put together all the techniques you have learned in the previous worksheets.\n", "\n", - "Working with the same datasets, write some code to undertake an analysis of temperature extremes over our East Asia domain.\n", + "Working with the same datasets, write some code to undertake an analysis of temperature extremes over our Africa domain.\n", "\n", "You have the following datasets available to you:\n", "\n", @@ -86,9 +86,7 @@ "from iris.analysis import Aggregator\n", "\n", "# Some helpful data locations\n", - "DATADIR = 'data_v2/EAS-22'\n", - "PPDIR = os.path.join(DATADIR, 'pp')\n", "CLIMDIR = os.path.join(DATADIR, 'climatology')\n", "HISTDIR = os.path.join(DATADIR, 'historical')\n", @@ -234,11 +232,9 @@ "metadata": { "instance_type": "ml.t3.medium", "kernelspec": { - "display_name": "pyprecis-environment", "language": "python", "name": "pyprecis-environment" - }, "language_info": { "codemirror_mode": { diff --git a/notebooks/AFR-22/worksheet_solutions.ipynb b/notebooks/AFR-22/worksheet_solutions.ipynb index 28c748b..d977d0b 100755 --- a/notebooks/AFR-22/worksheet_solutions.ipynb +++ b/notebooks/AFR-22/worksheet_solutions.ipynb @@ -376,10 +376,11 @@ " <= cell.point <= PartialDateTime(year=2005))\n", "\n", "infile = os.path.join(CHIRPSDIR, 'chirps-v2.0_pr_day_1981-2018_p25.nc')\n", - "obs = iris.load_cube(infile, historical_time_constraint)#, 'daily precipitation analysis interpolated onto 0.25deg grids [mm/day]')\n", + "obs = iris.load_cube(infile, historical_time_constraint)\n", "\n", "# Find number of wet days\n", - "chirps_wetdays = obs.collapsed('time', count_nonzero)\n", + "chirps_wetdays = obs.collapsed('time', iris.analysis.COUNT,\n", + " function=lambda values: values > 1)\n", "chirps_wetdays.rename(f'CHIRPS number of wet days (>=1mm/day)')\n", "\n", "# Save wet days cube\n", @@ -450,7 +451,8 @@ " infile = os.path.join(CLIMDIR, gcmid + '.day.pc95.bias.GERICS-REMO2015.pr.mmday-1.nc')\n", " bias = iris.load_cube(infile)\n", " plt.subplot(2,2,2*n+1)\n", - " qplt.pcolormesh(bias)\n", + " qplt.pcolormesh(bias, \n", + " vmax=20, vmin=-20, cmap='BrBG')\n", " plt.gca().coastlines()\n", "\n", "\n", @@ -458,7 +460,8 @@ " infile = os.path.join(CLIMDIR, gcmid + '.day.pc95.diff.GERICS-REMO2015.pr.mmday-1.nc')\n", " pc_change = iris.load_cube(infile)\n", " plt.subplot(2,2,2*n+2)\n", - " qplt.pcolormesh(pc_change)\n", + " qplt.pcolormesh(pc_change, \n", + " vmax=10, vmin=-10, cmap='BrBG')\n", " plt.gca().coastlines()\n", "\n", "plt.show()" From 286ddde27716bf5a63b52e850d59fda4e33ab954 Mon Sep 17 00:00:00 2001 From: Nick Savage Date: Thu, 5 May 2022 10:59:18 +0100 Subject: [PATCH 11/23] don't include soft link --- notebooks/AFR-22/data_afr22 | 1 - 1 file changed, 1 deletion(-) delete mode 120000 notebooks/AFR-22/data_afr22 diff --git a/notebooks/AFR-22/data_afr22 b/notebooks/AFR-22/data_afr22 deleted file mode 120000 index 94ac274..0000000 --- a/notebooks/AFR-22/data_afr22 +++ /dev/null @@ -1 +0,0 @@ -/data/users/fris/data_afr22/ \ No newline at end of file From 167d1151866894f743e098469355ad320d8404ba Mon Sep 17 00:00:00 2001 From: Nick Savage Date: Sat, 7 May 2022 15:20:17 +0100 Subject: [PATCH 12/23] Start new module zero on basic Python --- notebooks/AFR-22/worksheet0.ipynb | 444 ++++++++++++++++++++++++++++++ 1 file changed, 444 insertions(+) create mode 100644 notebooks/AFR-22/worksheet0.ipynb diff --git a/notebooks/AFR-22/worksheet0.ipynb b/notebooks/AFR-22/worksheet0.ipynb new file mode 100644 index 0000000..50c7915 --- /dev/null +++ b/notebooks/AFR-22/worksheet0.ipynb @@ -0,0 +1,444 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "4fed1f04", + "metadata": {}, + "source": [ + "# Worksheet 0. Basic Python \n", + "\n", + "This worksheet acts as a very quick introduction to the Python Programming Language. It covers the key concepts used in the following notebooks but without going into much depth. There are lots of tutorial that you can use to learn more about Python available online. See for example:\n", + "\n", + " * [W3 Schools](https://www.w3schools.com/python/default.asp)\n", + " * [Software carpentry](http://swcarpentry.github.io/python-novice-gapminder/)\n", + " * [Official Python tutorial](https://docs.python.org/3/tutorial/)\n", + " \n", + " The key concepts we will teach you in this section are:\n", + " \n", + " * printing values \n", + " * comments\n", + " * variables and basic maths\n", + " * lists\n", + " * tuples\n", + " * loops\n", + " * using libraries\n", + " * objects and methods - how to use them\n", + " * lambda functions" + ] + }, + { + "cell_type": "markdown", + "id": "94933df8", + "metadata": {}, + "source": [ + "## 0.1 The Jupyter Notebook and the print function\n", + "\n", + "This is a jupyter notebook. It allows you to combine code (in this case Python) and formatted text. The notebook contains cells - each cell either contains formatted text (like this cell) or code (the next one). \n", + "\n", + "
    \n", + "Note: In the boxes where there is code or where you are asked to type code, click in the box, then press Ctrl + Enter to run the code.
    \n", + "Note: An percentage sign % is needed to run some commands on the shell. It is noted where this is needed.
    \n", + "Note: A hash # denotes a comment; anything written after this character does not affect the command being run.
    \n", + "
    \n", + "\n", + "Run the next cell by pressing Ctrl + Enter. and see the result" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "daaa2665", + "metadata": {}, + "outputs": [], + "source": [ + "print(\"hello, world\")" + ] + }, + { + "cell_type": "markdown", + "id": "87e9c4e9", + "metadata": {}, + "source": [ + "Now it's your turn. Can you complete the cell below to get it to say hello to you? In the cell below complete the line and then press Ctrl + Enter." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "537525f4", + "metadata": {}, + "outputs": [], + "source": [ + "print()" + ] + }, + { + "cell_type": "markdown", + "id": "85361751", + "metadata": {}, + "source": [ + "## 0.2 Variables\n", + "\n", + "Variables are containers that hold the value of our data. There are many different types of variables in Python, here we will show you some of the most important ones you will need in this course.\n", + "\n", + "* strings\n", + "* integers\n", + "* floating point numbers\n", + "\n", + "A [string](https://en.wikipedia.org/wiki/String_(computer_science)) is a type of variable that holds a sequence of characters. Run the code below which shows the creation and printing of a string. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b376a14f", + "metadata": {}, + "outputs": [], + "source": [ + "a_name = \"Alicia\"\n", + "print(a_name)" + ] + }, + { + "cell_type": "markdown", + "id": "cd425236", + "metadata": {}, + "source": [ + "Now complete the block below so it prints your name and then press Ctrl + Enter. Make sure you include the quotes - this is how Python knows this is a string and not the name of a variable" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "93d7a307", + "metadata": {}, + "outputs": [], + "source": [ + "my_name = \n", + "print()" + ] + }, + { + "cell_type": "markdown", + "id": "371c15ea", + "metadata": {}, + "source": [ + "We can also combine strings using the + operator:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2375002f", + "metadata": {}, + "outputs": [], + "source": [ + "message = \"Hello, \" + my_name\n", + "print(message)" + ] + }, + { + "cell_type": "markdown", + "id": "983dcbe4", + "metadata": {}, + "source": [ + "Notice that we did not set the variable my_name in the cell above - variables made in previous cell are retained in the computers memory until we shut the notebook down" + ] + }, + { + "cell_type": "markdown", + "id": "66f3a339", + "metadata": {}, + "source": [ + "Another way to combine strings is using the f-string like this:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c24a556e", + "metadata": {}, + "outputs": [], + "source": [ + "print(f\"Hello, {my_name}\" )" + ] + }, + { + "cell_type": "markdown", + "id": "fa2d0d88", + "metadata": {}, + "source": [ + "In the line above, the curly brackets {} are replaced by the value of the variable inside them. \n", + "\n", + "Now we will do some maths. We will start with whole numbers, called integers or int for short. What do you think the code below will print? Think about it and then run the cell to check your answer." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3b0e62e2", + "metadata": {}, + "outputs": [], + "source": [ + "a = 1\n", + "b = 2\n", + "# add a and b and save the value to a new variable c\n", + "c = a + b\n", + "# print the value of c\n", + "print(c)\n", + "\n", + "# we can also subtract two numbers\n", + "d = a - b\n", + "print (d)" + ] + }, + { + "cell_type": "markdown", + "id": "97d011b7", + "metadata": {}, + "source": [ + "What about numbers which are not whole? These are called floating point number or floats and they look very similar:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fda86384", + "metadata": {}, + "outputs": [], + "source": [ + "a = 1.5\n", + "b = 4.0\n", + "# now we multiply a by b using the * symbol\n", + "c = a * b\n", + "print(c)" + ] + }, + { + "cell_type": "markdown", + "id": "d9841b5f", + "metadata": {}, + "source": [ + "Complete the code below to calculate and print what 7 divided by 3 is then run the cell to check your answer. \n", + "\n", + "**Hint:** use the / symbol to divide one number by another" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4c41dc35", + "metadata": {}, + "outputs": [], + "source": [ + "a = 7\n", + "b = \n", + "c = \n", + "print()" + ] + }, + { + "cell_type": "markdown", + "id": "7167da79", + "metadata": {}, + "source": [ + "What do you think will happen if we try and divide a number by zero? run the cell below to find out." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "850d3cf7", + "metadata": {}, + "outputs": [], + "source": [ + "c = 1.5/0.0" + ] + }, + { + "cell_type": "markdown", + "id": "689f15be", + "metadata": {}, + "source": [ + "This is what happens when there is an error in your code. The Python language prints the line at which the error occurred and some information about what is wrong. In this case it is saying that it is an error to divide a number by zero. You will see many more errors as you go through these notebooks. This is all part of learning to programme - don't worry about it, but if you can't understand the problem or how to fix it please ask an instructor for help." + ] + }, + { + "cell_type": "markdown", + "id": "53dfcf4e", + "metadata": {}, + "source": [ + "# 0.3 Lists and tuples\n", + "\n", + "Very often we want to be able to store a number of variables together. Imagine a shopping list for example: we want bread, milk and eggs. In Python we would store these in a list like this:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d62180a6", + "metadata": {}, + "outputs": [], + "source": [ + "shopping = [\"bread\", \"milk\", \"eggs\"]\n", + "print(shopping)" + ] + }, + { + "cell_type": "markdown", + "id": "fc3c9703", + "metadata": {}, + "source": [ + "The square brackets here [] tell Python that this is a list. We can print each item on it's own as well as the whole list. Note that the first item is at position 0 in the list." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c920541e", + "metadata": {}, + "outputs": [], + "source": [ + "print(shopping[0])\n", + "print(shopping[1])\n", + "print(shopping[2])" + ] + }, + { + "cell_type": "markdown", + "id": "bdad1097", + "metadata": {}, + "source": [ + "We can also add items onto the list using append." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d0ba5879", + "metadata": {}, + "outputs": [], + "source": [ + "shopping.append(\"cheese\")\n", + "print(shopping)" + ] + }, + { + "cell_type": "markdown", + "id": "8a33e102", + "metadata": {}, + "source": [ + "Now add your own item onto the list and print just the last item \n", + "\n", + "**Hint:** this will be the 5th item on the list so you need index 4." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e260dd64", + "metadata": {}, + "outputs": [], + "source": [ + "shopping.append(\"\")\n", + "print(shopping[])" + ] + }, + { + "cell_type": "markdown", + "id": "bc5f11c2", + "metadata": {}, + "source": [ + "We can also change items in the list. We don't want bread, we want oranges, so we will change the first item in the list like this:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6b9fc26b", + "metadata": {}, + "outputs": [], + "source": [ + "shopping[0] = 'oranges'\n", + "print(shopping)" + ] + }, + { + "cell_type": "markdown", + "id": "cfad63bc", + "metadata": {}, + "source": [ + "Tuples look very similar to lists but use round brackets (). \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f610061b", + "metadata": {}, + "outputs": [], + "source": [ + "shopping = (\"bread\", \"milk\", \"eggs\")\n", + "print(shopping)\n", + "print(shopping[0])" + ] + }, + { + "cell_type": "markdown", + "id": "cc670e33", + "metadata": {}, + "source": [ + "However, once we create a tuple we can't change its contents:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9e5b9803", + "metadata": {}, + "outputs": [], + "source": [ + "shopping[0] = 'oranges'" + ] + }, + { + "cell_type": "markdown", + "id": "8691a933", + "metadata": {}, + "source": [ + "## 0.4 Loops\n", + "\n", + "We often want to do repeat a command multiple times. To do this we use for loops. For example - imagine we want to tell the user to buy each of the items in our shoppping list one at a time. This can be done as shown below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e3f2f29f", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "pyprecis-environment", + "language": "python", + "name": "pyprecis-environment" + }, + "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.6.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From a4b61014c668535e5d1e1363fd87c3ca77b6060e Mon Sep 17 00:00:00 2001 From: Nick Savage Date: Sat, 7 May 2022 15:38:16 +0100 Subject: [PATCH 13/23] add section on for loops --- notebooks/AFR-22/worksheet0.ipynb | 130 ++++++++++++++++++++---------- 1 file changed, 89 insertions(+), 41 deletions(-) diff --git a/notebooks/AFR-22/worksheet0.ipynb b/notebooks/AFR-22/worksheet0.ipynb index 50c7915..77643be 100644 --- a/notebooks/AFR-22/worksheet0.ipynb +++ b/notebooks/AFR-22/worksheet0.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "4fed1f04", + "id": "e918e5ac", "metadata": {}, "source": [ "# Worksheet 0. Basic Python \n", @@ -28,7 +28,7 @@ }, { "cell_type": "markdown", - "id": "94933df8", + "id": "9273a4d3", "metadata": {}, "source": [ "## 0.1 The Jupyter Notebook and the print function\n", @@ -47,7 +47,7 @@ { "cell_type": "code", "execution_count": null, - "id": "daaa2665", + "id": "0e4be353", "metadata": {}, "outputs": [], "source": [ @@ -56,7 +56,7 @@ }, { "cell_type": "markdown", - "id": "87e9c4e9", + "id": "1b7d723c", "metadata": {}, "source": [ "Now it's your turn. Can you complete the cell below to get it to say hello to you? In the cell below complete the line and then press Ctrl + Enter." @@ -65,7 +65,7 @@ { "cell_type": "code", "execution_count": null, - "id": "537525f4", + "id": "82e001d8", "metadata": {}, "outputs": [], "source": [ @@ -74,7 +74,7 @@ }, { "cell_type": "markdown", - "id": "85361751", + "id": "badab088", "metadata": {}, "source": [ "## 0.2 Variables\n", @@ -91,7 +91,7 @@ { "cell_type": "code", "execution_count": null, - "id": "b376a14f", + "id": "272ca43a", "metadata": {}, "outputs": [], "source": [ @@ -101,7 +101,7 @@ }, { "cell_type": "markdown", - "id": "cd425236", + "id": "0935dbbf", "metadata": {}, "source": [ "Now complete the block below so it prints your name and then press Ctrl + Enter. Make sure you include the quotes - this is how Python knows this is a string and not the name of a variable" @@ -110,7 +110,7 @@ { "cell_type": "code", "execution_count": null, - "id": "93d7a307", + "id": "4c726ab9", "metadata": {}, "outputs": [], "source": [ @@ -120,7 +120,7 @@ }, { "cell_type": "markdown", - "id": "371c15ea", + "id": "8976610c", "metadata": {}, "source": [ "We can also combine strings using the + operator:" @@ -129,7 +129,7 @@ { "cell_type": "code", "execution_count": null, - "id": "2375002f", + "id": "14f56210", "metadata": {}, "outputs": [], "source": [ @@ -139,7 +139,7 @@ }, { "cell_type": "markdown", - "id": "983dcbe4", + "id": "a33f42b0", "metadata": {}, "source": [ "Notice that we did not set the variable my_name in the cell above - variables made in previous cell are retained in the computers memory until we shut the notebook down" @@ -147,7 +147,7 @@ }, { "cell_type": "markdown", - "id": "66f3a339", + "id": "a810321f", "metadata": {}, "source": [ "Another way to combine strings is using the f-string like this:" @@ -156,7 +156,7 @@ { "cell_type": "code", "execution_count": null, - "id": "c24a556e", + "id": "bdd3a378", "metadata": {}, "outputs": [], "source": [ @@ -165,7 +165,7 @@ }, { "cell_type": "markdown", - "id": "fa2d0d88", + "id": "60a45864", "metadata": {}, "source": [ "In the line above, the curly brackets {} are replaced by the value of the variable inside them. \n", @@ -176,7 +176,7 @@ { "cell_type": "code", "execution_count": null, - "id": "3b0e62e2", + "id": "bcabd88a", "metadata": {}, "outputs": [], "source": [ @@ -194,7 +194,7 @@ }, { "cell_type": "markdown", - "id": "97d011b7", + "id": "9d267969", "metadata": {}, "source": [ "What about numbers which are not whole? These are called floating point number or floats and they look very similar:" @@ -203,7 +203,7 @@ { "cell_type": "code", "execution_count": null, - "id": "fda86384", + "id": "49365d69", "metadata": {}, "outputs": [], "source": [ @@ -216,7 +216,7 @@ }, { "cell_type": "markdown", - "id": "d9841b5f", + "id": "0eb43d45", "metadata": {}, "source": [ "Complete the code below to calculate and print what 7 divided by 3 is then run the cell to check your answer. \n", @@ -227,7 +227,7 @@ { "cell_type": "code", "execution_count": null, - "id": "4c41dc35", + "id": "caf8097d", "metadata": {}, "outputs": [], "source": [ @@ -239,7 +239,7 @@ }, { "cell_type": "markdown", - "id": "7167da79", + "id": "433795af", "metadata": {}, "source": [ "What do you think will happen if we try and divide a number by zero? run the cell below to find out." @@ -248,7 +248,7 @@ { "cell_type": "code", "execution_count": null, - "id": "850d3cf7", + "id": "2e3597c4", "metadata": {}, "outputs": [], "source": [ @@ -257,7 +257,7 @@ }, { "cell_type": "markdown", - "id": "689f15be", + "id": "e88d71f5", "metadata": {}, "source": [ "This is what happens when there is an error in your code. The Python language prints the line at which the error occurred and some information about what is wrong. In this case it is saying that it is an error to divide a number by zero. You will see many more errors as you go through these notebooks. This is all part of learning to programme - don't worry about it, but if you can't understand the problem or how to fix it please ask an instructor for help." @@ -265,7 +265,7 @@ }, { "cell_type": "markdown", - "id": "53dfcf4e", + "id": "1e14b81d", "metadata": {}, "source": [ "# 0.3 Lists and tuples\n", @@ -276,7 +276,7 @@ { "cell_type": "code", "execution_count": null, - "id": "d62180a6", + "id": "e818dd4e", "metadata": {}, "outputs": [], "source": [ @@ -286,7 +286,7 @@ }, { "cell_type": "markdown", - "id": "fc3c9703", + "id": "c53c9eb3", "metadata": {}, "source": [ "The square brackets here [] tell Python that this is a list. We can print each item on it's own as well as the whole list. Note that the first item is at position 0 in the list." @@ -295,7 +295,7 @@ { "cell_type": "code", "execution_count": null, - "id": "c920541e", + "id": "70e61175", "metadata": {}, "outputs": [], "source": [ @@ -306,7 +306,7 @@ }, { "cell_type": "markdown", - "id": "bdad1097", + "id": "1e440919", "metadata": {}, "source": [ "We can also add items onto the list using append." @@ -315,7 +315,7 @@ { "cell_type": "code", "execution_count": null, - "id": "d0ba5879", + "id": "64ce77fb", "metadata": {}, "outputs": [], "source": [ @@ -325,10 +325,10 @@ }, { "cell_type": "markdown", - "id": "8a33e102", + "id": "667e1fbb", "metadata": {}, "source": [ - "Now add your own item onto the list and print just the last item \n", + "Now add your own item onto the list and print just the last item. Add the missing parts in the cell below and then run it. \n", "\n", "**Hint:** this will be the 5th item on the list so you need index 4." ] @@ -336,7 +336,7 @@ { "cell_type": "code", "execution_count": null, - "id": "e260dd64", + "id": "5b402c49", "metadata": {}, "outputs": [], "source": [ @@ -346,7 +346,7 @@ }, { "cell_type": "markdown", - "id": "bc5f11c2", + "id": "0a5a58e3", "metadata": {}, "source": [ "We can also change items in the list. We don't want bread, we want oranges, so we will change the first item in the list like this:" @@ -355,7 +355,7 @@ { "cell_type": "code", "execution_count": null, - "id": "6b9fc26b", + "id": "41f86e9e", "metadata": {}, "outputs": [], "source": [ @@ -365,7 +365,7 @@ }, { "cell_type": "markdown", - "id": "cfad63bc", + "id": "f639bc39", "metadata": {}, "source": [ "Tuples look very similar to lists but use round brackets (). \n" @@ -374,7 +374,7 @@ { "cell_type": "code", "execution_count": null, - "id": "f610061b", + "id": "794ba610", "metadata": {}, "outputs": [], "source": [ @@ -385,7 +385,7 @@ }, { "cell_type": "markdown", - "id": "cc670e33", + "id": "5491a22e", "metadata": {}, "source": [ "However, once we create a tuple we can't change its contents:" @@ -394,7 +394,7 @@ { "cell_type": "code", "execution_count": null, - "id": "9e5b9803", + "id": "82610911", "metadata": {}, "outputs": [], "source": [ @@ -403,7 +403,7 @@ }, { "cell_type": "markdown", - "id": "8691a933", + "id": "940605b1", "metadata": {}, "source": [ "## 0.4 Loops\n", @@ -414,10 +414,58 @@ { "cell_type": "code", "execution_count": null, - "id": "e3f2f29f", + "id": "7db4311f", "metadata": {}, "outputs": [], - "source": [] + "source": [ + "for item in shopping:\n", + " print(f\"Please buy {item}\")\n", + "print(\"Thank you\")" + ] + }, + { + "cell_type": "markdown", + "id": "56a79f69", + "metadata": {}, + "source": [ + "We can use this to loop over a list of numbers and add them up. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "66f37703", + "metadata": {}, + "outputs": [], + "source": [ + "numbers = [1.0, 0.5, 0.9, 0.2]\n", + "sum = 0.0\n", + "for number in numbers:\n", + " sum = sum + number\n", + "print(f\"sum of your numbers is {sum}\")" + ] + }, + { + "cell_type": "markdown", + "id": "af10e730", + "metadata": {}, + "source": [ + "Make a list containing these numbers and add them up. 0.8, 2.4, 1.4, 9.6" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fc6cc8d3", + "metadata": {}, + "outputs": [], + "source": [ + "numbers = \n", + "sum = 0.0\n", + "for number in numbers:\n", + " sum = \n", + "print " + ] } ], "metadata": { From 9b45521938cf1bd3d255e26f9446570737243dd7 Mon Sep 17 00:00:00 2001 From: Nick Savage Date: Sat, 7 May 2022 17:08:31 +0100 Subject: [PATCH 14/23] complete worksheet 0 --- notebooks/AFR-22/worksheet0.ipynb | 446 ++++++++++++++++++++++++++---- notebooks/AFR-22/worksheet3.ipynb | 2 +- 2 files changed, 399 insertions(+), 49 deletions(-) diff --git a/notebooks/AFR-22/worksheet0.ipynb b/notebooks/AFR-22/worksheet0.ipynb index 77643be..0605af3 100644 --- a/notebooks/AFR-22/worksheet0.ipynb +++ b/notebooks/AFR-22/worksheet0.ipynb @@ -2,12 +2,12 @@ "cells": [ { "cell_type": "markdown", - "id": "e918e5ac", + "id": "679eac95", "metadata": {}, "source": [ "# Worksheet 0. Basic Python \n", "\n", - "This worksheet acts as a very quick introduction to the Python Programming Language. It covers the key concepts used in the following notebooks but without going into much depth. There are lots of tutorial that you can use to learn more about Python available online. See for example:\n", + "This worksheet acts as a very quick introduction to the Python Programming Language. It covers the key concepts used in the following notebooks but without going into much depth. There are lots of tutorials that you can use to learn more about Python available online. See for example:\n", "\n", " * [W3 Schools](https://www.w3schools.com/python/default.asp)\n", " * [Software carpentry](http://swcarpentry.github.io/python-novice-gapminder/)\n", @@ -18,17 +18,16 @@ " * printing values \n", " * comments\n", " * variables and basic maths\n", - " * lists\n", - " * tuples\n", + " * lists and tuples\n", " * loops\n", " * using libraries\n", - " * objects and methods - how to use them\n", - " * lambda functions" + " * Python functions and lambdas\n", + " * objects and methods - how to use them\n" ] }, { "cell_type": "markdown", - "id": "9273a4d3", + "id": "00d1402e", "metadata": {}, "source": [ "## 0.1 The Jupyter Notebook and the print function\n", @@ -47,7 +46,7 @@ { "cell_type": "code", "execution_count": null, - "id": "0e4be353", + "id": "cbf23b8b", "metadata": {}, "outputs": [], "source": [ @@ -56,7 +55,7 @@ }, { "cell_type": "markdown", - "id": "1b7d723c", + "id": "416c4744", "metadata": {}, "source": [ "Now it's your turn. Can you complete the cell below to get it to say hello to you? In the cell below complete the line and then press Ctrl + Enter." @@ -65,7 +64,7 @@ { "cell_type": "code", "execution_count": null, - "id": "82e001d8", + "id": "c73627fd", "metadata": {}, "outputs": [], "source": [ @@ -74,7 +73,7 @@ }, { "cell_type": "markdown", - "id": "badab088", + "id": "9fe410e8", "metadata": {}, "source": [ "## 0.2 Variables\n", @@ -91,7 +90,7 @@ { "cell_type": "code", "execution_count": null, - "id": "272ca43a", + "id": "f21c5987", "metadata": {}, "outputs": [], "source": [ @@ -101,7 +100,7 @@ }, { "cell_type": "markdown", - "id": "0935dbbf", + "id": "af20932b", "metadata": {}, "source": [ "Now complete the block below so it prints your name and then press Ctrl + Enter. Make sure you include the quotes - this is how Python knows this is a string and not the name of a variable" @@ -110,7 +109,7 @@ { "cell_type": "code", "execution_count": null, - "id": "4c726ab9", + "id": "ca5b2db9", "metadata": {}, "outputs": [], "source": [ @@ -120,7 +119,7 @@ }, { "cell_type": "markdown", - "id": "8976610c", + "id": "9835af0f", "metadata": {}, "source": [ "We can also combine strings using the + operator:" @@ -129,7 +128,7 @@ { "cell_type": "code", "execution_count": null, - "id": "14f56210", + "id": "d3f76cef", "metadata": {}, "outputs": [], "source": [ @@ -139,7 +138,7 @@ }, { "cell_type": "markdown", - "id": "a33f42b0", + "id": "d8a99ff0", "metadata": {}, "source": [ "Notice that we did not set the variable my_name in the cell above - variables made in previous cell are retained in the computers memory until we shut the notebook down" @@ -147,7 +146,7 @@ }, { "cell_type": "markdown", - "id": "a810321f", + "id": "3f2952bf", "metadata": {}, "source": [ "Another way to combine strings is using the f-string like this:" @@ -156,7 +155,7 @@ { "cell_type": "code", "execution_count": null, - "id": "bdd3a378", + "id": "e8057434", "metadata": {}, "outputs": [], "source": [ @@ -165,7 +164,7 @@ }, { "cell_type": "markdown", - "id": "60a45864", + "id": "3aef2a47", "metadata": {}, "source": [ "In the line above, the curly brackets {} are replaced by the value of the variable inside them. \n", @@ -176,7 +175,7 @@ { "cell_type": "code", "execution_count": null, - "id": "bcabd88a", + "id": "df50e368", "metadata": {}, "outputs": [], "source": [ @@ -194,7 +193,7 @@ }, { "cell_type": "markdown", - "id": "9d267969", + "id": "0be438ba", "metadata": {}, "source": [ "What about numbers which are not whole? These are called floating point number or floats and they look very similar:" @@ -203,7 +202,7 @@ { "cell_type": "code", "execution_count": null, - "id": "49365d69", + "id": "25c65b29", "metadata": {}, "outputs": [], "source": [ @@ -216,7 +215,7 @@ }, { "cell_type": "markdown", - "id": "0eb43d45", + "id": "91d3b6d4", "metadata": {}, "source": [ "Complete the code below to calculate and print what 7 divided by 3 is then run the cell to check your answer. \n", @@ -227,7 +226,7 @@ { "cell_type": "code", "execution_count": null, - "id": "caf8097d", + "id": "eff9f813", "metadata": {}, "outputs": [], "source": [ @@ -239,7 +238,7 @@ }, { "cell_type": "markdown", - "id": "433795af", + "id": "84f91e31", "metadata": {}, "source": [ "What do you think will happen if we try and divide a number by zero? run the cell below to find out." @@ -248,7 +247,7 @@ { "cell_type": "code", "execution_count": null, - "id": "2e3597c4", + "id": "27faaee3", "metadata": {}, "outputs": [], "source": [ @@ -257,7 +256,7 @@ }, { "cell_type": "markdown", - "id": "e88d71f5", + "id": "cbbffd1f", "metadata": {}, "source": [ "This is what happens when there is an error in your code. The Python language prints the line at which the error occurred and some information about what is wrong. In this case it is saying that it is an error to divide a number by zero. You will see many more errors as you go through these notebooks. This is all part of learning to programme - don't worry about it, but if you can't understand the problem or how to fix it please ask an instructor for help." @@ -265,7 +264,7 @@ }, { "cell_type": "markdown", - "id": "1e14b81d", + "id": "1284f462", "metadata": {}, "source": [ "# 0.3 Lists and tuples\n", @@ -276,7 +275,7 @@ { "cell_type": "code", "execution_count": null, - "id": "e818dd4e", + "id": "d3a2e986", "metadata": {}, "outputs": [], "source": [ @@ -286,7 +285,7 @@ }, { "cell_type": "markdown", - "id": "c53c9eb3", + "id": "cddaa52b", "metadata": {}, "source": [ "The square brackets here [] tell Python that this is a list. We can print each item on it's own as well as the whole list. Note that the first item is at position 0 in the list." @@ -295,7 +294,7 @@ { "cell_type": "code", "execution_count": null, - "id": "70e61175", + "id": "a2d79220", "metadata": {}, "outputs": [], "source": [ @@ -306,7 +305,7 @@ }, { "cell_type": "markdown", - "id": "1e440919", + "id": "e29b21e3", "metadata": {}, "source": [ "We can also add items onto the list using append." @@ -315,7 +314,7 @@ { "cell_type": "code", "execution_count": null, - "id": "64ce77fb", + "id": "e06e0c88", "metadata": {}, "outputs": [], "source": [ @@ -325,7 +324,7 @@ }, { "cell_type": "markdown", - "id": "667e1fbb", + "id": "99dab2f9", "metadata": {}, "source": [ "Now add your own item onto the list and print just the last item. Add the missing parts in the cell below and then run it. \n", @@ -336,7 +335,7 @@ { "cell_type": "code", "execution_count": null, - "id": "5b402c49", + "id": "2e871634", "metadata": {}, "outputs": [], "source": [ @@ -346,7 +345,7 @@ }, { "cell_type": "markdown", - "id": "0a5a58e3", + "id": "fbfdc064", "metadata": {}, "source": [ "We can also change items in the list. We don't want bread, we want oranges, so we will change the first item in the list like this:" @@ -355,7 +354,7 @@ { "cell_type": "code", "execution_count": null, - "id": "41f86e9e", + "id": "e6997c98", "metadata": {}, "outputs": [], "source": [ @@ -365,7 +364,7 @@ }, { "cell_type": "markdown", - "id": "f639bc39", + "id": "7c9b94b9", "metadata": {}, "source": [ "Tuples look very similar to lists but use round brackets (). \n" @@ -374,7 +373,7 @@ { "cell_type": "code", "execution_count": null, - "id": "794ba610", + "id": "33728b52", "metadata": {}, "outputs": [], "source": [ @@ -385,7 +384,7 @@ }, { "cell_type": "markdown", - "id": "5491a22e", + "id": "a836ba03", "metadata": {}, "source": [ "However, once we create a tuple we can't change its contents:" @@ -394,7 +393,7 @@ { "cell_type": "code", "execution_count": null, - "id": "82610911", + "id": "2f6fddcd", "metadata": {}, "outputs": [], "source": [ @@ -403,7 +402,7 @@ }, { "cell_type": "markdown", - "id": "940605b1", + "id": "4d5e1169", "metadata": {}, "source": [ "## 0.4 Loops\n", @@ -414,18 +413,19 @@ { "cell_type": "code", "execution_count": null, - "id": "7db4311f", + "id": "8df70681", "metadata": {}, "outputs": [], "source": [ "for item in shopping:\n", + " # everything inside the loop must be indented using spaces\n", " print(f\"Please buy {item}\")\n", "print(\"Thank you\")" ] }, { "cell_type": "markdown", - "id": "56a79f69", + "id": "202c5efa", "metadata": {}, "source": [ "We can use this to loop over a list of numbers and add them up. " @@ -434,20 +434,21 @@ { "cell_type": "code", "execution_count": null, - "id": "66f37703", + "id": "6e73b805", "metadata": {}, "outputs": [], "source": [ "numbers = [1.0, 0.5, 0.9, 0.2]\n", "sum = 0.0\n", "for number in numbers:\n", + " print(number)\n", " sum = sum + number\n", "print(f\"sum of your numbers is {sum}\")" ] }, { "cell_type": "markdown", - "id": "af10e730", + "id": "9a231754", "metadata": {}, "source": [ "Make a list containing these numbers and add them up. 0.8, 2.4, 1.4, 9.6" @@ -456,7 +457,7 @@ { "cell_type": "code", "execution_count": null, - "id": "fc6cc8d3", + "id": "070b01ab", "metadata": {}, "outputs": [], "source": [ @@ -466,6 +467,355 @@ " sum = \n", "print " ] + }, + { + "cell_type": "markdown", + "id": "9d6c3bab", + "metadata": {}, + "source": [ + "Note that in Python, the identation is important. If we don't do the indentation the code will not run. Run the code below to see the error you get in this case." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8b9e9fb9", + "metadata": {}, + "outputs": [], + "source": [ + "for item in shopping:\n", + "# see what happens if we don't indent\n", + "print(f\"Please buy {item}\")" + ] + }, + { + "cell_type": "markdown", + "id": "ecea5e11", + "metadata": {}, + "source": [ + "Every line inside the loop must be idented the same amount. See what error the line below gives you." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2cfdcdf7", + "metadata": {}, + "outputs": [], + "source": [ + "sum = 0.0\n", + "for number in numbers:\n", + " print(number)\n", + " sum = sum + number" + ] + }, + { + "cell_type": "markdown", + "id": "4a28e067", + "metadata": {}, + "source": [ + "## Using libraries\n", + "\n", + "One of the biggest strengths of Python is the fact that lots of added extras are available though using additional libraries of code. These libraries are called modules in Python. To use them we have to use the import command. \n", + "\n", + "Let's use the example of mathematical operations. We saw before how we can easily add, subtract, multiply and divide values but what if we want to find the square root of a number for example? This is where we need to use the [math module](https://docs.python.org/3/library/math.html)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "64f25879", + "metadata": {}, + "outputs": [], + "source": [ + "# import the math module. We only need to do this once in each program\n", + "import math\n", + "\n", + "result = math.sqrt(16)\n", + "print(result)" + ] + }, + { + "cell_type": "markdown", + "id": "f9bd3f6c", + "metadata": {}, + "source": [ + "Can you use the math module to calculate what 2 to the power 4 is? \n", + "\n", + "**Hint**: see [this function](https://docs.python.org/3/library/math.html#math.pow) in the math documentation\n", + "\n", + "Complete the code below and run the cell" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ce64e2e1", + "metadata": {}, + "outputs": [], + "source": [ + "result = math.\n", + "print(result)" + ] + }, + { + "cell_type": "markdown", + "id": "95734aca", + "metadata": {}, + "source": [ + "## Making your own functions\n", + "\n", + "Sometimes you want to do a calculation many times but there is no library to do it. You could copy and paste the same code multiple times but it is better and easier to keep this code in your own function. For example, imagine we want to add 5.5 to a number and then multiply it by two. The function below does this. \n", + "\n", + "See [W3 Schools: Python Functions](https://www.w3schools.com/python/python_functions.asp) for more information" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "beddde95", + "metadata": {}, + "outputs": [], + "source": [ + "# In python, we use the def keyword to create a function\n", + "# then the name of the function - in this case my_calculation\n", + "# then we have the inputs to the function in round brackets \n", + "# and finally a colon\n", + "\n", + "def my_calculation(number):\n", + " # add 5.5 to a number and then multiply it by two.\n", + " \n", + " # note that (like a for loop) the code inside the function must be indented\n", + " result = number + 5.5\n", + " result = result * 2.0\n", + " \n", + " # the return statement is what is passed back to the place the \n", + " # function was called from\n", + " return result" + ] + }, + { + "cell_type": "markdown", + "id": "63060c53", + "metadata": {}, + "source": [ + "We can now use this function as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "38800747", + "metadata": {}, + "outputs": [], + "source": [ + "my_answer = my_calculation(1.0)\n", + "print(my_answer)" + ] + }, + { + "cell_type": "markdown", + "id": "f82c2e03", + "metadata": {}, + "source": [ + "Complete the code below to run the function for the input value of 4 and print the result." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a7e2693f", + "metadata": {}, + "outputs": [], + "source": [ + "my_answer = \n", + "print(my_answer)" + ] + }, + { + "cell_type": "markdown", + "id": "2f43fe22", + "metadata": {}, + "source": [ + "### Lambdas\n", + "\n", + "sometimes we want very small functions. These can be created with something called a Lambda. For example add 4 to value. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ff49a89c", + "metadata": {}, + "outputs": [], + "source": [ + "# the keyword lambda is followed by the input to the function - in this case the variable a\n", + "# then there is a colon. and then the value which is to be returned\n", + "my_lambda = lambda a : a + 4\n", + "\n", + "# now use the function with inputs of 1 and 12\n", + "print(my_lambda(1))\n", + "print(my_lambda(12))" + ] + }, + { + "cell_type": "markdown", + "id": "9223ca60", + "metadata": {}, + "source": [ + "This is equivalent to the following function:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "23fe8d10", + "metadata": {}, + "outputs": [], + "source": [ + "def my_lambda2(a):\n", + " result = a + 4\n", + " return result" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "09ad4e19", + "metadata": {}, + "outputs": [], + "source": [ + "print(my_lambda2(1))\n", + "print(my_lambda2(12))" + ] + }, + { + "cell_type": "markdown", + "id": "f98ae9bc", + "metadata": {}, + "source": [ + "## Using objects\n", + "\n", + "Another one of strengths of Python is the ability to create \"objects\" which hold multiple pieces of data and have in built functions that use that data. We will use the example of a date object. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fe84a5c5", + "metadata": {}, + "outputs": [], + "source": [ + "# first we import date from the datetime library\n", + "from datetime import date\n", + "\n", + "# now we make a date of 4th May 2022\n", + "d = date(2022,5,4)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "85e44b5b", + "metadata": {}, + "outputs": [], + "source": [ + "# the object has the day month and year stored inside. These internal values are called \n", + "# properties\n", + "print(d.day)\n" + ] + }, + { + "cell_type": "markdown", + "id": "fbf7f20f", + "metadata": {}, + "source": [ + "Now you complete the line below to print the year" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "41d8744d", + "metadata": {}, + "outputs": [], + "source": [ + "print(d.)" + ] + }, + { + "cell_type": "markdown", + "id": "3dba6b5d", + "metadata": {}, + "source": [ + "As well as being containers that hold multiple pieces of data, they can also have their own in built functions called methods. For example, we can print the whole date in a number of formats, for example ISO 8601:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a1a2a896", + "metadata": {}, + "outputs": [], + "source": [ + "# example method -print in ISO 8601 format, YYYY-MM-DD.\n", + "\n", + "print(d.isoformat())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "15645c86", + "metadata": {}, + "outputs": [], + "source": [ + "The difference between the data in the object (it's paran)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "603d9695", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# We can find out more about how this object can be used by using the help function\n", + "help(d)" + ] + }, + { + "cell_type": "markdown", + "id": "cd665ebd", + "metadata": {}, + "source": [ + "Using the help above can you print the day of the week our date falls on?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a969868b", + "metadata": {}, + "outputs": [], + "source": [ + "print(d.())" + ] + }, + { + "cell_type": "markdown", + "id": "10977590", + "metadata": {}, + "source": [ + "
    \n", + "
    \n", + "This completes worksheet 0.
    This was a very quick tour of the Python programming language
    \n", + "In worksheet 1, you will begin to apply this to some CORDEX data.\n", + "
    \n", + "
    " + ] } ], "metadata": { diff --git a/notebooks/AFR-22/worksheet3.ipynb b/notebooks/AFR-22/worksheet3.ipynb index d7fa8c6..4eb8872 100755 --- a/notebooks/AFR-22/worksheet3.ipynb +++ b/notebooks/AFR-22/worksheet3.ipynb @@ -742,7 +742,7 @@ "MODELDIR = os.path.join(DATADIR, 'cordex/AFR-22')\n", "\n", "# Some helpful model variables\n", - "GCMS = ['hadgem2-es', 'mpi-esm-lr', 'nor']\n", + "GCMS = ['hadgem2-es', 'mpi-esm-lr', 'noresm']\n", "\n", "# Luanda domain...\n", "lon = (8.0, 18.0)\n", From cc22230b1dcc5d231a1230e234846816a1edaf1e Mon Sep 17 00:00:00 2001 From: Nick Savage Date: Tue, 10 May 2022 09:38:40 +0100 Subject: [PATCH 15/23] update environment, create portable lock file from it --- environment.yml | 2 + pyprecis-environment.lock | 356 ++++++++++++++++---------------- pyprecis-environment.share.lock | 216 +++++++++++++++++++ 3 files changed, 395 insertions(+), 179 deletions(-) create mode 100644 pyprecis-environment.share.lock diff --git a/environment.yml b/environment.yml index 43fb8fa..06d98e7 100644 --- a/environment.yml +++ b/environment.yml @@ -1,9 +1,11 @@ name: pyprecis-environment channels: - conda-forge + - conda-main dependencies: - python=3.6.10 - iris=2.4.0 + - iris-sample-data - numpy=1.17.4 - matplotlib=3.1.3 - nc-time-axis=1.2.0 diff --git a/pyprecis-environment.lock b/pyprecis-environment.lock index 506ecef..f6300e6 100644 --- a/pyprecis-environment.lock +++ b/pyprecis-environment.lock @@ -3,215 +3,213 @@ # platform: linux-64 @EXPLICIT https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/ca-certificates-2021.10.8-ha878542_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/ld_impl_linux-64-2.36.1-hea4e1c9_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libgfortran4-7.5.0-h14aa051_19.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libstdcxx-ng-11.2.0-he4da1e4_12.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/ca-certificates-2022.4.26-h06a4308_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/ld_impl_linux-64-2.35.1-h7274673_9.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/libgfortran4-7.5.0-ha8ba4b0_17.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/libstdcxx-ng-9.3.0-hd4cf53a_17.conda https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/llvm-openmp-12.0.1-h4bd325d_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pandoc-2.17.1.1-ha770c72_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/_openmp_mutex-4.5-1_llvm.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libgfortran-ng-7.5.0-h14aa051_19.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libgcc-ng-11.2.0-h1d223b6_12.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/c-ares-1.18.1-h7f98852_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/expat-2.4.4-h9c3ff4c_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/fftw-3.3.8-nompi_hfc0cae8_1114.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/geos-3.9.1-h9c3ff4c_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/pandoc-2.12-h06a4308_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/libgfortran-ng-7.5.0-ha8ba4b0_17.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libgcc-ng-11.2.0-h1d223b6_16.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/bzip2-1.0.8-h7b6447c_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/c-ares-1.18.1-h7f8727e_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/expat-2.4.4-h295c915_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/fftw-3.3.9-h27cfd23_1.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/geos-3.9.1-h295c915_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/gsl-2.6-ha341630_0.conda https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/icu-64.2-he1b5a44_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/jbig-2.1-h7f98852_2003.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/jpeg-9e-h7f98852_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/lerc-3.0-h9c3ff4c_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libaec-1.0.6-h9c3ff4c_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libdeflate-1.8-h7f98852_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libev-4.33-h516909a_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libffi-3.2.1-he1b5a44_1007.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libiconv-1.16-h516909a_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/jpeg-9e-h7f8727e_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/libaec-1.0.4-he6710b0_1.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/libev-4.33-h7f8727e_1.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/libffi-3.2.1-hf484d3e_1007.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/libiconv-1.16-h7f8727e_2.conda https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libmo_unpack-3.1.2-hf484d3e_1001.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libopenblas-0.3.10-pthreads_hb3c22a3_5.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libsodium-1.0.18-h36c2ea0_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libwebp-base-1.2.2-h7f98852_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libzlib-1.2.11-h36c2ea0_1013.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/ncurses-6.3-h9c3ff4c_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/openssl-1.1.1n-h166bdaf_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/libopenblas-0.3.10-h5a2b251_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/libsodium-1.0.18-h7b6447c_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/libuuid-1.0.3-h7f8727e_2.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/libwebp-base-1.2.2-h7f8727e_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/libxcb-1.14-h7b6447c_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/lz4-c-1.9.3-h295c915_1.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/ncurses-6.3-h7f8727e_2.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/openssl-1.1.1o-h7f8727e_0.conda https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/ossuuid-1.6.2-hf484d3e_1000.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/pcre-8.45-h295c915_0.conda https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2 https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libice-1.0.10-h7f98852_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libxau-1.0.9-h7f98852_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2 https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-xextproto-7.3.0-h7f98852_1002.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xxhash-0.8.0-h7f98852_3.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xz-5.2.5-h516909a_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/gettext-0.19.8.1-hf34092f_1004.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/jasper-1.900.1-h07fcdf6_1006.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/xorg-xproto-7.0.31-h27cfd23_1007.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/xxhash-0.8.0-h7f8727e_3.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/xz-5.2.5-h7f8727e_1.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/yaml-0.2.5-h7b6447c_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/zlib-1.2.12-h7f8727e_2.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/glib-2.63.1-h5a9c865_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/hdf4-4.2.13-h3ca952b_2.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/jasper-1.900.1-hd497a04_4.conda https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libblas-3.8.0-17_openblas.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libxcb-1.13-h7f98852_1004.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/readline-8.1-h46c0cb4_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/udunits2-2.2.27.27-hc3e0081_3.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libsm-1.2.3-hd9c2040_1000.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/zeromq-4.3.4-h9c3ff4c_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/zlib-1.2.11-h36c2ea0_1013.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/zstd-1.5.2-ha95c52a_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/hdf4-4.2.15-h10796ff_3.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libcblas-3.8.0-17_openblas.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libglib-2.66.3-hbe7bbb4_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/liblapack-3.8.0-17_openblas.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libnghttp2-1.46.0-h812cca2_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libssh2-1.10.0-ha56f1ee_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libtiff-4.3.0-h6f004c6_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/libedit-3.1.20210910-h7f8727e_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/libnghttp2-1.46.0-hce63b2e_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/libpng-1.6.37-hbc83047_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/libssh2-1.10.0-h8f2d780_0.conda https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libxml2-2.9.10-hee79883_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/sqlite-3.37.0-h9cd32fc_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/tk-8.6.11-h27826a3_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/readline-8.1.2-h7f8727e_1.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/tk-8.6.11-h1ccaba5_1.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/udunits2-2.2.28-hc3e0081_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libsm-1.2.2-h470a237_5.tar.bz2 https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libx11-1.7.2-h7f98852_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/gsl-2.6-he838d99_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/krb5-1.19.2-hcc1bbae_3.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/liblapacke-3.8.0-17_openblas.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/python-3.6.10-h8356626_1011_cpython.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/zeromq-4.3.4-h2531618_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/zstd-1.4.9-haebb681_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/dbus-1.13.18-hb2f20db_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/freetype-2.11.0-h70c0345_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/gettext-0.21.0-hf68c758_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/gstreamer-1.14.5-h36ae1b5_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/krb5-1.19.2-hac12032_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libcblas-3.8.0-17_openblas.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/liblapack-3.8.0-17_openblas.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/libtiff-4.2.0-h85742a9_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/sqlite-3.38.3-hc218d9a_0.conda https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libxext-1.3.4-h7f98852_1.tar.bz2 https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libxt-1.2.1-h7f98852_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/backports-1.0-py_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/fontconfig-2.13.1-h6c09931_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/gst-plugins-base-1.14.5-h0935bb2_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/lcms2-2.12-h3be6417_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/libcurl-7.82.0-h0b77cf5_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/liblapacke-3.8.0-17_openblas.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/openjpeg-2.4.0-h3ad879b_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/python-3.6.10-h8356626_1011_cpython.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libxmu-1.1.3-h7f98852_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libxpm-3.5.13-h7f98852_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/async_generator-1.10-py36h28b3542_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/attrs-21.4.0-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/backcall-0.2.0-pyhd3eb1b0_0.tar.bz2 https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/blas-2.17-openblas.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/click-7.1.2-pyh9f0ad1d_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/cloudpickle-2.0.0-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/colorama-0.4.4-pyh9f0ad1d_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/entrypoints-0.3-pyhd8ed1ab_1003.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/fontconfig-2.13.1-hba837de_1005.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/fsspec-2022.1.0-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/glib-2.66.3-h58526e2_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/heapdict-1.0.1-py_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/jmespath-0.10.0-pyh9f0ad1d_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libcurl-7.81.0-h2574ce0_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/locket-0.2.0-py_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/nest-asyncio-1.5.4-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/olefile-0.46-pyh9f0ad1d_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/parso-0.7.1-pyh9f0ad1d_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/prometheus_client-0.13.1-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/certifi-2021.5.30-py36h06a4308_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/charset-normalizer-2.0.4-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/click-8.0.3-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/cloudpickle-2.0.0-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/colorama-0.4.4-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/curl-7.82.0-h7f8727e_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/cycler-0.11.0-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/dask-core-2.11.0-py_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/decorator-5.1.1-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/defusedxml-0.7.1-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/entrypoints-0.3-py36_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/fsspec-2022.1.0-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/hdf5-1.10.6-nompi_h7c3c948_1111.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/heapdict-1.0.1-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/idna-3.3-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/ipython_genutils-0.2.0-pyhd3eb1b0_1.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/iris-sample-data-2.0.0-py36_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/jmespath-0.10.0-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/kiwisolver-1.3.1-py36h2531618_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/locket-0.2.1-py36h06a4308_1.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/markupsafe-2.0.1-py36h27cfd23_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/mistune-0.8.4-py36h7b6447c_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/msgpack-python-1.0.2-py36hff7bd54_1.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/nest-asyncio-1.5.1-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/olefile-0.46-py36_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/pandocfilters-1.5.0-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/parso-0.8.3-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/pickleshare-0.7.5-pyhd3eb1b0_1003.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/proj-7.2.0-h1217e81_1.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/prometheus_client-0.13.1-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/psutil-5.8.0-py36h27cfd23_1.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/ptyprocess-0.7.0-pyhd3eb1b0_2.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/pycosat-0.6.3-py36h27cfd23_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/pycparser-2.21-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/pygments-2.11.2-pyhd3eb1b0_0.conda https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pyke-1.1.1-pyhd8ed1ab_1004.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pyparsing-3.0.7-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pyshp-2.1.3-pyh44b312d_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/pyparsing-3.0.4-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/pyrsistent-0.17.3-py36h7b6447c_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/pyshp-2.1.3-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/pysocks-1.7.1-py36h06a4308_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/python-xxhash-2.0.2-py36h7f8727e_0.conda https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/python_abi-3.6-2_cp36m.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pytz-2021.3-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/send2trash-1.8.0-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/sip-4.19.8-py36hf484d3e_1000.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/tblib-1.7.0-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/testpath-0.5.0-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/toolz-0.11.2-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/typing_extensions-4.0.1-pyha770c72_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libxmu-1.1.3-h7f98852_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libxpm-3.5.13-h7f98852_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/zipp-3.6.0-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/pytz-2021.3-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/pyyaml-5.4.1-py36h27cfd23_1.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/pyzmq-22.2.1-py36h295c915_1.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/qt-5.9.7-h0c104cb_3.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/ruamel_yaml-0.15.100-py36h27cfd23_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/send2trash-1.8.0-pyhd3eb1b0_1.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/sip-4.19.8-py36hf484d3e_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/six-1.16.0-pyhd3eb1b0_1.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/sortedcontainers-2.4.0-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/tblib-1.7.0-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/testpath-0.5.0-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/toolz-0.11.2-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/tornado-6.1-py36h27cfd23_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/typing_extensions-4.1.1-pyh06a4308_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/wcwidth-0.2.5-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/webencodings-0.5.1-py36_1.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/wheel-0.37.1-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libxaw-1.0.14-h7f98852_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/zipp-3.6.0-pyhd3eb1b0_0.conda https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/antlr-python-runtime-4.7.2-py36h5fab9bb_1002.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/certifi-2021.5.30-py36h5fab9bb_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/cffi-1.14.4-py36h211aa47_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/curl-7.81.0-h2574ce0_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/cytoolz-0.11.0-py36h8f6f2f9_3.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/dbus-1.13.6-hfdff14a_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/gstreamer-1.14.5-h36ae1b5_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/hdf5-1.10.6-nompi_h7c3c948_1111.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/importlib-metadata-4.8.1-py36h5fab9bb_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/jedi-0.17.2-py36h5fab9bb_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/kiwisolver-1.3.1-py36h605e78d_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/markupsafe-2.0.1-py36h8f6f2f9_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/mistune-0.8.4-py36h8f6f2f9_1004.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/msgpack-python-1.0.2-py36h605e78d_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/cffi-1.14.0-py36h2e261b9_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/cytoolz-0.11.0-py36h7b6447c_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/importlib-metadata-4.8.1-py36h06a4308_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/jedi-0.17.0-py36_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/jinja2-3.0.3-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/jupyterlab_pygments-0.1.2-py_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libnetcdf-4.7.4-nompi_h56d31a8_107.tar.bz2 https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/numpy-base-1.17.4-py36h2f8d375_0.conda -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/partd-1.2.0-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pexpect-4.8.0-pyh9f0ad1d_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pillow-8.3.2-py36h676a545_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/proj-7.2.0-h277dcde_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/psutil-5.8.0-py36h8f6f2f9_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pyrsistent-0.17.3-py36h8f6f2f9_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pysocks-1.7.1-py36h5fab9bb_3.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/python-xxhash-2.0.2-py36h8f6f2f9_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pyyaml-5.4.1-py36h8f6f2f9_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pyzmq-22.3.0-py36h7068817_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/setuptools-58.0.4-py36h5fab9bb_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/tornado-6.1-py36h8f6f2f9_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/packaging-21.3-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/partd-1.2.0-pyhd3eb1b0_1.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/pexpect-4.8.0-pyhd3eb1b0_3.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/pillow-8.3.1-py36h2c7a002_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/prompt-toolkit-3.0.20-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/pyqt-5.9.2-py36h05f1152_2.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/python-dateutil-2.8.2-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/setuptools-58.0.4-py36h06a4308_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/terminado-0.9.4-py36h06a4308_0.conda https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/tqdm-4.64.0-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/traitlets-4.3.3-pyhd8ed1ab_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/typing-extensions-4.0.1-hd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/xorg-libxaw-1.0.14-h7f98852_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/zict-2.0.0-py_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/backports.functools_lru_cache-1.6.4-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/bleach-4.1.0-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/brotlipy-0.7.0-py36h8f6f2f9_1001.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/cryptography-35.0.0-py36hb60f036_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/dask-core-2.11.0-py_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/gst-plugins-base-1.14.5-h0935bb2_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/immutables-0.16-py36h8f6f2f9_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/jinja2-3.0.3-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/jsonschema-4.1.2-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/traitlets-4.3.3-py36h06a4308_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/typing-extensions-4.1.1-hd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/zict-2.0.0-pyhd3eb1b0_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/bleach-4.1.0-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/brotlipy-0.7.0-py36h27cfd23_1003.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/conda-package-handling-1.7.3-py36h27cfd23_1.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/cryptography-35.0.0-py36hd23ed53_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/eccodes-2.19.1-hea64003_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/immutables-0.16-py36h7f8727e_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/importlib_metadata-4.8.1-hd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/ipython-7.16.1-py36h5ca1d4c_0.conda https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/jupyter_core-4.6.3-py36h5fab9bb_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/libnetcdf-4.7.4-nompi_h56d31a8_107.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/ncview-2.1.7-hb1f9ec4_5.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/netcdf-fortran-4.5.3-nompi_hfef6a68_101.tar.bz2 https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/numpy-1.17.4-py36hd5be1e1_0.conda -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pip-21.3.1-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pygments-2.11.2-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/terminado-0.12.1-py36h5fab9bb_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/bokeh-2.3.3-py36h5fab9bb_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/cftime-1.4.1-py36h92226af_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/contextvars-2.4-py_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/eccodes-2.19.1-hea64003_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/pip-21.2.2-py36h06a4308_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/tempest-remap-2.0.5-h1b20e2d_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/bokeh-2.3.2-py36h06a4308_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/cdo-1.9.9-h04f682f_14.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/cftime-1.5.0-py36h6323ea4_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/contextvars-2.4-py_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/esmf-8.0.1-nompi_hcaa3220_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/jsonschema-3.2.0-pyhd3eb1b0_2.conda https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/jupyter_client-6.1.7-py_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/jupyterlab_pygments-0.1.2-pyh9f0ad1d_0.tar.bz2 https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/matplotlib-base-3.1.3-py36h250f245_0.tar.bz2 https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/mo_pack-0.2.0-py36h92226af_1005.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/nbformat-5.1.3-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/ncview-2.1.7-hb1f9ec4_5.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/netcdf-fortran-4.5.3-nompi_hfef6a68_101.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pandas-1.1.5-py36h284efc9_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pyopenssl-22.0.0-pyhd8ed1ab_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/qt-5.9.7-h0c104cb_3.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/scipy-1.5.3-py36h976291a_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/pandas-1.1.5-py36ha9443f7_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/pyopenssl-22.0.0-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/scipy-1.5.2-py36habc2bb6_0.conda https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/shapely-1.7.1-py36h93b233e_4.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/tempest-remap-2.0.5-h1b20e2d_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/wcwidth-0.2.5-pyh9f0ad1d_2.tar.bz2 https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/cartopy-0.18.0-py36h104b3a8_13.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/cdo-1.9.9-h04f682f_14.tar.bz2 https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/cf-units-2.1.4-py36h92226af_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/distributed-2.30.1-py36h5fab9bb_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/esmf-8.0.1-nompi_hcaa3220_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/nbclient-0.5.9-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/distributed-2.30.1-py36h06a4308_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/ipykernel-5.3.4-py36h5ca1d4c_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/matplotlib-3.1.3-py36_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/nbformat-5.1.3-pyhd3eb1b0_0.conda https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/nc-time-axis-1.2.0-pyhd8ed1ab_2.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/nco-4.9.9-h1e74faa_0.tar.bz2 https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/netcdf4-1.5.6-nompi_py36hc29086f_100.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/prompt-toolkit-3.0.26-pyha770c72_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/pyqt-5.9.2-py36hcca6a23_4.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/urllib3-1.26.8-pyhd8ed1ab_1.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/urllib3-1.26.8-pyhd3eb1b0_0.conda https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/botocore-1.24.21-pyhd8ed1ab_0.tar.bz2 https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/dask-2.11.0-py_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/ipython-7.16.1-py36he448a4c_2.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/matplotlib-3.1.3-py36_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/nbconvert-6.0.7-py36h5fab9bb_3.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/nco-4.9.9-h1e74faa_0.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/ipykernel-5.5.5-py36hcb3619a_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/nbclient-0.5.3-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/requests-2.27.1-pyhd3eb1b0_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/conda-4.10.3-py36h06a4308_0.conda https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/iris-2.4.0-py36h5fab9bb_1.tar.bz2 -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/s3transfer-0.5.1-pyhd8ed1ab_0.tar.bz2 +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/linux-64/nbconvert-6.0.7-py36_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-main/noarch/s3transfer-0.5.0-pyhd3eb1b0_0.conda https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/boto3-1.21.21-pyhd8ed1ab_0.tar.bz2 https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/linux-64/notebook-5.7.8-py36_1.tar.bz2 diff --git a/pyprecis-environment.share.lock b/pyprecis-environment.share.lock new file mode 100644 index 0000000..8bde074 --- /dev/null +++ b/pyprecis-environment.share.lock @@ -0,0 +1,216 @@ +# This file may be used to create an environment using: +# $ conda create --name --file +# platform: linux-64 +@EXPLICIT +https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/ca-certificates-2022.4.26-h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/ld_impl_linux-64-2.35.1-h7274673_9.conda +https://repo.anaconda.com/pkgs/main/linux-64/libgfortran4-7.5.0-ha8ba4b0_17.conda +https://repo.anaconda.com/pkgs/main/linux-64/libstdcxx-ng-9.3.0-hd4cf53a_17.conda +https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-12.0.1-h4bd325d_1.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/pandoc-2.12-h06a4308_0.conda +https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/libgfortran-ng-7.5.0-ha8ba4b0_17.conda +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-11.2.0-h1d223b6_16.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/bzip2-1.0.8-h7b6447c_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/c-ares-1.18.1-h7f8727e_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/expat-2.4.4-h295c915_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/fftw-3.3.9-h27cfd23_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/geos-3.9.1-h295c915_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/gsl-2.6-ha341630_0.conda +https://conda.anaconda.org/conda-forge/linux-64/icu-64.2-he1b5a44_1.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/jpeg-9e-h7f8727e_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/libaec-1.0.4-he6710b0_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/libev-4.33-h7f8727e_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/libffi-3.2.1-hf484d3e_1007.conda +https://repo.anaconda.com/pkgs/main/linux-64/libiconv-1.16-h7f8727e_2.conda +https://conda.anaconda.org/conda-forge/linux-64/libmo_unpack-3.1.2-hf484d3e_1001.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/libopenblas-0.3.10-h5a2b251_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/libsodium-1.0.18-h7b6447c_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/libuuid-1.0.3-h7f8727e_2.conda +https://repo.anaconda.com/pkgs/main/linux-64/libwebp-base-1.2.2-h7f8727e_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/libxcb-1.14-h7b6447c_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/lz4-c-1.9.3-h295c915_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/ncurses-6.3-h7f8727e_2.conda +https://repo.anaconda.com/pkgs/main/linux-64/openssl-1.1.1o-h7f8727e_0.conda +https://conda.anaconda.org/conda-forge/linux-64/ossuuid-1.6.2-hf484d3e_1000.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/pcre-8.45-h295c915_0.conda +https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.0.10-h7f98852_0.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h7f98852_1002.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/xorg-xproto-7.0.31-h27cfd23_1007.conda +https://repo.anaconda.com/pkgs/main/linux-64/xxhash-0.8.0-h7f8727e_3.conda +https://repo.anaconda.com/pkgs/main/linux-64/xz-5.2.5-h7f8727e_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/yaml-0.2.5-h7b6447c_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/zlib-1.2.12-h7f8727e_2.conda +https://repo.anaconda.com/pkgs/main/linux-64/glib-2.63.1-h5a9c865_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/hdf4-4.2.13-h3ca952b_2.conda +https://repo.anaconda.com/pkgs/main/linux-64/jasper-1.900.1-hd497a04_4.conda +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.8.0-17_openblas.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/libedit-3.1.20210910-h7f8727e_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/libnghttp2-1.46.0-hce63b2e_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/libpng-1.6.37-hbc83047_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/libssh2-1.10.0-h8f2d780_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.10-hee79883_0.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/readline-8.1.2-h7f8727e_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/tk-8.6.11-h1ccaba5_1.conda +https://conda.anaconda.org/conda-forge/linux-64/udunits2-2.2.28-hc3e0081_0.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.2-h470a237_5.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.7.2-h7f98852_0.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/zeromq-4.3.4-h2531618_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/zstd-1.4.9-haebb681_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/dbus-1.13.18-hb2f20db_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/freetype-2.11.0-h70c0345_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/gettext-0.21.0-hf68c758_0.conda +https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.14.5-h36ae1b5_2.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/krb5-1.19.2-hac12032_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.8.0-17_openblas.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.8.0-17_openblas.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/libtiff-4.2.0-h85742a9_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/sqlite-3.38.3-hc218d9a_0.conda +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h7f98852_1.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.2.1-h7f98852_2.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/fontconfig-2.13.1-h6c09931_0.conda +https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.14.5-h0935bb2_2.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/lcms2-2.12-h3be6417_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/libcurl-7.82.0-h0b77cf5_0.conda +https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.8.0-17_openblas.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/openjpeg-2.4.0-h3ad879b_0.conda +https://conda.anaconda.org/conda-forge/linux-64/python-3.6.10-h8356626_1011_cpython.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxmu-1.1.3-h7f98852_0.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxpm-3.5.13-h7f98852_0.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/async_generator-1.10-py36h28b3542_0.conda +https://repo.anaconda.com/pkgs/main/noarch/attrs-21.4.0-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/noarch/backcall-0.2.0-pyhd3eb1b0_0.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/blas-2.17-openblas.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/certifi-2021.5.30-py36h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/noarch/charset-normalizer-2.0.4-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/noarch/click-8.0.3-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/noarch/cloudpickle-2.0.0-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/noarch/colorama-0.4.4-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/curl-7.82.0-h7f8727e_0.conda +https://repo.anaconda.com/pkgs/main/noarch/cycler-0.11.0-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/noarch/dask-core-2.11.0-py_0.conda +https://repo.anaconda.com/pkgs/main/noarch/decorator-5.1.1-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/noarch/defusedxml-0.7.1-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/entrypoints-0.3-py36_0.conda +https://repo.anaconda.com/pkgs/main/noarch/fsspec-2022.1.0-pyhd3eb1b0_0.conda +https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.10.6-nompi_h7c3c948_1111.tar.bz2 +https://repo.anaconda.com/pkgs/main/noarch/heapdict-1.0.1-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/noarch/idna-3.3-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/noarch/ipython_genutils-0.2.0-pyhd3eb1b0_1.conda +https://conda.anaconda.org/conda-forge/linux-64/iris-sample-data-2.0.0-py36_0.tar.bz2 +https://repo.anaconda.com/pkgs/main/noarch/jmespath-0.10.0-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/kiwisolver-1.3.1-py36h2531618_0.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/locket-0.2.1-py36h06a4308_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/markupsafe-2.0.1-py36h27cfd23_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/mistune-0.8.4-py36h7b6447c_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/msgpack-python-1.0.2-py36hff7bd54_1.conda +https://repo.anaconda.com/pkgs/main/noarch/nest-asyncio-1.5.1-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/olefile-0.46-py36_0.conda +https://repo.anaconda.com/pkgs/main/noarch/pandocfilters-1.5.0-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/noarch/parso-0.8.3-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/noarch/pickleshare-0.7.5-pyhd3eb1b0_1003.conda +https://repo.anaconda.com/pkgs/main/linux-64/proj-7.2.0-h1217e81_1.conda +https://repo.anaconda.com/pkgs/main/noarch/prometheus_client-0.13.1-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/psutil-5.8.0-py36h27cfd23_1.conda +https://repo.anaconda.com/pkgs/main/noarch/ptyprocess-0.7.0-pyhd3eb1b0_2.conda +https://repo.anaconda.com/pkgs/main/linux-64/pycosat-0.6.3-py36h27cfd23_0.conda +https://repo.anaconda.com/pkgs/main/noarch/pycparser-2.21-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/noarch/pygments-2.11.2-pyhd3eb1b0_0.conda +https://conda.anaconda.org/conda-forge/noarch/pyke-1.1.1-pyhd8ed1ab_1004.tar.bz2 +https://repo.anaconda.com/pkgs/main/noarch/pyparsing-3.0.4-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/pyrsistent-0.17.3-py36h7b6447c_0.conda +https://repo.anaconda.com/pkgs/main/noarch/pyshp-2.1.3-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/pysocks-1.7.1-py36h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/python-xxhash-2.0.2-py36h7f8727e_0.conda +https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.6-2_cp36m.tar.bz2 +https://repo.anaconda.com/pkgs/main/noarch/pytz-2021.3-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/pyyaml-5.4.1-py36h27cfd23_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/pyzmq-22.2.1-py36h295c915_1.conda +https://conda.anaconda.org/conda-forge/linux-64/qt-5.9.7-h0c104cb_3.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/ruamel_yaml-0.15.100-py36h27cfd23_0.conda +https://repo.anaconda.com/pkgs/main/noarch/send2trash-1.8.0-pyhd3eb1b0_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/sip-4.19.8-py36hf484d3e_0.conda +https://repo.anaconda.com/pkgs/main/noarch/six-1.16.0-pyhd3eb1b0_1.conda +https://repo.anaconda.com/pkgs/main/noarch/sortedcontainers-2.4.0-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/noarch/tblib-1.7.0-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/noarch/testpath-0.5.0-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/noarch/toolz-0.11.2-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/tornado-6.1-py36h27cfd23_0.conda +https://repo.anaconda.com/pkgs/main/noarch/typing_extensions-4.1.1-pyh06a4308_0.conda +https://repo.anaconda.com/pkgs/main/noarch/wcwidth-0.2.5-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/webencodings-0.5.1-py36_1.conda +https://repo.anaconda.com/pkgs/main/noarch/wheel-0.37.1-pyhd3eb1b0_0.conda +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxaw-1.0.14-h7f98852_1.tar.bz2 +https://repo.anaconda.com/pkgs/main/noarch/zipp-3.6.0-pyhd3eb1b0_0.conda +https://conda.anaconda.org/conda-forge/linux-64/antlr-python-runtime-4.7.2-py36h5fab9bb_1002.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/cffi-1.14.0-py36h2e261b9_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/cytoolz-0.11.0-py36h7b6447c_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/importlib-metadata-4.8.1-py36h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/jedi-0.17.0-py36_0.conda +https://repo.anaconda.com/pkgs/main/noarch/jinja2-3.0.3-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/noarch/jupyterlab_pygments-0.1.2-py_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.7.4-nompi_h56d31a8_107.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/numpy-base-1.17.4-py36h2f8d375_0.conda +https://repo.anaconda.com/pkgs/main/noarch/packaging-21.3-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/noarch/partd-1.2.0-pyhd3eb1b0_1.conda +https://repo.anaconda.com/pkgs/main/noarch/pexpect-4.8.0-pyhd3eb1b0_3.conda +https://repo.anaconda.com/pkgs/main/linux-64/pillow-8.3.1-py36h2c7a002_0.conda +https://repo.anaconda.com/pkgs/main/noarch/prompt-toolkit-3.0.20-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/pyqt-5.9.2-py36h05f1152_2.conda +https://repo.anaconda.com/pkgs/main/noarch/python-dateutil-2.8.2-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/setuptools-58.0.4-py36h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/terminado-0.9.4-py36h06a4308_0.conda +https://conda.anaconda.org/conda-forge/noarch/tqdm-4.64.0-pyhd8ed1ab_0.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/traitlets-4.3.3-py36h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/noarch/typing-extensions-4.1.1-hd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/noarch/zict-2.0.0-pyhd3eb1b0_0.tar.bz2 +https://repo.anaconda.com/pkgs/main/noarch/bleach-4.1.0-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/brotlipy-0.7.0-py36h27cfd23_1003.conda +https://repo.anaconda.com/pkgs/main/linux-64/conda-package-handling-1.7.3-py36h27cfd23_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/cryptography-35.0.0-py36hd23ed53_0.conda +https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.19.1-hea64003_0.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/immutables-0.16-py36h7f8727e_0.conda +https://repo.anaconda.com/pkgs/main/noarch/importlib_metadata-4.8.1-hd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/ipython-7.16.1-py36h5ca1d4c_0.conda +https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-4.6.3-py36h5fab9bb_2.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/ncview-2.1.7-hb1f9ec4_5.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/netcdf-fortran-4.5.3-nompi_hfef6a68_101.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/numpy-1.17.4-py36hd5be1e1_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/pip-21.2.2-py36h06a4308_0.conda +https://conda.anaconda.org/conda-forge/linux-64/tempest-remap-2.0.5-h1b20e2d_0.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/bokeh-2.3.2-py36h06a4308_0.conda +https://conda.anaconda.org/conda-forge/linux-64/cdo-1.9.9-h04f682f_14.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/cftime-1.5.0-py36h6323ea4_0.conda +https://repo.anaconda.com/pkgs/main/noarch/contextvars-2.4-py_0.conda +https://conda.anaconda.org/conda-forge/linux-64/esmf-8.0.1-nompi_hcaa3220_2.tar.bz2 +https://repo.anaconda.com/pkgs/main/noarch/jsonschema-3.2.0-pyhd3eb1b0_2.conda +https://conda.anaconda.org/conda-forge/noarch/jupyter_client-6.1.7-py_0.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.1.3-py36h250f245_0.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/mo_pack-0.2.0-py36h92226af_1005.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/pandas-1.1.5-py36ha9443f7_0.conda +https://repo.anaconda.com/pkgs/main/noarch/pyopenssl-22.0.0-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/scipy-1.5.2-py36habc2bb6_0.conda +https://conda.anaconda.org/conda-forge/linux-64/shapely-1.7.1-py36h93b233e_4.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.18.0-py36h104b3a8_13.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/cf-units-2.1.4-py36h92226af_2.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/distributed-2.30.1-py36h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/ipykernel-5.3.4-py36h5ca1d4c_0.conda +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.1.3-py36_0.tar.bz2 +https://repo.anaconda.com/pkgs/main/noarch/nbformat-5.1.3-pyhd3eb1b0_0.conda +https://conda.anaconda.org/conda-forge/noarch/nc-time-axis-1.2.0-pyhd8ed1ab_2.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/nco-4.9.9-h1e74faa_0.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.5.6-nompi_py36hc29086f_100.tar.bz2 +https://repo.anaconda.com/pkgs/main/noarch/urllib3-1.26.8-pyhd3eb1b0_0.conda +https://conda.anaconda.org/conda-forge/noarch/botocore-1.24.21-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/dask-2.11.0-py_0.tar.bz2 +https://repo.anaconda.com/pkgs/main/noarch/nbclient-0.5.3-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/noarch/requests-2.27.1-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/conda-4.10.3-py36h06a4308_0.conda +https://conda.anaconda.org/conda-forge/linux-64/iris-2.4.0-py36h5fab9bb_1.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/nbconvert-6.0.7-py36_0.conda +https://repo.anaconda.com/pkgs/main/noarch/s3transfer-0.5.0-pyhd3eb1b0_0.conda +https://conda.anaconda.org/conda-forge/noarch/boto3-1.21.21-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/notebook-5.7.8-py36_1.tar.bz2 + From afafb6d9e7e4afee5f5e3769082c3513c1a8641b Mon Sep 17 00:00:00 2001 From: "rosanna.amato" Date: Thu, 4 Aug 2022 11:23:34 +0100 Subject: [PATCH 16/23] save to HISTDIR in WS2 for consistency --- notebooks/AFR-22/worksheet2.ipynb | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/notebooks/AFR-22/worksheet2.ipynb b/notebooks/AFR-22/worksheet2.ipynb index 39c9133..3c7c9c4 100755 --- a/notebooks/AFR-22/worksheet2.ipynb +++ b/notebooks/AFR-22/worksheet2.ipynb @@ -174,7 +174,7 @@ "outputs": [], "source": [ "# Use the print() command to display a summary of the HadGEM2-ES cube\n", - "\n" + "print(hadgem2)\n" ] }, { @@ -228,7 +228,7 @@ "metadata": {}, "outputs": [], "source": [ - "# Use the print() funiction with slicing notation\n", + "# Use the print() function with slicing notation\n", "\n" ] }, @@ -355,16 +355,16 @@ "hadgem2.units = 'mm day-1'\n", "\n", "# Save the new cube as a new netCDF file\n", - "OUTDIR = 'data_afr22/AFR-22'\n", + "HISTDIR = DATADIR + 'AFR-22/historical'\n", "\n", "# Check to see if this directory exists, if not create it\n", - "if not os.path.isdir(OUTDIR):\n", + "if not os.path.isdir(HISTDIR):\n", " # Make directory\n", - " os.mkdir(OUTDIR)\n", + " os.mkdir(HISTDIR)\n", " # Set directory permissions \n", - " os.chmod(OUTDIR, 0o776)\n", + " os.chmod(HISTDIR, 0o776)\n", "\n", - "outfile = os.path.join(OUTDIR, 'hadgem2-es.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + "outfile = os.path.join(HISTDIR, 'hadgem2-es.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", "iris.save(hadgem2, outfile)" ] }, @@ -391,7 +391,7 @@ "\n", "\n", "# Save the new cube as a new netCDF file using the `outfile` filename we've provided below!\n", - "outfile = os.path.join(OUTDIR, 'mpi-esm-lr.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + "outfile = os.path.join(HISTDIR, 'mpi-esm-lr.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", "\n" ] }, @@ -414,7 +414,7 @@ "outputs": [], "source": [ "# Set up directory for the climatology\n", - "CLIMDIR = 'data_afr22/AFR-22/climatology'\n", + "CLIMDIR = DATADIR + 'AFR-22/climatology'\n", "\n", "# Check to see if this directory exists, if not create it\n", "if not os.path.isdir(CLIMDIR):\n", @@ -434,7 +434,7 @@ "source": [ "# Loop through two model runs\n", "for gcmid in ['hadgem2-es', 'mpi-esm-lr']:\n", - " infile = os.path.join(OUTDIR, gcmid + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", + " infile = os.path.join(HISTDIR, gcmid + '.mon.1986_2005.GERICS-REMO2015.pr.mmday-1.nc')\n", "\n", " # Load the data\n", " data = iris.load_cube(infile)\n", @@ -725,9 +725,9 @@ "metadata": { "instance_type": "ml.t3.medium", "kernelspec": { - "display_name": "pyprecis-environment", + "display_name": "Python 3", "language": "python", - "name": "pyprecis-environment" + "name": "python3" }, "language_info": { "codemirror_mode": { From d83673df8d57b0656de63fb558adbbe76e293a21 Mon Sep 17 00:00:00 2001 From: "rosanna.amato" Date: Thu, 4 Aug 2022 12:02:02 +0100 Subject: [PATCH 17/23] remove print statement --- notebooks/AFR-22/worksheet2.ipynb | 52 ++++++++++++++++++++++++++----- 1 file changed, 44 insertions(+), 8 deletions(-) diff --git a/notebooks/AFR-22/worksheet2.ipynb b/notebooks/AFR-22/worksheet2.ipynb index 3c7c9c4..270aec0 100755 --- a/notebooks/AFR-22/worksheet2.ipynb +++ b/notebooks/AFR-22/worksheet2.ipynb @@ -48,7 +48,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -98,9 +98,45 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Climate Hazards group InfraRed Precipitation with Stations / (mm/month) (time: 448; latitude: 2000; longitude: 7200)\n", + " Dimension coordinates:\n", + " time x - -\n", + " latitude - x -\n", + " longitude - - x\n", + " Attributes:\n", + " Conventions: CF-1.6\n", + " acknowledgements: The Climate Hazards Group InfraRed Precipitation with Stations development...\n", + " comments: time variable denotes the first day of the given month.\n", + " creator_email: pete@geog.ucsb.edu\n", + " creator_name: Pete Peterson\n", + " date_created: 2018-05-16\n", + " documentation: http://pubs.usgs.gov/ds/832/\n", + " faq: http://chg-wiki.geog.ucsb.edu/wiki/CHIRPS_FAQ\n", + " ftp_url: ftp://chg-ftpout.geog.ucsb.edu/pub/org/chg/products/CHIRPS-latest/\n", + " geostatial_lat_max: 50.0\n", + " geostatial_lat_min: -50.0\n", + " geostatial_lon_max: 180.0\n", + " geostatial_lon_min: -180.0\n", + " history: created by Climate Hazards Group\n", + " institution: Climate Hazards Group. University of California at Santa Barbara\n", + " invalid_standard_name: convective precipitation rate\n", + " reference: Funk, C.C., Peterson, P.J., Landsfeld, M.F., Pedreros, D.H., Verdin, J.P.,...\n", + " time_step: month\n", + " title: CHIRPS Version 2.0\n", + " version: Version 2.0\n", + " website: http://chg.geog.ucsb.edu/data/chirps/index.html\n", + "-49.975 49.975\n", + "-179.975 179.975\n" + ] + } + ], "source": [ "# Provide the names of the directories where the netCDF model files are stored\n", "DATADIR = 'data_afr22/'\n", @@ -174,7 +210,7 @@ "outputs": [], "source": [ "# Use the print() command to display a summary of the HadGEM2-ES cube\n", - "print(hadgem2)\n" + "\n" ] }, { @@ -355,7 +391,7 @@ "hadgem2.units = 'mm day-1'\n", "\n", "# Save the new cube as a new netCDF file\n", - "HISTDIR = DATADIR + 'AFR-22/historical'\n", + "HISTDIR = DATADIR+'AFR-22/historical'\n", "\n", "# Check to see if this directory exists, if not create it\n", "if not os.path.isdir(HISTDIR):\n", @@ -409,12 +445,12 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# Set up directory for the climatology\n", - "CLIMDIR = DATADIR + 'AFR-22/climatology'\n", + "CLIMDIR = DATADIR+'AFR-22/climatology'\n", "\n", "# Check to see if this directory exists, if not create it\n", "if not os.path.isdir(CLIMDIR):\n", From 3defd940f0c4025f79adc402e5b83b9ba6914e84 Mon Sep 17 00:00:00 2001 From: "rosanna.amato" Date: Thu, 4 Aug 2022 15:00:08 +0100 Subject: [PATCH 18/23] clear cell output --- notebooks/AFR-22/worksheet2.ipynb | 46 ++++--------------------------- 1 file changed, 5 insertions(+), 41 deletions(-) diff --git a/notebooks/AFR-22/worksheet2.ipynb b/notebooks/AFR-22/worksheet2.ipynb index 270aec0..8ca87f0 100755 --- a/notebooks/AFR-22/worksheet2.ipynb +++ b/notebooks/AFR-22/worksheet2.ipynb @@ -48,7 +48,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -98,45 +98,9 @@ }, { "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Climate Hazards group InfraRed Precipitation with Stations / (mm/month) (time: 448; latitude: 2000; longitude: 7200)\n", - " Dimension coordinates:\n", - " time x - -\n", - " latitude - x -\n", - " longitude - - x\n", - " Attributes:\n", - " Conventions: CF-1.6\n", - " acknowledgements: The Climate Hazards Group InfraRed Precipitation with Stations development...\n", - " comments: time variable denotes the first day of the given month.\n", - " creator_email: pete@geog.ucsb.edu\n", - " creator_name: Pete Peterson\n", - " date_created: 2018-05-16\n", - " documentation: http://pubs.usgs.gov/ds/832/\n", - " faq: http://chg-wiki.geog.ucsb.edu/wiki/CHIRPS_FAQ\n", - " ftp_url: ftp://chg-ftpout.geog.ucsb.edu/pub/org/chg/products/CHIRPS-latest/\n", - " geostatial_lat_max: 50.0\n", - " geostatial_lat_min: -50.0\n", - " geostatial_lon_max: 180.0\n", - " geostatial_lon_min: -180.0\n", - " history: created by Climate Hazards Group\n", - " institution: Climate Hazards Group. University of California at Santa Barbara\n", - " invalid_standard_name: convective precipitation rate\n", - " reference: Funk, C.C., Peterson, P.J., Landsfeld, M.F., Pedreros, D.H., Verdin, J.P.,...\n", - " time_step: month\n", - " title: CHIRPS Version 2.0\n", - " version: Version 2.0\n", - " website: http://chg.geog.ucsb.edu/data/chirps/index.html\n", - "-49.975 49.975\n", - "-179.975 179.975\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# Provide the names of the directories where the netCDF model files are stored\n", "DATADIR = 'data_afr22/'\n", @@ -445,7 +409,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ From ab0d48b35496f4e599f3f515290c19190321986c Mon Sep 17 00:00:00 2001 From: "rosanna.amato" Date: Fri, 5 Aug 2022 11:59:50 +0100 Subject: [PATCH 19/23] fix wet day count to >1mm (see #140) --- notebooks/worksheet5.ipynb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/notebooks/worksheet5.ipynb b/notebooks/worksheet5.ipynb index 4a6d417..221247a 100755 --- a/notebooks/worksheet5.ipynb +++ b/notebooks/worksheet5.ipynb @@ -143,9 +143,9 @@ "# To learn more about custom aggregators see\n", "# https://scitools.org.uk/iris/docs/v2.4.0/examples/General/custom_aggregation.html#general-custom-aggregation \n", "\n", - "count_nonzero = Aggregator('count', None,\n", - " units_func=lambda units: 1,\n", - " lazy_func=da.count_nonzero)\n", + "# count wet days \n", + "model_wetdays = data.collapsed('time', iris.analysis.COUNT,\n", + " function=lambda values: values > 1)\n", "\n", "for gcmid in GCMIDS:\n", " for period in TIME_PERIODS.keys():\n", @@ -827,9 +827,9 @@ "metadata": { "instance_type": "ml.t3.medium", "kernelspec": { - "display_name": "pyprecis-environment", + "display_name": "Python 3", "language": "python", - "name": "pyprecis-environment" + "name": "python3" }, "language_info": { "codemirror_mode": { From 72fed13b71a0eb8125c23484d208e707bdff4e38 Mon Sep 17 00:00:00 2001 From: "rosanna.amato" Date: Fri, 5 Aug 2022 12:08:31 +0100 Subject: [PATCH 20/23] model_wetdays in correct place - period loop --- notebooks/worksheet5.ipynb | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/notebooks/worksheet5.ipynb b/notebooks/worksheet5.ipynb index 221247a..0850186 100755 --- a/notebooks/worksheet5.ipynb +++ b/notebooks/worksheet5.ipynb @@ -143,17 +143,16 @@ "# To learn more about custom aggregators see\n", "# https://scitools.org.uk/iris/docs/v2.4.0/examples/General/custom_aggregation.html#general-custom-aggregation \n", "\n", - "# count wet days \n", - "model_wetdays = data.collapsed('time', iris.analysis.COUNT,\n", - " function=lambda values: values > 1)\n", "\n", "for gcmid in GCMIDS:\n", " for period in TIME_PERIODS.keys():\n", " # Get path to daily data\n", " infile = os.path.join(DATADIR, period, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.pr.*.nc')\n", " data = iris.load_cube(infile)\n", - " # Select only wet days using our custom aggregator\n", - " model_wetdays = data.collapsed('time', count_nonzero)\n", + " \n", + " # Count wet days \n", + " model_wetdays = data.collapsed('time', iris.analysis.COUNT,\n", + " function=lambda values: values > 1)\n", " model_wetdays.rename(f'{gcmid} number of wet days (>=1mm/day) {TIME_PERIODS[period]}')\n", " # Save the file\n", " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.wetday.nc')\n", @@ -166,7 +165,6 @@ " # Add metadata\n", " model_pcent_wetdays.rename(f'{gcmid} percentage of wet days (>=1mm/day) {TIME_PERIODS[period]}')\n", " model_pcent_wetdays.units = '%'\n", - "\n", " # Save the file\n", " outfile = os.path.join(CLIMDIR, gcmid + '.day.' + TIME_PERIODS[period] + '.GERICS-REMO2015.wetday.pcent.nc')\n", " iris.save(model_pcent_wetdays, outfile)\n", From ff2eb31becada7c5ed0bd29363c2dc62e8f9d37a Mon Sep 17 00:00:00 2001 From: Nick Savage Date: Mon, 26 Sep 2022 11:32:19 +0100 Subject: [PATCH 21/23] fixes to makedata from review #136 --- notebooks/AFR-22/makedata.ipynb | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/notebooks/AFR-22/makedata.ipynb b/notebooks/AFR-22/makedata.ipynb index 3bf28e3..c9435b2 100755 --- a/notebooks/AFR-22/makedata.ipynb +++ b/notebooks/AFR-22/makedata.ipynb @@ -14,7 +14,8 @@ "\n", "DATADIR = '/project/ciid/projects/PRECIS/worksheets/data_afr22/AFR-22/'\n", "# write outputs to own directory so that can be checked before upload under ciid\n", - "OUTDIR = f'{os.getenv(\"SCRATCH\")}/cordex_inputs/'\n" + "OUTDIR = f'{os.getenv(\"SCRATCH\")}/cordex_inputs/'\n", + "retval = os.system('mkdir -p '+OUTDIR)" ] }, { @@ -203,13 +204,6 @@ " print(f'saved file: {outpath}')\n", "\n" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From 62d3b463db35fdc651ccf5aaa89ed47ca4283547 Mon Sep 17 00:00:00 2001 From: Nick Savage Date: Mon, 26 Sep 2022 14:24:19 +0100 Subject: [PATCH 22/23] make rsync and link on MO desktop work properly --- notebooks/AFR-22/worksheet1.ipynb | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/notebooks/AFR-22/worksheet1.ipynb b/notebooks/AFR-22/worksheet1.ipynb index 577e688..5aaedc0 100755 --- a/notebooks/AFR-22/worksheet1.ipynb +++ b/notebooks/AFR-22/worksheet1.ipynb @@ -130,18 +130,12 @@ "outputs": [], "source": [ "import subprocess\n", - "%mkdir $DATADIR/data_afr22\n", - "subprocess.run([\"ln\", \"-s\", \"$DATADIR/data_afr22 data_afr22\"])\n", - "subprocess.run(['rsync', '-r', '/project/ciid/projects/PRECIS/worksheets/data_afr22', '.'])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If the command works correctly you should see the message:\n", + "import os\n", + "DATADIR=os.getenv(\"DATADIR\")\n", + "#%mkdir -p $DATADIR/data_afr22\n", "\n", - "`CompletedProcess(args=['rsync', '-r', '/project/ciid/projects/PRECIS/worksheets/data_af22', '.'], returncode=0)`\n" + "subprocess.run(['rsync', '-rLK', '/project/ciid/projects/PRECIS/worksheets/data_afr22', DATADIR])\n", + "subprocess.run([\"ln\", \"-s\", DATADIR+\"/data_afr22\", \"data_afr22\"])\n" ] }, { From 26ea6d54b8b681247008e24be78e9db7a158f956 Mon Sep 17 00:00:00 2001 From: Nick Savage Date: Mon, 26 Sep 2022 14:26:49 +0100 Subject: [PATCH 23/23] fix wildcard to match a file that actually exists --- notebooks/AFR-22/worksheet1.ipynb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/notebooks/AFR-22/worksheet1.ipynb b/notebooks/AFR-22/worksheet1.ipynb index 5aaedc0..0d63528 100755 --- a/notebooks/AFR-22/worksheet1.ipynb +++ b/notebooks/AFR-22/worksheet1.ipynb @@ -238,9 +238,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**f)** To list all the files containing monthly data from a period starting 202101, we use the code **`*mon_202101-??????.nc`**\n", + "**f)** To list all the files containing monthly data from a period starting 204101, we use the code **`*mon_204101-??????.nc`**\n", "\n", - "Type below **`%ls *mon_202101-??????.nc`**" + "Type below **`%ls *mon_204101-??????.nc`**" ] }, { @@ -249,7 +249,7 @@ "metadata": {}, "outputs": [], "source": [ - "# Type %ls *mon_202101-??????.nc and press 'ctrl' + 'enter'.\n", + "# Type %ls *mon_204101-??????.nc and press 'ctrl' + 'enter'.\n", "\n" ] },