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

PyPI DOI Python CI License Docs Project Status: Active – The project has reached a stable, usable state and is being actively developed. Dependencies pre-commit Ruff

Octavius: The Next-Generation Simulation 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.

Please refer to the documentation for more information.

Install

Octavius is packaged on pip, with a planned conda-forge deployment in the near-future. It can be quickly installed from the terminal by running:

    pip install octavius

The package is (currently) pinned to relatively recent dependencies and it is therefore recommended to use a tool like uv for version resolution.

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 configuration file. Once installed, a config YAML file for you to fill in can be generated in your current directory by running:

    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.

Dependencies

Optional:

  • fsps (for photometry data tables)

Citing

Octavius can be cited with Zenodo doi: 10.5281/zenodo.22166634.

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). There is a short guide for caesar users in the documentation.

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, 29/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.1.4.tar.gz (122.4 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.1.4-py3-none-any.whl (129.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: octavius-0.9.1.4.tar.gz
  • Upload date:
  • Size: 122.4 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.1.4.tar.gz
Algorithm Hash digest
SHA256 2e3f8767235d132825afa61b0d6e579a064b5ab4a5385d2794221ca931da0a30
MD5 d3a0b3eb17b36452bbe4e12d07a02f95
BLAKE2b-256 9bd23e85a42eec2d1d0e65ca892f6f56933ecd9020d68b47c8b36bb71e2225d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for octavius-0.9.1.4.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.1.4-py3-none-any.whl.

File metadata

  • Download URL: octavius-0.9.1.4-py3-none-any.whl
  • Upload date:
  • Size: 129.9 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.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 dd72154c405c38722bd147c670fb9cdde5f3fd9cfe335863e65b87001b9cf7d9
MD5 e6c35452d1ca50705dd8f5182bfe927b
BLAKE2b-256 537c403c8b446a60e9c86b5da0d089167fc4020e03b522529fbdf81c7b846f32

See more details on using hashes here.

Provenance

The following attestation bundles were made for octavius-0.9.1.4-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

This release

0.9.1.4 This release

2 files

0.9.1.3

2 files

0.9.1.2

2 files

0.9.1.1

2 files

0.9.0

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