Open Sustainable Technology

A curated list of open technology projects to sustain a stable climate, energy supply, biodiversity and natural resources.

Browse accepted projects | Review proposed projects | Propose new project | Open Issues

cf-python

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

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

Last synced: about 11 hours ago
JSON representation

Repository metadata

A CF-compliant Earth Science data analysis library

README

        

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)](https://img.shields.io/github/v/tag/NCAS-CMS/cf-python?color=000000&label=latest%20version)](https://ncas-cms.github.io/cf-python/Changelog.html)
[![PyPI](https://img.shields.io/pypi/v/cf-python?color=000000)](https://pypi.org/project/cf-python/)
[![Conda](https://img.shields.io/conda/v/conda-forge/cf-python?color=000000)](https://anaconda.org/conda-forge/cf-python)

[![Conda](https://img.shields.io/conda/pn/conda-forge/cf-python?color=2d8659)](https://ncas-cms.github.io/cf-python/installation.html#operating-systems)
[![Website](https://img.shields.io/website?color=2d8659&down_message=online&label=documentation&up_message=online&url=https%3A%2F%2Fncas-cms.github.io%2Fcf-python%2F)](https://ncas-cms.github.io/cf-python/index.html)
[![GitHub](https://img.shields.io/github/license/NCAS-CMS/cf-python?color=2d8659)](https://github.com/NCAS-CMS/cf-python/blob/main/LICENSE)

[![Codecov](https://img.shields.io/codecov/c/github/NCAS-CMS/cfdm?color=006666)](https://codecov.io/gh/NCAS-CMS/cfdm)
[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/NCAS-CMS/cfdm/run-test-suite.yml?branch=main?color=006666&label=test%20suite%20workflow)](https://github.com/NCAS-CMS/cfdm/actions)

[![fair-software.eu](https://img.shields.io/badge/fair--software.eu-%E2%97%8F%20%20%E2%97%8F%20%20%E2%97%8F%20%20%E2%97%8F%20%20%E2%97%8B-yellow)](https://fair-software.eu)

#### References

[![Website](https://img.shields.io/website?down_color=264d73&down_message=10.5281%2Fzenodo.3894533&label=DOI&up_color=264d73&up_message=10.5281%2Fzenodo.3894533&url=https%3A%2F%2Fdoi.org%2F10.5281%2Fzenodo.3894533)](https://doi.org/10.5281/zenodo.3894533)
[![Website](https://img.shields.io/website?down_color=264d73&down_message=10.5194%2Fgmd-10-4619-2017&label=GMD&up_color=264d73&up_message=10.5194%2Fgmd-10-4619-2017&url=https%3A%2F%2Fwww.geosci-model-dev.net%2F10%2F4619%2F2017%2F)](https://www.geosci-model-dev.net/10/4619/2017/)
[![Website](https://img.shields.io/website?down_color=264d73&down_message=10.21105%2Fjoss.02717&label=JOSS&up_color=264d73&up_message=10.21105%2Fjoss.02717&url=https:%2F%2Fjoss.theoj.org%2Fpapers%2F10.21105%2Fjoss.02717%2Fstatus.svg)](https://doi.org/10.21105/joss.02717)

Dask
====

From version 3.14.0 the `cf` package uses
[Dask](https://docs.dask.org) 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](https://cfconventions.org/cf-conventions/cf-conventions.html#appendix-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](https://ncas-cms.github.io/cf-python/performance.html) for all
of its array manipulation and can:

* read field constructs from netCDF, CDL, PP and UM datasets,
* 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,
* 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).

Visualization
=============

Powerful, flexible, and very simple to produce visualizations of field
constructs are available with the [cfplot
package](http://ajheaps.github.io/cf-plot), that needs to be installed
seprately to the `cf` package.

See the [cf-plot
gallery](http://ajheaps.github.io/cf-plot/gallery.html) for the full
range of plotting possibilities with example code.

![Example output of cf-plot displaying a `cf` field construct](docs/source/images/cfplot_example.png)

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: 2 days ago

Total Commits: 3,784
Total Committers: 12
Avg Commits per committer: 315.333
Development Distribution Score (DDS): 0.428

Commits in past year: 593
Committers in past year: 5
Avg Commits per committer in past year: 118.6
Development Distribution Score (DDS) in past year: 0.373

Name Email Commits
David Hassell d****l@n****k 2163
Sadie Louise Bartholomew s****w@n****k 969
David Hassell d****l@r****k 391
Ankit Bhandekar 8****t 219
Thibault Hallouin t****n@u****e 13
Bruno P. Kinoshita k****w 11
Charles Roberts c****s@r****k 10
Matt m****3@g****m 3
Matt Brown 4****3 2
Alan Iwi a****i@s****k 1
Alexander James Phillips a****l@g****m 1
William McGinty 3****S 1

Committer domains:


Issue and Pull Request metadata

Last synced: 1 day ago

Total issues: 311
Total pull requests: 459
Average time to close issues: 3 months
Average time to close pull requests: 9 days
Total issue authors: 33
Total pull request authors: 8
Average comments per issue: 2.06
Average comments per pull request: 1.42
Merged pull request: 427
Bot issues: 0
Bot pull requests: 0

Past year issues: 63
Past year pull requests: 63
Past year average time to close issues: 13 days
Past year average time to close pull requests: 6 days
Past year issue authors: 12
Past year pull request authors: 5
Past year average comments per issue: 1.22
Past year average comments per pull request: 1.24
Past year merged pull request: 57
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 (122)
  • sadielbartholomew (112)
  • bnlawrence (14)
  • JonathanGregory (11)
  • ThibHlln (6)
  • bewithankit (6)
  • dlrhodson (5)
  • AJamesPhillips (3)
  • lguo-uk (3)
  • matthew-shin (2)
  • mattjbr123 (2)
  • kinow (2)
  • m-couldrey (2)
  • Nemo1166 (2)
  • magdalenagruziel (1)

Top Pull Request Authors

  • davidhassell (327)
  • sadielbartholomew (82)
  • bewithankit (37)
  • kinow (6)
  • ThibHlln (2)
  • mattjbr123 (2)
  • alaniwi (2)
  • AJamesPhillips (1)

Top Issue Labels

  • enhancement (111)
  • bug (101)
  • question (30)
  • documentation (27)
  • aggregation (21)
  • dask (21)
  • testing (16)
  • performance (15)
  • CFA (12)
  • um/pp (11)
  • netCDF read (10)
  • netCDF write (9)
  • installation (7)
  • regridding (7)
  • code tidy (7)
  • GitHub Actions (6)
  • UGRID (3)
  • CI (3)
  • release (3)
  • low priority (2)
  • high priority (2)
  • active storage (2)
  • good first issue (1)

Top Pull Request Labels

  • dask (192)
  • documentation (37)
  • low priority (28)
  • enhancement (23)
  • bug (22)
  • code tidy (20)
  • aggregation (11)
  • performance (11)
  • testing (10)
  • high priority (9)
  • regridding (8)
  • CFA (8)
  • CI (7)
  • netCDF write (5)
  • netCDF read (5)
  • installation (5)
  • GitHub Actions (4)
  • question (3)
  • UGRID (2)
  • active storage (2)
  • release (1)
  • top priority (1)
  • um/pp (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.16.2 (published 15 days ago)
  • Last Synced: 2024-05-10T09:04:56.316Z (1 day ago)
  • Versions: 110
  • Dependent Packages: 1
  • Dependent Repositories: 9
  • Downloads: 649 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: 14.204407163352888