From e41e429d43eb1855b12b379c780d8b78869cd460 Mon Sep 17 00:00:00 2001 From: Joe C Date: Sun, 29 Oct 2017 22:47:49 -0400 Subject: [PATCH 1/7] loaded and subset all three mutations - trying to get correct p value for the first mutation before moving on. see comments at end of file. JC --- 9Answers.py | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100755 9Answers.py diff --git a/9Answers.py b/9Answers.py new file mode 100755 index 0000000..4442760 --- /dev/null +++ b/9Answers.py @@ -0,0 +1,63 @@ +import pandas +file=pandas.read_csv("ponzr1.csv",header=0,sep=",") + +mut1=file.loc[file.mutation.isin(['WT', 'M124K']),:] +mut2=file.loc[file.mutation.isin(['WT', 'V456D']),:] +mut3=file.loc[file.mutation.isin(['WT', 'I213N']),:] + +#mutation 1 subset into a new dataframe +mut12=pandas.DataFrame({'y':mut1.ponzr1Counts, 'x':0}) +mut12.loc[mut1.mutation=='M124K', 'x']=1 + +#mutation 2 subset into a new dataframe +mut22=pandas.DataFrame({'y':mut2.ponzr1Counts, 'x':0}) +mut22.loc[mut1.mutation=='V456D', 'x']=1 + +#mutation 3 subset into a new dataframe +mut32=pandas.DataFrame({'y':mut3.ponzr1Counts, 'x':0}) +mut32.loc[mut1.mutation=='I213N', 'x']=1 + +#import packages +import numpy +import pandas +from scipy.optimize import minimize +from scipy.stats import norm +from plotnine import * + +ggplot(mut12,aes(x='x',y='y'))+geom_point()+theme_classic() + +#null hypothesis likelihood equation +def fun1a(p,obs): + B0=p[0] + sigma=p[1] + expected=B0 + nll=-1*norm(expected,sigma).logpdf(obs.y).sum() + return nll + +#Alternative hypothesis likelihood equation +def fun1b(p,obs): + B02=p[0] + B12=p[1] + sigma2=p[1] + expected2=B02+B12*obs.x + nll=-1*norm(expected2,sigma2).logpdf(obs.y).sum() + return nll + +#estimaitng parameters by minimizing the nll +initialVals1=numpy.array([1,1,1]) + +fitNull=minimize(fun1a,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut12) +fitAlt=minimize(fun1b,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut12) + +print(fitNull.x) +print(fitAlt.x) + +from scipy.stats import chi2 +D=(2*(fitAlt.fun-fitNull.fun)) +mut12answer=1-chi2.cdf(x=D,df=1) +print(mut12answer) + + +## currently this does not produce the correct p value according to the p value sent to us from Stuart. +## the code here includes df subsets for all 3 mutations but does not find the p value for all 3. only 1 +## going to correct any mistakes before adding the code for mutation 2 and mutation 3 \ No newline at end of file From 15a989a82a0cac343ce14dca866b348fe5d2827d Mon Sep 17 00:00:00 2001 From: Joe C Date: Mon, 30 Oct 2017 11:55:44 -0400 Subject: [PATCH 2/7] updated some comments and added the code to obtain p values for mutations 2 and 3 though still not getting correct p values for any of question 1 --- 9Answers.py | 48 ++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 42 insertions(+), 6 deletions(-) diff --git a/9Answers.py b/9Answers.py index 4442760..ac30b24 100755 --- a/9Answers.py +++ b/9Answers.py @@ -1,21 +1,26 @@ +#Exercise 09 +# Question 1 zebrafish mutations + +#import pandas and read csv file import pandas file=pandas.read_csv("ponzr1.csv",header=0,sep=",") +#subset each mutation values with WT values mut1=file.loc[file.mutation.isin(['WT', 'M124K']),:] mut2=file.loc[file.mutation.isin(['WT', 'V456D']),:] mut3=file.loc[file.mutation.isin(['WT', 'I213N']),:] -#mutation 1 subset into a new dataframe +#mutation 1 subset into a new dataframe and changes the x column to 0's and 1's mut12=pandas.DataFrame({'y':mut1.ponzr1Counts, 'x':0}) mut12.loc[mut1.mutation=='M124K', 'x']=1 -#mutation 2 subset into a new dataframe +#mutation 2 subset into a new dataframe and changes the x column to 0's and 1's mut22=pandas.DataFrame({'y':mut2.ponzr1Counts, 'x':0}) -mut22.loc[mut1.mutation=='V456D', 'x']=1 +mut22.loc[mut2.mutation=='V456D', 'x']=1 -#mutation 3 subset into a new dataframe +#mutation 3 subset into a new dataframe and changes the x column to 0's and 1's mut32=pandas.DataFrame({'y':mut3.ponzr1Counts, 'x':0}) -mut32.loc[mut1.mutation=='I213N', 'x']=1 +mut32.loc[mut3.mutation=='I213N', 'x']=1 #import packages import numpy @@ -24,6 +29,7 @@ from scipy.stats import norm from plotnine import * +#plot the values for WT at 0 and mutation 1 at 1 --- not sure if we need to do this ggplot(mut12,aes(x='x',y='y'))+geom_point()+theme_classic() #null hypothesis likelihood equation @@ -55,9 +61,39 @@ def fun1b(p,obs): from scipy.stats import chi2 D=(2*(fitAlt.fun-fitNull.fun)) mut12answer=1-chi2.cdf(x=D,df=1) +print('mutation M124K p value') print(mut12answer) +## for mutation 2 +fitNull=minimize(fun1a,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut22) +fitAlt=minimize(fun1b,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut22) + +print(fitNull.x) +print(fitAlt.x) + +from scipy.stats import chi2 +D=(2*(fitAlt.fun-fitNull.fun)) +mut22answer=1-chi2.cdf(x=D,df=1) +print('mutation V456D p value') +print(mut22answer) + +##for mutation 3 + +fitNull=minimize(fun1a,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut32) +fitAlt=minimize(fun1b,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut32) + +print(fitNull.x) +print(fitAlt.x) + +from scipy.stats import chi2 +D=(2*(fitAlt.fun-fitNull.fun)) +mut32answer=1-chi2.cdf(x=D,df=1) +print('mutation I213N p value') +print(mut32answer) + + + ## currently this does not produce the correct p value according to the p value sent to us from Stuart. ## the code here includes df subsets for all 3 mutations but does not find the p value for all 3. only 1 -## going to correct any mistakes before adding the code for mutation 2 and mutation 3 \ No newline at end of file +## going to correct any mistakes before adding the code for mutation 2 and mutation 3 From eac5ea8aaed424f117988ace2291d3805f2acf17 Mon Sep 17 00:00:00 2001 From: Joe C Date: Mon, 30 Oct 2017 14:17:53 -0400 Subject: [PATCH 3/7] p values stuck at p=1 for question1. question 2 barely progress. question 3 works for linear and constant but not quadratic --- 9Answers.py | 101 +++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 88 insertions(+), 13 deletions(-) diff --git a/9Answers.py b/9Answers.py index ac30b24..f95dbbf 100755 --- a/9Answers.py +++ b/9Answers.py @@ -1,4 +1,6 @@ #Exercise 09 +###################################################################3 + # Question 1 zebrafish mutations #import pandas and read csv file @@ -33,7 +35,7 @@ ggplot(mut12,aes(x='x',y='y'))+geom_point()+theme_classic() #null hypothesis likelihood equation -def fun1a(p,obs): +def nllike(p,obs): B0=p[0] sigma=p[1] expected=B0 @@ -41,26 +43,26 @@ def fun1a(p,obs): return nll #Alternative hypothesis likelihood equation -def fun1b(p,obs): - B02=p[0] - B12=p[1] - sigma2=p[1] - expected2=B02+B12*obs.x - nll=-1*norm(expected2,sigma2).logpdf(obs.y).sum() +def nllike2(p,obs): + B0=p[0] + B1=p[1] + sigma=p[2] + expected=B0+B1*obs.x + nll=-1*norm(expected,sigma).logpdf(obs.y).sum() return nll #estimaitng parameters by minimizing the nll initialVals1=numpy.array([1,1,1]) -fitNull=minimize(fun1a,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut12) -fitAlt=minimize(fun1b,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut12) +fitNull=minimize(nllike,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut12) +fitAlt=minimize(nllike2,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut12) print(fitNull.x) print(fitAlt.x) from scipy.stats import chi2 D=(2*(fitAlt.fun-fitNull.fun)) -mut12answer=1-chi2.cdf(x=D,df=1) +mut12answer=(1-chi2.cdf(x=D,df=1)) print('mutation M124K p value') print(mut12answer) @@ -93,7 +95,80 @@ def fun1b(p,obs): print(mut32answer) - ## currently this does not produce the correct p value according to the p value sent to us from Stuart. -## the code here includes df subsets for all 3 mutations but does not find the p value for all 3. only 1 -## going to correct any mistakes before adding the code for mutation 2 and mutation 3 +## the code here includes df subsets for all 3 mutations and does find the p value for all 3. +## its just not right + +############################################################################################################ +# question number 2 +import pandas +file2=pandas.read_csv("MmarinumGrowth.csv",header=0,sep=",") + +ggplot(file2,aes(x='S',y='u'))+geom_point()+theme_classic() + +def nllike(p,obs): + B0=p[0] + B1=p[1] + sigma=p[2] + expected=B0 + nll=-1*norm(expected,sigma).logpdf(obs.S).sum() + return nll + +guess2=numpy.array([1000, 1000, 1000]) + +fitNull2=minimize(nllike,guess2, method="Nelder-Mead",options={'disp': True}, args=file2) + +print(fitNull2.x) + +################################################################################################################### + +#question 3 +import pandas +file3=pandas.read_csv("leafDecomp.csv",header=0,sep=",") + +ggplot(file3,aes(x='Ms',y='decomp'))+geom_point()+theme_classic() +#constant fit +def nllike(p,obs): + B0=p[0] + B1=p[1] + sigma=p[2] + expected=B0 + nll=-1*norm(expected,sigma).logpdf(obs.decomp).sum() + return nll + +guess3=numpy.array([1, 1, 1]) + +fitNull3constant=minimize(nllike,guess3, method="Nelder-Mead",options={'disp': True}, args=file3) + +print('constant fit') +print(fitNull3constant.x) + +### linear fit +def nllike(p,obs): + B0=p[0] + B1=p[1] + sigma=p[2] + expected=B0+B1*obs.Ms + nll=-1*norm(expected,sigma).logpdf(obs.decomp).sum() + return nll + +fitNull3linear=minimize(nllike,guess3, method="Nelder-Mead",options={'disp': True}, args=file3) + +print('linear fit') +print(fitNull3linear) + +### quad fit --- doesn't work +def nllike(p,obs): + B0=p[0] + B1=p[1] + B2=p[2] + sigma=p[2] + expected=B0+B1*obs.Ms+B2*((obs.Ms)*(obs.Ms)) + nll=-1*norm(expected,sigma).logpdf(obs.decomp).sum() + return nll + +fitNull3quad=minimize(nllike,guess3, method="Nelder-Mead",options={'disp': True}, args=file3) + +print('quadratic fit') +print(fitNull3quad) + From 5dbe08a42b546bd86361eb42a870307754d3924b Mon Sep 17 00:00:00 2001 From: Joe C Date: Mon, 30 Oct 2017 14:42:30 -0400 Subject: [PATCH 4/7] question 1 COMPLETE. questions 2 and 3 working - going to YYs office hours now --- 9Answers.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/9Answers.py b/9Answers.py index f95dbbf..b716b9b 100755 --- a/9Answers.py +++ b/9Answers.py @@ -61,35 +61,35 @@ def nllike2(p,obs): print(fitAlt.x) from scipy.stats import chi2 -D=(2*(fitAlt.fun-fitNull.fun)) +D=(2*(fitNull.fun-fitAlt.fun)) mut12answer=(1-chi2.cdf(x=D,df=1)) print('mutation M124K p value') print(mut12answer) ## for mutation 2 -fitNull=minimize(fun1a,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut22) -fitAlt=minimize(fun1b,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut22) +fitNull=minimize(nllike,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut22) +fitAlt=minimize(nllike2,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut22) print(fitNull.x) print(fitAlt.x) from scipy.stats import chi2 -D=(2*(fitAlt.fun-fitNull.fun)) +D=(2*(fitNull.fun-fitAlt.fun)) mut22answer=1-chi2.cdf(x=D,df=1) print('mutation V456D p value') print(mut22answer) ##for mutation 3 -fitNull=minimize(fun1a,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut32) -fitAlt=minimize(fun1b,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut32) +fitNull=minimize(nllike,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut32) +fitAlt=minimize(nllike2,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut32) print(fitNull.x) print(fitAlt.x) from scipy.stats import chi2 -D=(2*(fitAlt.fun-fitNull.fun)) +D=(2*(fitNull.fun-fitAlt.fun)) mut32answer=1-chi2.cdf(x=D,df=1) print('mutation I213N p value') print(mut32answer) @@ -110,11 +110,11 @@ def nllike(p,obs): B0=p[0] B1=p[1] sigma=p[2] - expected=B0 - nll=-1*norm(expected,sigma).logpdf(obs.S).sum() + expected=B0+B1*obs.S + nll=-1*norm(expected,sigma).logpdf(obs.u).sum() return nll -guess2=numpy.array([1000, 1000, 1000]) +guess2=numpy.array([1, 1, 1]) fitNull2=minimize(nllike,guess2, method="Nelder-Mead",options={'disp': True}, args=file2) From 357a60aa4924d573e41331fcf2fc5f8a040392c9 Mon Sep 17 00:00:00 2001 From: Joe C Date: Mon, 30 Oct 2017 15:45:58 -0400 Subject: [PATCH 5/7] all questions completed - I was so close. Will add more descriptive comments later tonight --- 9Answers.py | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/9Answers.py b/9Answers.py index b716b9b..202e5be 100755 --- a/9Answers.py +++ b/9Answers.py @@ -95,22 +95,19 @@ def nllike2(p,obs): print(mut32answer) -## currently this does not produce the correct p value according to the p value sent to us from Stuart. -## the code here includes df subsets for all 3 mutations and does find the p value for all 3. -## its just not right - ############################################################################################################ # question number 2 + import pandas file2=pandas.read_csv("MmarinumGrowth.csv",header=0,sep=",") ggplot(file2,aes(x='S',y='u'))+geom_point()+theme_classic() def nllike(p,obs): - B0=p[0] - B1=p[1] + umax=p[0] + Ks=p[1] sigma=p[2] - expected=B0+B1*obs.S + expected=umax*obs.S/(obs.S+Ks) nll=-1*norm(expected,sigma).logpdf(obs.u).sum() return nll @@ -152,6 +149,8 @@ def nllike(p,obs): nll=-1*norm(expected,sigma).logpdf(obs.decomp).sum() return nll +guess3=numpy.array([1, 1, 1]) + fitNull3linear=minimize(nllike,guess3, method="Nelder-Mead",options={'disp': True}, args=file3) print('linear fit') @@ -159,14 +158,16 @@ def nllike(p,obs): ### quad fit --- doesn't work def nllike(p,obs): - B0=p[0] - B1=p[1] - B2=p[2] - sigma=p[2] - expected=B0+B1*obs.Ms+B2*((obs.Ms)*(obs.Ms)) + a=p[0] + b=p[1] + c=p[2] + sigma=p[3] + expected=a+b*obs.Ms+c*((obs.Ms)*(obs.Ms)) nll=-1*norm(expected,sigma).logpdf(obs.decomp).sum() return nll +guess3=numpy.array([180, 15, -0.1, 10]) + fitNull3quad=minimize(nllike,guess3, method="Nelder-Mead",options={'disp': True}, args=file3) print('quadratic fit') From 1b9a4a503fc99fa9f08f33460b72eb987ab42dd0 Mon Sep 17 00:00:00 2001 From: Joe C Date: Mon, 30 Oct 2017 20:44:01 -0400 Subject: [PATCH 6/7] ALL COMPLETE with comments and working code for each question --- 9Answers.py | 75 +++++++++++++++++++++++++++++++++++------------------ 1 file changed, 50 insertions(+), 25 deletions(-) diff --git a/9Answers.py b/9Answers.py index 202e5be..0cf33ab 100755 --- a/9Answers.py +++ b/9Answers.py @@ -1,5 +1,5 @@ #Exercise 09 -###################################################################3 +################################################################### # Question 1 zebrafish mutations @@ -31,11 +31,13 @@ from scipy.stats import norm from plotnine import * -#plot the values for WT at 0 and mutation 1 at 1 --- not sure if we need to do this +#plot the values for WT at 0 and mutation 1,2,3 at 1 --- dont have to plot anything but it helped me visualize ggplot(mut12,aes(x='x',y='y'))+geom_point()+theme_classic() +ggplot(mut22,aes(x='x',y='y'))+geom_point()+theme_classic() +ggplot(mut32,aes(x='x',y='y'))+geom_point()+theme_classic() #null hypothesis likelihood equation -def nllike(p,obs): +def null(p,obs): B0=p[0] sigma=p[1] expected=B0 @@ -43,7 +45,7 @@ def nllike(p,obs): return nll #Alternative hypothesis likelihood equation -def nllike2(p,obs): +def alt(p,obs): B0=p[0] B1=p[1] sigma=p[2] @@ -54,8 +56,8 @@ def nllike2(p,obs): #estimaitng parameters by minimizing the nll initialVals1=numpy.array([1,1,1]) -fitNull=minimize(nllike,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut12) -fitAlt=minimize(nllike2,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut12) +fitNull=minimize(null,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut12) +fitAlt=minimize(alt,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut12) print(fitNull.x) print(fitAlt.x) @@ -68,8 +70,8 @@ def nllike2(p,obs): ## for mutation 2 -fitNull=minimize(nllike,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut22) -fitAlt=minimize(nllike2,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut22) +fitNull=minimize(null,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut22) +fitAlt=minimize(alt,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut22) print(fitNull.x) print(fitAlt.x) @@ -82,8 +84,8 @@ def nllike2(p,obs): ##for mutation 3 -fitNull=minimize(nllike,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut32) -fitAlt=minimize(nllike2,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut32) +fitNull=minimize(null,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut32) +fitAlt=minimize(alt,initialVals1, method="Nelder-Mead",options={'disp': True}, args=mut32) print(fitNull.x) print(fitAlt.x) @@ -98,11 +100,16 @@ def nllike2(p,obs): ############################################################################################################ # question number 2 +#import and read file for question 2 import pandas file2=pandas.read_csv("MmarinumGrowth.csv",header=0,sep=",") +#again, dont need to plot but it helped me with the dataset ggplot(file2,aes(x='S',y='u'))+geom_point()+theme_classic() +#changed the typical equation to the equation given -see expected=... +## and aligned the correct variable names with the given symbols from the exercise question + def nllike(p,obs): umax=p[0] Ks=p[1] @@ -111,53 +118,66 @@ def nllike(p,obs): nll=-1*norm(expected,sigma).logpdf(obs.u).sum() return nll +#estimaitng parameters by minimizing the nll guess2=numpy.array([1, 1, 1]) fitNull2=minimize(nllike,guess2, method="Nelder-Mead",options={'disp': True}, args=file2) print(fitNull2.x) +print('umax Ks sigma') ################################################################################################################### #question 3 + +#import and read the file for question 3 import pandas file3=pandas.read_csv("leafDecomp.csv",header=0,sep=",") +#same notes as before - dont have to do a plot but it helped me ggplot(file3,aes(x='Ms',y='decomp'))+geom_point()+theme_classic() -#constant fit -def nllike(p,obs): - B0=p[0] - B1=p[1] + +#constant fit equation +def constantfit(p,obs): + a=p[0] sigma=p[2] - expected=B0 + expected=a nll=-1*norm(expected,sigma).logpdf(obs.decomp).sum() return nll guess3=numpy.array([1, 1, 1]) -fitNull3constant=minimize(nllike,guess3, method="Nelder-Mead",options={'disp': True}, args=file3) +fitNull3constant=minimize(constantfit,guess3, method="Nelder-Mead",options={'disp': True}, args=file3) print('constant fit') print(fitNull3constant.x) + + ### linear fit -def nllike(p,obs): - B0=p[0] - B1=p[1] +def linearfit(p,obs): + a=p[0] + b=p[1] sigma=p[2] - expected=B0+B1*obs.Ms + expected=a+b*obs.Ms nll=-1*norm(expected,sigma).logpdf(obs.decomp).sum() return nll guess3=numpy.array([1, 1, 1]) -fitNull3linear=minimize(nllike,guess3, method="Nelder-Mead",options={'disp': True}, args=file3) +fitNull3linear=minimize(linearfit,guess3, method="Nelder-Mead",options={'disp': True}, args=file3) print('linear fit') print(fitNull3linear) -### quad fit --- doesn't work -def nllike(p,obs): +from scipy.stats import chi2 +D=(2*(fitNull3constant.fun-fitNull3linear.fun)) +linearVSconstant=(1-chi2.cdf(x=D,df=1)) +print('linear vs constant p value') +print(linearVSconstant) + +### quad fit +def quadfit(p,obs): a=p[0] b=p[1] c=p[2] @@ -166,10 +186,15 @@ def nllike(p,obs): nll=-1*norm(expected,sigma).logpdf(obs.decomp).sum() return nll -guess3=numpy.array([180, 15, -0.1, 10]) +guess3=numpy.array([180, 15.7, -0.11, 10]) -fitNull3quad=minimize(nllike,guess3, method="Nelder-Mead",options={'disp': True}, args=file3) +fitNull3quad=minimize(quadfit,guess3, method="Nelder-Mead",options={'disp': True}, args=file3) print('quadratic fit') print(fitNull3quad) +from scipy.stats import chi2 +D=(2*(fitNull3constant.fun-fitNull3quad.fun)) +quadVSconstant=(1-chi2.cdf(x=D,df=1)) +print('quadratic vs constant p value') +print(quadVSconstant) From c09bd05516d4687dbb08e33b2ce70b1ba3b0dc7e Mon Sep 17 00:00:00 2001 From: ayamasaki2011 Date: Fri, 3 Nov 2017 09:29:33 -0400 Subject: [PATCH 7/7] AEY: Added answers to in-class challenges for future reference --- ODE_Challenges.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100755 ODE_Challenges.py diff --git a/ODE_Challenges.py b/ODE_Challenges.py new file mode 100755 index 0000000..e0a107b --- /dev/null +++ b/ODE_Challenges.py @@ -0,0 +1,30 @@ +import pandas +import scipy +import scipy.integrate as spint +from plotnine import * + +def CancerSim(y,t,rN,rT,Kn,Kt,aNT,aTN): + Nn=y[0] + Nt=y[1] + + dNndt=rN*(1-((Nn+aNT*Nt)/Kn))*Nn + dNtdt=rT*(1-((Nt+aTN*Nn)/Kt))*Nt + + return [dNndt, dNtdt] + +params2=(0.5,0.5,10,10,0.5,2) +params3=(0.5,0.5,10,10,0.5,0.5) +params4=(0.5,0.5,10,10,2,0.5) + +N0=[0.01,0.01] +times=range(0,500) + +modelSim2=spint.odeint(func=CancerSim,y0=N0,t=times,args=params2) + +modelOutput2=pandas.DataFrame({"t":times,"Nn":modelSim2[:,0],"Nt":modelSim2[:,1]}) + +g2=ggplot(modelOutput2, aes(x="t")) +g2=g+geom_line(aes(y="Nn")) +g2=g+geom_line(aes(y="Nt")) + +g2 \ No newline at end of file