Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Changes for CF-1.8 #14

Merged
merged 74 commits into from
Mar 20, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
96fa381
tidy
davidhassell Jan 21, 2020
8461511
TEST commit
davidhassell Jan 21, 2020
0e30f7d
Merge branch 'test_2' into CF-1.8
davidhassell Jan 21, 2020
899a5c0
tidy
davidhassell Jan 21, 2020
017790c
geometry test tidy
davidhassell Jan 21, 2020
83d65a6
new string type teset file
davidhassell Jan 27, 2020
003be1f
read netCDF string types
davidhassell Jan 27, 2020
0811930
read netCDF string type test
davidhassell Jan 27, 2020
fb95413
write netCDF string type test
davidhassell Jan 27, 2020
f1af2bc
write strigs
davidhassell Jan 28, 2020
8e077d1
Added extra format names where needed, and magic number
davidhassell Jan 28, 2020
bf9ea7f
Fixed merge conflicts
davidhassell Jan 28, 2020
d4fd968
netCDF string datatype
davidhassell Jan 28, 2020
835697f
cfdm.Data.any
davidhassell Jan 28, 2020
c88f850
cfdm.Data.any
davidhassell Jan 28, 2020
9f4a254
allow compression on non-masked arrays
davidhassell Jan 29, 2020
9f5d859
allow compression on non-masked arrays
davidhassell Jan 29, 2020
cd58331
coordless coordinates work in progress
davidhassell Jan 30, 2020
7e282dc
Randomise test order
davidhassell Jan 31, 2020
ae415db
interior_ring
davidhassell Jan 31, 2020
d12b781
Upgrade docs to sphinx 2.3.1
davidhassell Jan 31, 2020
77700d5
Upgrade docs to sphinx 2.3.1
davidhassell Jan 31, 2020
fff139d
test_AuxiliaryCoordinate.py
davidhassell Feb 3, 2020
6231aa9
dev
davidhassell Feb 3, 2020
bcb1074
dev
davidhassell Feb 4, 2020
3d87528
geometries docs
davidhassell Feb 6, 2020
f378576
cf.write string keyword
davidhassell Feb 6, 2020
90737f4
dev
davidhassell Feb 7, 2020
f6b3d50
fixed bug in domain_axis_key that ignored auxiliary coordinates
davidhassell Feb 13, 2020
40d3844
fixed bug in domain_axis_key that ignored auxiliary coordinates
davidhassell Feb 13, 2020
78a6ab0
geometries docs and sample files
davidhassell Feb 14, 2020
62f482f
docs build
davidhassell Feb 14, 2020
60d4465
sample netcdf files
davidhassell Feb 14, 2020
7440c76
code extractor
davidhassell Feb 14, 2020
ec5e211
string docs
davidhassell Feb 14, 2020
358e71e
geometries test
davidhassell Feb 14, 2020
c6b9409
directory tidy
davidhassell Feb 14, 2020
0f4a144
directory tidy
davidhassell Feb 14, 2020
6a5b333
string docs
davidhassell Feb 14, 2020
465444d
docs
davidhassell Feb 19, 2020
269dadf
changelog
davidhassell Feb 19, 2020
24b87c0
example fields
davidhassell Feb 20, 2020
e0c5530
geometry interior ring test
davidhassell Feb 21, 2020
0c0fe61
CFDM docs
davidhassell Feb 24, 2020
70d0177
CFDM docs
davidhassell Feb 24, 2020
00f87d1
examplefield.py
davidhassell Feb 26, 2020
eae4929
implemenation rearrangement
davidhassell Feb 26, 2020
79f8324
implemenation rearrangement
davidhassell Feb 26, 2020
b60af2e
implemenation rearrangement
davidhassell Feb 26, 2020
18b68e7
implementation rearrangement
davidhassell Feb 26, 2020
24474dd
dependency versions
davidhassell Feb 27, 2020
cc78c02
dependency versions
davidhassell Feb 27, 2020
961a44e
FillValue datatype
davidhassell Feb 28, 2020
1eb0a9a
README and docs
davidhassell Feb 28, 2020
9252ca2
README
davidhassell Feb 28, 2020
63ad6f0
README
davidhassell Feb 28, 2020
b9be239
README
davidhassell Feb 28, 2020
d09c7d9
doc bug fixes
davidhassell Mar 2, 2020
1d336aa
Release procedure
davidhassell Mar 2, 2020
9f79fa6
docs
davidhassell Mar 2, 2020
843458a
top level docs
davidhassell Mar 6, 2020
8e7a7ef
example_field refactor
davidhassell Mar 6, 2020
fa09196
docs
davidhassell Mar 7, 2020
9e1bb1a
docs
davidhassell Mar 8, 2020
0ca51b8
example_field
davidhassell Mar 10, 2020
24eca56
decs
davidhassell Mar 11, 2020
9b7e70b
docs
davidhassell Mar 12, 2020
8efe927
docs
davidhassell Mar 13, 2020
3db62dc
Data docs
davidhassell Mar 15, 2020
db63c7e
Docs
davidhassell Mar 17, 2020
10495a6
Docs
davidhassell Mar 17, 2020
c789400
release instructtions
davidhassell Mar 19, 2020
d208878
cftime 1.1.1
davidhassell Mar 19, 2020
9d10cb5
install
davidhassell Mar 20, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
118 changes: 76 additions & 42 deletions Changelog.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,31 @@
version 1.8.0
--------------
----

**2020-??-??**

* First release for CF-1.8 (does not include netCDF hierarchical
groups functionality).
* Implementation of simple geometries for CF-1.8
(https://github.com/NCAS-CMS/cfdm/issues/11).
* Implementing of string data-types for CF-1.8
(https://github.com/NCAS-CMS/cfdm/issues/12).
* New function: `cfdm.example_field`
(https://github.com/NCAS-CMS/cfdm/issues/18)
* New attributes: `cfdm.Field.dtype`, `cfdm.Field.ndim`,
`cfdm.Field.shape`, `cfdm.Field.size`
* New method: `cfdm.Data.any`
* New ``paths`` keyword parameter to `cfdm.environment`
* Changed minimum netCDF4 dependency to version 1.5.3.
* Changed minimum cftime dependency to version 1.1.1.
* Fixed bug that prevented the writing of ``'NETCDF3_64BIT_OFFSET'``
and ``'NETCDF3_64BIT_DATA'`` format files
(https://github.com/NCAS-CMS/cfdm/issues/9).
* Fixed bug that caused a failure when a "_FillValue" or
"missing_value" property is set and data type conversions are
specified with the ``datatype`` keyword to `cfdm.write`
(https://github.com/NCAS-CMS/cfdm/issues/16).

version 1.7.11
--------------
----
Expand All @@ -6,7 +34,7 @@ version 1.7.11

* New methods: `cfdm.Field.compress`, `cfdm.Field.uncompress`
* New methods: `cfdm.Data.flatten`, `cfdm.Data.uncompress`
* New keyword parameters to `cfdm.Data`: ``dtype``, ``mask``.
* New ``dtype`` and ``mask`` keyword parameters to `cfdm.Data`
* Changed the default value of the ``ignore_compression`` parameter to
`True`.

Expand All @@ -29,7 +57,7 @@ version 1.7.9
**2019-11-07**

* Fixed bug relating to setting of parameters on datum and coordinate
conversion objects of coordinate conversion constucts
conversion objects of coordinate conversion constructs
(https://github.com/NCAS-CMS/cfdm/issues/6).

version 1.7.8
Expand Down Expand Up @@ -65,8 +93,8 @@ version 1.7.6
**2019-06-05**

* Added attributes `_ATOL` and `_RTOL` to facilitate subclassing.
* Fixed bug in `Field.convert`.
* Fixed bug in `core.constructs.new_identifier`.
* Fixed bug in `cfdm.Field.convert`.
* Fixed bug in `cfdm.core.constructs.new_identifier`.

version 1.7.5
-------------
Expand All @@ -84,70 +112,76 @@ version 1.7.4

**2019-05-14**

* Changed behaviour of `Constructs.filter_by_axis`.
* New methods: `Data.has_units`, `Data.has_calendar`, `Data.has_fill_value`.
* New keyword 'constructs' to `Field.transpose`.
* Keyword 'axes' to Field.set_data is now optional.
* Changed behaviour of `cfdm.Constructs.filter_by_axis`.
* New methods: `cfdm.Data.has_units`, `cfdm.Data.has_calendar`,
`cfdm.Data.has_fill_value`.
* New ``constructs`` keyword parameter to `Field.transpose`.
* Keyword parameter ``axes`` to `cfdm.Field.set_data` is now optional.
* Added the 'has_bounds' method to constructs that have data but can't
have bounds.
* New methods: `DomainAxis.nc_is_unlimited`,
`DomainAxis.nc_set_unlimited`.
* New methods: `cfdm.DomainAxis.nc_is_unlimited`,
`cfdm.DomainAxis.nc_set_unlimited`.
* Made Data a virtual subclass of Array.
* Deprecated methods: `Field.nc_unlimited`, `Field.nc_clear_unlimited`,
`Field.nc_clear_unlimited`.
* Deprecated methods: `cfdm.Field.nc_unlimited`,
`cfdm.Field.nc_clear_unlimited`, `cfdm.Field.nc_clear_unlimited`.
* Fixed bug when writing new horizontal coordinate reference for the
vertical datum.
* Fixed bug in `del_data` methods.
* Fixed bug with in-place operations.
* Fixed bug with position in some `insert_dimension` methods.
* Fixed bug that sometimes made duplicate netCDF dimensions when
writing to a file.
* Added _shape keyword to `Field.set_data_axes` to allow the data shape
to be checked prior to insertion.
* Added _shape keyword to `cfdm.Field.set_data_axes` to allow the data
shape to be checked prior to insertion.
* Added the '_custom' attribute to facilitate subclassing.
* New class `mixin.NetCDFUnlimitedDimension` replaces
`mixin.NetCDFUnlimitedDimensions`, which is deprecated.
* New method `CFDMImplementation.nc_is_unlimited_axis` replaces
`CFDMImplementation.nc_get_unlimited_axes`, which is deprecated.
* New method `CFDMImplementation.nc_set_unlimited_axis` replaces
`CFDMImplementation.nc_set_unlimited_dimensions`, which is deprecated.
* New class `cfdm.mixin.NetCDFUnlimitedDimension` replaces
`cfdm.mixin.NetCDFUnlimitedDimensions`, which is deprecated.
* New method `cfdm.CFDMImplementation.nc_is_unlimited_axis` replaces
`cfdm.CFDMImplementation.nc_get_unlimited_axes`, which is
deprecated.
* New method `cfdm.CFDMImplementation.nc_set_unlimited_axis` replaces
`cfdm.CFDMImplementation.nc_set_unlimited_dimensions`, which is
deprecated.

version 1.7.3
-------------
----

**2019-04-24**

* New method: `Constructs.filter_by_size`.
* New method: `Data.uncompress`.
* Changed the default behaviours of the `Construct.filter_by_axis`,
`Construct.filter_by_size`, `Construct.filter_by_naxes`,
`Construct.filter_by_property`, `Construct.filter_by_ncvar`,
`Construct.filter_by_ncdim`, `Construct.filter_by_method`,
`Construct.filter_by_measure` methods in the case when no arguments
are provided: Now returns all possible constructs that *could* have
the feature, with any values.
* New method: `cfdm.Constructs.filter_by_size`.
* New method: `cfdm.Data.uncompress`.
* Changed the default behaviours of the
`cfdm.Construct.filter_by_axis`, `cfdm.Construct.filter_by_size`,
`cfdm.Construct.filter_by_naxes`,
`cfdm.Construct.filter_by_property`,
`cfdm.Construct.filter_by_ncvar`, `cfdm.Construct.filter_by_ncdim`,
`cfdm.Construct.filter_by_method`,
`cfdm.Construct.filter_by_measure` methods in the case when no
arguments are provided: Now returns all possible constructs that
*could* have the feature, with any values.
* Renamed the "underlying_array" methods to "source"
* Added _field_data_axes attribute to `Constructs` instances.
* Added _units and _fill_value arguments to get_data method.
* Moved contents of cfdm/read_write/constants.py to `NetCDFRead` and
`NetCDFWrite`.
* Fixed bug in `CoordinateReference.clear_coordinates`.
* Fixed bug in `Field.convert` (which omitted domain ancillaries in
the result).
* Added **kwargs parameter to `CFDMImplementation.initialise_Data`, to
facilitate subclassing.
* Added `NetCDFRead._customize_read_vars` to facilitate sublcassing.
* Added `NetCDFWrite._transform_strings` to facilitate sublcassing.
* Fixed bug in `cfdm.CoordinateReference.clear_coordinates`.
* Fixed bug in `cfdm.Field.convert` (which omitted domain ancillaries
in the result).
* Added **kwargs parameter to
`cfdm.CFDMImplementation.initialise_Data`, to facilitate
subclassing.
* Added `NetCDFRead._customize_read_vars` to facilitate subclassing.
* Added `NetCDFWrite._transform_strings` to facilitate subclassing.

version 1.7.2
-------------
----

**2019-04-05**

* New "mode" parameter options to `Constructs.filter_by_axis`: 'exact',
'subset', 'superset'.
* New ``mode`` parameter options to `cfdm.Constructs.filter_by_axis`:
``'exact'``, ``'subset'``, ``'superset'``.
* Enabled setting of HDF5 chunksizes.
* Fixed bug that caused coordinate bounds to be not sliced during
subspacing (https://github.com/NCAS-CMS/cfdm/issues/1).
Expand All @@ -158,10 +192,10 @@ version 1.7.1

**2019-04-02**

* New methods `Constructs.clear_filters_applied`,
`Constructs.filter_by_naxes`.
* Changed behaviour of `Constructs.unfilter` and
`Constructs.inverse_filters`: added depth keyword and changed
* New methods `cfdm.Constructs.clear_filters_applied`,
`cfdm.Constructs.filter_by_naxes`.
* Changed behaviour of `cfdm.Constructs.unfilter` and
`cfdm.Constructs.inverse_filters`: added depth keyword and changed
default.

version 1.7.0
Expand Down
74 changes: 49 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,56 @@
cfdm
====

**cfdm** is a complete implementation of the [CF data
model](https://www.geosci-model-dev.net/10/4619/2017), that identifies
the fundamental elements of the [CF
conventions](http://cfconventions.org/) and shows how they relate to
each other, independently of the
[netCDF](https://www.unidata.ucar.edu/software/netcdf/) encoding.
A complete implementation of the CF data model.

Documentation
=============

https://ncas-cms.github.io/cfdm

Tutorial
========

https://ncas-cms.github.io/cfdm/tutorial

Installation
============

https://ncas-cms.github.io/cfdm/installation

Functionality
=============

The ``cfdm`` 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.

The central element defined by the CF data model is the **field
construct**, which corresponds to a CF-netCDF data variable with all
of its metadata.

The **cfdm** package can
A simple example of reading a field construct from a file and
inspecting it:

>>> import cfdm
>>> f = cfdm.read('file.nc')
>>> f
[<Field: air_temperature(time(12), latitude(64), longitude(128)) K>]
>>> 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) = [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 ``cfdm`` package can:

* read field constructs from netCDF datasets,
* create new field constructs in memory,
Expand All @@ -21,25 +59,11 @@ The **cfdm** package can
* 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, and
* 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.

Documentation
=============

https://ncas-cms.github.io/cfdm

Tutorial
========

https://ncas-cms.github.io/cfdm/tutorial

Installation
============

https://ncas-cms.github.io/cfdm/installation.html
data in its uncompressed form, and
* read, write, and create coordinates defined by geometry cells.

Command line utility
====================
Expand All @@ -53,4 +77,4 @@ Tests

Tests are run from within the ``cfdm/test`` directory:

python run_tests.py
$ python run_tests.py
32 changes: 22 additions & 10 deletions README.release
Original file line number Diff line number Diff line change
@@ -1,29 +1,41 @@
* Change the version and date in cfdm/core/__init__.py (__version__ and
__date__ variables)
* Change the version and date in cfdm/core/__init__.py (__version__
and __date__ variables)

* If required, change the CF conventions version in cfdm/core/__init__.py
(__cf_version__ variable)
* If required, change the CF conventions version in
cfdm/core/__init__.py (__cf_version__ variable)

* Make sure that README.md is up to date.

* Make sure that Changelog.rst is up to date.

* Make sure that any new attributes, methods and keyword arguments (as
listed in the change log) have on-line documentation. This may
require additions to the .rst files in docs/source/class/

* Create a link to the new documentation in docs/source/releases.rst

* Create a source tarball using `python setup.py sdist`

* Test the tarball release using `test_release <vn>`
(e.g. ./test_release 1.7.12). Do this for python2.7 and python3.
* Test the tarball release using `./test_release <vn>`
(e.g. ./test_release 1.8.0). Do this for python2.7 and python3.

* Test tutorial code:

cd docs/source
./extract_tutorial_code
./reset_test_tutorial
cd test_tutorial
python ../tutorial.py

* Update the latest documentation using `./release_latest_docs <vn>`
(e.g. ./release_latest_docs 1.7.12)
* Update the latest documentation using `./release_docs <vn> latest`
(e.g. ./release_docs 1.8.0 latest)

* Create an archived copy of the documentation using
`./release_archive_docs <vn>` (e.g. ./release_archive_docs 1.7.12)
`./release_docs <vn> archive` (e.g. ./release_docs 1.8.0 archive)

* Push recent commits using `git push origin master`

* Tag the release using `./tag <vn>` (e.g. ./tag 1.7.11)
* Tag the release using `./tag <vn>` (e.g. ./tag 1.8.0)

* Upload the source tarball to PyPi

Loading