Git Product home page Git Product logo

cf-python's Introduction

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

GitHub Workflow Status Codecov

References

Website Website Website

Compliance with FAIR principles

fair-software.eu

Documentation

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

Tutorial

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

Installation

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

Functionality

The cf package implements the CF data model (https://doi.org/10.5194/gmd-10-4619-2017) 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)
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) = [0450-11-16 00:00:00, ..., 0451-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 can:

  • read field constructs from netCDF, CDL, PP and UM datasets,

  • create new field constructs in memory,

  • write and append field constructs to netCDF datasets on disk,

  • 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), 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 statistical collapses on field constructs,

  • perform histogram, percentile and binning operations on field constructs,

  • regrid field constructs with (multi-)linear, nearest neighbour, first- and second-order conservative and higher order patch recovery methods,

  • apply convolution filters to field constructs,

  • create moving means from field constructs,

  • apply differential operators to field constructs,

  • create derived quantities (such as relative vorticity).

All of the above use LAMA functionality, which allows multiple fields larger than the available memory to exist and be manipulated.

This version of cf is for Python 3 only and there are incompatible differences between versions 2.x and 3.x of cf.

Scripts written for version 2.x but running under version 3.x should either work as expected, or provide informative error messages on the new API usage. However, it is advised that the outputs of older scripts be checked when running with Python 3 versions of the cf library.

For version 2.x documentation, see the older releases page.

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 range plotting possibilities with example code.

Example output of cf-plot displaying a cf field construct

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

cf-python's People

Contributors

davidhassell avatar sadielbartholomew avatar kinow avatar alaniwi avatar ajamesphillips avatar ncascms avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.