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.