{ "cells": [ { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "from datetime import datetime as dt\n", "from collections import namedtuple\n", "from pathlib import Path\n", "\n", "from toargridding.toar_rest_client import AnalysisService\n", "from toargridding.grids import RegularGrid\n", "from toargridding.gridding import get_gridded_toar_data\n", "from toargridding.metadata import TimeSample" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "#creation of request.\n", "\n", "Config = namedtuple(\"Config\", [\"grid\", \"time\", \"variables\", \"stats\",\"moreOptions\"])\n", "\n", "#moreOptions is implemented as a dict to add additional arguments to the query to the REST API\n", "#For example the field toar1_category with its possible values Urban, RuralLowElevation, RuralHighElevation and Unclassified can be added.\n", "#see page 18 in https://toar-data.fz-juelich.de/sphinx/TOAR_UG_Vol03_Database/build/latex/toardatabase--userguide.pdf\n", "\n", "valid_data = Config(\n", " RegularGrid( lat_resolution=1.9, lon_resolution=2.5, ),\n", " TimeSample( start=dt(2014,1,1), end=dt(2019,12,31), sampling=\"daily\"),\n", " [\"mole_fraction_of_ozone_in_air\"],#variable name\n", " [\"mean\"],# [\"dma8epax\"], # enable when finished\n", " {}\n", ")\n", "missing_data = Config(\n", " RegularGrid( lat_resolution=1.9, lon_resolution=2.5),\n", " TimeSample( start=dt(2000,1,1), end=dt(2013,12,31), sampling=\"daily\"),\n", " [\"mole_fraction_of_ozone_in_air\"],\n", " [\"mean\"],\n", " #[\"dma8epax\"],\n", " {}\n", ")\n", "\n", "configs = {\n", " #\"test_ta\" : valid_data\n", " \"test_ta2\" : missing_data\n", "}\n", "\n", "#testing access:\n", "#config = configs[\"test_ta\"]\n", "#config.grid" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "load status endpoint from cache\n", "try: 1, wait_time: 300\n", "try: 2, wait_time: 300\n", "try: 3, wait_time: 300\n", "try: 4, wait_time: 300\n", "try: 5, wait_time: 300\n" ] } ], "source": [ "#CAVE: this cell runs about 30minutes per requested year\n", "#the processing is done on the server of the TOAR database.\n", "#a restart of the cell continues the request to the REST API if the requested data are ready for download\n", "# The download can also take a few minutes\n", "\n", "stats_endpoint = \"https://toar-data.fz-juelich.de/api/v2/analysis/statistics/\"\n", "result_basepath = Path(\"results\")\n", "result_basepath.mkdir(exist_ok=True)\n", "analysis_service = AnalysisService(stats_endpoint, result_basepath)\n", "\n", "for person, config in configs.items():\n", " datasets, metadatas = get_gridded_toar_data(\n", " analysis_service=analysis_service,\n", " grid=config.grid,\n", " time=config.time,\n", " variables=config.variables,\n", " stats=config.stats\n", " #**config.moreOptions\n", " )\n", "\n", " for dataset, metadata in zip(datasets, metadatas):\n", " dataset.to_netcdf(result_basepath / f\"{metadata.get_id()}.nc\")\n", " print(metadata.get_id())" ] } ], "metadata": { "kernelspec": { "display_name": "toargridding-8RVrxzmn-py3.11", "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.11.5" } }, "nbformat": 4, "nbformat_minor": 2 }