Skip to main content

A Python package for simulating gravitational wave signals

Project description

gwmock-signal

Python CI pre-commit.ci status Documentation Status codecov PyPI Version Python Versions License: GPL-3.0-or-later Security: bandit DOI SPEC 0 — Minimum Supported Dependencies

A Python package for simulating gravitational wave signals.

Installation

We recommend using uv to manage virtual environments for installing gwmock-signal.

If you don't have uv installed, you can install it with pip. See the project pages for more details:

  • Install via pip: pip install --upgrade pip && pip install uv
  • Project pages: uv on PyPI | uv on GitHub
  • Full documentation and usage guide: uv docs

Requirements

  • Python 3.12-3.13 (We adopt the SPEC 0 policy for the Python support version)
  • We do not support Python 3.14 because lalsuite does not have a wheel for Python 3.14 yet (#825)
  • Operating System: Linux, or macOS

Note: The package is built and tested against Python 3.12 and 3.13 (requires-python is >=3.12,<3.14). When creating a virtual environment with uv, pin a supported interpreter, for example uv venv --python 3.12, so you do not accidentally pick an unsupported version.

Install from PyPI

The recommended way to install gwmock-signal is from PyPI:

# Create a virtual environment (recommended with uv)
uv venv --python 3.12
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
uv pip install gwmock-signal

PyPI install scope

The PyPI wheel includes runtime dependencies only (see dependencies in pyproject.toml). The only published optional extra is gwmock-signal[pycbc]; development and documentation dependencies remain uv dependency groups used when you work from a git clone (see Development installation below).

Install from Source

For the latest development version:

git clone git@github.com:Leuven-Gravity-Institute/gwmock-signal.git
cd gwmock-signal
# Create a virtual environment (recommended with uv)
uv venv --python 3.12
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
uv sync

Development installation

To set up for development (tests, linters, pre-commit):

git clone git@github.com:Leuven-Gravity-Institute/gwmock-signal.git
cd gwmock-signal

# Create a virtual environment (recommended with uv)
uv venv --python 3.12
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
uv sync --group dev

# Install pre-commit hooks
uv run prek install

To build or serve the documentation site locally:

uv sync --group docs
uv run zensical serve
# or: uv run zensical build  → static site under site/

Verify Installation

Check that the CLI and import path work (console script gwmock-signal, Python package gwmock_signal):

gwmock-signal --help
gwmock-signal inject --help
python -c "import gwmock_signal; print(gwmock_signal.__version__)"

Backends

  • lal (default): ships with the core install via lalsuite and supports the built-in CBC pipeline without installing pycbc.
  • pycbc (optional): install with pip install 'gwmock-signal[pycbc]' to use PyCBCBackend.

Python API:

from gwmock_signal import CBCSimulator, LALSimulationBackend

sim = CBCSimulator("IMRPhenomD", waveform_backend=LALSimulationBackend())

# For a complete end-to-end example, see the
# Quick Start in the user guide:
# https://leuven-gravity-institute.github.io/gwmock-signal/user_guide/quick_start/

CLI:

gwmock-signal inject cbc --params examples/gw150914_like.json --network H1L1V1 --backend lal

Documentation

  • Site: gwmock-signal documentation
  • User guide: overview, Command-line interface (inject cbc, JSON parameters, --network), Custom backends, and Examples (library walkthroughs)
  • API reference: signatures, types, and exceptions (mkdocstrings)

Public source-type backend lookup

gwmock-signal exposes a small public registry so downstream packages can resolve the signal backend from a gwmock-pop source_type string instead of hardcoding a concrete simulator class:

from gwmock_signal import resolve_simulator_backend

backend_cls = resolve_simulator_backend("bbh")
simulator = backend_cls(waveform_model="IMRPhenomD")

The built-in compact-binary backend is registered under bbh. Future source families keep the same downstream lookup contract by registering a new GWSimulator subclass inside gwmock-signal with register_simulator_backend(source_type, backend_cls).

The stable backend boundary is GWSimulator.simulate(...) -> DetectorStrainStack. For a minimal non-transient backend example, see User guide → Custom backends.

Build locally: uv sync --group docs && uv run zensical serve (or uv run zensical build for static output in site/).

Contributing

Contributions are welcome!

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests
  5. Submit a pull request

Release Schedule

Releases follow a fixed schedule: every Tuesday at 00:00 UTC, unless an emergent bugfix is required. This ensures predictable updates while allowing flexibility for critical issues. Users can view upcoming changes in the draft release on the GitHub Releases page.

Testing

From a repository checkout with dev dependencies installed (uv sync --group dev):

uv run pytest

License

This project is licensed under GPL-3.0-or-later. See the LICENSE file for the full license text.

Downstream dependency note

gwmock-signal should be treated as a GPL-3.0-or-later dependency by any downstream package that distributes it, including gwmock. In practice, that means gwmock may depend on gwmock-signal only if the resulting downstream distribution is compatible with GPL-3.0-or-later.

Support

For questions or issues, please open an issue on GitHub or contact the maintainers.

Project details


Download files

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

Source Distribution

gwmock_signal-0.6.3.tar.gz (215.5 kB view details)

Uploaded Source

Built Distribution

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

gwmock_signal-0.6.3-py3-none-any.whl (68.7 kB view details)

Uploaded Python 3

File details

Details for the file gwmock_signal-0.6.3.tar.gz.

File metadata

  • Download URL: gwmock_signal-0.6.3.tar.gz
  • Upload date:
  • Size: 215.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for gwmock_signal-0.6.3.tar.gz
Algorithm Hash digest
SHA256 bc4c3b06858f57afc2a963e95370741886931b19665e3a99e537e38863addb5a
MD5 f03ae4d575e7b7e5c8bc195adbcc45bc
BLAKE2b-256 21ffe1dd709325bed5fc53c38a254d1017bc1b3a45c86131c4c7e38b47f4b6ca

See more details on using hashes here.

File details

Details for the file gwmock_signal-0.6.3-py3-none-any.whl.

File metadata

  • Download URL: gwmock_signal-0.6.3-py3-none-any.whl
  • Upload date:
  • Size: 68.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for gwmock_signal-0.6.3-py3-none-any.whl
Algorithm Hash digest
SHA256 5627db3b5d0256f40304c498ad625c13b3a3b6bba00bfb04843e9aee6fd96054
MD5 53df947eda277e7d4a4947a7a865c0f3
BLAKE2b-256 97fe0f6390958bbc124f34ee57711d9aec5d2dfd25dc2c91798c211d8190e758

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