Trajectory Analysis (TrajAn)

TrajAn is a Python package with functionality to handle trajectory datasets following the CF-conventions on trajectories.

Trajectory datasets contain position time series from e.g. drifting buoys, or output from lagrangian models.

Installation

$ conda install -c conda-forge trajan

or

$ pip install trajan

Usage

_TrajAn_ is an Xarry extension. On drifter (or trajectory) datasets you can use the .traj accessor on xarray.Dataset s. In order to register the accessor _trajan_ needs to be imported:

import matplotlib.pyplot as plt
import xarray as xr
import trajan as _

ds = xr.open_dataset('drifter_dataset.nc')

ds.traj.plot()
plt.show()

speed = ds.traj.speed()
print(f'Max speed {speed.max().values} m/s')

Trajectory datasets from different models and observations tend to have many small differences. TrajAn expects the dataset to be CF-compliant. However, the standard does leave some room for interpretation.

Generally, TrajAn supports two types of data layout: 1) trajectories sampled at different times (unstructured or irregular grid, almost every dataset from real observations. And 2) trajectories sampled at uniform (or a regular grid, typical the output from a model). We often refer to the first type as _2D_ since time is a function of trajectory and observation, while the second type is _1D_ and time is only a function of observation. __TrajAn__ will detect which type of dataset you have and you will have access to the appropriate methods for the type data layout.

While the first type (_2D_) is more general it often limits analysis that require trajectories to be sampled at the same points, you can therefor convert a _2D_ dataset to _1D_ by using trajan.traj2d.Traj2d.gridtime().

Methods applicable to both types of datasets can be found in: trajan.traj, methods for _1D_ datasets: trajan.traj.traj1d, and _2D_: trajan.traj.traj2d. All methods are forwarded to the accessor, so you call the methods on Dataset.traj:

ds = ds.traj.gridtime('1H')   # grid dataset to every hour (a 2D method)
ds.traj.plot()                # plot dataset

Generic plotting is available in the standard Xarray way, and strives to stay as close to matplotlib as possible: (trajan.trajectory_accessor.TrajAccessor.plot()) and animation (trajan.trajectory_accessor.TrajAccessor.animate()).

Contents

Indices and tables