fastropop
fastropop is the package that generates your SMBHB populations at lightning speed. It is designed to be a fast, flexible, and user-friendly tool for simulating the cosmic population of supermassive black hole binaries (SMBHBs) and their gravitational wave signatures in the nanohertz regime.
The package is centered on the semi analytic population from arXiv:0804.4476, which is implemented in the SemiAnalyticPopulation class. It also includes a suite of utilities for computing characteristic-strain quantities, sampling population realizations, binning into PTA-style spectra
Documentation: fastropop.readthedocs.io
This repository is maintained by Jonas El Gammal and reflects scientific work carried out with Chiara Cecchini, Gabriele Franciolini, and Mauro Pieroni. The package was used for the analysis in arXiv:2605.05157, but of course you can use it for whatever you want!
What It Does
- defines a semi-analytic SMBHB population model
- computes characteristic-strain quantities and expected binary counts
- samples population realizations with JAX-backed randomness
- bins sampled realizations into PTA-style spectra
- generates HEALPix skymaps with either
jax-healpyorhealpy
Installation
git clone git@github.com:jonaselgammal/fastropop.git
cd fastropop
pip install -e .
Notes:
jaxandjaxlibare core dependencies- skymap generation requires a HEALPix backend
jax-healpyis preferred when installed- standard
healpyis supported as a fallback backend
Quick Start
import fastropop
pop = fastropop.SemiAnalyticPopulation()
distM, distz, distlog10f = pop.sample_dist(Nbinaries=1000, key=0)
spec = fastropop.binning(distM, distz, distlog10f, do_plot=False)
For reproducible stochastic methods, pass a JAX key or integer seed:
params = fastropop.draw_parameters(key=0)
Nbinaries = pop.generate_poisson_realization(1, key=1)
If key=None, the package creates a fresh nondeterministic JAX key internally.
Notebooks
The main examples currently live in:
examples/semi-analytic.ipynbexamples/population-spectra.ipynbexamples/skymaps.ipynb
Repository Layout
src/fastropop/ Package source
tests/ Unit and regression tests
examples/ Example scripts and notebooks
.github/workflows/ CI and release automation
Metadata
Release files for fastropop 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fastropop-0.1.0.tar.gz | 1.5 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fastropop-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.5 MB
Release files / fastropop-0.1.0.tar.gz
| Download URL | fastropop-0.1.0.tar.gz |
|---|---|
| Size | 1.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ab993b5862e6a615efa10730641ccaac8010579f8c980af69b441da0d1f40bfb
|
|
BLAKE2b-256 checksum How to use checksums |
e6488ca870e55162e56750e0ec6b283143e8fd7e27bdd7dfb6ba6bd16c308bd3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 15, 2026.
Transparency logRelease files / fastropop-0.1.0-py3-none-any.whl
| Download URL | fastropop-0.1.0-py3-none-any.whl |
|---|---|
| Size | 21.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
77f6b257d41cf20d9ac4e1f28b49ff0c5830a2a00d20ca8db586b832cde1171b
|
|
BLAKE2b-256 checksum How to use checksums |
878db1ea5850c1062ed60aba1ead8957dd1191acd3fc51212b031cabf634979b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 15, 2026.
Transparency log