From 5e84cdc679d7e36febef1ae5d4c0cf51262d6e49 Mon Sep 17 00:00:00 2001 From: omegadan01 Date: Fri, 3 Nov 2017 10:49:17 -0400 Subject: [PATCH 01/22] created python file --- exercise_10.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 exercise_10.py diff --git a/exercise_10.py b/exercise_10.py new file mode 100644 index 0000000..23a8ba1 --- /dev/null +++ b/exercise_10.py @@ -0,0 +1,19 @@ +## exercise 10 ## + +# 1 + + + + + + + + + + + + + + + +# 2 \ No newline at end of file From 55de3769fbdab3f06e5837739bcf735f919d192b Mon Sep 17 00:00:00 2001 From: Katherine Date: Fri, 3 Nov 2017 11:06:46 -0400 Subject: [PATCH 02/22] Starting skeleton for Q1 --- exercise_10.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/exercise_10.py b/exercise_10.py index 23a8ba1..3e443be 100644 --- a/exercise_10.py +++ b/exercise_10.py @@ -1,9 +1,23 @@ ## exercise 10 ## # 1 - - - +#Load packages +import pandas +import scipy +import scipy.integrate as spint +from plotnine import * + + +#Define custom function +def popGrowth(y,t0,r,K): + N=y[0] + dNdt=r*(1-N/K)*N + return [dNdt] +params=(0.3,10) +NO=[0.01] +times=range(0,600) +modelSim=spint.odeint(func=ddSim,y0=NO,t=times,args=params) +modelOutput=pandas.DataFrame({"t":times,"N":modelSim[:,0]}) From 0aecd5983c59b89e7bc25dc8f5ecb94aff2864ad Mon Sep 17 00:00:00 2001 From: Katherine Date: Fri, 3 Nov 2017 11:18:56 -0400 Subject: [PATCH 03/22] Added function and loop to Q1 --- exercise_10.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/exercise_10.py b/exercise_10.py index 3e443be..ea068b0 100644 --- a/exercise_10.py +++ b/exercise_10.py @@ -13,11 +13,19 @@ def popGrowth(y,t0,r,K): N=y[0] dNdt=r*(1-N/K)*N return [dNdt] -params=(0.3,10) -NO=[0.01] times=range(0,600) -modelSim=spint.odeint(func=ddSim,y0=NO,t=times,args=params) -modelOutput=pandas.DataFrame({"t":times,"N":modelSim[:,0]}) + +#Set a pool of values for growth rate +rK=[-.1,.1,.4,.8,1.0] +#Dataframe for storing model output +store_rK=pandas.DataFrame({"time":times,"r1":0,"r2":0,"r3":0,"r4":0,"r5":0}) + +#Using a for loop to make my life easier +for i in range(0,len(gRates)): + params=(rK[i],K) + popGrowthSim=spint.odeint(func=ddSim,y0=y0,t=times,args=params) + store_rK.iloc[:i]=popGrowthSim[:0] + From b2afef6b71b61d6456994d08df3555081c45cf64 Mon Sep 17 00:00:00 2001 From: omegadan01 Date: Fri, 3 Nov 2017 11:29:23 -0400 Subject: [PATCH 04/22] pseudocode for q2 --- exercise_10.py | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/exercise_10.py b/exercise_10.py index ea068b0..255fb3f 100644 --- a/exercise_10.py +++ b/exercise_10.py @@ -38,4 +38,33 @@ def popGrowth(y,t0,r,K): -# 2 \ No newline at end of file +# 2 + +# import libs +import pandas +from plotnine import * +import numpy +from scipy.optimize import minimize +from scipy.stats import norm +import scipy.stats + + +def SIR (p): + S = p[0] + I = p[1] + R = p[2] + beta = [3] + gamma= [4] + + dS = -1*(beta*I*S) + dT = (beta*I*S)-(gamma*I) + dR = (gamma*I) + + loop to do the calcs start with time 0 for one condition + then loop with i-1 from here + output shite too + + + expected =B0+B1*obs.x + nll = -1*norm(expected, sigma).logpdf(obs.y).sum() + return nll \ No newline at end of file From b09a67eaf1e4ffe1bc7ce7f9fe621c26fb1ff06c Mon Sep 17 00:00:00 2001 From: Katherine Date: Fri, 3 Nov 2017 13:33:07 -0400 Subject: [PATCH 05/22] Merging with Dan --- exercise_10.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/exercise_10.py b/exercise_10.py index ea068b0..8c76e2b 100644 --- a/exercise_10.py +++ b/exercise_10.py @@ -4,27 +4,27 @@ #Load packages import pandas import scipy -import scipy.integrate as spint +import scipy.integrate as si from plotnine import * #Define custom function -def popGrowth(y,t0,r,K): +def popGrowth(y,t0,r,K,N): N=y[0] dNdt=r*(1-N/K)*N return [dNdt] -times=range(0,600) - +times=range(0,100) +NO=[.01] #Set a pool of values for growth rate -rK=[-.1,.1,.4,.8,1.0] +growthRates=[-.1,.1,.4,.8,1.0] #Dataframe for storing model output -store_rK=pandas.DataFrame({"time":times,"r1":0,"r2":0,"r3":0,"r4":0,"r5":0}) +store_growthRates=pandas.DataFrame({"time":times,"r1":0,"r2":0,"r3":0,"r4":0,"r5":0}) #Using a for loop to make my life easier -for i in range(0,len(gRates)): - params=(rK[i],K) - popGrowthSim=spint.odeint(func=ddSim,y0=y0,t=times,args=params) - store_rK.iloc[:i]=popGrowthSim[:0] +for i in range(0,len(growthRates)): + pars=(growthRates[i],100,10) + sim=si.odeint(func=popGrowth,y0=NO,t=times,args=pars) + store_growthRates.iloc[:,i]=sim[:,0] From 10f12674531c25eef75d22b162e791e93332c22f Mon Sep 17 00:00:00 2001 From: Katherine Date: Fri, 3 Nov 2017 14:00:54 -0400 Subject: [PATCH 06/22] Added ggplots. Only Plot 3 isn't working --- exercise_10.py | 87 +++++++++++++++++++++++++++++--------------------- 1 file changed, 50 insertions(+), 37 deletions(-) diff --git a/exercise_10.py b/exercise_10.py index 4e81463..2455906 100644 --- a/exercise_10.py +++ b/exercise_10.py @@ -25,46 +25,59 @@ def popGrowth(y,t0,r,K,N): pars=(growthRates[i],100,10) sim=si.odeint(func=popGrowth,y0=NO,t=times,args=pars) store_growthRates.iloc[:,i]=sim[:,0] +print(store_growthRates) + +#Plot 1- pop size as function of time +g=(ggplot(data=store_growthRates) + +geom_line(store_growthRates,aes(x="time",y="r1"))+theme_classic() + +ylab("population size") + +geom_line(store_growthRates,aes(x="time",y="r2"),color="green") + +geom_line(store_growthRates,aes(x="time",y="r3"),color="red") + +geom_line(store_growthRates,aes(x="time",y="r4"),color="orange") + +geom_line(store_growthRates,aes(x="time",y="r5"),color="purple")) +print(p) + +#set a pool of values for carrying capacity +carryCap=[10,50,100] +#Dataframe for storing model output +store_carryCap=pandas.DataFrame({"time":times,"K1":0,"K2":0,"K3":0}) +#for loop for Plot 2 +for i in range(0,len(carryCap)): + pars=(.2,carryCap[i],1) + sim=si.odeint(func=popGrowth,y0=NO,t=times,args=pars) + store_carryCap.iloc[:,i]=sim[:,0] +print(store_carryCap) + +#Plot 2- +k=(ggplot(data=store_carryCap) + +geom_line(store_carryCap,aes(x="time",y="K1"),color="blue")+theme_classic() + +ylab("population size") + +geom_line(store_carryCap,aes(x="time",y="K2"),color="green") + +geom_line(store_carryCap,aes(x="time",y="K3"),color="purple")) +print(k) + +#Set a pool of values for init pop size +initPop=[1,5,100] +#Dataframe for storing model output +store_initPop=pandas.DataFrame({"time":times,"N1":1,"N2":5,"N3":100}) +#Using a for loop to make my life easier +for i in range(0,len(initPop)): + pars=(.1,50,initPop[i]) + sim=si.odeint(func=popGrowth,y0=NO,t=times,args=pars) + store_initPop.iloc[:,i]=sim[:,0] +print(store_initPop) + +#Plot 1- pop size as function of time +p=(ggplot(data=store_initPop) + +geom_line(store_initPop,aes(x="time",y="N1"),color="orange")+theme_classic() + +ylab("population size") + +geom_line(store_initPop,aes(x="time",y="N2"),color="yellow") + +geom_line(store_initPop,aes(x="time",y="N3"),color="red")) +print(p) - - - - - - - -# 2 - -# import libs -import pandas -from plotnine import * -import numpy -from scipy.optimize import minimize -from scipy.stats import norm -import scipy.stats - - -def SIR (p): - S = p[0] - I = p[1] - R = p[2] - beta = [3] - gamma= [4] - - dS = -1*(beta*I*S) - dT = (beta*I*S)-(gamma*I) - dR = (gamma*I) - - loop to do the calcs start with time 0 for one condition - then loop with i-1 from here - output shite too - - - expected =B0+B1*obs.x - nll = -1*norm(expected, sigma).logpdf(obs.y).sum() - return nll \ No newline at end of file +# 2 \ No newline at end of file From c423030a21c777ccc4434a4970a021a50baf09bc Mon Sep 17 00:00:00 2001 From: Katherine Date: Fri, 3 Nov 2017 14:07:22 -0400 Subject: [PATCH 07/22] I tried to fix Plot 3 and made it worse lol --- exercise_10.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/exercise_10.py b/exercise_10.py index 2455906..51a89e7 100644 --- a/exercise_10.py +++ b/exercise_10.py @@ -59,7 +59,7 @@ def popGrowth(y,t0,r,K,N): #Set a pool of values for init pop size initPop=[1,5,100] #Dataframe for storing model output -store_initPop=pandas.DataFrame({"time":times,"N1":1,"N2":5,"N3":100}) +store_initPop=pandas.DataFrame({"time":times,"N1":0,"N2":0,"N3":0}) #Using a for loop to make my life easier for i in range(0,len(initPop)): @@ -68,7 +68,7 @@ def popGrowth(y,t0,r,K,N): store_initPop.iloc[:,i]=sim[:,0] print(store_initPop) -#Plot 1- pop size as function of time +#Plot 3- effect of initial Pop size differences p=(ggplot(data=store_initPop) +geom_line(store_initPop,aes(x="time",y="N1"),color="orange")+theme_classic() +ylab("population size") From ef27e7ba12d80ed5f8f7cbbf46ca3a5989e9400d Mon Sep 17 00:00:00 2001 From: omegadan01 Date: Sun, 5 Nov 2017 14:16:22 -0500 Subject: [PATCH 08/22] pseudocode for q2 --- exercise_10.py | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/exercise_10.py b/exercise_10.py index 51a89e7..dba5a35 100644 --- a/exercise_10.py +++ b/exercise_10.py @@ -80,4 +80,33 @@ def popGrowth(y,t0,r,K,N): -# 2 \ No newline at end of file +# 2 + +# import libs +import pandas +from plotnine import * +import numpy +from scipy.optimize import minimize +from scipy.stats import norm +import scipy.stats + + +def SIR (p): + S = p[0] + I = p[1] + R = p[2] + beta = [3] + gamma= [4] + + dS = -1*(beta*I*S) + dT = (beta*I*S)-(gamma*I) + dR = (gamma*I) + + loop to do the calcs start with time 0 for one condition + then loop with i-1 from here + output shite too + + + expected =B0+B1*obs.x + nll = -1*norm(expected, sigma).logpdf(obs.y).sum() + return nll \ No newline at end of file From d5336254b22a9530c5739eabed30bae14eead089 Mon Sep 17 00:00:00 2001 From: omegadan01 Date: Sun, 5 Nov 2017 20:06:40 -0500 Subject: [PATCH 09/22] q2 --- exercise_10.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/exercise_10.py b/exercise_10.py index dba5a35..83ce19f 100644 --- a/exercise_10.py +++ b/exercise_10.py @@ -35,7 +35,7 @@ def popGrowth(y,t0,r,K,N): +geom_line(store_growthRates,aes(x="time",y="r3"),color="red") +geom_line(store_growthRates,aes(x="time",y="r4"),color="orange") +geom_line(store_growthRates,aes(x="time",y="r5"),color="purple")) -print(p) +print(g) #set a pool of values for carrying capacity carryCap=[10,50,100] @@ -102,11 +102,11 @@ def SIR (p): dT = (beta*I*S)-(gamma*I) dR = (gamma*I) - loop to do the calcs start with time 0 for one condition - then loop with i-1 from here - output shite too + #loop to do the calcs start with time 0 for one condition + #then loop with i-1 from here + #output shite too - expected =B0+B1*obs.x - nll = -1*norm(expected, sigma).logpdf(obs.y).sum() - return nll \ No newline at end of file + #expected =B0+B1*obs.x + #nll = -1*norm(expected, sigma).logpdf(obs.y).sum() + #return nll \ No newline at end of file From 3d29e0eefd422a663d26e4c1eb98b6398a7fbe5b Mon Sep 17 00:00:00 2001 From: omegadan01 Date: Mon, 6 Nov 2017 15:45:20 -0500 Subject: [PATCH 10/22] got sim working for q2.... see comments in code --- exercise_10.py | 43 ++++++++++++++++++------------------------- 1 file changed, 18 insertions(+), 25 deletions(-) diff --git a/exercise_10.py b/exercise_10.py index 83ce19f..0fd2e10 100644 --- a/exercise_10.py +++ b/exercise_10.py @@ -77,36 +77,29 @@ def popGrowth(y,t0,r,K,N): print(p) - - - # 2 -# import libs -import pandas -from plotnine import * -import numpy -from scipy.optimize import minimize -from scipy.stats import norm -import scipy.stats - - -def SIR (p): - S = p[0] - I = p[1] - R = p[2] - beta = [3] - gamma= [4] +def SIR (y,t0,beta,gamma): + S = y[0] + I = y[1] + R = y[2] dS = -1*(beta*I*S) - dT = (beta*I*S)-(gamma*I) + dI = (beta*I*S)-(gamma*I) dR = (gamma*I) - #loop to do the calcs start with time 0 for one condition - #then loop with i-1 from here - #output shite too + return dS, dI, dR + +times = range(0,500) +params = (.0005, .05) +NO = [999, 1, 0] + +infection = pandas.DataFrame({"time":times,"S":0,"I":0,"R":0}) +print (infection) +sim = si.odeint(func=SIR, y0=NO, t=times, args=params) - #expected =B0+B1*obs.x - #nll = -1*norm(expected, sigma).logpdf(obs.y).sum() - #return nll \ No newline at end of file +# got the sim working for one beta and gamma value +#need to import the vlaues from the sim list into a dataframe +#need to make a loop that does this for all the beta and gamma values +#need to add calcs to the loop as well. \ No newline at end of file From 5a9b3cdb0ac62b78f37a396e193b10353f2bc21f Mon Sep 17 00:00:00 2001 From: Mati Nemera Date: Thu, 9 Nov 2017 17:10:53 -0500 Subject: [PATCH 11/22] Added file for simulation data --- simData.xlsx | Bin 0 -> 8513 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100755 simData.xlsx diff --git a/simData.xlsx b/simData.xlsx new file mode 100755 index 0000000000000000000000000000000000000000..045e86f0294551bc7afbde650950d05cc1fb5752 GIT binary patch literal 8513 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 Zn?nRCB0x_U0C)nu0->S0l Date: Thu, 9 Nov 2017 18:26:42 -0500 Subject: [PATCH 12/22] no actual changes, just need to pull --- exercise_10.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exercise_10.py b/exercise_10.py index 0fd2e10..a01a026 100644 --- a/exercise_10.py +++ b/exercise_10.py @@ -57,7 +57,7 @@ def popGrowth(y,t0,r,K,N): print(k) #Set a pool of values for init pop size -initPop=[1,5,100] +initPop=[1,50,100] #Dataframe for storing model output store_initPop=pandas.DataFrame({"time":times,"N1":0,"N2":0,"N3":0}) From 6882eca8946134c74f544455ab637adcf0b85afb Mon Sep 17 00:00:00 2001 From: Mati Nemera Date: Thu, 9 Nov 2017 19:05:12 -0500 Subject: [PATCH 13/22] Got three n naughts in problem 1-3 --- exercise_10.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/exercise_10.py b/exercise_10.py index a01a026..f2ae0be 100644 --- a/exercise_10.py +++ b/exercise_10.py @@ -64,14 +64,14 @@ def popGrowth(y,t0,r,K,N): #Using a for loop to make my life easier for i in range(0,len(initPop)): pars=(.1,50,initPop[i]) - sim=si.odeint(func=popGrowth,y0=NO,t=times,args=pars) + sim=si.odeint(func=popGrowth,y0=initPop[i],t=times,args=pars) store_initPop.iloc[:,i]=sim[:,0] print(store_initPop) #Plot 3- effect of initial Pop size differences p=(ggplot(data=store_initPop) +geom_line(store_initPop,aes(x="time",y="N1"),color="orange")+theme_classic() - +ylab("population size") + +ylab("population size")+ylim(0,100) +geom_line(store_initPop,aes(x="time",y="N2"),color="yellow") +geom_line(store_initPop,aes(x="time",y="N3"),color="red")) print(p) From 7c237259de2d2eae6f39cf073529bbb6f63dc7d9 Mon Sep 17 00:00:00 2001 From: omegadan01 Date: Thu, 9 Nov 2017 19:28:58 -0500 Subject: [PATCH 14/22] q2 is here now! --- Exercise10_revised.pdf | Bin 189226 -> 199477 bytes exercise_10.py | 7 +++- exercise_10_B.py | 72 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 exercise_10_B.py diff --git a/Exercise10_revised.pdf b/Exercise10_revised.pdf index e282db8a390acfd36e544982504a7986d5b4ec87..8d4bebe94ff5b9c28cbffe1d90b2cd24833be5c6 100644 GIT binary patch delta 20459 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 delta 10134 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 Date: Thu, 9 Nov 2017 19:33:33 -0500 Subject: [PATCH 15/22] moved q2 to 10B.py file --- exercise_10.py | 32 +------------------------------- 1 file changed, 1 insertion(+), 31 deletions(-) diff --git a/exercise_10.py b/exercise_10.py index 0fc5fea..26a086c 100644 --- a/exercise_10.py +++ b/exercise_10.py @@ -77,34 +77,4 @@ def popGrowth(y,t0,r,K,N): print(p) -# 2 - -def SIR (y,t0,beta,gamma): - S = y[0] - I = y[1] - R = y[2] - - dS = -1*(beta*I*S) - dI = (beta*I*S)-(gamma*I) - dR = (gamma*I) - - return dS, dI, dR - -times = range(0,500) -params = (.0005, .05) -NO = [999, 1, 0] - -infection = pandas.DataFrame({"time":times,"S":0,"I":0,"R":0}) -print (infection) - -sim = si.odeint(func=SIR, y0=NO, t=times, args=params) -infection.iloc[:,i]=sim[:,0] -print infection - - - -# got the sim working for one beta and gamma value -#need to import the vlaues from the sim list into a dataframe -#need to make a loop that does this for all the beta and gamma values -#need to add calcs to the loop as well. - +# 2 MOVED TO A NEW .PY file!!! ALSO IN OUR GIT repo From 4fc815a82b904bf6d886e7900190b394a378edfe Mon Sep 17 00:00:00 2001 From: Mati Nemera Date: Thu, 9 Nov 2017 20:38:22 -0500 Subject: [PATCH 16/22] Saved and Fixed initial NO values for problem 1 part 2 --- exercise_10.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/exercise_10.py b/exercise_10.py index f2ae0be..8c5f4a5 100644 --- a/exercise_10.py +++ b/exercise_10.py @@ -41,6 +41,7 @@ def popGrowth(y,t0,r,K,N): carryCap=[10,50,100] #Dataframe for storing model output store_carryCap=pandas.DataFrame({"time":times,"K1":0,"K2":0,"K3":0}) +NO = 1 #for loop for Plot 2 for i in range(0,len(carryCap)): pars=(.2,carryCap[i],1) @@ -71,7 +72,7 @@ def popGrowth(y,t0,r,K,N): #Plot 3- effect of initial Pop size differences p=(ggplot(data=store_initPop) +geom_line(store_initPop,aes(x="time",y="N1"),color="orange")+theme_classic() - +ylab("population size")+ylim(0,100) + +ylab("population size") +geom_line(store_initPop,aes(x="time",y="N2"),color="yellow") +geom_line(store_initPop,aes(x="time",y="N3"),color="red")) print(p) From 79415763f71a74b1edb5ca497e76ceb8cc241115 Mon Sep 17 00:00:00 2001 From: Mati Nemera Date: Thu, 9 Nov 2017 21:11:01 -0500 Subject: [PATCH 17/22] removed problem 2 stuff from problem 1 file --- exercise_10.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/exercise_10.py b/exercise_10.py index 50f6a96..d6c39bd 100644 --- a/exercise_10.py +++ b/exercise_10.py @@ -76,6 +76,3 @@ def popGrowth(y,t0,r,K,N): +geom_line(store_initPop,aes(x="time",y="N2"),color="yellow") +geom_line(store_initPop,aes(x="time",y="N3"),color="red")) print(p) - - -# 2 MOVED TO A NEW .PY file!!! ALSO IN OUR GIT repo From 0d0880e962b730346500064fec38e80cb81ac37a Mon Sep 17 00:00:00 2001 From: omegadan01 Date: Thu, 9 Nov 2017 23:34:38 -0500 Subject: [PATCH 18/22] made a dataframe --- exercise_10_B.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/exercise_10_B.py b/exercise_10_B.py index f63d737..556a4fc 100644 --- a/exercise_10_B.py +++ b/exercise_10_B.py @@ -15,9 +15,20 @@ def SIR (y,t0,beta,gamma): times = range(0,500) params = (.0005, .05) #need to change these for diff betas and gammas # need to make an arraay or dataframe + +data = [{'beta' : .0005, 'gamma' : .05}, + {'beta': .005, 'gamma': .5}, + {'beta': .0001, 'gamma': .1}, + {'beta': .00005, 'gamma': .1}, + {'beta': .0001, 'gamma': .05}, + {'beta': .0002, 'gamma': .05}, + {'beta': .0001, 'gamma': .06}] +my_data = pandas.DataFrame(data) + NO = [999, 1, 0] infection = pandas.DataFrame({"time":times,"S":0,"I":0,"R":0}) +results = [] # sim sim = si.odeint(func=SIR, y0=NO, t=times, args=params) @@ -63,6 +74,7 @@ def SIR (y,t0,beta,gamma): S= infection.iloc[0]['S'] Ro = (beta*(S+I+R))/gamma + #need these to fill into a list or a dataframe # need to put all this intoa bigger loop From 55665b4ffc0a4678befbfe54ea90d4875444ecf8 Mon Sep 17 00:00:00 2001 From: omegadan01 Date: Fri, 10 Nov 2017 00:11:05 -0500 Subject: [PATCH 19/22] made a billion lists and have then make a dataframe of the output --- exercise_10_B.py | 38 +++++++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/exercise_10_B.py b/exercise_10_B.py index 556a4fc..25ed23c 100644 --- a/exercise_10_B.py +++ b/exercise_10_B.py @@ -4,6 +4,7 @@ import scipy.integrate as si from plotnine import * +# function def SIR (y,t0,beta,gamma): S = y[0] I = y[1] @@ -13,9 +14,11 @@ def SIR (y,t0,beta,gamma): dR = (gamma*I) return dS, dI, dR +# initial conditions times = range(0,500) -params = (.0005, .05) #need to change these for diff betas and gammas # need to make an arraay or dataframe +NO = [999, 1, 0] +# dataframe of gamma and beta values data = [{'beta' : .0005, 'gamma' : .05}, {'beta': .005, 'gamma': .5}, {'beta': .0001, 'gamma': .1}, @@ -25,13 +28,23 @@ def SIR (y,t0,beta,gamma): {'beta': .0001, 'gamma': .06}] my_data = pandas.DataFrame(data) -NO = [999, 1, 0] +mdi = [] +mdp = [] +pa = [] +ro = [] +b = [] +g = [] + +# start big for loop here +params = (.0005, .05) #need to change these for diff betas and gammas # need to make an arraay or dataframe +b.append(params[0]) +g.append(params[1]) infection = pandas.DataFrame({"time":times,"S":0,"I":0,"R":0}) -results = [] # sim sim = si.odeint(func=SIR, y0=NO, t=times, args=params) + # fill dataframe infection.iloc[:,2]=sim[:,0] infection.iloc[:,0]=sim[:,1] @@ -48,7 +61,7 @@ def SIR (y,t0,beta,gamma): incidence = I-Iold daily_incidence.append(incidence) max_daily_incidence = max(daily_incidence) - +mdi.append(max_daily_incidence) # calc max daily prevalence daily_prev = [] @@ -59,12 +72,14 @@ def SIR (y,t0,beta,gamma): prev = I/(S+I+R) daily_prev.append(prev) max_daily_prev = max(daily_prev) +mdp.append(max_daily_prev) #calc percent affected over simulation- use last time step (499) I= infection.iloc[499]['I'] R= infection.iloc[499]['R'] S= infection.iloc[499]['S'] percent_affected = (I+R)/(S+I+R) +pa.append(percent_affected) # basic reproduction number initial SIR beta = params[0] @@ -72,9 +87,22 @@ def SIR (y,t0,beta,gamma): I= infection.iloc[0]['I'] R= infection.iloc[0]['R'] S= infection.iloc[0]['S'] -Ro = (beta*(S+I+R))/gamma +repo_number = (beta*(S+I+R))/gamma +ro.append(repo_number) + + + + +results = pandas.DataFrame( + {'beta' : b, + 'gamma' : g, + 'max_daily_incide' : mdi, + 'max_daily_prev' : mdp, + 'percent_affect' : pa, + 'repo_num' : ro}) +print results #need these to fill into a list or a dataframe # need to put all this intoa bigger loop From edfdb318a9efe3736d3874c8135166fcb06e92e3 Mon Sep 17 00:00:00 2001 From: omegadan01 Date: Fri, 10 Nov 2017 01:04:02 -0500 Subject: [PATCH 20/22] OMG IT WORKS! --- exercise_10_B.py | 111 ++++++++++++++++++++++++----------------------- 1 file changed, 57 insertions(+), 54 deletions(-) diff --git a/exercise_10_B.py b/exercise_10_B.py index 25ed23c..280cd6f 100644 --- a/exercise_10_B.py +++ b/exercise_10_B.py @@ -28,6 +28,7 @@ def SIR (y,t0,beta,gamma): {'beta': .0001, 'gamma': .06}] my_data = pandas.DataFrame(data) +# make lists to hold the results mdi = [] mdp = [] pa = [] @@ -36,61 +37,63 @@ def SIR (y,t0,beta,gamma): g = [] # start big for loop here -params = (.0005, .05) #need to change these for diff betas and gammas # need to make an arraay or dataframe -b.append(params[0]) -g.append(params[1]) - -infection = pandas.DataFrame({"time":times,"S":0,"I":0,"R":0}) - -# sim -sim = si.odeint(func=SIR, y0=NO, t=times, args=params) - -# fill dataframe -infection.iloc[:,2]=sim[:,0] -infection.iloc[:,0]=sim[:,1] -infection.iloc[:,1]=sim[:,2] - -# calc max daily incidence -daily_incidence = [] -for i in range(0,len(infection),): - if infection.time[i]==0: - continue - else: +for line in range(0,len(my_data),): + q = my_data.iloc[line]['beta'] + p = my_data.iloc[line]['gamma'] + params = (q, p) + + b.append(params[0]) + g.append(params[1]) + + infection = pandas.DataFrame({"time":times,"S":0,"I":0,"R":0}) + + # sim + sim = si.odeint(func=SIR, y0=NO, t=times, args=params) + + # fill dataframe + infection.iloc[:,2]=sim[:,0] + infection.iloc[:,0]=sim[:,1] + infection.iloc[:,1]=sim[:,2] + + # calc max daily incidence + daily_incidence = [] + for i in range(0,len(infection),): + if infection.time[i]==0: + continue + else: + I = infection.iloc[i]['I'] + Iold = infection.iloc[i-1]['I'] + incidence = I-Iold + daily_incidence.append(incidence) + max_daily_incidence = max(daily_incidence) + mdi.append(max_daily_incidence) + + # calc max daily prevalence + daily_prev = [] + for i in range(0,len(infection),): I = infection.iloc[i]['I'] - Iold = infection.iloc[i-1]['I'] - incidence = I-Iold - daily_incidence.append(incidence) -max_daily_incidence = max(daily_incidence) -mdi.append(max_daily_incidence) - -# calc max daily prevalence -daily_prev = [] -for i in range(0,len(infection),): - I = infection.iloc[i]['I'] - R = infection.iloc[i]['R'] - S = infection.iloc[i]['S'] - prev = I/(S+I+R) - daily_prev.append(prev) -max_daily_prev = max(daily_prev) -mdp.append(max_daily_prev) - -#calc percent affected over simulation- use last time step (499) -I= infection.iloc[499]['I'] -R= infection.iloc[499]['R'] -S= infection.iloc[499]['S'] -percent_affected = (I+R)/(S+I+R) -pa.append(percent_affected) - -# basic reproduction number initial SIR -beta = params[0] -gamma = params[1] -I= infection.iloc[0]['I'] -R= infection.iloc[0]['R'] -S= infection.iloc[0]['S'] -repo_number = (beta*(S+I+R))/gamma -ro.append(repo_number) - - + R = infection.iloc[i]['R'] + S = infection.iloc[i]['S'] + prev = I/(S+I+R) + daily_prev.append(prev) + max_daily_prev = max(daily_prev) + mdp.append(max_daily_prev) + + #calc percent affected over simulation- use last time step (499) + I= infection.iloc[499]['I'] + R= infection.iloc[499]['R'] + S= infection.iloc[499]['S'] + percent_affected = (I+R)/(S+I+R) + pa.append(percent_affected) + + # basic reproduction number initial SIR + beta = params[0] + gamma = params[1] + I= infection.iloc[0]['I'] + R= infection.iloc[0]['R'] + S= infection.iloc[0]['S'] + repo_number = (beta*(S+I+R))/gamma + ro.append(repo_number) results = pandas.DataFrame( From 9600e5b2319b2e76fa5143c16db2806591ade29a Mon Sep 17 00:00:00 2001 From: omegadan01 Date: Fri, 10 Nov 2017 03:06:34 -0500 Subject: [PATCH 21/22] pushed observations --- exercise_10_B.py | 43 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/exercise_10_B.py b/exercise_10_B.py index 280cd6f..34a9520 100644 --- a/exercise_10_B.py +++ b/exercise_10_B.py @@ -25,7 +25,25 @@ def SIR (y,t0,beta,gamma): {'beta': .00005, 'gamma': .1}, {'beta': .0001, 'gamma': .05}, {'beta': .0002, 'gamma': .05}, - {'beta': .0001, 'gamma': .06}] + {'beta': .0001, 'gamma': .06}, + {'beta': .0001, 'gamma': .9}, + {'beta': .0001, 'gamma': .5}, + {'beta': .0001, 'gamma': .25}, + {'beta': .0001, 'gamma': .1}, + {'beta': .0001, 'gamma': .05}, + {'beta': .0001, 'gamma': .01}, + {'beta': .0001, 'gamma': .001}, + {'beta': .0001, 'gamma': .0001}, + {'beta': .9, 'gamma': .0001}, + {'beta': .5, 'gamma': .0001}, + {'beta': .25, 'gamma': .0001}, + {'beta': .1, 'gamma': .0001}, + {'beta': .05, 'gamma': .0001}, + {'beta': .01, 'gamma': .0001}, + {'beta': .001, 'gamma': .0001}, + {'beta': .0001, 'gamma': .0001}, + {'beta': .00001, 'gamma': .0001}, + ] my_data = pandas.DataFrame(data) # make lists to hold the results @@ -36,18 +54,19 @@ def SIR (y,t0,beta,gamma): b = [] g = [] -# start big for loop here +# start big loop here for line in range(0,len(my_data),): q = my_data.iloc[line]['beta'] p = my_data.iloc[line]['gamma'] - params = (q, p) + params = (q, p) # make tuple - b.append(params[0]) + b.append(params[0]) # append list g.append(params[1]) + # make dataframe infection = pandas.DataFrame({"time":times,"S":0,"I":0,"R":0}) - # sim + # sim shite sim = si.odeint(func=SIR, y0=NO, t=times, args=params) # fill dataframe @@ -95,7 +114,7 @@ def SIR (y,t0,beta,gamma): repo_number = (beta*(S+I+R))/gamma ro.append(repo_number) - +# make a dataframe for results from all the lists results = pandas.DataFrame( {'beta' : b, 'gamma' : g, @@ -104,12 +123,22 @@ def SIR (y,t0,beta,gamma): 'percent_affect' : pa, 'repo_num' : ro}) - print results #need these to fill into a list or a dataframe # need to put all this intoa bigger loop +''' +* observations * +as gamma gets smaller the max incidence and daily prevalence rises, percent infection rises and repoduction number rises. +big gamma, things get smaller + +as beta gets bigger the max incidence and daily prevalence rises, percent effectice rises and repo number rises. +small beta, things get smaller + +so a high beta and a small gamma cause the disease to have a higher rate of infection in the population + +''' From 93d5d8aab8f7812583871376529a261551a287aa Mon Sep 17 00:00:00 2001 From: omegadan01 Date: Fri, 10 Nov 2017 09:54:28 -0500 Subject: [PATCH 22/22] added some kind of reflection. WE ARE DONE --- exercise_10_B.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/exercise_10_B.py b/exercise_10_B.py index 34a9520..c6df0fc 100644 --- a/exercise_10_B.py +++ b/exercise_10_B.py @@ -129,14 +129,11 @@ def SIR (y,t0,beta,gamma): ''' * observations * -as gamma gets smaller the max incidence and daily prevalence rises, percent infection rises and repoduction number rises. -big gamma, things get smaller - -as beta gets bigger the max incidence and daily prevalence rises, percent effectice rises and repo number rises. -small beta, things get smaller - -so a high beta and a small gamma cause the disease to have a higher rate of infection in the population - +We noticed that if beta is held constant while gamma gets smaller the max incidence, daily prevalence, percent infection, +and reproductive number all rise. Thus a bigger gamma causes, things to get smaller If we hold gamma constant, as beta +gets bigger the max incidence, daily prevalence, percent affected, and reproductive number all rise. Thus a small beta, +causes things to get smaller To summarize, a high beta and a small gamma cause the disease to have a higher rate and +srpead of infection in the population. '''