Skip to main content

usdata

PyPI Python CI Live checks License Docs

usdata.dev: public science, reproducible inputs

Reproducible acquisition of U.S. public scientific data. One Python SDK and CLI discovers curated datasets from agencies such as NOAA, USGS, and EPA, fetches their files, and keeps a record of every input: a manifest names them, a lockfile pins them by checksum, and the record of what was fetched is what a methods section cites. Analysis stays in pandas and xarray; usdata only acquires. If you need every product one agency publishes, that agency's own library is the better tool; usdata is for pinning inputs across sources and proving later that they have not changed.

pip install "usdata[pandas]"
usdata search precipitation --location Oklahoma
usdata fetch noaa:ghcn-daily -p stations=USW00013967 --start 2024-05-06 --end 2024-05-07

Save the same station query as dataset.yaml in your working directory:

name: first-station
sources:
  - dataset: noaa:ghcn-daily
    start: 2024-05-06
    end: 2024-05-07
    params:
      stations: USW00013967

Then fetch and pin its inputs, and print their citation:

usdata pull dataset.yaml && usdata cite dataset.yaml

The first pull writes dataset.lock.json; later pulls restore its pinned assets.

From Python, using the same dataset.yaml:

from usdata import build_query, fetch, get, pull

query = build_query(start="2024-05-06", end="2024-05-07", stations="USW00013967")
items = fetch(get("noaa:ghcn-daily"), query)
frame = items[0].open()  # pandas DataFrame, units and provenance in frame.attrs
result = pull("dataset.yaml")  # every manifest source, pinned in dataset.lock.json
print(result.fetched[0].provenance.checksum)  # what usdata cite reports

Alpha. Releases are tested and lockfiles are stable, but the Python API and CLI can change between minor versions; the changelog marks breaking changes.

Where to look

usdata.dev What it is for: the dataset browser and worked examples with saved results
docs.usdata.dev How to use it: install, getting started, guides, dataset notes, and reference
Severe-weather case study One tornado, six sources, one manifest and lockfile, ending in a citation

Twenty-seven datasets are available today and nineteen more are planned, grouped by agency and product family in the catalog.

How this compares

usdata resolves a place, a time window, and a few parameters to the exact files that satisfy them, then pins those files so the same inputs can be restored and verified later. Neighbouring tools each do part of that.

Tool What it does What usdata adds
pooch Downloads and verifies files from a registry of names, hashes, and a base URL you write Discovery: the query resolves to the URLs, and the lockfile is written, not authored
intake Describes datasets in catalogs and opens them through drivers Checksums, lockfiles, and provenance; usdata stops at handing a file to pandas or xarray
DVC Versions data files and can track one URL by its ETag or hash Knowing which URLs a scientific question needs, across agencies
Herbie Deep access to model output, including subsetting GRIB2 through index files One interface across observations, radar, satellite, and models, with a lockfile; usdata's index-file fetch reproduces Herbie's for that reason
dataretrieval Full coverage of USGS water data Cross-agency pinning; use dataretrieval for USGS breadth

Contributing

Setup, commands, checks, and the release procedure are in CONTRIBUTING.md. The project record lives beside it: architecture, testing, decisions, roadmap, and versioning. The main way the project grows is a new dataset, following adding a dataset.

License

Apache-2.0.

Release files for usdata 0.27.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for usdata 0.27.0
File Size Uploaded
usdata-0.27.0.tar.gz 284.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for usdata 0.27.0
File Interpreter ABI Platform
usdata-0.27.0-py3-none-any.whl Python 3 none any Details

Total release size: 612.2 kB

Release files / usdata-0.27.0.tar.gz

Download URL usdata-0.27.0.tar.gz
Size 284.2 kB
Tags Source
SHA-256 checksum
How to use checksums
7c8bcfded9a79b90f0b72ab2387dabaa50df56a6d3f232fd0dc23e2635c4e9f1
BLAKE2b-256 checksum
How to use checksums
86811c75ae57e02892c981239f8409409f1e696b0ab905cce618d2b4823e6838
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / usdata-0.27.0-py3-none-any.whl

Download URL usdata-0.27.0-py3-none-any.whl
Size 328.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d471c33b71b5373e5885034b15aa89a782da6979b365070342e0c87d0d002c28
BLAKE2b-256 checksum
How to use checksums
71b5a142d3ff21881ae30bbd02c868cf62802cad8c3dfcf3d3da7c349ab240d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.27.0 This release

2 release files

0.26.0

2 release files

0.25.0

2 release files

0.24.0

2 release files

0.23.0

2 release files

0.22.0

2 release files

0.21.0

2 release files

0.20.0

2 release files

0.19.0

2 release files

0.18.0

2 release files

0.17.0

2 release files

0.16.0

2 release files

0.15.0

2 release files

0.14.0

2 release files

0.13.0

2 release files

0.12.0

2 release files

0.11.0

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page