Skip to content

Experiment

Orchestration layer that composes a NetworkGenerator and EpidemicSimulator to run multi-network experiments with optional parallelism.

experiment

Experiment orchestration for network-epidemic pipelines.

Composes a NetworkGenerator with an EpidemicSimulator, running repeated trials across independently generated networks. Supports parallel execution via multiprocessing.

Experiment dataclass

Experiment(
    generator: NetworkGenerator,
    simulator: EpidemicSimulator,
    n_networks: int,
)

Compose a generator and simulator into a repeatable experiment.

Each call to run() generates n_networks independent networks and runs a converged epidemic ensemble on each. Trials are independent and can be parallelised across workers.

Example

generator = ErdosRenyiGenerator(n=500, p=0.01) simulator = SIRSimulator(config=SIRConfig(tau=0.5, gamma=1.0)) experiment = Experiment(generator, simulator, n_networks=50) result = experiment.run(np.random.default_rng(42), n_workers=4) len(result) 50

run

run(rng: Generator, n_workers: int = 1) -> ExperimentResult

Execute the experiment.

Parameters:

Name Type Description Default
rng Generator

Root random generator (used to derive per-trial seeds).

required
n_workers int

Number of parallel workers. 1 = sequential.

1

Returns:

Type Description
ExperimentResult

One EnsembleResult per network, wrapped in ExperimentResult.

ExperimentResult dataclass

ExperimentResult(results: tuple[EnsembleResult, ...])

Collection of per-network simulation results.