cf-python

A CF-compliant Earth Science data analysis library.
https://github.com/ncas-cms/cf-python

Category: Climate Change
Sub Category: Climate Data Standards

Keywords

cf cfdm cfunits data-analysis earth-science metadata netcdf pp python um

Keywords from Contributors

climate earth-system-model data-compression atmospheric-science ocean aggregation ugrid zarr archival hydrology

Last synced: about 22 hours ago
JSON representation

Repository metadata

A CF-compliant Earth Science data analysis library

README.md

cf-python

The Python cf package is an Earth Science data analysis library that
is built on a complete implementation of the CF data model.

GitHub tag (latest by date)
PyPI
Conda

Conda
Website
GitHub

Codecov
GitHub Workflow Status

fair-software.eu

References

Website
Website
Website

Dask

From version 3.14.0 the cf package uses
Dask for all of its data manipulations.

Documentation

http://ncas-cms.github.io/cf-python

Installation

http://ncas-cms.github.io/cf-python/installation.html

Cheat Sheet

https://ncas-cms.github.io/cf-python/cheat_sheet.html

Recipes

https://ncas-cms.github.io/cf-python/recipes

Tutorial

https://ncas-cms.github.io/cf-python/tutorial.html

Functionality

The cf package implements the CF data
model

for its internal data structures and so is able to process any
CF-compliant dataset. It is not strict about CF-compliance, however,
so that partially conformant datasets may be ingested from existing
datasets and written to new datasets. This is so that datasets which
are partially conformant may nonetheless be modified in memory.

A simple example of reading a field construct from a file and
inspecting it:

>>> import cf
>>> f = cf.read('file.nc')
>>> print(f[0])
Field: air_temperature (ncvar%tas)
----------------------------------
Data            : air_temperature(time(12), latitude(64), longitude(128)) K
Cell methods    : time(12): mean (interval: 1.0 month)
Dimension coords: time(12) = [1991-11-16 00:00:00, ..., 1991-10-16 12:00:00] noleap
                : latitude(64) = [-87.8638, ..., 87.8638] degrees_north
                : longitude(128) = [0.0, ..., 357.1875] degrees_east
                : height(1) = [2.0] m

The cf package uses
Dask for all
of its array manipulation and can:

  • read field constructs from netCDF, CDL, Zarr, PP and UM datasets with a
    choice of netCDF backends,and in local, http, and s3 locations,
  • create new field constructs in memory,
  • write and append field and domain constructs to netCDF datasets on disk,
  • read, create, and manipulate UGRID mesh topologies,
  • read, write, and create coordinates defined by geometry cells,
  • read netCDF and CDL datasets containing hierarchical groups,
  • inspect field constructs,
  • test whether two field constructs are the same,
  • modify field construct metadata and data,
  • create subspaces of field constructs,
  • write field constructs to netCDF datasets on disk,
  • incorporate, and create, metadata stored in external files,
  • read, write, and create data that have been compressed by convention
    (i.e. ragged or gathered arrays, or coordinate arrays compressed by
    subsampling), whilst presenting a view of the data in its
    uncompressed form,
  • combine field constructs arithmetically,
  • manipulate field construct data by arithmetical and trigonometrical
    operations,
  • perform weighted statistical collapses on field constructs,
    including those with geometry cells and UGRID mesh topologies,
  • perform histogram, percentile and binning operations on field
    constructs,
  • regrid structured grid, mesh and DSG field constructs with
    (multi-)linear, nearest neighbour, first- and second-order
    conservative and higher order patch recovery methods, including 3-d
    regridding, and large-grid support,
  • apply convolution filters to field constructs,
  • create running means from field constructs,
  • apply differential operators to field constructs,
  • create derived quantities (such as relative vorticity).
  • read and write data that are quantized to eliminate false
    precision.

Visualization

Powerful and flexible visualizations of cf field constructs,
designed to be produced and configured in as few lines of code as
possible, are available with the cf-plot
package
, which needs to be
installed separately to the cf package.

Example outputs of cf-plot displaying selected aspects of cf field constructs

Command line utilities

During installation the cfa command line utility is also
installed, which

  • generates text descriptions of field constructs contained in files,
    and

  • creates new datasets aggregated from existing files.

Tests

Tests are run from within the cf/test directory:

python run_tests.py

Owner metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: about 2 months ago

Total Commits: 4,357
Total Committers: 14
Avg Commits per committer: 311.214
Development Distribution Score (DDS): 0.322

Commits in past year: 339
Committers in past year: 4
Avg Commits per committer in past year: 84.75
Development Distribution Score (DDS) in past year: 0.31

Name Email Commits
David Hassell d****l@n****k 2953
Sadie Louise Bartholomew s****w@n****k 1120
Ankit Bhandekar 8****t 219
Thibault Hallouin t****n@u****e 13
Bruno P. Kinoshita k****w 11
Oliver Kotla 5****t 11
Charles Roberts c****s@r****k 10
Matt m****3@g****m 9
Natalia Hunt 5
Tyge Løvset t****o@n****o 2
William McGinty 3****S 1
Sharar-A s****i@n****k 1
Alexander James Phillips a****l@g****m 1
Alan Iwi a****i@s****k 1

Committer domains:


Issue and Pull Request metadata

Last synced: about 2 months ago

Total issues: 371
Total pull requests: 566
Average time to close issues: 3 months
Average time to close pull requests: 12 days
Total issue authors: 43
Total pull request authors: 11
Average comments per issue: 1.9
Average comments per pull request: 1.37
Merged pull request: 516
Bot issues: 0
Bot pull requests: 0

Past year issues: 39
Past year pull requests: 54
Past year average time to close issues: 14 days
Past year average time to close pull requests: 7 days
Past year issue authors: 9
Past year pull request authors: 4
Past year average comments per issue: 1.64
Past year average comments per pull request: 0.59
Past year merged pull request: 43
Past year bot issues: 0
Past year bot pull requests: 0

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/ncas-cms/cf-python

Top Issue Authors

  • davidhassell (142)
  • sadielbartholomew (126)
  • bnlawrence (23)
  • JonathanGregory (13)
  • dlrhodson (7)
  • ThibHlln (6)
  • bewithankit (6)
  • AJamesPhillips (3)
  • ThatDesert (3)
  • lguo-uk (3)
  • m-couldrey (2)
  • ellgil82 (2)
  • dwest77a (2)
  • mattjbr123 (2)
  • matthew-shin (2)

Top Pull Request Authors

  • davidhassell (400)
  • sadielbartholomew (108)
  • bewithankit (36)
  • kinow (6)
  • mattjbr123 (5)
  • alaniwi (3)
  • ThibHlln (2)
  • tylov (2)
  • ThatDesert (2)
  • Sharar-A (1)
  • AJamesPhillips (1)

Top Issue Labels

  • enhancement (140)
  • bug (115)
  • question (36)
  • documentation (28)
  • aggregation (23)
  • dask (22)
  • testing (16)
  • performance (16)
  • um/pp (13)
  • netCDF read (11)
  • CFA (9)
  • regridding (9)
  • API review (4.0.0) (9)
  • code tidy (8)
  • installation (8)
  • netCDF write (8)
  • GitHub Actions (6)
  • dataset write (5)
  • release (4)
  • dataset read (4)
  • CI (3)
  • UGRID (3)
  • low priority (2)
  • high priority (2)
  • active storage (2)
  • bug? (2)
  • zarr (2)
  • good first issue (1)
  • compression (1)
  • dependency (1)

Top Pull Request Labels

  • dask (196)
  • enhancement (63)
  • documentation (52)
  • bug (46)
  • low priority (28)
  • code tidy (23)
  • aggregation (17)
  • regridding (14)
  • performance (13)
  • testing (10)
  • CFA (9)
  • high priority (9)
  • netCDF read (8)
  • netCDF write (7)
  • CI (6)
  • installation (6)
  • dataset write (5)
  • dataset read (4)
  • release (3)
  • GitHub Actions (3)
  • question (3)
  • UGRID (3)
  • um/pp (3)
  • active storage (3)
  • linting (2)
  • top priority (1)
  • compression (1)
  • dependency (1)

Package metadata

pypi.org: cf-python

A CF-compliant earth science data analysis library

  • Homepage: https://ncas-cms.github.io/cf-python
  • Documentation: https://cf-python.readthedocs.io/
  • Licenses: MIT
  • Latest release: 3.18.2 (published 2 months ago)
  • Last Synced: 2025-10-29T20:18:29.763Z (about 2 months ago)
  • Versions: 115
  • Dependent Packages: 1
  • Dependent Repositories: 9
  • Downloads: 6,691 Last month
  • Rankings:
    • Dependent packages count: 4.787%
    • Dependent repos count: 4.847%
    • Average: 7.042%
    • Stargazers count: 7.771%
    • Forks count: 8.544%
    • Downloads: 9.262%
  • Maintainers (2)

Dependencies

requirements.txt pypi
  • cfdm >=1.9.0.2,<1.9.1.0
  • cftime >=1.5.0
  • cfunits >=3.3.4
  • netCDF4 >=1.5.4
  • numpy >=1.15
  • packaging >=20.0
  • psutil >=0.6.0
setup.py pypi
  • ESMF >=8.0
  • cfdm >=1.8.5,
  • cftime >=1.1.3
  • cfunits >=3.2.7
  • matplotlib >=3.0.0
  • mpi4py >=3.0.0
  • netCDF4 >=1.5.3
  • numpy >=1.15
  • psutil >=0.6.0
  • scipy >=1.1.0
  • udunits2 ==2.2.25
.github/workflows/linting.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
  • pre-commit/action v3.0.0 composite
.github/workflows/run-test-suite.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
  • codecov/codecov-action v3 composite
  • conda-incubator/setup-miniconda v2 composite
.github/workflows/test-source-dist.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
  • conda-incubator/setup-miniconda v2 composite
docker/Dockerfile docker
  • continuumio/miniconda3 latest build
pyproject.toml pypi

Score: 17.017712299734313