Development roadmap

The base

The fundamental objective of xoa is to facilitate the analysis, transformation and comparison of ocean data. Facilitate here means that it must be possible to perform complex operations in a few lines, without having to know all the API and all the parameters to obtain a suitable and accurate result. To this end, the library relies on the following libraries, among others:

xarray

All numerical vectors are by default supposed to be of xarray.DataArray type, i.e. with numerical values, attributes and potentially multi-dimensional coordinates. The library adds some CF support to identify known data arrays and coordinates in datasets.

matplotlib and cartopy

All plots are made with them, with an extra layer that prevents the user from making certain choices or explicitly providing certain parameters.

xesmf and scipy.interpolate and numba

xesmf is used to perform efficient and valid regridding between structured grids. scipy.interpolate helps performing interpolations between unstructured data. xoa.regrid plans to be convenient interface to these libraries. xoa adds missing capabilities such as the ability to make 1D interpolations with coordinates that varies along other dimensions, which is often the case for the vertical coordinate of ocean models. The interpolation routines are accelerated with numba.

For those who know vacumm, xoa a light weight, faster and more flexible version, now in python 3, and based on the xarray data model instead of CDAT. vacumm provide alot of facilities that are now available in other packages, thus no longer needed.

Extension of the Climate and Forecast (CF) conventions

It is essential to easily find longitude and latitude coordinates to make a map, or temperature and salinity to make a TS diagram. The xoa.cf module helps finding numerous variables in data arrays and datasets thanks to their attributes, the most important one being the standard_name.

  • Not all known variables with a standard name have been declared, but the list can be completed.

  • Variables are organised by their short name which must be unique, and is generally chosen from an ocean point of view.

In addition to variable identification, xoa is intended to facilitate depth and altitude calculations based on sigma coordinates, with the xoa.sigma module.

Interpolations

The low level interpolation routines are accelarated with numba. They are designed to provide efficient and pure numeric routines to perform interpolations that are not provided by other packages because of the complex ocean coordinates. The xoa.regrid module is intended to provide routines that help calling the low level routines with xarray data and coordinates.

Graphics

The idea is to guess how to plot a variable from its attributes and coordinates. For example, know that we draw a hovmoeller diagram of the temperature, with depths as the y-axis, and a cmo.thermal palette.

In addition, most of convenient graphic routines of vacumm are now implemented by proplot in a nice way. The xoa graphic routines will probably make an intensive usage of this package for core operations.