A Python package for simulating gravitational wave detector data for mock data challenges.
Project description
gwmock
A Python package for generating Mock Data Challenge (MDC) datasets for the gravitational-wave (GW) community. It simulates strain data for detectors like Einstein Telescope, providing a unified interface for reproducible GW data generation.
Features
- Modular Design: Uses mixins for flexible simulator composition
- Detector Support: Built-in support for various GW detectors with custom configuration options
- Waveform Generation: Integrates with PyCBC and LALSuite for accurate signal simulation
- Noise Models: Supports colored and correlated noise generation (In-Progress)
- Population Models: Handles injection populations for signals and glitches
- Data Formats: Outputs in standard GW formats (GWF frames)
- CLI: Command-line tools for easy simulation workflows
Installation
We recommend using uv to manage virtual environments for installing gwmock.
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
Note: The package requires Python 3.12 or later and is built and tested
against Python 3.12–3.14. When creating a virtual environment with uv, specify
the Python version to ensure compatibility: uv venv --python 3.12 (replace
3.12 with your preferred supported version: 3.12, 3.13, or 3.14). This avoids
potential issues with unsupported Python versions.
From PyPI
# Create a virtual environment (recommended with uv)
uv venv --python 3.13
source .venv/bin/activate # On Windows: .venv\Scripts\activate
uv pip install gwmock
From Source
git clone git@github.com:Leuven-Gravity-Institute/gwmock.git
cd gwmock
# Create a virtual environment (recommended with uv)
uv venv --python 3.13
source .venv/bin/activate # On Windows: .venv\Scripts\activate
uv sync
Quick Start
Command Line
# Generate simulated data
gwmock simulate config.yaml
Configuration
gwmock uses YAML configuration files for reproducible simulations. New runs use
the adapter-backed orchestration surface, which keeps backend selection
explicit and lets third-party packages plug in through public protocols.
Key configuration sections:
| Section | Purpose |
|---|---|
globals |
Shared orchestration parameters such as sampling rate, segment duration, start time, and output roots |
orchestration.population |
Public population backend, source type, sample count, and backend arguments |
orchestration.signal |
Public signal backend, detector network, waveform model, and output settings |
orchestration.noise |
Public noise backend, generation arguments, and output settings |
Example:
globals:
working-directory: .
output-directory: output
metadata-directory: metadata
simulator-arguments:
sampling-frequency: 4096
duration: 1024
start-time: 1577491218
total-duration: 5 hours
orchestration:
population:
backend: FilePopulationLoader
source-type: bbh
n-samples: 1
arguments:
path: https://raw.githubusercontent.com/Leuven-Gravity-Institute/gwmock/main/examples/signal/bbh_population.csv
signal:
detectors:
- H1
waveform-model: IMRPhenomXPHM
minimum-frequency: 20
output:
output_directory: signal
file_name: signal-{{ counter }}.gwf
arguments:
channel: H1:STRAIN
noise:
output:
output_directory: noise
file_name: noise-{{ counter }}.gwf
Third-party backends can be exposed through an entry point or referenced
directly as module:Class, as long as they satisfy the public protocol for the
relevant section. See docs/user-guide/protocols.md,
docs/user-guide/orchestration.md, and docs/user-guide/extensibility.md for
the protocol model and integration details.
Documentation
Full documentation to be available at https://leuven-gravity-institute.github.io/gwmock.
Contributing
Contributions are welcome!
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a merge 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
Run the test suite:
uv run pytest
License
This project is licensed under GPL-3.0-or-later. See the LICENSE file for the full license text.
gwmock is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
gwmock is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with gwmock. If not, see https://www.gnu.org/licenses/.
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-0.8.2.tar.gz.
File metadata
- Download URL: gwmock-0.8.2.tar.gz
- Upload date:
- Size: 191.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","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 |
9f31e977000e62efded5e39283bb57c592dda2c45d1481779acdf00f2d10873c
|
|
| MD5 |
995015c8d2486775a0abc2747731325b
|
|
| BLAKE2b-256 |
2440e4c3684384c6f00a96540c7998975ab74d648880d065b040f460d4177e40
|
File details
Details for the file gwmock-0.8.2-py3-none-any.whl.
File metadata
- Download URL: gwmock-0.8.2-py3-none-any.whl
- Upload date:
- Size: 163.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","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 |
32d93ea29074bfefb4d28e5dcbd21632cdb4c34253f20c56e32dbe3041614e09
|
|
| MD5 |
42c97ae5cfeffc771176c37e789bb6da
|
|
| BLAKE2b-256 |
e876ed809e72d2258589bacef6d08af999fb2f31f5e1d5a6d2c492860689ed49
|