{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Sample met data for testing ModVege\n", "\n", "Data used: Met Eireann daily data for Valentia Observatory, Co. Kerry\n", "()" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import os\n", "from datetime import datetime, timezone\n", "import pandas as pd\n", "import pooch" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "DATA_DRIVE = \"data\"\n", "URL = \"https://cli.fusio.net/cli/climate_data/webdata/dly2275.csv\"\n", "SUB_DIR = os.path.join(DATA_DRIVE, \"met\", \"MetEireann\")\n", "KNOWN_HASH = None\n", "os.makedirs(SUB_DIR, exist_ok=True)\n", "FILE_NAME = \"dly2275.csv\"" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# download data if it doesn't exist\n", "if not os.path.isfile(os.path.join(SUB_DIR, FILE_NAME)):\n", " pooch.retrieve(\n", " url=URL, known_hash=KNOWN_HASH, fname=FILE_NAME, path=SUB_DIR\n", " )\n", "\n", " with open(\n", " os.path.join(SUB_DIR, f\"{FILE_NAME[:-4]}.txt\"), \"w\", encoding=\"utf-8\"\n", " ) as outfile:\n", " outfile.write(\n", " f\"Data downloaded on: {datetime.now(tz=timezone.utc)}\\n\"\n", " f\"Download URL: {URL}\"\n", " )" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "val = pd.read_csv(\n", " os.path.join(SUB_DIR, FILE_NAME), skiprows=24, parse_dates=[\"date\"]\n", ")" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
dateindmaxtpind.1mintpigmingminind.2raincbl...ind.5hgsungloradsoilpeevapsmd_wdsmd_mdsmd_pd
01942-01-01011.109.80.08.001.71026.2...032.0NaNNaNNaN0.91.1NaNNaNNaN
11942-01-02011.6010.00.08.604.61023.8...033.0NaNNaNNaN0.60.8NaNNaNNaN
21942-01-03012.109.80.09.4016.71014.5...039.0NaNNaNNaN0.30.5NaNNaNNaN
31942-01-0409.904.00.06.703.51012.0...037.0NaNNaNNaN0.50.7NaNNaNNaN
41942-01-0504.901.40.00.400.01022.5...045.0NaNNaNNaN0.91.1NaNNaNNaN
\n", "

5 rows × 25 columns

\n", "
" ], "text/plain": [ " date ind maxtp ind.1 mintp igmin gmin ind.2 rain cbl ... \\\n", "0 1942-01-01 0 11.1 0 9.8 0.0 8.0 0 1.7 1026.2 ... \n", "1 1942-01-02 0 11.6 0 10.0 0.0 8.6 0 4.6 1023.8 ... \n", "2 1942-01-03 0 12.1 0 9.8 0.0 9.4 0 16.7 1014.5 ... \n", "3 1942-01-04 0 9.9 0 4.0 0.0 6.7 0 3.5 1012.0 ... \n", "4 1942-01-05 0 4.9 0 1.4 0.0 0.4 0 0.0 1022.5 ... \n", "\n", " ind.5 hg sun glorad soil pe evap smd_wd smd_md smd_pd \n", "0 0 32.0 NaN NaN NaN 0.9 1.1 NaN NaN NaN \n", "1 0 33.0 NaN NaN NaN 0.6 0.8 NaN NaN NaN \n", "2 0 39.0 NaN NaN NaN 0.3 0.5 NaN NaN NaN \n", "3 0 37.0 NaN NaN NaN 0.5 0.7 NaN NaN NaN \n", "4 0 45.0 NaN NaN NaN 0.9 1.1 NaN NaN NaN \n", "\n", "[5 rows x 25 columns]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val.head()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# filter data for 2019 - 2021\n", "val = val[(val[\"date\"].dt.year >= 2019) & (val[\"date\"].dt.year <= 2021)]" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "val.sort_values(by=[\"date\"], inplace=True)\n", "val.reset_index(inplace=True)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "# keep only min and max air temps, rainfall, global radiation, PET\n", "val = val[[\"date\", \"maxtp\", \"mintp\", \"rain\", \"glorad\", \"pe\"]]" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
datemaxtpmintpraingloradpe
02019-01-0111.48.30.0272.00.3
12019-01-0210.87.90.1299.00.5
22019-01-0310.07.90.9171.00.8
32019-01-049.27.50.0207.01.0
42019-01-0510.88.30.0122.00.9
\n", "
" ], "text/plain": [ " date maxtp mintp rain glorad pe\n", "0 2019-01-01 11.4 8.3 0.0 272.0 0.3\n", "1 2019-01-02 10.8 7.9 0.1 299.0 0.5\n", "2 2019-01-03 10.0 7.9 0.9 171.0 0.8\n", "3 2019-01-04 9.2 7.5 0.0 207.0 1.0\n", "4 2019-01-05 10.8 8.3 0.0 122.0 0.9" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val.head()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "# calculate mean air temperature\n", "val[\"T\"] = val[[\"maxtp\", \"mintp\"]].mean(axis=1)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "# convert global radiation units to MJ m-2 from J cm-2\n", "# see Allen et al. (1998)\n", "val[\"RG\"] = val[\"glorad\"].astype(float) / 100.0" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "# convert global radiation to PAR\n", "# see Papaioannou et al. (1993)\n", "val[\"PAR\"] = val[\"RG\"] * 0.473" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "# rainfall\n", "val[\"PP\"] = val[\"rain\"].astype(float)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "# potential evapotranspiration\n", "val[\"PET\"] = val[\"pe\"].astype(float)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "val[\"time\"] = val[\"date\"]" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "# keep only relevant columns\n", "val = val[[\"time\", \"T\", \"PAR\", \"PET\", \"PP\", \"RG\"]]" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
timeTPARPETPPRG
02019-01-019.851.286560.30.02.72
12019-01-029.351.414270.50.12.99
22019-01-038.950.808830.80.91.71
32019-01-048.350.979111.00.02.07
42019-01-059.550.577060.90.01.22
\n", "
" ], "text/plain": [ " time T PAR PET PP RG\n", "0 2019-01-01 9.85 1.28656 0.3 0.0 2.72\n", "1 2019-01-02 9.35 1.41427 0.5 0.1 2.99\n", "2 2019-01-03 8.95 0.80883 0.8 0.9 1.71\n", "3 2019-01-04 8.35 0.97911 1.0 0.0 2.07\n", "4 2019-01-05 9.55 0.57706 0.9 0.0 1.22" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val.head()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
timeTPARPETPPRG
10912021-12-279.601.716990.30.93.63
10922021-12-289.650.700040.67.71.48
10932021-12-2912.601.196690.59.92.53
10942021-12-3012.700.302720.322.20.64
10952021-12-3113.200.444620.72.00.94
\n", "
" ], "text/plain": [ " time T PAR PET PP RG\n", "1091 2021-12-27 9.60 1.71699 0.3 0.9 3.63\n", "1092 2021-12-28 9.65 0.70004 0.6 7.7 1.48\n", "1093 2021-12-29 12.60 1.19669 0.5 9.9 2.53\n", "1094 2021-12-30 12.70 0.30272 0.3 22.2 0.64\n", "1095 2021-12-31 13.20 0.44462 0.7 2.0 0.94" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val.tail()" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "# save as a CSV file\n", "val.to_csv(os.path.join(SUB_DIR, \"valentia.csv\"), index=False)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3.10.6 ('ClimAg')", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.6 | packaged by conda-forge | (main, Aug 22 2022, 20:35:26) [GCC 10.4.0]" }, "vscode": { "interpreter": { "hash": "c4e659d1bedfc73d1fd31d7c0e2c79d7cc7aac22204994016c65a9e44686eb91" } } }, "nbformat": 4, "nbformat_minor": 2 }