def run_simulator(seed, num_days): """ Runs the simulator once. Configures the num_days and seed parameter of the simulator. :param seed for the random number generator, used by the simulator :param num_days the number of days (steps) the simulator needs to run. """ simulator = Simulation() simulator.loadRunConfig("../config/run_default_nolog.xml") set_influenza(simulator) simulator.runConfig.setParameter("rng_seed", seed) simulator.run()
def runBaseline(): """ Execute the baseline case. """ sim = Simulation() # Set parameters sim.runConfig.setParameter("output_prefix", "Baseline") sim.runConfig.setParameter("num_days", 60) sim.runConfig.setParameter("disease_config_file", "data/disease_measles.xml") sim.runConfig.setParameter("r0", 11) sim.runConfig.setParameter("seeding_rate", 0) sim.runConfig.setParameter("seeding_age_min", 1) sim.runConfig.setParameter("seeding_age_max", 99) sim.runConfig.setParameter("population_file", "data/pop_flanders600.csv") sim.runConfig.setParameter("output_persons", "false") sim.runConfig.setParameter("num_participants_survey", 10000) sim.runConfig.setParameter("age_contact_matrix_file", "data/contact_matrix_flanders_subpop.xml") sim.runConfig.setParameter("log_level", "SusceptibleContacts") sim.runConfig.setParameter("start_date", "2017-01-01") sim.runConfig.setParameter("holidays_file", "data/holidays_none.json") # immunity_profile # vaccine_profile # vaccine_link_probability # immunity_rate # vaccine_rate sim.runConfig.setParameter("local_information_policy", "NoLocalInformation") sim.runConfig.setParameter("global_information_policy", "NoGlobalInformation") sim.runConfig.setParameter("belief_policy/name", "NoBelief") sim.runConfig.setParameter("behaviour_policy", "NoBehaviour") sim.runConfig.setParameter("rng_seed", 1) # Register callbacks sim.RegisterCallback(measureSusceptiblesClustering) sim.RegisterCallback(seedInfection) # TODO run forks with varying parameters (itertools.product(...)) # Run simulation sim.run()
from pystride.Simulation import Simulation if not len(sys.argv) == 2: sys.exit( "Please add the amount of runs as an argument: \npython3 runExperimentsBatchRuns.py 100" ) t_start = time.perf_counter() try: amount_of_runs = int(sys.argv[1]) except ValueError: sys.exit("amount of runs is not a number.") # Configure simulation simulation = Simulation() simulation.loadRunConfig("../config/run_batchruntests1.xml") simulation.runConfig.setParameter("output_prefix", "BatchRunsTesting") # Create forks with different values for RNG RNG_values = [] for i in range(amount_of_runs): RNG_values.append(random.randint(0, 4294967294)) for rng in RNG_values: # Create fork fork = simulation.fork("rng_" + str(rng)) fork.runConfig.setParameter("rng_seed", rng) # Run all forks simulation.runForks()
import pystride from pystride.Simulation import Simulation pystride.workspace = "simulations" def checkFinished(sim, timestep): pop = sim.GetSimulator().GetPopulation() infected = pop.GetInfectedCount() print("Amount infected: ", infected) if infected >= 4000: sim.Stop() # Configure simulation simulation = Simulation() simulation.loadRunConfig("../config/run_default.xml") simulation.runConfig.setParameter("generate_person_file", 0) simulation.registerCallback(checkFinished) simulation.run()
import itertools import pystride from pystride.Simulation import Simulation # Set the workspace (default = .) pystride.workspace = "simulations" # Configure simulation simulation = Simulation() simulation.loadRunConfig("../config/run_default.xml") simulation.runConfig.setParameter("num_days", 10) # Create forks with varying parameters for b0, ir in list(itertools.product([14, 10, 5], [0.2, 0.4, 0.6])): # Create fork fork = simulation.fork("b0_" + str(b0) + "-ir_" + str(ir)) fork.diseaseConfig.setParameter("transmission/b0", b0) fork.runConfig.setParameter("immunity_rate", ir) fork.runConfig.setParameter("r0", 15) # Run all forks simulation.runForks()
import random import csv import pystride from pystride.Simulation import Simulation # RNG types to test # Note: Default (mrg2) -- See results from previous test RNG_TYPES = ["lcg64", "yarn2", "lcg64_shift", "mrg3", "yarn3"] # Amount of random values to test amount_of_runs = 1 # Set the workspace (default = .) pystride.workspace = "simulations" # Configure simulation simulation = Simulation() simulation.loadRunConfig("../config/run_batch_measles.xml") simulation.runConfig.setParameter("output_prefix", "BatchRngTypeTesting") # Initialize the random values rng_values = [] for i in range(amount_of_runs)): rng_values.append(random.randint(0, 4294967294)) ## Create Forks for rng_type in RNG_TYPES: for rng_value in rng_values: # measles_16 fork16 = simulation.fork("measles_16_" + rng_type + "_" + str(rng_value)) fork16.runConfig.setParameter("r0", 16) fork16.runConfig.setParameter("rng_type", rng_type) fork16.runConfig.setParameter("rng_seed", rng_value)
from pystride.Simulation import Simulation # Load run configuration simulation = Simulation() simulation.loadRunConfig("../config/run_default.xml") # Run the simulation simulation.run()
if not len(sys.argv) == 2: sys.exit( "Please add the amount of runs as an argument: \npython3 runThreads_influenza.py 100" ) try: amount_of_runs = int(sys.argv[1]) except ValueError: sys.exit("amount of runs is not a number.") # Set the workspace (default = .) pystride.workspace = "simulations" # Configure simulation simulation = Simulation() simulation.loadRunConfig("../config/run_batch_measles.xml") simulation.runConfig.setParameter("output_prefix", "BatchThreadTesting") ## Create Forks # measles_16 for i in range(0, amount_of_runs): fork = simulation.fork("measles_16_" + str(i)) fork.runConfig.setParameter("rng_seed", random.randint(0, 4294967294)) fork.runConfig.setParameter("r0", 16) # measles_60 for i in range(0, amount_of_runs): fork = simulation.fork("measles_60_" + str(i)) fork.runConfig.setParameter("rng_seed", random.randint(0, 4294967294)) fork.runConfig.setParameter("r0", 60)
############################################################################# # Script for simulations with no-vaccination clustering # # using Imitation belief policy. # ############################################################################# import itertools import pystride from pystride.Simulation import Simulation # TODO callback to vaccinate + seed after x days sim = Simulation() sim.loadRunConfig("config/common.xml") # Set parameters that are the same for all simulations sim.runConfig.setParameter("output_prefix", "Imitation") sim.runConfig.setParameter("seeding_rate", 0) # TODO natural immunity? sim.runConfig.setParameter("immunity_rate", 0) sim.runConfig.setParameter("vaccine_rate", 0) sim.runConfig.setParameter("local_information_policy", "LocalDiscussion") sim.runConfig.setParameter("global_information_policy", "NoLocalInformation") sim.runConfig.setParameter("belief_policy/name", "Imitation") sim.runConfig.setParameter("belief_policy/accept_threshold", 0.95) sim.runConfig.setParameter("belief_policy/no_accept_threshold", -0.95) sim.runConfig.setParameter("behaviour_policy", "Vaccination") seeds = list(range(10))
import pystride from pystride.Simulation import Simulation simulation = Simulation() # Load disease from configuration file simulation.loadDiseaseConfig("../data/disease_influenza.xml") simulation.diseaseConfig.setParameter("transmission/b0", 0.35) # Configure simulation simulation.runConfig.setParameter("rng_seed", 1) simulation.runConfig.setParameter("r0", 5) simulation.runConfig.setParameter("seeding_rate", 0.002) simulation.runConfig.setParameter("seeding_age_min", 1) simulation.runConfig.setParameter("seeding_age_max", 99) simulation.runConfig.setParameter("immunity_rate", 0.8) simulation.runConfig.setParameter("immunity_profile", "None") simulation.runConfig.setParameter("vaccine_profile", "Random") simulation.runConfig.setParameter("vaccine_rate", 0.8) simulation.runConfig.setParameter("vaccine_link_probability", 0) simulation.runConfig.setParameter("population_file", "pop_antwerp.csv") simulation.runConfig.setParameter("num_days", 10) simulation.runConfig.setParameter("output_prefix", "simulation1") simulation.runConfig.setParameter("output_persons", "true") simulation.runConfig.setParameter("num_participants_survey", 10) simulation.runConfig.setParameter("start_date", "2017-01-01") simulation.runConfig.setParameter("holidays_file", "holidays_flanders_2017.json") simulation.runConfig.setParameter("age_contact_matrix_file", "contact_matrix_flanders_subpop.xml") simulation.runConfig.setParameter("log_level", "Transmissions")
from pystride.Simulation import Simulation def vaccinate(sim, timestep): if timestep == 20: print("Vaccinating everyone who is not yet infected") pop = sim.GetSimulator().GetPopulation() for pIndex in range(pop.size()): if pop[pIndex].GetHealth().IsSusceptible(): pop[pIndex].GetHealth().SetImmune() # Build simulation simulation = Simulation() simulation.loadRunConfig("../config/run_default.xml") # Register the "vaccinate" callback simulation.registerCallback(vaccinate) simulation.run()
from pystride.Simulation import Simulation # The callback function def printInfected(sim, timestep): if (timestep % 2) == 0: print("Amount infected at timestep {}: {}".format( timestep, sim.GetSimulator().GetPopulation().GetInfectedCount())) # Build simulation simulation = Simulation() simulation.loadRunConfig("../config/run_default.xml") # Register callback simulation.registerCallback(printInfected) simulation.run()
########################################################## # Script to obtain number of cases for various RNG values # ########################################################## import csv import os import time import pystride from pystride.Simulation import Simulation t_start = time.perf_counter() # Configure simulation simulation = Simulation() simulation.loadRunConfig("../config/run_default.xml") simulation.runConfig.setParameter("output_prefix", "RNGRuns") # Create forks with different values for RNG RNG_values = [ 7432523, 4755593, 4830240, 5399722, 9682632, 988142, 3270739, 6738734, 9510033 ] for rng in RNG_values: # Create fork fork = simulation.fork("rng_" + str(rng)) fork.runConfig.setParameter("rng_seed", rng) # Run all forks simulation.runForks()
import pystride from pystride.Simulation import Simulation # Set the workspace (default = .) pystride.workspace = "simulations" # Configure simulation simulation = Simulation() simulation.loadRunConfig("../config/run_default.xml") simulation.runConfig.setParameter("num_days", 10) # Create 5 identical forks except for the seed for index in range(5): fork = simulation.fork("instance" + str(index)) fork.runConfig.setParameter("rng_seed", index) # Run all forks simulation.runForks()
if not len(sys.argv) == 2: sys.exit( "Please add the amount of runs as an argument: \npython3 runThreads_influenza.py 100" ) try: amount_of_runs = int(sys.argv[1]) except ValueError: sys.exit("amount of runs is not a number.") # Set the workspace (default = .) pystride.workspace = "simulations" # Configure simulation simulation = Simulation() simulation.loadRunConfig("../config/run_batch_default.xml") simulation.runConfig.setParameter("output_prefix", "BatchThreadTesting") ## Create Forks # Influenza_a for i in range(0, amount_of_runs): fork = simulation.fork("influenza_a_" + str(i)) fork.runConfig.setParameter("rng_seed", random.randint(0, 4294967294)) # influenza_b for i in range(0, amount_of_runs): fork = simulation.fork("influenza_b_" + str(i)) fork.runConfig.setParameter("rng_seed", random.randint(0, 4294967294)) fork.runConfig.setParameter("seeding_rate", 0) # influenza_c for i in range(0, amount_of_runs):