Skip to main content

gwmock

Python CI pre-commit.ci status Documentation Status codecov PyPI Version Python Versions License: GPL-3.0-or-later Ruff DOI

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

Interactive Configuration Editor

For an easier configuration experience, use the interactive editor:

gwmock config --interactive

The interactive editor provides:

  • Live configuration preview with real-time updates
  • Autocomplete suggestions for commands and values
  • Command history navigation (Up/Down arrows)
  • Built-in templates for common simulation types
  • Script generation for SLURM and local execution
  • Immediate validation feedback

Use /help inside the editor to see all available commands, or /template to start with a preset configuration. To modify an existing configuration:

gwmock config --interactive --load existing_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!

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests
  5. 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.

Download files

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

Source Distribution

gwmock-0.9.0.tar.gz (210.4 kB view details)

Uploaded Source

Built Distribution

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

gwmock-0.9.0-py3-none-any.whl (177.3 kB view details)

Uploaded Python 3

File details

Details for the file gwmock-0.9.0.tar.gz.

File metadata

  • Download URL: gwmock-0.9.0.tar.gz
  • Upload date:
  • Size: 210.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","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-0.9.0.tar.gz
Algorithm Hash digest
SHA256 e2c1c649be772a8d4a8ec982c47d337d60470f8f922451b9a238f18c2b803886
MD5 fe4825710eb491c3a60d37284acedc16
BLAKE2b-256 bde700f03783c23e956215c7b8e2d1f7000e1ede48156fd8b092d1ca7404e52d

See more details on using hashes here.

File details

Details for the file gwmock-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: gwmock-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 177.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","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-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fac6867928efba50fd539299bfa9d2bbc8d1dd838aa712fa0a9a44dca69a3747
MD5 03de7f7e56643783e50ce760085a6fdf
BLAKE2b-256 63746736a46742368d01f250e5e7a83ab6583526fae95b75a2c02b2177dc846d

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 Sentry Error logging StatusPage Status page