Skip to content

abc8747/aerocore

Repository files navigation

aerocore

image image image image

aerocore is a lightweight toolbox for air traffic management research. It only has two dependencies: numpy and isqx (a units library). Additional features are available when optional dependencies are installed.

It supports multiple numerical backends through the Array API, including JAX arrays and PyTorch tensors.

Installation

aerocore is currently under heavy development and not considered stable. For the latest version:

# with pip
pip install aerocore
# with uv
uv add aerocore

Depending on your use case, you can pick the optional dependencies you need:

  • polars: support for polars and its Array API shim (postprocessing third party data)
  • httpx: support for httpx (downloading data from external sources)
  • xarray: support for xarray (ARCO-ERA5 weather grids, working with NetCDF)
  • jax: support for JAX (automatic differentiation support)
  • matplotlib: plotting
  • platformdirs: reading/writing cache/config files
  • cli: command line scripts
  • all: install all optional dependencies (not recommended!)

For example:

pip install "aerocore[httpx,polars,cli]"

Usage

For the CLI:

uv run aerocore --help

Development

git clone https://github.com/abc8747/aerocore --depth=1
cd aerocore
uv venv
uv sync --all-extras --all-groups

To run scripts:

uv run examples/autodiff.py

For documentation:

uv run zensical serve

It should then host at http://127.0.0.1:8000/aerocore/.

For testing:

# by default, it tests everything
uv run pytest
# skip slow network tests that fetch external data (e.g. adsb.lol, icao.int...)
uv run pytest -m "not network"

Contributing

PRs or issues are very welcome!

We use Ruff for linting and MyPy for type checking. Locally, run the following before committing:

just fmt
just check

License: MIT

About

Lightweight toolbox for air traffic management research

Resources

License

Stars

Watchers

Forks

Contributors