### Changelogs » Aostools

# Aostools

### 2.2

Due to the rapid development of `xarray`'s capabilities, many of the `aostools` functions based on `numpy` arrays are now much easier to perform. The aim is for future v3 to fully use `xarray` DataArrays. This release is therefore the first to require `xarray`, as some of the added functionality makes use of the much simpler way to manipulate arrays. New Features: - 545acc1: `ComputeWaveActivityFlux()` computes Takaya & Nakamura 3D wave fluxes. These are equivalent to EP flux (`ComputeEPfluxDiv()`) if reference state is zonally symmetric and then zonal mean of fluxes is taken. - f484415: - `PlotEPfluxArrows()` Accepts `ep1, ep2` computed from `ComputeEPfluxDiv()` and a `figure` and `axes`. - `Projection()` Creates a figure and axes with a world map projection from `cartopy`. - `ERA2Model()` Swaps longitude from -180,180 to 0,360 degrees and inverts the direction of latitude to plot EP flux arrows with correct scaling. - 320f3fae403cb5ef41bd3d84e4dff18929af1c9c: `eof()` now accepts multi-dimensional arrays instead of only 1 time and 1 space dimensions. It assumes the first dimension to be time. Bugfixes: - 1d2fffd7960d3c9f32921398f41736985b7b4ed4: `ComputeSaturationMixingRatio()` and `ComputeRelativeHumidity()` are now compatible in terms of input arguments. - 01368d1: `AxRoll()` and therefore all functions depending on it were not python 3 compatible due to the use of `basestring`, which does not exist in python 3. This is fixed now (and the function was also unnecessarily complicated). - 71ec5a4: `GetWaves()` now uses `y=None` as default instead of earlier `y=[]`. There was also a bug when `y` was not empty and `do_anomaly=False`. This is now corrected.

### 2.1.6

This release concentrates on two bugfixes: - generally make the function more robust if working with the Southern Hemisphere (commit 87dfaaeaf5e9ed72a994604130917ed907a4082c) - pressure units bug in `ComputePsi` (commit 3b5624a929536537bd8691e2d6e29afeab471038)

### 2.1.5

A few bugfixes, and extended functionality: - `GetWaves()` and `ComputeEPDiv()` can now receive a list of wave numbers - `ComputeAnnularMode()` now deals with both hemispheres - either explicitly with `hemi` or implicitly by looking at the sign of latitude inputs - `eof()` can now be calculated based on removing the mean (`detrend='constant'`) or a linear trend (`detrend='linear'`).

### 2.1.4

Found a bug with the use of numpy.gradient() in climate.py. It seems that with the more recent versions of numpy, gradient() only allows for scalars as dx,dy,etc, and not arrays. Thus, any gradient computations are now gradient(y)/gradient(x) instead of gradient(y,gradient(x)).

### 2.1.3

Removed matplotlib.mlab.find() and replaced with numpy.where() to diminish package requirements.

### 2.1.2

Package requirement netcdf4-python does not seem to work. Replaced with netCDF4, which is the same package. Code content still the same as in v2.1.

### 2.1.1

Trying to make sure the package requirements are working. Code is otherwise identical to v2.1.

### 2.1

Corrected a problem with the inclusion of README and LICENSE in the PyPi package. Also added the possibility to call ComputeBaroclinicity() on only one vertical level.

### 2.0

Several bugfixes are corrected in this release. This is a major version release for two reasons: - WriteGenericNc() now uses NETCDF-4 instead of NETCDF3_64BIT, such that netCDF groups are now possible. - aostools is now also on PyPi. As a consequence, the file io.py had to be renamed inout.py to avoid problems with the io module