Skip to main content

Chris' Dataset Helper - Utilities for retrieving climate datasets

Project description

CDS-Helper

Utility to make retrieval of a contiguous set of data files easier.

Installation

pip install cds-helper

Using the CLI

1. Parameterize a request

Create a JSON file describing your desired download.

// cdsrequest.json
{
    "dataset": "reanalysis-era5-single-levels",
    "start_date": "2027-01-01",
    "end_date": "2027-12-31",
    "dataset": "reanalysis",
    "variables": [
        "10m_u_component_of_wind",
        "10m_v_component_of_wind",
        "2m_dewpoint_temperature",
        "2m_temperature",
        "sea_surface_temperature",
        "total_precipitation",
        "surface_net_solar_radiation",
        "surface_thermal_radiation_downwards",
    ]
}

[!NOTE] You can let the cli generate a template JSON file for you:

cdshelper template -request ./request.json

2. Execute the request

Pass the path to your JSON file to cdshelper request

cdshelper request ./cdsrequest.json

Using the library in your code

import asyncio
import datetime
import logging
import pathlib
import sys

from cds_helper.core import (
    CdsDataRequest,
    download_monthly_data,
)


async def retrieval_demo(log: logging.Logger) -> None:
    """Demo usage of the method `download_monthly_data` from CDS helper."""
    # Create a CdsDataRequest defining the parameters for retrieval.
    request = CdsDataRequest(
        "reanalysis-era5-single-levels",
        datetime(2017, 1, 1),
        datetime(2017, 2, 1),
        "reanalysis",
        variables=[
            "10m_u_component_of_wind",
            "10m_v_component_of_wind",
            "2m_dewpoint_temperature",
            "2m_temperature",
            "sea_surface_temperature",
            "total_precipitation",
            "surface_net_solar_radiation",
            "surface_thermal_radiation_downwards",
        ],
    )

    # Create a mapping from the paths in the archive to the desired
    # local paths. Add a string template `{0}` to allow cds-helper to
    # rename output files based on the request parameters.
    file_map = {
        "data_stream-oper_stepType-instant.nc": "{0}_inst.nc",
        "data_stream-oper_stepType-accum.nc": "{0}_inst.nc",
    }

    # Specify the directory where output will be stored.
    output_to = pathlib.Path("~/datasets").expanduser()

    # Trigger retrieval.
    download_monthly_data(request, file_map, output_to)


async def main(_args_list: list[str]) -> int:
    """Execute the cds-helper CLI."""
    logging.basicConfig(level=logging.INFO)
    log = logging.getLogger()

    retrieval_demo(log)


if __name__ == "__main__":
    rc = asyncio.run(main(sys.argv[1:]))
    sys.exit(rc)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cds_helper-0.0.1a2.tar.gz (10.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cds_helper-0.0.1a2-py3-none-any.whl (9.7 kB view details)

Uploaded Python 3

File details

Details for the file cds_helper-0.0.1a2.tar.gz.

File metadata

  • Download URL: cds_helper-0.0.1a2.tar.gz
  • Upload date:
  • Size: 10.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.12

File hashes

Hashes for cds_helper-0.0.1a2.tar.gz
Algorithm Hash digest
SHA256 e8f3d2735cedccbaa7719f3354714d23bac8da4181b837d9a595673c0ecd5672
MD5 efe3fa68566eaf2973af766474d93a88
BLAKE2b-256 6101ebf808550487f3ce7dbe87f5ff75e1b9e2ba58e84e19171439f137efa98b

See more details on using hashes here.

File details

Details for the file cds_helper-0.0.1a2-py3-none-any.whl.

File metadata

  • Download URL: cds_helper-0.0.1a2-py3-none-any.whl
  • Upload date:
  • Size: 9.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.12

File hashes

Hashes for cds_helper-0.0.1a2-py3-none-any.whl
Algorithm Hash digest
SHA256 22a60d405c3137afb28e945e6ca5b8a925e3eacbf565995e4cff522060da23ba
MD5 2dc348bb0a8367a773f14fb5bcb6ac36
BLAKE2b-256 72960f5eff1d239129aa5d77558ec9d1cc54bf837ff5927c89ecec64352a7a97

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page