Skip to main content

Read NOAA GML atmospheric trace-gas ASCII data files as pandas DataFrames.

Project description

noaa-gml-file-reader

CI Python License: MIT

Read NOAA GML atmospheric trace-gas ASCII data files as pandas.DataFrame objects — one function, read_data(path).

What this reads

NOAA's Global Monitoring Laboratory (GML) publishes long-term atmospheric trace-gas measurements (CO₂, CH₄, and others) as whitespace-delimited ASCII files with a #-commented header — surface-flask event and monthly series, in-situ hourly/daily series, and more, at gml.noaa.gov/aftp/data/trace_gases. This package turns one of those files into a tidy DataFrame, with the header's column names and the documented missing-value sentinels handled for you.

Lineage (GMD → GML). NOAA renamed ESRL's Global Monitoring Division (GMD) to the Global Monitoring Laboratory (GML) in 2020, and the file header format changed with it. This package was originally noaa_esrl_gmd_file_reader (2020); v2 renames it to noaa-gml-file-reader (import noaa_gml_file_reader) and reads the current header format. See the breaking-change note below.

Install

pip install noaa-gml-file-reader

Requires Python ≥ 3.10 and pandas ≥ 2.0. (Not yet on PyPI — install from source: pip install git+https://github.com/ErickShepherd/noaa-gml-file-reader.)

Usage

from noaa_gml_file_reader import read_data

df = read_data("co2_mlo_surface-flask_1_ccgg_month.txt")
print(df.head())

Real output (from the committed test fixture of the above Mauna Loa monthly file):

  site  year  month   value
0  MLO  1969      8  322.50
1  MLO  1969      9  321.36
2  MLO  1969     10  320.74
3  MLO  1969     11  321.98
4  MLO  1969     12  323.78

Columns come straight from the file's header; numeric columns are numeric (value is float64, year/month are int64), and NOAA's missing-value sentinels (-999.99, -999.999, nan) are parsed as NaN.

Supported dialects

read_data auto-detects the header dialect — you don't need to know NOAA's format history to read a file:

dialect header key column names from seen in
current # header_lines : N the bare column row that is the last header line flask event, in-situ (hourly/daily)
legacy (2020) # number_of_header_lines: N the # data_fields: header line flask monthly

Supported products are those catalogued in docs/format-notes.md (CO₂/CH₄ surface-flask event + monthly, CO₂ in-situ hourly, at MLO). The header grammar is site- and gas-agnostic, so other stations/species in the same product families parse the same way.

Errors

An unparseable file raises UnrecognizedFormatError (carrying the path and the file's first line) rather than returning data:

from noaa_gml_file_reader import read_data, UnrecognizedFormatError

try:
    df = read_data("not-a-noaa-file.txt")
except UnrecognizedFormatError as err:
    print(err)

v2 breaking changes

v2 is a breaking release (hence the major bump):

  • Renamed noaa_esrl_gmd_file_readernoaa_gml_file_reader (distribution noaa-gml-file-reader).
  • Raises UnrecognizedFormatError on unrecognized/malformed input. v1 returned an empty DataFrame on any parse failure — silently indistinguishable from "the file had no data" — which meant v1 failed silently on every current (post-2020) NOAA file. If you relied on the empty-DataFrame behavior, catch the exception instead.
  • Relicensed AGPL-3.0 → MIT.

Data & citation

The data are NOAA GML's, not this package's. Please cite the measurements per NOAA GML's guidance — each product directory under gml.noaa.gov/aftp/data/trace_gases ships a species-specific README with the citation text and data providers (the file headers also carry contact and reciprocity information). This library only parses the files; it does not download them.

License

MIT — see LICENSE.

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

noaa_gml_file_reader-2.0.0.tar.gz (31.0 kB view details)

Uploaded Source

Built Distribution

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

noaa_gml_file_reader-2.0.0-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file noaa_gml_file_reader-2.0.0.tar.gz.

File metadata

  • Download URL: noaa_gml_file_reader-2.0.0.tar.gz
  • Upload date:
  • Size: 31.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for noaa_gml_file_reader-2.0.0.tar.gz
Algorithm Hash digest
SHA256 fc6dbabdd8b50b42de963cd42daaf121fa692c7532c5d12f9bf74cc6f5cd863a
MD5 6166824d2f62fc60a1d77342ca0728c2
BLAKE2b-256 b67d1346c7b15b987eae16e52fd5ede177c1d9e913257133a4809ae03a109e04

See more details on using hashes here.

Provenance

The following attestation bundles were made for noaa_gml_file_reader-2.0.0.tar.gz:

Publisher: publish.yml on ErickShepherd/noaa-gml-file-reader

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file noaa_gml_file_reader-2.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for noaa_gml_file_reader-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5f695ddceeb77981eafd869abd03c35c2342c14904ca204bae3121086d33aa4b
MD5 7864d7f05de25b4366b12134c2e3e1c2
BLAKE2b-256 2b0dca8cf4f8cb22bda8cc416f2206b2bfc8ebef919028655b2c62abdf700535

See more details on using hashes here.

Provenance

The following attestation bundles were made for noaa_gml_file_reader-2.0.0-py3-none-any.whl:

Publisher: publish.yml on ErickShepherd/noaa-gml-file-reader

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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