(*Mitochondrial deoxynucleotide metabolism and DNA replication*) (*Vishal V Gandhi and David C Samuels*) (*The model simulates transport of deoxynucleosides and dexoynucleotides into and out of a mitochondrion,*)(*their subsequent phosphorylation and dephosphorylation and uptake into mtDNA*) ClearAll["Global`*"]; (*clear any previous variables in memory*) Off[General::spell1]; (*Turn off spelling checker*) Off[General::spell]; (* directory where this file and constants file is located *) SetDirectory["C:\\Documents and Settings\\gandhiv\\My Documents\\pro\\data\\mathematicaexpbase\\transport_experiments"]; celltype=1; (*Choose the number of separate mitochondrial DNA replication events*) (*Partially overlapping mtDNA replication events are not supported in this version of the code*) numDNAmols=1; replication=1; (*0 = Off, 1 = On, starts immediately with the simulation*) (*Set the length of the total simulation in minutes*) (*Replication time is determined by initial and spot dNTP levels*) simtime=120;(*Total simulation time (min)*) replengths = {}; repdurations = {}; parameters = {}; Do[ <0,1,0]*mm[VmaxPoldT,KmPoldT,dTTP[t]]; rdC:=If[replication>0,1,0]*mm[VmaxPoldC,KmPoldC,dCTP[t]]; rdA:=If[replication>0,1,0]*mm[VmaxPoldA,KmPoldA,dATP[t]]; rdG:=If[replication>0,1,0]*mm[VmaxPoldG,KmPoldG,dGTP[t]]; (*Heavy Strand Polymerization Start and Stop Directions*) PolrateH:=If[ (startPol> t) || ((HDNA[t])>strandDNA) ,0,1]*HPolrate[t]; (*Light Strand Polymerization Start and Stop Directions*) PolrateL:= If[ ((startPol> t) || ((LDNA[t])>strandDNA)|| ((HDNA[t])< Lstrandstart)),0,1]*LPolrate[t]; (* *) (*Definition of michaelis menten and hill functions*) (*Michaelis Menten function with no inhibitors*) mm[vmax_,km_,s_]:= If[s>0,1,0]*vmax*s/(km+s); (*Michaelis Menten function with 1 inhibitor*) mm1[vmax_,km_,s_,i_,ki_]:=If[s>0,1,0]*vmax*s/(s+km+km*(If[i>0,1,0]*(i/ki))); (*Michaelis Menten function with 2 inhibitors*) mm2[vmax_,km_,s_,i1_,ki1_,i2_,ki2_]:=If[s>0,1,0]*vmax*s/(s+km+km*(If[i1>0,1,0]*(i1/ki1)+If[i2>0,1,0]*(i2/ki2))); (*Michaelis Menten function with 3 inhibitors*) mm3[vmax_,km_,s_,i1_,ki1_,i2_,ki2_,i3_,ki3_]:=If[s>0,1,0]*vmax*s/(s+km+km*(If[i1>0,1,0]*(i1/ki1)+If[i2>0,1,0]*(i2/ki2)+If[i3>0,1,0]*(i3/ki3))); (*Michaelis Menten function with 4 inhibitors*) mm4[vmax_,km_,s_,i1_,ki1_,i2_,ki2_,i3_,ki3_,i4_,ki4_]:=If[s>0,1,0]*vmax*s/(s+km+km*(If[i1>0,1,0]*(i1/ki1)+If[i2>0,1,0]*(i2/ki2)+If[i3>0,1,0]*(i3/ki3)+If[i4>0,1,0]*(i4/ki4))); (*Michaelis Menten function with 5 inhibitors*) mm5[vmax_,km_,s_,i1_,ki1_,i2_,ki2_,i3_,ki3_,i4_,ki4_,i5_,ki5_]:=If[s>0,1,0]*vmax*s/(s+km+km*(If[i1>0,1,0]*(i1/ki1)+If[i2>0,1,0]*(i2/ki2)+If[i3>0,1,0]*(i3/ki3)+If[i4>0,1,0]*(i4/ki4)+If[i5>0,1,0]*(i5/ki5))); (*Michaelis Menten function with 6 inhibitors*) mm6[vmax_,km_,s_,i1_,ki1_,i2_,ki2_,i3_,ki3_,i4_,ki4_,i5_,ki5_,i6_,ki6_]:=If[s>0,1,0]* vmax*s/(s+km+km*(If[i1>0,1,0]*(i1/ki1)+If[i2>0,1,0]*(i2/ki2)+If[i3>0,1,0]*(i3/ki3)+If[i4>0,1,0]*(i4/ki4)+If[i5>0,1,0]*(i5/ki5)+If[i6>0,1,0]*(i6/ki6))); (*Michaelis Menten function with 7 inhibitors*) mm7[vmax_,km_,s_,i1_,ki1_,i2_,ki2_,i3_,ki3_,i4_,ki4_,i5_,ki5_,i6_,ki6_,i7_,ki7_]:=If[s>0,1,0]* vmax*s/(s+km+km*(If[i1>0,1,0]*(i1/ki1)+If[i2>0,1,0]*(i2/ki2)+If[i3>0,1,0]*(i3/ki3)+If[i4>0,1,0]*(i4/ki4)+If[i5>0,1,0]*(i5/ki5)+If[i6>0,1,0]*(i6/ki6)+If[i7>0,1,0]*(i7/ki7))); (*Michaelis menten function with 8 inhibitors*) mm8[vmax_,km_,s_,i1_,ki1_,i2_,ki2_,i3_,ki3_,i4_,ki4_,i5_,ki5_,i6_,ki6_,i7_,ki7_,i8_,ki8_]:=If[s>0,1,0]*vmax*s/(s+km+km*(If[i1>0,1,0]*(i1/ki1)+If[i2>0,1,0]*(i2/ki2)+If[i3>0,1,0]*(i3/ki3)+If[i4>0,1,0]*(i4/ki4)+If[i5>0,1,0]*(i5/ki5)+If[i6>0,1,0]*(i6/ki6)+If[i7>0,1,0]*(i7/ki7)+If[i8>0,1,0]*(i8/ki8))); (*Michaelis menten function with 9 inhibitors*) mm9[vmax_,km_,s_,i1_,ki1_,i2_,ki2_,i3_,ki3_,i4_,ki4_,i5_,ki5_,i6_,ki6_,i7_,ki7_,i8_,ki8_,i9_,ki9_]:=If[s>0,1,0]*vmax*s/(s+km+km*(If[i1>0,1,0]*(i1/ki1)+If[i2>0,1,0]*(i2/ki2)+If[i3>0,1,0]*(i3/ki3)+If[i4>0,1,0]*(i4/ki4)+If[i5>0,1,0]*(i5/ki5)+If[i6>0,1,0]*(i6/ki6)+If[i7>0,1,0]*(i7/ki7)+If[i8>0,1,0]*(i8/ki8)+If[i9>0,1,0]*(i9/ki9))); (*Michaelis menten function with 10 inhibitors*) mm10[vmax_,km_,s_,i1_,ki1_,i2_,ki2_,i3_,ki3_,i4_,ki4_,i5_,ki5_,i6_,ki6_,i7_,ki7_,i8_,ki8_,i9_,ki9_,i10_,ki10_]:=If[s>0,1,0]*vmax*s/(s+km+km*(If[i1>0,1,0]*(i1/ki1)+If[i2>0,1,0]*(i2/ki2)+If[i3>0,1,0]*(i3/ki3)+If[i4>0,1,0]*(i4/ki4)+If[i5>0,1,0]*(i5/ki5)+If[i6>0,1,0]*(i6/ki6)+If[i7>0,1,0]*(i7/ki7)+If[i8>0,1,0]*(i8/ki8)+If[i9>0,1,0]*(i9/ki9)+If[i10>0,1,0]*(i10/ki10))); (*Michaelis menten function with 11 inhibitors*) mm11[vmax_,km_,s_,i1_,ki1_,i2_,ki2_,i3_,ki3_,i4_,ki4_,i5_,ki5_,i6_,ki6_,i7_,ki7_,i8_,ki8_,i9_,ki9_,i10_,ki10_,i11_,ki11_]:=If[s>0,1,0]*vmax*s/(s+km+km*(If[i1>0,1,0]*(i1/ki1)+If[i2>0,1,0]*(i2/ki2)+If[i3>0,1,0]*(i3/ki3)+If[i4>0,1,0]*(i4/ki4)+If[i5>0,1,0]*(i5/ki5)+If[i6>0,1,0]*(i6/ki6)+If[i7>0,1,0]*(i7/ki7)+If[i8>0,1,0]*(i8/ki8)+If[i9>0,1,0]*(i9/ki9)+If[i10>0,1,0]*(i10/ki10)+If[i11>0,1,0]*(i11/ki11))); (*Michaelis menten function with 12 inhibitors*) mm12[vmax_,km_,s_,i1_,ki1_,i2_,ki2_,i3_,ki3_,i4_,ki4_,i5_,ki5_,i6_,ki6_,i7_,ki7_,i8_,ki8_,i9_,ki9_,i10_,ki10_,i11_,ki11_,i12_,ki12_]:=If[s>0,1,0]*vmax*s/(s+km+km*(If[i1>0,1,0]*(i1/ki1)+If[i2>0,1,0]*(i2/ki2)+If[i3>0,1,0]*(i3/ki3)+If[i4>0,1,0]*(i4/ki4)+If[i5>0,1,0]*(i5/ki5)+If[i6>0,1,0]*(i6/ki6)+If[i7>0,1,0]*(i7/ki7)+If[i8>0,1,0]*(i8/ki8)+If[i9>0,1,0]*(i9/ki9)+If[i10>0,1,0]*(i10/ki10)+If[i11>0,1,0]*(i11/ki11)+If[i12>0,1,0]*(i12/ki12))); (*Michaelis Menten function with 17 inhibitors*) mm21[vmax_,km_,s_,i1_,ki1_,i2_,ki2_,i3_,ki3_,i4_,ki4_,i5_,ki5_,i6_,ki6_,i7_,ki7_,i8_,ki8_,i9_,ki9_,i10_,ki10_,i11_,ki11_,i12_,ki12_,i13_,ki13_,i14_,ki14_,i15_,ki15_,i16_,ki16_,i17_,ki17_,i18_,ki18_,i19_,ki19_,i20_,ki20_,i21_,ki21_]:=If[s>0,1,0]*vmax*s/(s+km+km*(If[i1>0,1,0]*(i1/ki1)+If[i2>0,1,0]*(i2/ki2)+If[i3>0,1,0]*(i3/ki3)+If[i4>0,1,0]*(i4/ki4)+If[i5>0,1,0]*(i5/ki5)+If[i6>0,1,0]*(i6/ki6)+If[i7>0,1,0]*(i7/ki7)+If[i8>0,1,0]*(i8/ki8)+ +If[i9>0,1,0]*(i9/ki9)+If[i10>0,1,0]*(i10/ki10)+If[i11>0,1,0]*(i11/ki11)+If[i12>0,1,0]*(i12/ki12)+If[i13>0,1,0]*(i13/ki13)+If[i14>0,1,0]*(i14/ki14)+If[i15>0,1,0]*(i15/ki15)+If[i16>0,1,0]*(i16/ki16)+If[i17>0,1,0]*(i17/ki17)+If[i18>0,1,0]*(i18/ki18)+If[i19>0,1,0]*(i19/ki19)+If[i20>0,1,0]*(i20/ki20)+If[i21>0,1,0]*(i21/ki21))); (*Hill equation function with 5 inhibitors*) hill5[vmax_,km_,s_,i1_,ki1_,i2_,ki2_,i3_,ki3_,i4_,ki4_,i5_,ki5_,hc_]:=If[s>0,1,0]*vmax*(s^hc)/((s^hc)+(km^hc+km^hc*(If[i1>0,1,0]*(i1/ki1)+If[i2>0,1,0]*(i2/ki2)+If[i3>0,1,0]*(i3/ki3)+If[i4>0,1,0]*(i4/ki4)+If[i5>0,1,0]*(i5/ki5)))); (* *) (*The total simulation time is broken up so that one mtDNA molecule is copied each time through a loop*) (*the amount of time of each separate differential equation*) DNAmolreptime=simtime/numDNAmols; (*A Do loop that replicates one molecule of mtDNA each time through, the loop counter i counts from 1 to numDNAmols*) Timing[Do[ (*Hold all simulation results in an array called solution, first mtDNA molecule synthesized in solution[1], second mtDNA molecule replicated in solution[2], so on*) If[i!=1, Table[solution[i-1]]]; (*Variable k holds a data table of time (min) and dNTP molecules/mitochondrion*) If[i!=1,k=Flatten[Table[{t,dTTP[t],dCTP[t],dATP[t],dGTP[t]} /.solution[i-1],{t,start,end,1}],1]]; (*Get rid of blank lines in between each data line*) If[i!=1,data=ToString[TableForm[k],OutputForm]]; If[i!=1,data2=StringReplace[data,{"\n\n"-> "\n"}]]; If[i!=1,data3=ToExpression["data2"]]; (*output 5 columns, the time (min), dTTP, dCTP, dATP, dGTP (molecules) to a file called dNTPs.txt*) If[i!=1, OutputForm[data3] >>>"dNTPs.txt"]; (*loop counter used outside of loop for last iteration*) lin=i; (*Start polymerization at beginning*) startPol=DNAmolreptime*(i)-DNAmolreptime;(*start time of each differential equation loop where polymerase starts*) start=If[i==1,0,end];(*beginning time of each differential equation loop*) end=If[i==1,DNAmolreptime,start+DNAmolreptime];(*ending time of each differential equation loop*) (*Set the nucleotide levels initially or this time through loop to the concentrations at the end of the last loop*) dT0=If[i==1,dT0,First[dT[start]/.solution[i-1]]]; dTMP0=If[i==1,dTMP0,First[dTMP[start]/.solution[i-1]]]; dTDP0=If[i==1,dTDP0,First[dTDP[start]/.solution[i-1]]]; dTTP0=If[i==1,dTTP0,First[dTTP[start]/.solution[i-1]]]; dC0=If[i==1,dC0,First[dC[start]/.solution[i-1]]]; dCMP0=If[i==1,dCMP0,First[dCMP[start]/.solution[i-1]]]; dCDP0=If[i==1,dCDP0,First[dCDP[start]/.solution[i-1]]]; dCTP0=If[i==1,dCTP0,First[dCTP[start]/.solution[i-1]]]; dA0=If[i==1,dA0,First[dA[start]/.solution[i-1]]]; dAMP0=If[i==1,dAMP0,First[dAMP[start]/.solution[i-1]]]; dADP0=If[i==1,dADP0,First[dADP[start]/.solution[i-1]]]; dATP0=If[i==1,dATP0,First[dATP[start]/.solution[i-1]]]; dG0=If[i==1,dG0,First[dG[start]/.solution[i-1]]]; dGMP0=If[i==1,dGMP0,First[dGMP[start]/.solution[i-1]]]; dGDP0=If[i==1,dGDP0,First[dGDP[start]/.solution[i-1]]]; dGTP0=If[i==1,dGTP0,First[dGTP[start]/.solution[i-1]]]; (* *) (*differential equations*) (*Determine individual pool levels over time by adding and subtracting kinetic equations*) (*transport*) ri = Range[0,1200,100]; (*OutputForm[ri] >>>"ri.txt";*) solution[i]=NDSolve [{ dT'[t]==dTnucleosidetransport-dTnucleosidekinase+dTnucleotidase, dTMP'[t]==dTnucleosidekinase-dTnucleotidase-dTmpkforward+dTmpkreverse, dTDP'[t]==dTmpkforward-dTmpkreverse-dTdpkforward+dTdpkreverse, dTTP'[t]==dTdpkforward-dTdpkreverse- PolrateL*fdTL- PolrateH*fdTH+ri[[count]], dC'[t]==dCnucleosidetransport-dCnucleosidekinase+dCnucleotidase, dCMP'[t]==dCnucleosidekinase-dCmpkforward+dCmpkreverse-dCnucleotidase, dCDP'[t]==dCmpkforward-dCmpkreverse-dCdpkforward+dCdpkreverse, dCTP'[t]==dCdpkforward-dCdpkreverse- PolrateL*fdCL-PolrateH*fdCH+ri[[count]], dA'[t]==dAnucleosidetransport-dAnucleosidekinase+dAnucleotidase, dAMP'[t]==dAnucleosidekinase-dAmpkforward+dAmpkreverse-dAnucleotidase, dADP'[t]==dAmpkforward-dAmpkreverse-dAdpkforward+dAdpkreverse, dATP'[t]==dAdpkforward-dAdpkreverse- PolrateL*fdAL-PolrateH*fdAH+ri[[count]], dG'[t]==dGnucleosidetransport-dGnucleosidekinase+dGnucleotidase, dGMP'[t]==dGnucleosidekinase-dGmpkforward+dGmpkreverse-dGnucleotidase, dGDP'[t]==dGmpkforward-dGmpkreverse-dGdpkforward+dGdpkreverse, dGTP'[t]==dGdpkforward-dGdpkreverse- PolrateL*fdGL- PolrateH*fdGH+ri[[count]], LDNA'[t]==PolrateL , HDNA'[t]==PolrateH , LPolrate[t]==rdT*rdC*rdA *rdG/((fdTL*rdC*rdA*rdG)+(fdCL*rdT*rdA*rdG)+(fdAL*rdT*rdC*rdG)+ (fdGL*rdT*rdC*rdA)+0.1), HPolrate[t]==rdT*rdC*rdA *rdG/((fdTH*rdC*rdA*rdG)+(fdCH*rdT*rdA*rdG)+(fdAH*rdT*rdC*rdG)+(fdGH*rdT*rdC*rdA)+0.1), dT[start]==dT0, dTMP[start]==dTMP0, dTDP[start]==dTDP0, dTTP[start]==dTTP0, dC[start]==dC0, dCMP[start]==dCMP0, dCDP[start]==dCDP0, dCTP[start]==dCTP0, dA[start]==dA0, dAMP[start]==dAMP0, dADP[start]==dADP0, dATP[start]==dATP0, dG[start]==dG0, dGMP[start]==dGMP0, dGDP[start]==dGDP0, dGTP[start]==dGTP0, LDNA[start]==LDNA0, HDNA[start]==HDNA0, LPolrate'[start]==0, HPolrate'[start]==0}, {dT,dTMP,dTDP,dTTP,dC,dCMP,dCDP,dCTP,dA,dAMP,dADP,dATP,dG,dGMP,dGDP,dGTP,LDNA,HDNA,LPolrate,HPolrate}, {t,start,end},MaxSteps->10000000,PrecisionGoal->4,Method->Automatic ],{i,1,numDNAmols}]]; (*end loop*) (*Analysis*) k=Flatten[Table[{PolrateL+PolrateH} /.solution[lin],{t,start,end,0.1}],2]; reptime=(10*end-Count[k,0])*0.1;(*calculate the replication time of the last mtDNA molecule replicated*) hd=HDNA[end]/.solution[1]; ld=LDNA[end]/.solution[1]; replengths = Append[replengths,hd[[1]]+ld[[1]]]; repdurations = Append[repdurations,reptime]; reprates = replengths/repdurations; (*OutputForm[reprates] >>>"reprates.txt"; *) ,{13}]; ,{100}]; (*Analysis*) replengths repdurations reprates Max[replengths] Min[repdurations] TableForm[Partition[reprates,13]] TableForm[parameters] (*Data & Plots*) (*write last iteration to end of file*) (*Variable k* holds a data table of time (min) and dN and dNXP molecules per mitochondrion*) kn=Flatten[Table[{t, dT[t],dC[t],dA[t],dG[t]} /.solution[lin],{t,start,end,1}],1]; (*Get rid of blank lines in between each data line*) datan=ToString[TableForm[kn],OutputForm]; data2n=StringReplace[datan,{"\n\n"-> "\n"}]; data3n=ToExpression["data2n"]; (*output 5 columns, the time (min), dT, dC, dA, dG (molecules) to a file called dNs.txt*) OutputForm[data3n] >>>"dNs.txt"; kmono=Flatten[Table[{t, dTMP[t],dCMP[t],dAMP[t],dGMP[t]} /.solution[lin],{t,start,end,1}],1]; (*Get rid of blank lines in between each data line*) datamono=ToString[TableForm[kmono],OutputForm]; data2mono=StringReplace[datamono,{"\n\n"-> "\n"}]; data3mono=ToExpression["data2mono"]; (*output 5 columns, the time (min), dTMP, dCMP, dAMP, dGMP (molecules) to a file called dNMPs.txt*) OutputForm[data3mono] >>>"dNMPs.txt"; kdi=Flatten[Table[{t, dTDP[t],dCDP[t],dADP[t],dGDP[t]} /.solution[lin],{t,start,end,1}],1]; (*Get rid of blank lines in between each data line*) datadi=ToString[TableForm[kdi],OutputForm]; data2di=StringReplace[datadi,{"\n\n"-> "\n"}]; data3di=ToExpression["data2di"]; (*output 5 columns, the time (min), dTDP, dCDP, dADP, dGdP (molecules) to a file called dNDPs.txt*) OutputForm[data3di] >>>"dNDPs.txt"; ktri=Flatten[Table[{t, dTTP[t],dCTP[t],dATP[t],dGTP[t]} /.solution[lin],{t,start,end,1}],1]; (*Get rid of blank lines in between each data line*) datatri=ToString[TableForm[ktri],OutputForm]; data2tri=StringReplace[datatri,{"\n\n"-> "\n"}]; data3tri=ToExpression["data2tri"]; (*output 5 columns, the time (min), dTTP, dCTP, dATP, dGTP (molecules) to a file called dNTPs.txt*) OutputForm[data3tri] >>>"dNTPs.txt"; kT=Flatten[Table[{t, dT[t],dTMP[t],dTDP[t],dTTP[t]} /.solution[lin],{t,start,end,1}],1]; (*Get rid of blank lines in between each data line*) dataT=ToString[TableForm[kT],OutputForm]; data2T=StringReplace[dataT,{"\n\n"-> "\n"}]; data3T=ToExpression["data2T"]; (*output 5 columns, the time (min), dT, dTMP, dTDP, dTTP (molecules) to a file called t.txt*) OutputForm[data3T] >>>"T.txt"; kC=Flatten[Table[{t, dC[t],dCMP[t],dCDP[t],dCTP[t]} /.solution[lin],{t,start,end,1}],1]; (*Get rid of blank lines in between each data line*) dataC=ToString[TableForm[kC],OutputForm]; data2C=StringReplace[dataC,{"\n\n"-> "\n"}]; data3C=ToExpression["data2C"]; (*output 5 columns, the time (min), dC, dCMP, dCDP, dCTP (molecules) to a file called C.txt*) OutputForm[data3C] >>>"C.txt"; kA=Flatten[Table[{t, dA[t],dAMP[t],dADP[t],dATP[t]} /.solution[lin],{t,start,end,1}],1]; (*Get rid of blank lines in between each data line*) dataA=ToString[TableForm[kA],OutputForm]; data2A=StringReplace[dataA,{"\n\n"-> "\n"}]; data3A=ToExpression["data2A"]; (*output 5 columns, the time (min), dA, dAMP, dADP, dATP (molecules) to a file called A.txt*) OutputForm[data3A] >>>"A.txt"; kG=Flatten[Table[{t, dG[t],dGMP[t],dGDP[t],dGTP[t]} /.solution[lin],{t,start,end,1}],1]; (*Get rid of blank lines in between each data line*) dataG=ToString[TableForm[kG],OutputForm]; data2G=StringReplace[dataG,{"\n\n"-> "\n"}]; data3G=ToExpression["data2G"]; (*output 5 columns, the time (min), dG, dGMP, dGDP, dGTP (molecules) to a file called G.txt*) OutputForm[data3G] >>>"G.txt"; (* *) (*Plots of simulation results*) (*Change simulation array solution[lin] to observe other mtDNA molecules besides the last*) (* *) (*In the graphs of different dNTPs, T=Red, C=Green, A=Blue, G=Black*) (*In the graphs of different phosphorylated states, dN=Red, dNMP=Green, dNDP=Blue, dNTP=Black*) (*Plot the levels of dNTPs for all mtDNA replications separately*) For[i=1,i<(lin+1),i++,dNTP[i]=Plot[Evaluate[{dTTP[t]/conversion,dCTP[t]/conversion,dATP[t]/conversion,dGTP[t]/conversion} /. solution[i]], {t,DNAmolreptime*(i-1),DNAmolreptime*i}, AxesLabel -> {"Time (min)", "concentration dNTPs (micromoles/L)"}, PlotRange-> {0,dTTPcyto}, PlotStyle->{Red,Green,Blue,Black}] If[i==lin && i>1,Show[dNTP[i],dNTP[i-1]]]]; (*Plot dNTP levels for last two mtDNA replications together*) (*dTXP concentration plots for the last mtDNA replication*) Plot[Evaluate[{dT[t]/conversion,dTMP[t]/conversion,dTDP[t]/conversion,dTTP[t]/conversion} /. solution[lin]], {t,start,end}, AxesLabel -> {"Time (min)", "Concentration T (uM)"}, PlotRange-> {0,dTTPcyto/conversion}, PlotStyle->{Red,Green,Blue,Black}] (*dCXP concentration plots for the last mtDNA replication*) Plot[Evaluate[{dC[t]/conversion,dCMP[t]/conversion,dCDP[t]/conversion,dCTP[t]/conversion} /. solution[lin]], {t,start,end}, AxesLabel -> {"Time (min)", "Concentration C (uM)"}, PlotRange-> {0,dTTPcyto/conversion}, PlotStyle->{Red,Green,Blue,Black}] (*dAXP concentration plots for the last mtDNA replication*) Plot[Evaluate[{dA[t]/conversion,dAMP[t]/conversion,dADP[t]/conversion,dATP[t]/conversion} /. solution[lin]], {t,start,end}, AxesLabel -> {"Time (min)", "Concentration A (uM)"}, PlotRange-> {0,dTTPcyto/conversion}, PlotStyle->{Red,Green,Blue,Black}] (*dGXP concentration plots for the last mtDNA replication*) Plot[Evaluate[{dG[t]/conversion,dGMP[t]/conversion,dGDP[t]/conversion,dGTP[t]/conversion} /. solution[lin]], {t,start,end}, AxesLabel -> {"Time (min)", "Concentration G (uM)"}, PlotRange-> {0,dTTPcyto/conversion}, PlotStyle->{Red,Green,Blue,Black}] (*Plot dNs*) Plot[Evaluate[{dT[t],dC[t],dA[t],dG[t]} /. solution[1]], {t,start,end}, AxesLabel -> {"Time (min)", "dNs (molecules/mitochondrion)"}, PlotRange-> {0,100}, PlotStyle->{Red,Green,Blue,Black}] (*Plot dNMPs*) Plot[Evaluate[{dTMP[t],dCMP[t],dAMP[t],dGMP[t]} /. solution[1]], {t,start,end}, AxesLabel -> {"Time (min)", "dNMPs (molecules/mitochondrion)"}, PlotRange-> {0,dTTPcyto}, PlotStyle->{Red,Green,Blue,Black}] (*Plot dNDPs*) Plot[Evaluate[{dTDP[t],dCDP[t],dADP[t],dGDP[t]} /. solution[1]], {t,start,end}, AxesLabel -> {"Time (min)", "dNDPs (molecules/mitochondrion)"}, PlotRange-> {0,dTTPcyto}, PlotStyle->{Red,Green,Blue,Black}] (*Plot dNTPs*) Plot[Evaluate[{dTTP[t],dCTP[t],dATP[t],dGTP[t]} /. solution[1]], {t,start,end}, AxesLabel -> {"Time (min)", "dNTPs (molecules/mitochondrion)"}, PlotRange-> {0,dTTPcyto}, PlotStyle->{Red,Green,Blue,Black}] (*Plot dNs'*) Plot[Evaluate[{dT'[t],dC'[t],dA'[t],dG'[t]} /. solution[1]], {t,start,end}, AxesLabel -> {"Time (min)", "dNs' (molecules per minute)"}, PlotRange-> {0,100}, PlotStyle->{Red,Green,Blue,Black}] (*Plot dNMPs'*) Plot[Evaluate[{dTMP'[t],dCMP'[t],dAMP'[t],dGMP'[t]} /. solution[1]], {t,start,end}, AxesLabel -> {"Time (min)", "dNMPs' (molecules per minute)"}, PlotRange-> {0,100}, PlotStyle->{Red,Green,Blue,Black}] (*Plot dNDPs'*) Plot[Evaluate[{dTDP'[t],dCDP'[t],dADP'[t],dGDP'[t]} /. solution[1]], {t,start,end}, AxesLabel -> {"Time (min)", "dNDPs' (molecules per minute)"}, PlotRange-> {0,100}, PlotStyle->{Red,Green,Blue,Black}] (*Plot dNTPs'*) Plot[Evaluate[{dTTP'[t],dCTP'[t],dATP'[t],dGTP'[t]} /. solution[1]], {t,start,end}, AxesLabel -> {"Time (min)", "dNTPs' (molecules per minute)"}, PlotRange-> {0,100}, PlotStyle->{Red,Green,Blue,Black}] Plot[Evaluate[{HDNA[t], LDNA[t], (HDNA[t]+LDNA[t])}/.solution[1]],{t,DNAmolreptime/2,end}, AxesLabel -> {"Time(min)","DNA(nucleotides)"},PlotRange -> {0,17000}, PlotStyle -> {Red,Blue, Black}] Plot[Evaluate[{HDNA'[t], LDNA'[t], (HDNA'[t]+LDNA'[t])}/.solution[1]],{t,DNAmolreptime/2,end}, AxesLabel -> {"Time(min)","DNA'(nucleotides per minute)"},PlotRange -> {0,500}, PlotStyle -> {Red,Blue, Black}] Plot[Evaluate[{dTnucleosidekinase,dCnucleosidekinase,dAnucleosidekinase,dGnucleosidekinase}/.solution[1]],{t,start,end},AxesLabel->{"Time (min)","nucleoside kinase output (molecules per minute)"},PlotRange->{0,1000},PlotStyle->{Red,Green,Blue,Black}] Plot[Evaluate[{dTnucleotidase,dCnucleotidase,dAnucleotidase,dGnucleotidase}/.solution[1]],{t,start,end},AxesLabel->{"Time (min)","nucleotidase output (molecules per minute)"},PlotRange->{0,1000},PlotStyle->{Red,Green,Blue,Black}] Plot[Evaluate[{dTmpkforward,dCmpkforward,dAmpkforward,dGmpkforward}/.solution[1]],{t,start,end},AxesLabel->{"Time (min)","monophosphate kinase forward output (molecules per minute)"},PlotRange->{0,1000},PlotStyle->{Red,Green,Blue,Black}] Plot[Evaluate[{dTmpkreverse,dCmpkreverse,dAmpkreverse,dGmpkreverse}/.solution[1]],{t,start,end},AxesLabel->{"Time (min)","monophosphate kinase reverse output (molecules per minute)"},PlotRange->{0,1000},PlotStyle->{Red,Green,Blue,Black}] Plot[Evaluate[{dTdpkforward,dCdpkforward,dAdpkforward,dGdpkforward}/.solution[1]],{t,start,end},AxesLabel->{"Time (min)","diphosphate kinase forward output (molecules per minute)"},PlotRange->{0,1000},PlotStyle->{Red,Green,Blue,Black}] Plot[Evaluate[{dTdpkreverse,dCdpkreverse,dAdpkreverse,dGdpkreverse}/.solution[1]],{t,start,end},AxesLabel->{"Time (min)","diphosphate kinase reverse output (molecules per minute)"},PlotRange->{0,1000},PlotStyle->{Red,Green,Blue,Black}] Plot[Evaluate[{dTnucleosidetransport,dCnucleosidetransport,dAnucleosidetransport,dGnucleosidetransport}/.solution[1]],{t,start,end},AxesLabel->{"Time (min)","nucleoside transport reaction output (molecules per minute)"},PlotRange->{-1000,1000},PlotStyle->{Red,Green,Blue,Black}] Plot[Evaluate[{(dTnucleosidekinase-dTnucleotidase),(dCnucleosidekinase-dCnucleotidase),(dAnucleosidekinase-dAnucleotidase),(dGnucleosidekinase-dGnucleotidase)}/.solution[1]],{t,start,end},AxesLabel->{"Time (min)","net monophosphate production (molecules per minute)"},PlotRange->{-1000,1000},PlotStyle->{Red,Green,Blue,Black}] Plot[Evaluate[{(dTmpkforward-dTmpkreverse),(dCmpkforward-dCmpkreverse),(dAmpkforward-dAmpkreverse),(dGmpkforward-dGmpkreverse)}/.solution[1]],{t,start,end},AxesLabel->{"Time (min)","net diphosphate production (molecules per minute)"},PlotRange->{0,1000},PlotStyle->{Red,Green,Blue,Black}] Plot[Evaluate[{(dTdpkforward-dTdpkreverse),(dCdpkforward-dCdpkreverse),(dAdpkforward-dAdpkreverse),(dGdpkforward-dGdpkreverse)}/.solution[1]],{t,start,end},AxesLabel->{"Time (min)","net triphosphate production (molecules per minute)"},PlotRange->{-1000,1000},PlotStyle->{Red,Green,Blue,Black}] t {dT[t],dC[t],dA[t],dG[t]}/.solution[1] {dTMP[t],dCMP[t],dAMP[t],dGMP[t]}/.solution[1] {dTDP[t],dCDP[t],dADP[t],dGDP[t]}/.solution[1] {dTTP[t],dCTP[t],dATP[t],dGTP[t]}/.solution[1] {dT'[t],dC'[t],dA'[t],dG'[t]}/.solution[1] {dTMP'[t],dCMP'[t],dAMP'[t],dGMP'[t]}/.solution[1] {dTDP'[t],dCDP'[t],dADP'[t],dGDP'[t]}/.solution[1] {dTTP'[t],dCTP'[t],dATP'[t],dGTP'[t]}/.solution[1] {HDNA[t], LDNA[t], HDNA[t] + LDNA[t]}/.solution[1] {HDNA'[t], LDNA'[t], HDNA'[t] + LDNA'[t]}/.solution[1] {dTnucleosidetransport,dCnucleosidetransport,dAnucleosidetransport,dGnucleosidetransport}/.solution[1] {dTnucleosidekinase,dCnucleosidekinase,dAnucleosidekinase,dGnucleosidekinase}/.solution[1] {dTnucleotidase,dCnucleotidase,dAnucleotidase,dGnucleotidase}/.solution[1] {dTmpkforward,dCmpkforward,dAmpkforward,dGmpkforward}/.solution[1] {dTmpkreverse,dCmpkreverse,dAmpkreverse,dGmpkreverse}/.solution[1] {dTdpkforward,dCdpkforward,dAdpkforward,dGdpkforward}/.solution[1] {dTdpkreverse,dCdpkreverse,dAdpkreverse,dGdpkreverse}/.solution[1] {(dTnucleosidekinase-dTnucleotidase),(dCnucleosidekinase-dCnucleotidase),(dAnucleosidekinase-dAnucleotidase),(dGnucleosidekinase-dGnucleotidase)}/.solution[1] {(dTmpkforward-dTmpkreverse),(dCmpkforward-dCmpkreverse),(dAmpkforward-dAmpkreverse),(dGmpkforward-dGmpkreverse)}/.solution[1] {(dTdpkforward-dTdpkreverse),(dCdpkforward-dCdpkreverse),(dAdpkforward-dAdpkreverse),(dGdpkforward-dGdpkreverse)}/.solution[1]