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
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()
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()
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()
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'
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)