Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 4
0
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
Esempio n. 5
0
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
Esempio n. 6
0
'''
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