Skip to content

Reproducibility

gwmock writes one versioned JSON provenance record per generated batch as *.metadata.json.

Schema

Each record is validated at write time and uses schema version 1.0.0. Consumers must reject unknown major versions.

{
    "schema_version": "1.0.0",
    "gwmock_version": "x.y.z",
    "subpackage_versions": {
        "gwmock_signal": "x.y.z",
        "gwmock_noise": "x.y.z",
        "gwmock_pop": "x.y.z"
    },
    "config": {},
    "config_sha256": "...",
    "seed": 42,
    "segment_seeds": [123456789, 987654321],
    "population": {
        "backend": "module:Class",
        "source_type": "bbh",
        "n_events": 128,
        "parameter_names": [],
        "metadata": {}
    },
    "signal": {
        "backend": "module:Class",
        "waveform_model": "IMRPhenomXPHM",
        "detector_network": ["ET1"],
        "metadata": {}
    },
    "noise": {
        "backend": "module:Class",
        "psd": "ET_10_full_cryo_psd",
        "metadata": {}
    },
    "outputs": [
        {
            "kind": "signal",
            "path": "output/signal-0.gwf",
            "channels": ["ET1:STRAIN"],
            "t0": 1577491218,
            "duration": 1024,
            "sha256": "..."
        }
    ],
    "host": {
        "platform": "...",
        "python": "3.12.x",
        "cpu": "...",
        "git_sha": "..."
    }
}

config stores the resolved configuration snapshot for that run. segment_seeds stores the deterministic per-segment seeds that gwmock derives locally. Adapter-backed noise now consumes one shared gwmock_noise.open_stream(...) iterator per run, so the top-level seed is recorded once and noise continuation no longer appears as one derived seed per batch. The subpackage metadata objects are preserved as JSON objects without gwmock rewriting their internal structure.

Reproducing a run

For deterministic reproduction, pin gwmock, gwmock-signal, gwmock-noise, and gwmock-pop, then rerun the same config with the same seed:

gwmock simulate config.yaml --seed=42

In batch reproduction workflows, the generated *.metadata.json files can also be passed back to gwmock simulate directly.