def test_multirun(do_plot=False): # If being run via pytest, turn off sc.heading('Multirun test') n_days = 60 pop_size = 1000 # Method 1 -- Note: this runs 3 simulations, not 3x3! iterpars = { 'beta': [0.015, 0.025, 0.035], 'diag_factor': [0.1, 0.5, 0.9], } sim = cv.Sim(n_days=n_days, pop_size=pop_size) sims = cv.multi_run(sim=sim, iterpars=iterpars, verbose=verbose) # Method 2 -- run a list of sims simlist = [] for i in range(len(iterpars['beta'])): sim = cv.Sim(n_days=n_days, pop_size=pop_size, beta=iterpars['beta'][i], diag_factor=iterpars['diag_factor'][i]) simlist.append(sim) sims2 = cv.multi_run(sim=simlist, verbose=verbose) if do_plot: for sim in sims + sims2: sim.plot() return sims
def test_combine(do_plot=False): # If being run via pytest, turn off sc.heading('Combine results test') n_runs = 3 n = 1000 pop_infected = 10 print('Running first sim...') sim = cv.Sim({'pop_size': n, 'pop_infected': pop_infected}) sim = cv.multi_run(sim=sim, n_runs=n_runs, combine=True) assert sim['pop_size'] == n * n_runs print( 'Running second sim, results should be similar but not identical (stochastic differences)...' ) sim2 = cv.Sim({ 'pop_size': n * n_runs, 'pop_infected': pop_infected * n_runs }) sim2.run() if do_plot: sim.plot() sim2.plot() return sim
def test_multirun(do_plot=do_plot): # If being run via pytest, turn off sc.heading('Multirun test') n_days = 60 # Method 1 -- Note: this runs 3 simulations, not 3x3! iterpars = { 'beta': [0.015, 0.025, 0.035], 'iso_factor': [0.1, 0.5, 0.9], } sim = cv.Sim(n_days=n_days, pop_size=pop_size) sims = cv.multi_run(sim=sim, iterpars=iterpars, verbose=verbose) # Method 2 -- run a list of sims simlist = [] for i in range(len(iterpars['beta'])): sim = cv.Sim(n_days=n_days, pop_size=pop_size, beta=iterpars['beta'][i], iso_factor=iterpars['iso_factor'][i]) simlist.append(sim) sims2 = cv.multi_run(sim=simlist, verbose=verbose) # Method 3 -- shortcut for parallelization s1 = cv.Sim(n_days=n_days, pop_size=pop_size) s2 = s1.copy() s1, s2 = cv.parallel(s1, s2).sims assert np.allclose(s1.summary[:], s2.summary[:], rtol=0, atol=0, equal_nan=True) # Run in serial for debugging cv.multi_run(sim=cv.Sim(n_days=n_days, pop_size=pop_size), n_runs=2, parallel=False) if do_plot: for sim in sims + sims2: sim.plot() return sims
def test_multirun(doplot=False): # If being run via pytest, turn off sc.heading('Multirun test') # Note: this runs 3 simulations, not 3x3! iterpars = {'beta': [0.015, 0.025, 0.035], 'incub': [4, 5, 6], } sim = cv.Sim() # Shouldn't be necessary, but is for now sim['n_days'] = 60 sims = cv.multi_run(sim=sim, iterpars=iterpars) if doplot: for sim in sims: sim.plot() return sims
def test_multirun(do_plot=False): # If being run via pytest, turn off sc.heading('Multirun test') # Note: this runs 3 simulations, not 3x3! iterpars = {'beta': [0.015, 0.025, 0.035], 'cont_factor': [0.1, 0.5, 0.9], } sim = cv.Sim() sim['n_days'] = 60 sim['n'] = 1000 sims = cv.multi_run(sim=sim, iterpars=iterpars) if do_plot: for sim in sims: sim.plot() return sims
''' Test memory requirements of different simulations ''' import covasim as cv sim = cv.Sim() multirun1 = cv.multi_run(sim, n_runs=50, keep_people=False) # Peak memory usage: ~100 MB multirun2 = cv.multi_run(sim, n_runs=50, keep_people=True) # Peak memory usage: ~3 GB