A Python package for simulating gravitational wave signals
Project description
gwmock-signal
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
lalsuitedoes 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 vialalsuiteand supports the built-in CBC pipeline without installingpycbc.pycbc(optional): install withpip install 'gwmock-signal[pycbc]'to usePyCBCBackend.
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!
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- 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
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
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc4c3b06858f57afc2a963e95370741886931b19665e3a99e537e38863addb5a
|
|
| MD5 |
f03ae4d575e7b7e5c8bc195adbcc45bc
|
|
| BLAKE2b-256 |
21ffe1dd709325bed5fc53c38a254d1017bc1b3a45c86131c4c7e38b47f4b6ca
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5627db3b5d0256f40304c498ad625c13b3a3b6bba00bfb04843e9aee6fd96054
|
|
| MD5 |
53df947eda277e7d4a4947a7a865c0f3
|
|
| BLAKE2b-256 |
97fe0f6390958bbc124f34ee57711d9aec5d2dfd25dc2c91798c211d8190e758
|