{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# HiResIreland" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import glob\n", "import itertools\n", "import os\n", "from datetime import datetime, timezone\n", "import geopandas as gpd\n", "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import numpy as np\n", "import xarray as xr\n", "from climag import climag\n", "from climag import climag_plot as cplt\n", "import seaborn as sns" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "DATA_DIR_BASE = os.path.join(\"/run/media/nms/MyPassport/HiResIreland\")" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# directory to store outputs\n", "DATA_DIR = os.path.join(DATA_DIR_BASE, \"IE\")\n", "os.makedirs(DATA_DIR, exist_ok=True)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# Moorepark met station coords\n", "LON, LAT = -8.26389, 52.16389" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# Ireland boundary\n", "GPKG_BOUNDARY = os.path.join(\"data\", \"boundaries\", \"boundaries_all.gpkg\")\n", "ie = gpd.read_file(GPKG_BOUNDARY, layer=\"NUTS_RG_01M_2021_2157_IE\")\n", "ie_bbox = gpd.read_file(\n", " GPKG_BOUNDARY, layer=\"NUTS_RG_01M_2021_2157_IE_BBOX_DIFF\"\n", ")\n", "ie_ne = gpd.read_file(GPKG_BOUNDARY, layer=\"ne_10m_land_2157_IE_BBOX_DIFF\")" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Read a subset (historical)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "exp, model = \"historical\", \"EC-EARTH\"" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "data = xr.open_mfdataset(\n", " list(\n", " itertools.chain(\n", " *list(\n", " glob.glob(\n", " os.path.join(DATA_DIR_BASE, \"COSMO5-CLM\", exp, model, e)\n", " )\n", " for e in [\n", " f\"*mean_T_2M*{model}*{exp}*.nc\",\n", " f\"S1_daymean*{model}*{exp}*.nc\",\n", " f\"*ET*{model}*{exp}*.nc\",\n", " f\"*TOT_PREC*{model}*{exp}*.nc\",\n", " f\"*ASOB_S*{model}*{exp}*.nc\",\n", " ]\n", " )\n", " )\n", " ),\n", " chunks=\"auto\",\n", " decode_coords=\"all\",\n", ")" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "# rename and assign attributes to ET var\n", "data = data.rename({\"w\": \"PET\"})\n", "data[\"PET\"].attrs[\"long_name\"] = \"evapotranspiration\"\n", "data[\"PET\"].attrs[\"units\"] = \"mm\"" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
<xarray.Dataset>\n",
"Dimensions: (time: 11323, rlon: 186, rlat: 200, bnds: 2)\n",
"Coordinates:\n",
" * time (time) datetime64[ns] 1975-01-01T10:30:00 ... 2005-12-31T10...\n",
" * rlon (rlon) float64 -3.36 -3.325 -3.29 -3.255 ... 3.045 3.08 3.115\n",
" * rlat (rlat) float64 -3.38 -3.345 -3.31 -3.275 ... 3.515 3.55 3.585\n",
" time_bnds (time, bnds) datetime64[ns] dask.array<chunksize=(365, 2), meta=np.ndarray>\n",
" lon (rlat, rlon) float32 dask.array<chunksize=(200, 186), meta=np.ndarray>\n",
" lat (rlat, rlon) float32 dask.array<chunksize=(200, 186), meta=np.ndarray>\n",
" rotated_pole int32 1\n",
" height_2m float32 2.0\n",
"Dimensions without coordinates: bnds\n",
"Data variables:\n",
" ASWDIR_S (time, rlat, rlon) float32 dask.array<chunksize=(4875, 86, 80), meta=np.ndarray>\n",
" ASWDIFD_S (time, rlat, rlon) float32 dask.array<chunksize=(4875, 86, 80), meta=np.ndarray>\n",
" ASWDIFU_S (time, rlat, rlon) float32 dask.array<chunksize=(4875, 86, 80), meta=np.ndarray>\n",
" ALB_RAD (time, rlat, rlon) float32 dask.array<chunksize=(4875, 86, 80), meta=np.ndarray>\n",
" ASOB_S (time, rlat, rlon) float32 dask.array<chunksize=(365, 111, 101), meta=np.ndarray>\n",
" TOT_PREC (time, rlat, rlon) float32 dask.array<chunksize=(365, 111, 101), meta=np.ndarray>\n",
" T_2M (time, rlat, rlon) float32 dask.array<chunksize=(365, 111, 101), meta=np.ndarray>\n",
" PET (time, rlat, rlon) float32 dask.array<chunksize=(6679, 111, 101), meta=np.ndarray>\n",
"Attributes:\n",
" CDI: Climate Data Interface version 1.9.8 (https://mpimet.mpg...\n",
" Conventions: CF-1.4\n",
" history: Wed Mar 01 06:14:44 2023: cdo -s -L -f nc4c -z zip_9 -da...\n",
" title: COSMO5_EC-EARTH_historical_4km\n",
" experiment_id: COSMO5_EC-EARTH_historical_4km\n",
" realization: 1\n",
" conventionsURL: http://www.cfconventions.org/\n",
" contact: Paul Nolan\n",
" references: http://www.ichec.ie\n",
" creation_date: 2017-08-19 08:17:04\n",
" frequency: day\n",
" CDO: Climate Data Operators version 1.9.8 (https://mpimet.mpg...<xarray.Dataset>\n",
"Dimensions: (time: 11323, rlon: 90, rlat: 116, bnds: 2)\n",
"Coordinates:\n",
" * time (time) datetime64[ns] 1975-01-01T10:30:00 ... 2005-12-31T10...\n",
" * rlon (rlon) float64 -1.68 -1.645 -1.61 -1.575 ... 1.365 1.4 1.435\n",
" * rlat (rlat) float64 -1.98 -1.945 -1.91 -1.875 ... 1.975 2.01 2.045\n",
" lon (rlat, rlon) float32 dask.array<chunksize=(116, 90), meta=np.ndarray>\n",
" lat (rlat, rlon) float32 dask.array<chunksize=(116, 90), meta=np.ndarray>\n",
" height_2m float32 2.0\n",
" spatial_ref int64 0\n",
" time_bnds (time, bnds) datetime64[ns] dask.array<chunksize=(365, 2), meta=np.ndarray>\n",
" rotated_pole int64 0\n",
"Dimensions without coordinates: bnds\n",
"Data variables:\n",
" PP (time, rlat, rlon) float32 dask.array<chunksize=(365, 71, 53), meta=np.ndarray>\n",
" T (time, rlat, rlon) float32 dask.array<chunksize=(365, 71, 53), meta=np.ndarray>\n",
" PET (time, rlat, rlon) float32 dask.array<chunksize=(6679, 71, 53), meta=np.ndarray>\n",
" PAR (time, rlat, rlon) float32 dask.array<chunksize=(4875, 46, 32), meta=np.ndarray>\n",
"Attributes: (12/13)\n",
" CDI: Climate Data Interface version 1.9.8 (https://mpimet.mpg...\n",
" Conventions: CF-1.4\n",
" title: COSMO5_EC-EARTH_historical_4km\n",
" experiment_id: COSMO5_EC-EARTH_historical_4km\n",
" realization: 1\n",
" conventionsURL: http://www.cfconventions.org/\n",
" ... ...\n",
" references: http://www.ichec.ie\n",
" creation_date: 2017-08-19 08:17:04\n",
" frequency: day\n",
" CDO: Climate Data Operators version 1.9.8 (https://mpimet.mpg...\n",
" dataset: IE_HiResIreland_COSMO5_EC-EARTH_historical\n",
" comment: This dataset has been clipped with the Island of Ireland...<xarray.Dataset>\n",
"Dimensions: (time: 11323, bnds: 2)\n",
"Coordinates:\n",
" * time (time) datetime64[ns] 1975-01-01T10:30:00 ... 2005-12-31T10...\n",
" rlon float64 -0.21\n",
" rlat float64 -1.245\n",
" lon float32 dask.array<chunksize=(), meta=np.ndarray>\n",
" lat float32 dask.array<chunksize=(), meta=np.ndarray>\n",
" height_2m float32 2.0\n",
" spatial_ref int64 0\n",
" time_bnds (time, bnds) datetime64[ns] dask.array<chunksize=(365, 2), meta=np.ndarray>\n",
" rotated_pole int64 0\n",
"Dimensions without coordinates: bnds\n",
"Data variables:\n",
" PP (time) float32 dask.array<chunksize=(365,), meta=np.ndarray>\n",
" T (time) float32 dask.array<chunksize=(365,), meta=np.ndarray>\n",
" PET (time) float32 dask.array<chunksize=(6679,), meta=np.ndarray>\n",
" PAR (time) float32 dask.array<chunksize=(4875,), meta=np.ndarray>\n",
"Attributes: (12/13)\n",
" CDI: Climate Data Interface version 1.9.8 (https://mpimet.mpg...\n",
" Conventions: CF-1.4\n",
" title: COSMO5_EC-EARTH_historical_4km\n",
" experiment_id: COSMO5_EC-EARTH_historical_4km\n",
" realization: 1\n",
" conventionsURL: http://www.cfconventions.org/\n",
" ... ...\n",
" references: http://www.ichec.ie\n",
" creation_date: 2017-08-19 08:17:04\n",
" frequency: day\n",
" CDO: Climate Data Operators version 1.9.8 (https://mpimet.mpg...\n",
" dataset: IE_HiResIreland_COSMO5_EC-EARTH_historical\n",
" comment: This dataset has been clipped with the Island of Ireland...<xarray.Dataset>\n",
"Dimensions: (rlon: 90, rlat: 116, time: 365)\n",
"Coordinates:\n",
" * rlon (rlon) float64 -1.68 -1.645 -1.61 -1.575 ... 1.365 1.4 1.435\n",
" * rlat (rlat) float64 -1.98 -1.945 -1.91 -1.875 ... 1.975 2.01 2.045\n",
" lon (rlat, rlon) float32 dask.array<chunksize=(116, 90), meta=np.ndarray>\n",
" lat (rlat, rlon) float32 dask.array<chunksize=(116, 90), meta=np.ndarray>\n",
" height_2m float32 2.0\n",
" spatial_ref int64 0\n",
" * time (time) datetime64[ns] 1975-01-01T10:30:00 ... 1975-12-31T10...\n",
" rotated_pole int64 0\n",
"Data variables:\n",
" PP (time, rlat, rlon) float32 dask.array<chunksize=(365, 71, 53), meta=np.ndarray>\n",
" T (time, rlat, rlon) float32 dask.array<chunksize=(365, 71, 53), meta=np.ndarray>\n",
" PET (time, rlat, rlon) float32 dask.array<chunksize=(365, 71, 53), meta=np.ndarray>\n",
" PAR (time, rlat, rlon) float32 dask.array<chunksize=(365, 46, 32), meta=np.ndarray>\n",
"Attributes: (12/13)\n",
" CDI: Climate Data Interface version 1.9.8 (https://mpimet.mpg...\n",
" Conventions: CF-1.4\n",
" title: COSMO5_EC-EARTH_historical_4km\n",
" experiment_id: COSMO5_EC-EARTH_historical_4km\n",
" realization: 1\n",
" conventionsURL: http://www.cfconventions.org/\n",
" ... ...\n",
" references: http://www.ichec.ie\n",
" creation_date: 2017-08-19 08:17:04\n",
" frequency: day\n",
" CDO: Climate Data Operators version 1.9.8 (https://mpimet.mpg...\n",
" dataset: IE_HiResIreland_COSMO5_EC-EARTH_historical\n",
" comment: This dataset has been clipped with the Island of Ireland...<xarray.Dataset>\n",
"Dimensions: (rlon: 85, rlat: 113, time: 1096)\n",
"Coordinates:\n",
" * rlon (rlon) float64 -1.54 -1.505 -1.47 -1.435 ... 1.33 1.365 1.4\n",
" * rlat (rlat) float64 -1.945 -1.91 -1.875 -1.84 ... 1.905 1.94 1.975\n",
" lon (rlat, rlon) float32 dask.array<chunksize=(113, 85), meta=np.ndarray>\n",
" lat (rlat, rlon) float32 dask.array<chunksize=(113, 85), meta=np.ndarray>\n",
" height_2m float32 2.0\n",
" rotated_pole int64 0\n",
" * time (time) datetime64[ns] 1975-01-01T10:30:00 ... 1977-12-31T10...\n",
" spatial_ref int64 0\n",
"Data variables:\n",
" PP (time, rlat, rlon) float32 dask.array<chunksize=(365, 70, 49), meta=np.ndarray>\n",
" T (time, rlat, rlon) float32 dask.array<chunksize=(365, 70, 49), meta=np.ndarray>\n",
" PET (time, rlat, rlon) float32 dask.array<chunksize=(365, 70, 49), meta=np.ndarray>\n",
" PAR (time, rlat, rlon) float32 dask.array<chunksize=(365, 45, 28), meta=np.ndarray>\n",
"Attributes: (12/13)\n",
" CDI: Climate Data Interface version 1.9.8 (https://mpimet.mpg...\n",
" Conventions: CF-1.4\n",
" title: COSMO5_EC-EARTH_historical_4km\n",
" experiment_id: COSMO5_EC-EARTH_historical_4km\n",
" realization: 1\n",
" conventionsURL: http://www.cfconventions.org/\n",
" ... ...\n",
" references: http://www.ichec.ie\n",
" creation_date: 2017-08-19 08:17:04\n",
" frequency: day\n",
" CDO: Climate Data Operators version 1.9.8 (https://mpimet.mpg...\n",
" dataset: IE_HiResIreland_COSMO5_EC-EARTH_historical\n",
" comment: This dataset has been clipped with the Island of Ireland...<xarray.Dataset>\n",
"Dimensions: (rlon: 85, rlat: 113, time: 365)\n",
"Coordinates:\n",
" * rlon (rlon) float64 -1.54 -1.505 -1.47 -1.435 ... 1.33 1.365 1.4\n",
" * rlat (rlat) float64 -1.945 -1.91 -1.875 -1.84 ... 1.905 1.94 1.975\n",
" lon (rlat, rlon) float32 dask.array<chunksize=(113, 85), meta=np.ndarray>\n",
" lat (rlat, rlon) float32 dask.array<chunksize=(113, 85), meta=np.ndarray>\n",
" height_2m float32 2.0\n",
" rotated_pole int64 0\n",
" * time (time) datetime64[ns] 1975-01-01T10:30:00 ... 1975-12-31T10...\n",
" spatial_ref int64 0\n",
"Data variables:\n",
" PP (time, rlat, rlon) float32 dask.array<chunksize=(365, 70, 49), meta=np.ndarray>\n",
" T (time, rlat, rlon) float32 dask.array<chunksize=(365, 70, 49), meta=np.ndarray>\n",
" PET (time, rlat, rlon) float32 dask.array<chunksize=(365, 70, 49), meta=np.ndarray>\n",
" PAR (time, rlat, rlon) float32 dask.array<chunksize=(365, 45, 28), meta=np.ndarray>\n",
"Attributes: (12/13)\n",
" CDI: Climate Data Interface version 1.9.8 (https://mpimet.mpg...\n",
" Conventions: CF-1.4\n",
" title: COSMO5_EC-EARTH_historical_4km\n",
" experiment_id: COSMO5_EC-EARTH_historical_4km\n",
" realization: 1\n",
" conventionsURL: http://www.cfconventions.org/\n",
" ... ...\n",
" references: http://www.ichec.ie\n",
" creation_date: 2017-08-19 08:17:04\n",
" frequency: day\n",
" CDO: Climate Data Operators version 1.9.8 (https://mpimet.mpg...\n",
" dataset: IE_HiResIreland_COSMO5_EC-EARTH_historical\n",
" comment: This dataset has been clipped with the Island of Ireland...<xarray.Dataset>\n",
"Dimensions: (rlon: 85, rlat: 113, time: 11323)\n",
"Coordinates:\n",
" * rlon (rlon) float64 -1.54 -1.505 -1.47 -1.435 ... 1.33 1.365 1.4\n",
" * rlat (rlat) float64 -1.945 -1.91 -1.875 -1.84 ... 1.905 1.94 1.975\n",
" lon (rlat, rlon) float32 dask.array<chunksize=(113, 85), meta=np.ndarray>\n",
" lat (rlat, rlon) float32 dask.array<chunksize=(113, 85), meta=np.ndarray>\n",
" height_2m float32 2.0\n",
" rotated_pole int64 0\n",
" * time (time) datetime64[ns] 1975-01-01T10:30:00 ... 2005-12-31T10...\n",
" spatial_ref int64 0\n",
"Data variables:\n",
" PP (time, rlat, rlon) float32 dask.array<chunksize=(365, 70, 49), meta=np.ndarray>\n",
" T (time, rlat, rlon) float32 dask.array<chunksize=(365, 70, 49), meta=np.ndarray>\n",
" PET (time, rlat, rlon) float32 dask.array<chunksize=(365, 70, 49), meta=np.ndarray>\n",
" PAR (time, rlat, rlon) float32 dask.array<chunksize=(365, 45, 28), meta=np.ndarray>\n",
"Attributes: (12/13)\n",
" CDI: Climate Data Interface version 1.9.8 (https://mpimet.mpg...\n",
" Conventions: CF-1.4\n",
" title: COSMO5_EC-EARTH_historical_4km\n",
" experiment_id: COSMO5_EC-EARTH_historical_4km\n",
" realization: 1\n",
" conventionsURL: http://www.cfconventions.org/\n",
" ... ...\n",
" references: http://www.ichec.ie\n",
" creation_date: 2017-08-19 08:17:04\n",
" frequency: day\n",
" CDO: Climate Data Operators version 1.9.8 (https://mpimet.mpg...\n",
" dataset: IE_HiResIreland_COSMO5_EC-EARTH_historical\n",
" comment: This dataset has been clipped with the Island of Ireland...