Skip to content

Add metamorphic dynamics tests and normalize DSL dynamics provenance metadata#1386

Merged
SkBlaz merged 2 commits into
masterfrom
copilot/add-metamorphic-tests-for-dynamics
Jun 15, 2026
Merged

Add metamorphic dynamics tests and normalize DSL dynamics provenance metadata#1386
SkBlaz merged 2 commits into
masterfrom
copilot/add-metamorphic-tests-for-dynamics

Conversation

Copilot AI commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

This PR adds a dedicated metamorphic test suite for DSL-driven dynamics simulations to validate invariants under stochastic execution and network transformations, rather than relying on brittle trajectory fixtures. It also aligns dynamics provenance with the metadata contract expected by the issue.

  • Metamorphic test coverage (tests/test_dynamics_metamorphic.py)

    • Added compact synthetic fixtures:
      • single-layer 3-node chain
      • two-layer multiplex-like network
      • network with an isolated node
    • Added invariants for DSL Q.dynamics(...) simulations:
      • fixed-seed determinism (SIR, SIS)
      • seed divergence for stochastic runs
      • population conservation via state_counts (SIR, SIS)
      • edge-rate behaviors:
        • beta=0 prevents spread
        • gamma=0 prevents recovery in SIR
        • zero initial infections keeps epidemic at zero
      • multilayer consistency: weighted prevalence_by_layer aggregates to global prevalence (replica semantics explicitly documented)
      • isolated node remains uninfected when not seeded
      • relabeling invariance of aggregate trajectories
  • Provenance completeness in DSL dynamics executor

    • Extended execute_dynamics_stmt provenance payload to include:
      • model (name + parameters)
      • randomness (seed)
      • run (steps + replicates)
      • initial_conditions (strategy)
      • network_fingerprint (node/edge/layer counts + layers)
      • py3plex_version
      • backend
    • Preserved existing dynamics config/hash metadata.

Example (new provenance contract asserted in tests):

sim = (
    Q.dynamics("SIR", beta=0.3, gamma=0.1)
    .seed_infections(fraction=0.2)
    .run(steps=15, replicates=4, track=["prevalence"])
    .random_seed(42)
    .execute(net)
)

prov = sim.meta["provenance"]
assert prov["model"]["name"] == "SIR"
assert prov["randomness"]["seed"] == 42
assert prov["run"]["steps"] == 15
assert prov["run"]["replicates"] == 4

Copilot AI changed the title [WIP] Add metamorphic tests for dynamics simulations Add metamorphic dynamics tests and normalize DSL dynamics provenance metadata Jun 15, 2026
Copilot AI requested a review from SkBlaz June 15, 2026 12:41
@SkBlaz SkBlaz marked this pull request as ready for review June 15, 2026 16:25
@SkBlaz SkBlaz merged commit 9184c65 into master Jun 15, 2026
37 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants