Пример #1
0
def comparePolicies(k):

    numVaccinated = k

    TSHPolicy = vaccinateTopNTSH(numVaccinated)
    AcqPolicy = vaccinateNAcquaintance(numVaccinated)
    policies = [[TSHPolicy], [AcqPolicy]]

    #Store statistics on proportion of population infected (Average,Var)
    proportionInfected = np.zeros([numIterations, len(policies), 2])
    #Store count of # nodes infected in each simulation
    numInfected = np.zeros([numIterations, len(policies)])

    for iteration in range(numIterations):
        print("Beginning Simulation {0}".format(iteration))
        G = generateRandomGraph(numNodes)

        simulation = SeirSim(G,
                             exposureRate,
                             infectionRate,
                             recoveryRate,
                             logSim=True,
                             tallyFuncs=[
                                 numNodesInState(0),
                                 numNodesInState(1),
                                 numNodesInState(2),
                                 numNodesInState(3)
                             ])

        exper = Experiment(simulation)

        logList, statsList = exper.compare(policies)

        for policy in range(len(policies)):
            propInfectedMean = np.mean(statsList[policy][:, 2] / numNodes)
            propInfectedVar = np.var(statsList[policy][:, 2] / numNodes)
            proportionInfected[iteration, policy, :] = np.array(
                [propInfectedMean, propInfectedVar])

            numRemoved = np.sum(
                np.where(logList[policy][-1][0] == 3, np.ones(numNodes),
                         np.zeros(numNodes)))
            numInfected[iteration, policy] = numRemoved - numVaccinated

    #Compute mean, variance, 90% CI for each policy
    numInfectedStatsL = np.zeros([2, 2])
    propInfectedStatsL = np.zeros([2, 2])
    for i in range(len(policies)):
        mean = np.mean(proportionInfected[:, i, 0])
        var = np.var(proportionInfected[:, i, 0])
        mean2 = np.mean(numInfected[:, i])
        var2 = np.var(numInfected[:, i])

        propInfectedStatsL[i, :] = np.array([mean, var])
        numInfectedStatsL[i, :] = np.array([mean2, var2])

    return propInfectedStatsL, numInfectedStatsL
Пример #2
0
def Example4():
    expt = Experiment()
    expt.end_category = 3
    expt.waveform = 'white'
    expt.output = 'spectrum'
    expt.compare = True
    expt.parameter_sequence = ParameterSequence.SingleParameter(
        14, 3, [40, 60, 80, 100], compare=True)
    expt.notes = [60]

    expt.run()
    expt.save_results()
Пример #3
0
def Example3():
    expt = Experiment()
    expt.end_category = 12
    expt.waveform = 'white'
    expt.output = 'spectrum'
    expt.compare = True
    expt.parameter_sequence = ParameterSequence.SingleParameter(9,
                                                                12,
                                                                [40, 50, 60],
                                                                compare=True)

    expt.run()
    expt.save_results()
Пример #4
0
def Example1():
    expt = Experiment()
    expt.end_category = 12
    expt.waveform = 'sine'
    expt.notes = [60]
    expt.input = 'velocity'
    expt.output = 'ampl'
    expt.compare = True

    # Define the values to write to parameter 29 Category 12. In this example, only
    # one value (90) is written.
    expt.parameter_sequence = ParameterSequence.SingleParameter(29,
                                                                12, [90],
                                                                compare=True)

    expt.run()
    expt.analyse()
    expt.save_results()
Пример #5
0
    simulation = SeirSim(G,
                         exposureRate,
                         infectionRate,
                         recoveryRate,
                         logSim=True,
                         tallyFuncs=[
                             numNodesInState(0),
                             numNodesInState(1),
                             numNodesInState(2),
                             numNodesInState(3)
                         ])

    exper = Experiment(simulation)

    logList, statsList = exper.compare(policies)
    abort = False
    for policy in range(len(policies)):
        propInfectedMean = np.mean(statsList[policy][:, 2] / numNodes)
        propInfectedVar = np.var(statsList[policy][:, 2] / numNodes)
        proportionInfected[iteration, policy, :] = np.array(
            [propInfectedMean, propInfectedVar])

        numRemoved = np.sum(
            np.where(logList[policy][-1][0] == 3, np.ones(numNodes),
                     np.zeros(numNodes)))
        numInfected[iteration, policy] = numRemoved - numVaccinated

titles = [
    'Random Immunization', 'Degree-Ranked Immunization',
    'DIL-Ranked Immunization'
Пример #6
0
numVaccinated = 1000

DILPolicy = vaccinateTopNDIL(numVaccinated)
randomVaccPolicy = vaccinateNRandom(numVaccinated)
DegPolicy = vaccinateTopNDegree(numVaccinated)
tshPolicy = vaccinateTopNTSH(numVaccinated)
acquPolicy = vaccinateNAcquaintance(numVaccinated)

simulation = SeirSim(G,
                     exposureRate,
                     infectionRate,
                     recoveryRate,
                     logSim=True,
                     tallyFuncs=[
                         numNodesInState(0),
                         numNodesInState(1),
                         numNodesInState(2),
                         numNodesInState(3)
                     ])

exper = Experiment(simulation)

logList, statsList = exper.compare([[None], [randomVaccPolicy], [DegPolicy],
                                    [DILPolicy], [tshPolicy], [acquPolicy]])

titles = [
    'No Vaccination', 'Random Vaccination', 'Degree-Ranked Vaccination',
    'DIL-Ranked Vaccination', 'TSH-Ranked Vaccination',
    'Acquaintance Vaccination'
]
plotExperiment(exper, titles)