Release History

v0.5.0 (2020-24-11)

  • Add mask override option to llcreader from Ryan Abernathey (GH191)

  • Python 3.8 compatibility from Takaya Uchida (GH194)

  • llcreader: get grid info from ECCO portal from Tim Smith (GH158, GH161, GH166)

  • Fix python 3.6 master build from Tim Smith (GH200)

  • ECCO portal new iter_stop from Antonio Quintana (GH193)

  • Added missing grid variables to llcreader known_models from Ryan Abernathey (GH207)

  • Migrated to GitHub Actions from Tim Smith (GH223)

  • Dropped python 2 from Tim Smith (GH226)

  • llcreader klevels bugfix from Ryan Abernathey (GH224)

  • Incorporated llcreader for ASTE release 1 from Tim Smith (GH231)

  • Fixed typo for ‘coordinate’ entry in dimensions dictionary from Ian Fenty (GH236)

  • Lazy open_mdsdataset from Pascal Bourgault (GH229)

  • Implemented checking for variable mates from Fraser Goldsworth (GH234)

  • Added metadata to llcreader dimensions from Ryan Abernathey (GH239)

  • Cehck iter_start and iter_stop from Fraser Goldsworth (GH235)

  • Automated release to pypi from from Ryan Abernathey (GH241)

v0.4.1 (2019-07-11)

  • Incorporated llcreader bugfix from Spencer Jones (GH154)

v0.4.0 (2019-07-11)

v0.3.0 (2019-05-19)

  • Ability to read ASTE grids

  • Ability to read seaice and thsice native output

  • Reading of optional grid files

  • Moved test data to figshare

  • Writing of binary files

  • Xarray 0.12 compatibility

  • Ability to read 2D slice diagnostics of 3D fields

v.0.2.2 (2018-07-18)

  • Extend capabilities of read_raw_data (GH84)

  • Fix the problem with testing type of prefix (GH83)

  • Cast prefix to list if it isn’t already one (GH79)

  • Generalizes _get_all_iternums in order to handle compressed data (GH77)

  • Extract version number from git tag (GH72)

  • Adding .stickler.yml (GH70)

  • Added functionality to read PTRtave files (GH63)

  • Update examples.rst (GH65)

  • fix time encoding (GH61)

  • Fix llc chunking (GH60)

  • Test refactor (GH54)

  • Kpp added properly (GH55)

  • Tests for ref_date issue (GH53)

  • Add python 3.6 testing (GH52)

  • Added layers axis attribute (GH47)

v.0.2.1 (2017-05-31)

  • Fix to ensure that grid indices are always interger dtype.

  • Fix to keep proper Comodo metadata when swapping dimensions.

v0.2.0 (2017-02-14)

This release contains the following feature enhancements:
  • Files are not read until the data are accessed. This helps overcome a common “too many open files issue” (GH11).

  • A workaround for missing .meta files (GH12).

  • Option for a separate grid_dir in case it is different from data_dir (GH13).

  • Refactor of the way LLC data is read which allows for more efficient chunking and lower memory usage (GH20)

  • Bug fix related to the handling of default_dtype parameter (GH34). By Guillaume Sérazin.

  • Support for older MITgcm versions that write a different lenght drC variable (GH8). By Liam Brannigan.

  • Support for cartesian curvilinear grids. By Andrea Cimatoribus.

  • Expanded and improved documentation.

Unless otherwise noted, all updates are by Ryan Abernathey.

v0.1.0 (2016-10-15)

Initial release.

Develpment Workflow

Anyone interested in helping to develop xmitgcm needs to create their own fork of our git repository. (Follow the github forking instructions. You will need a github account.)

Clone your fork on your local machine.

$ git clone

(In the above, replace USERNAME with your github user name.)

Then set your fork to track the upstream xmitgcm repo.

$ cd xmitgcm
$ git remote add upstream git://

You will want to periodically sync your master branch with the upstream master.

$ git fetch upstream
$ git rebase upstream/master

Never make any commits on your local master branch. Instead open a feature branch for every new development task.

$ git checkout -b cool_new_feature

(Replace cool_new_feature with an appropriate description of your feature.) At this point you work on your new feature, using git add to add your changes. When your feature is complete and well tested, commit your changes

$ git commit -m 'did a bunch of great work'

and push your branch to github.

$ git push origin cool_new_feature

At this point, you go find your fork on and create a pull request. Clearly describe what you have done in the comments. If your pull request fixes an issue or adds a useful new feature, the team will gladly merge it.

After your pull request is merged, you can switch back to the master branch, rebase, and delete your feature branch. You will find your new feature incorporated into xmitgcm.

$ git checkout master
$ git fetch upstream
$ git rebase upstream/master
$ git branch -d cool_new_feature

Virtual Environment

This is how to create a virtual environment into which to test-install xmitgcm, install it, check the version, and tear down the virtual environment.

$ conda create --yes -n test_env python=3.5 xarray dask numpy pytest future
$ source activate test_env
$ pip install xmitgcm
$ python -c 'import xmitgcm; print(xmitgcm.__version__);'
$ source deactivate
$ conda env remove --yes -n test_env