ghost-xarray 0.3.1


pip install ghost-xarray

  Latest version

Released: Oct 07, 2022


Meta
Author: Mauro Silberberg
Requires Python: >=3.7

Classifiers

Programming Language
  • Python :: 3

License
  • OSI Approved :: MIT License

Operating System
  • OS Independent

GHOST-xarray

GHOST-xarray provides helper functions to load output files from GHOST (the Geophysical High-Order Suite for Turbulence) into xarray labelled multidimensional arrays.

Installation

pip install ghost-xarray

Usage

GHOST-xarray provides 2 functions:

  • open_dataarray, which opens a single variable,
  • open_dataset, which opens multiple variables.

open_dataarray needs: a directory, a variable name, and its timestep dt, shape and datatype:

import ghost_xarray

vx = ghost_xarray.open_dataarray(
    "path/to/directory",
    "vx",
    dt=0.5,
    shape=(128, 128, 128),
    dtype=np.float32,
)
vx.isel(t=0, y=64).plot()  # isel selects by index position

A plot of the x-component of the velocity at t=0.

By default, it generates the corresponding coordinates from the shape parameter as np.linspace(0, 2 * np.pi, shape[i], endpoint=False). But shape can also be a dictionary of np.ndarray with explicit coordinates:

vx = ghost_xarray.open_dataarray(
    "path/to/directory",
    "vx",
    dt=0.5,
    shape=dict(x=np.linspace(0, 10, 64), y=np.linspace(0, 100, 11)),
    dtype=np.float32,
)
v_average = vx.isel(t=0).sel(y=50).mean(dim="x")  # sel selects by coordinate
v_average.compute()

All operations are lazy, until .compute() or .plot() are called. Hence, the above example only loads a single file to memory, instead of actually loading data for all times.

For a vector-valued variable, it adds an additional i dimension, corresponding to x, y[, z]:

v = ghost_xarray.open_dataarray(
    "path/to/directory",
    name="v",
    dt=0.5,
    coords=(128, 128, 128),
    dtype=np.float32,
)
v.isel(y=64).sel(t=1.5).plot(col="i")  # makes three 2D imshows, one for each component.

A plot for each component of the velocity.

Finally, open_dataset opens several variables into a xarray.Dataset, which provides a dict-like interface.

data = ghost_xarray.open_dataset(
    "path/to/directory/",
    names=["v", "w"],
    dt=0.5,
    coords=(128, 128, 128),
    dtype=np.float32,
)

h = (data.v * data.w).sum(dim="i")  # computes the sum along components (dimension "i").
h.isel(t=slice(0, 4), x=64).plot(col="t")  # plots the first 4 timepoints

Plot of the helicity for multiple timepoints.

Wheel compatibility matrix

Platform Python 3
any

Files in release

Extras:
Dependencies:
dask
numpy
xarray
cached-property