Skip to main content

Bayesian framework for inferring natal kick, ancestral masses and spins of black holes.

Project description

ARCHEO (V2)

documentation github PyPI version DOI Downloads Python version license CI

Archeo is a Python package designed to infer the natal kick, ancestral masses, and spins of black holes in the Pair-instability Supernova (PISN) gap, with a particular focus on hierarchical black hole formation.

Basic Usage with Command Line Interface (CLI)

We provide a command line interface (CLI) for archeo, which allows users to generate preset black hole binaries and visualize black hole population properties easily.

> python -m archeo --help

Usage: python -m archeo [OPTIONS] COMMAND [ARGS]...

  Command line interface for archeo

Options:
  --help  Show this message and exit.

Commands:
  - simulate-agnostic-black-hole-population
  - simulate-second-generation-black-hole-population
  - visualize-black-hole-population

In the following, we will introduce the available commands in the CLI.

Simulate a black hole remnant population with agnostic assumptions/second generation mergers

We provide a command to generate black hole binaries with preset distribution assumptions, which can be used for further analysis.

> python -m archeo simulate-agnostic-black-hole-population --help

  Simulate a population of agnostic black hole binaries. The function
  simulates both aligned and precession spin configurations based on the
  user's choice.

  Command example: >> python -m archeo simulate-agnostic-black-hole-population
  --aligned-spin

Options:
  -n, --size INTEGER        Number of black holes to simulate.
  -np, --n-workers INTEGER  Number of cores to use for simulation.
  -o, --output-dir TEXT     Directory to save the generated data.
  -as, --aligned-spin       Toggle to simulate aligned spin binaries.
  --help                    Show this message and exit.
> python -m archeo simulate-second-generation-black-hole-population --help

Usage: python -m archeo simulate-second-generation-black-hole-population
           [OPTIONS]

  Simulate a population of second generation black hole binaries. The function
  simulates both aligned and precession spin configurations based on the
  user's choice.

  Command example: >> python -m archeo simulate-second-generation-black-hole-
  population --aligned-spin

Options:
  -n, --size INTEGER        Number of black holes to simulate.
  -np, --n-workers INTEGER  Number of cores to use for simulation.
  -o, --output-dir TEXT     Directory to save the generated data.
  -as, --aligned-spin       Toggle to simulate aligned spin binaries.
  --help                    Show this message and exit.

Here is an example of how to generate a preset prior using the CLI:

python -m archeo simulate-agnostic-black-hole-population --aligned-spin

After the commend is executed, we should see two files generated in the current directory:

  • simulated_binaries.parquet: a parquet file containing the simulated binary properties (masses, spins, kick velocities, etc.).
  • binary_generator_config.json: a json file containing the configuration used for the simulation.

Visualize the Prior Distribution with CLI

We provide a command to visualize the generated black hole binary population properties, which can be used to understand the prior distribution of black hole properties.

> python -m archeo visualize-black-hole-population --help

Usage: python -m archeo visualize-black-hole-population [OPTIONS]

  Generate some visualizations for a black hole population.

  Command example: >> python -m archeo visualize-black-hole-population
  --filepath ./simulated_binaries.parquet

Options:
  -f, --filepath TEXT    Path to the binary data.  [required]
  -o, --output-dir TEXT  Directory to save visualizations.
  --help                 Show this message and exit.

Here is an example of how to visualize the prior distribution using the CLI:

python -m archeo visualize-black-hole-population --filepath ./simulated_binaries.parquet

This command will read the binary data from simulated_binaries.parquet and save the visualization output in the current directory. Note that the visualizations include:

  • Animation of how distributions (various parameters) change over kick magnitude constraint.
  • 2D histogram of the mass-spin distribution.
  • Kick distribution for each spin-bin (binwidth=0.1).

Ancestral Parameter Estimation

The following example demonstrates how to use the package to visualize the prior and posterior distributions of a single event.

import archeo

# Load the mass/spin samples from a file (usually PE results from LVK)
# They are expected to be a list of floats
mass_posterior = [68.0, 71.4, ..., 91.4]
spin_posterior = [0.31, 0.54, ..., 0.64]

# Create a prior
pipeline = archeo.get_binary_generation_pipeline("2g_aligned_spin")
df_prior, binary_generator = pipeline(size=10000, n_workers=-1)
# Infer the posterior distribution
df_posterior = infer_ancestral_posterior_distribution(
    df_binaries=df_prior,
    mass_posterior_samples=mass_posterior,
    spin_posterior_samples=spin_posterior,
    n_workers=-1,
)

# Visualize the prior and the posterior
archeo.visualize_prior_distribution(df_prior, output_dir="./")
archeo.visualize_posterior_estimation({"GW190521": df_posterior}, output_dir="./")

Documentation for Developers

To import archeo in your Python code, please refer to the documentation page at https://wyhwong.github.io/archeo/.

Try our UI

Archeo also provides a simple web-based user interface to visualize the distributions of remnant properties. To run the UI locally, simply run the following command:

pip3 install archeo[ui]
python3 -m archeo.ui

Then the UI will be available at localhost:8501.

You may also try our demo version online, which is hosted on Streamlit Community Cloud.

Getting Help

The code is maintained by Henry Wong under Juan Calderon Bustillo's supervision. You can find the list of contributors here. Please report bugs by raising an issue on our GitHub repository.

License

Archeo has a MIT License - see the LICENSE.

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

archeo-2.0.0.dev2.tar.gz (34.3 kB view details)

Uploaded Source

Built Distribution

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

archeo-2.0.0.dev2-py3-none-any.whl (48.4 kB view details)

Uploaded Python 3

File details

Details for the file archeo-2.0.0.dev2.tar.gz.

File metadata

  • Download URL: archeo-2.0.0.dev2.tar.gz
  • Upload date:
  • Size: 34.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for archeo-2.0.0.dev2.tar.gz
Algorithm Hash digest
SHA256 18bbb3d6cc1bdc9d596737f99b1dfa4c92cd900d1fa055e216788029936cf58c
MD5 3462bcf4e66d87f6230578a36ac00704
BLAKE2b-256 1780b3c86dd855c0dd94bf74f14fabff53a5a95a20c635d7354069e19c7a64b6

See more details on using hashes here.

File details

Details for the file archeo-2.0.0.dev2-py3-none-any.whl.

File metadata

  • Download URL: archeo-2.0.0.dev2-py3-none-any.whl
  • Upload date:
  • Size: 48.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for archeo-2.0.0.dev2-py3-none-any.whl
Algorithm Hash digest
SHA256 34f2aa10ba20ac411469fa8cf300cbf9ae2133dd73b68770a2172887c289b98c
MD5 8f0e6c5c209bbea0fc0513614575b9a6
BLAKE2b-256 7dfb4d0ea2417870e66e7c65e850badf5ba41516282c9951533bb782ce14ed20

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page