# turbx
[![PyPI version](https://badge.fury.io/py/turbx.svg)](https://badge.fury.io/py/turbx)
[![Downloads](https://pepy.tech/badge/turbx)](https://pepy.tech/project/turbx)
<!---
[![pipeline status](https://gitlab.iag.uni-stuttgart.de/transi/turbx/badges/master/pipeline.svg)](https://gitlab.iag.uni-stuttgart.de/transi/turbx/-/commits/master)
-->

## About

`turbx` is a package for processing turbulent flow datasets. Primary data access classes are `super()`ed wrappers of `h5py.File` that make data & metadata access simple.

## Installation

Install directly from [PyPI](https://pypi.org/project/turbx)
```
pip install --upgrade turbx
```

The `--user` flag can be added to install to `~/.local/lib/pythonX.Y/site-packages` rather than `site-packages` of the python installation itself. This often required for HPC environments where the system `python3` is used.

`turbx` can also be installed from source in `editable` mode (see [setuptools docs](https://setuptools.pypa.io/en/latest/userguide/development_mode.html)) from the project root folder:

```
pip install --upgrade -e .
```

## Dependencies

While most of the codebase can be transparently run on a single process, `turbx` is designed to use parallel `HDF5` (wrapped by `h5py`) for high-performance collective MPI-IO with `mpi4py`. This requires:

- An MPI implementation such as `OpenMPI` or `MPICH` and `mpi4py`
- A parallel `HDF5` installation and `h5py` built with `HDF5_MPI="ON"`; see [h5py docs](https://docs.h5py.org/en/stable/mpi.html)
