Skip to main content
████████████████████████████████████
▄                                  ▄
▄ ░█▀█░█▀▀░▀█▀░█▀█░█░█░▀█▀░█░█░█▀▀ ▄
▄ ░█░█░█░░░░█░░█▀█░▀▄▀░░█░░█░█░▀▀█ ▄
▄ ░▀▀▀░▀▀▀░░▀░░▀░▀░░▀░░▀▀▀░▀▀▀░▀▀▀ ▄
▄                                  ▄
████████████████████████████████████

PyPI License CI Python

Octavius: The Next-Generation Analysis Toolkit

Octavius is a high-performance, fully-parallelised code designed to produce analysis catalogues of SPH simulation snapshots. Written entirely in Python with minimal dependencies and all features ready out-of-the-box, it slots cleanly into analysis workflows.

Catalogues are stored as HDF5 files containing physical properties and membership mapping for both haloes and galaxies, along with cosmological information from the snapshot.

Install

Octavius is packaged on pip and uv, with a planned conda-forge deployment. The package is (currently) pinned to relatively recent dependencies and it is therefore recommended to use uv for package resolution. It can be quickly installed via:

    pip install octavius
    uv pip install octavius

Features

  • Supports SWIFT and GIZMO snapshots
  • Supports AHF halo catalogues (coming soon: HBT HERONS)
  • Produces snapshot-agnostic catalogues
  • Built-in galaxy finding with a 6D friends-of-friends algorithm
  • Computes over fifty properties for haloes and galaxies (including subhaloes)
  • Photometry in all FSPS-compatible bands with dust attenuation (no radiative transfer)
  • User-friendly catalogues contain membership mapping
  • Unit-tested analysis pipeline

Quickstart Guide

To analyse a snapshot, you must specify parameters with a config file. Once installed, a config .yaml file for you to fill in can be generated in your current directory via:

    octavius init

The analysis can then be called either from the command line, or a Python script.

    mpiexec -n 2 octavius analyse -c /path/to/config.yaml
    from pathlib import Path
    from octavius import analyse_snapshot, OctaviusConfig

    config_filepath = Path("/path/to/config.yaml")
    config = OctaviusConfig.from_yaml(config_filepath)
    catalogue_path = analyse_snapshot(config)  # analyse_snapshot() is natively MPI-aware and can be run in serial too

It is recommended to use the command-line method for larger snapshots and more complex workflows, as it is more flexible. For more information, please run

    octavius analyse --help

An object-oriented API is provided for loading and conveniently interfacing with catalogues. This includes methods of mapping the galaxies and haloes in the catalogue to their constituent particles in the raw snapshot as well as group hierarchies (including subhaloes).

    from pathlib import Path
    from octavius import load_catalogue

    catalogue_filepath = Path("/path/to/catalogue.hdf5")

    cat = load_catalogue(catalogue_filepath)

    star_mass_grams = cat.galaxies.get_dataset("mass_star", to_units="g")  # array of galaxy stellar masses in grams

Photometry requires a bespoke data file which requires FSPS to generate. The table can take a while to generate, and stores all necessary data for photometry; there is no runtime dependency on FSPS.

    from pathlib import Path
    from octavius import generate_photometry_table, generate_photometry_table_from_sp

    photometry_table_filepath = Path("/path/to/table.hdf5")

    generate_photometry_table(photometry_table_filepath)  # default method with basic options 

    import fsps
    sp = fsps.StellarPopulation(...)  # full control over FSPS options
    generate_photometry_table_from_sp(photometry_table_filepath, sp)

Octavius is written mostly in numba, which relies on JIT compilation; this can add a minute or two of overhead when first run, but thereafter, the compiled functions are cached.

Please refer to the docs (under construction...) for more information.

Dependencies

Optional:

  • fsps (for photometry data tables)

Citing

(under construction...)

Beta

The package is currently in beta pre-release; please keep this in mind if using it for analysis. You are encouraged to please play around with the code and report any bugs or inaccuracies which may arise.

Caesar

Octavius is the spiritual successor to Caesar (source code). For a thorough guide on differences to the API and bug fixes, please refer to the docs (under construction...)

Licence

Octavius is licenced under the BSD 3-Clause licence.

Contributing

Contributions and bug reports are warmly encouraged. The package is currently pinned to relatively recent versions of its dependencies, and any investigation as to whether these can be relaxed would be most welcome; otherwise, please refer to CONTRIBUTING.md for more detailed information.

Contributors

  • JP Duminy, University of Edinburgh
  • Jakub Szpila, Nicolaus Copernicus Astronomical Center

Last updated by JP Duminy, 25/08/2026.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

octavius-0.9.0.tar.gz (115.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

octavius-0.9.0-py3-none-any.whl (122.5 kB view details)

Uploaded Python 3

File details

Details for the file octavius-0.9.0.tar.gz.

File metadata

  • Download URL: octavius-0.9.0.tar.gz
  • Upload date:
  • Size: 115.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for octavius-0.9.0.tar.gz
Algorithm Hash digest
SHA256 241aea7e7c2a42aae88342a1e2291a3d19ce66751c3ffa58e0b6416a992adb19
MD5 5a91c2d5bedec563d915efab45f02cb4
BLAKE2b-256 c91096a28bb26d902ab937eb96a15ba6be7e4653362f83748622576d183389ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for octavius-0.9.0.tar.gz:

Publisher: pip.yml on jp-duminy/octavius

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file octavius-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: octavius-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 122.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for octavius-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4e6af1184e8f159a99c24a8c6f63413933c4fd912f71655148e3e21a5eb532fb
MD5 ab3615515620eb235a981e950d2ad046
BLAKE2b-256 da06cca72d39134b96df695c1aae4bece4811efd0f35f747509a3da98ac95347

See more details on using hashes here.

Provenance

The following attestation bundles were made for octavius-0.9.0-py3-none-any.whl:

Publisher: pip.yml on jp-duminy/octavius

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.9.1.4

2 files

0.9.1.3

2 files

0.9.1.2

2 files

0.9.1.1

2 files

This release

0.9.0 This release

2 files

0.8.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page