████████████████████████████████████ ▄ ▄ ▄ ░█▀█░█▀▀░▀█▀░█▀█░█░█░▀█▀░█░█░█▀▀ ▄ ▄ ░█░█░█░░░░█░░█▀█░▀▄▀░░█░░█░█░▀▀█ ▄ ▄ ░▀▀▀░▀▀▀░░▀░░▀░▀░░▀░░▀▀▀░▀▀▀░▀▀▀ ▄ ▄ ▄ ████████████████████████████████████
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.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file octavius-0.9.1.1.tar.gz.
File metadata
- Download URL: octavius-0.9.1.1.tar.gz
- Upload date:
- Size: 116.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
42ff9ab7b9c86425f3b99f178b796d37b179828779ad87de250381c5ecad32e3
|
|
| MD5 |
839d4dd68731d3fd986f5b5d669d29a6
|
|
| BLAKE2b-256 |
1b4d2b83311b16aeec782dde68c0b128eae9a0cc7b0a77968a38f774aaf1b274
|
Provenance
The following attestation bundles were made for octavius-0.9.1.1.tar.gz:
Publisher:
pip.yml on jp-duminy/octavius
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
octavius-0.9.1.1.tar.gz -
Subject digest:
42ff9ab7b9c86425f3b99f178b796d37b179828779ad87de250381c5ecad32e3 - Sigstore transparency entry: 2644662211
- Sigstore integration time:
-
Permalink:
jp-duminy/octavius@a7c3c5d3e8c59d52f3412d3fe44541ee24fcc93d -
Branch / Tag:
refs/tags/v0.9.1.1 - Owner: https://github.com/jp-duminy
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pip.yml@a7c3c5d3e8c59d52f3412d3fe44541ee24fcc93d -
Trigger Event:
release
-
Statement type:
File details
Details for the file octavius-0.9.1.1-py3-none-any.whl.
File metadata
- Download URL: octavius-0.9.1.1-py3-none-any.whl
- Upload date:
- Size: 123.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
95d011a3b985c45965afb0fb3b94f1fa8f632d47fcd91086b7eb7b8e6c7bf77b
|
|
| MD5 |
9cb37dfee4aead5b6285eb160af895da
|
|
| BLAKE2b-256 |
c7b92e1ef8f74c8c24e4994198a9377f474950d9dabb9d409bc710b5aa3b87f1
|
Provenance
The following attestation bundles were made for octavius-0.9.1.1-py3-none-any.whl:
Publisher:
pip.yml on jp-duminy/octavius
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
octavius-0.9.1.1-py3-none-any.whl -
Subject digest:
95d011a3b985c45965afb0fb3b94f1fa8f632d47fcd91086b7eb7b8e6c7bf77b - Sigstore transparency entry: 2644662269
- Sigstore integration time:
-
Permalink:
jp-duminy/octavius@a7c3c5d3e8c59d52f3412d3fe44541ee24fcc93d -
Branch / Tag:
refs/tags/v0.9.1.1 - Owner: https://github.com/jp-duminy
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pip.yml@a7c3c5d3e8c59d52f3412d3fe44541ee24fcc93d -
Trigger Event:
release
-
Statement type: