Skip to content

NCAS-CMS/cf-python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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, 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 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.

See the cf-plot gallery for a range of plotting possibilities with example code.

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