Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

CombinatorialNetwork.cpp

Go to the documentation of this file.
00001 // CombinatorialNetwork.cpp: implementation of the CCombinatorialNetwork class.
00002 //
00004 
00005 #include "CombinatorialNetwork.h"
00006 #include <iostream>
00007 
00009 // Construction/Destruction
00011 
00012 CCombinatorialNetwork::CCombinatorialNetwork()
00013 {
00014         // chemicals
00015         // small molecules
00016         Chemical *IPTG = new Chemical(chemicals.size(), 0.0, "IPTG");
00017         chemicals.push_back(IPTG);
00018 
00019         Chemical *aTc = new Chemical(chemicals.size(), 0.0, "aTc");
00020         chemicals.push_back(aTc);
00021 
00022         // proteins
00023         Chemical *GFP = new Chemical(chemicals.size(),0.0,"GFP");
00024         chemicals.push_back(GFP);
00025         
00026         Chemical *cI = new Chemical(chemicals.size(),0.0,"cI");
00027         chemicals.push_back(cI);
00028 
00029         Chemical *FreeTetR = new Chemical(chemicals.size(),0.0,"FreeTetR");
00030         chemicals.push_back(FreeTetR);
00031         
00032         Chemical *BoundTetR = new Chemical(chemicals.size(),0.0,"BoundTetR");
00033         chemicals.push_back(BoundTetR);
00034         
00035         Chemical *FreeLacI = new Chemical(chemicals.size(),0.0,"FreeLacI");
00036         chemicals.push_back(FreeLacI);
00037         
00038         Chemical *BoundLacI = new Chemical(chemicals.size(),0.0,"BoundLacI");
00039         chemicals.push_back(BoundLacI);
00040 
00041         // promoters
00042         //Pi - promoter for lacI gene
00043         Chemical *lacIBoundPromoter = new Chemical(chemicals.size(),0.0,"lacIBoundPromoter");
00044         chemicals.push_back(lacIBoundPromoter);
00045 
00046         Chemical *lacIFreePromoter = new Chemical(chemicals.size(),4.0,"lacIFreePromoter");
00047         chemicals.push_back(lacIFreePromoter);
00048 
00049         //Pj - promoter for cI gene
00050         Chemical *cIBoundPromoter = new Chemical(chemicals.size(),0.0,"cIBoundPromoter");
00051         chemicals.push_back(cIBoundPromoter);
00052 
00053         Chemical *cIFreePromoter = new Chemical(chemicals.size(),4.0,"cIFreePromoter");
00054         chemicals.push_back(cIFreePromoter);
00055 
00056         //Pk - promoter for tetR gene
00057         Chemical *tetRBoundPromoter = new Chemical(chemicals.size(),0.0,"tetRBoundPromoter");
00058         chemicals.push_back(tetRBoundPromoter);
00059 
00060         Chemical *tetRFreePromoter = new Chemical(chemicals.size(),4.0,"tetRFreePromoter");
00061         chemicals.push_back(tetRFreePromoter);
00062 
00063         //cI repressible promoter for GFP
00064         Chemical *GFPBoundPromoter = new Chemical(chemicals.size(),0.0,"GFPBoundPromoter");
00065         chemicals.push_back(GFPBoundPromoter);
00066 
00067         Chemical *GFPFreePromoter = new Chemical(chemicals.size(),4.0,"GFPFreePromoter");
00068         chemicals.push_back(GFPFreePromoter);
00069 
00070 
00071         // rate constants
00072 
00073         //bind cI to cI repressible promoter
00074         RateConstant *kbPcIr = new RateConstant(0.005,"kbPcIr");
00075         rateConstants.push_back(kbPcIr);
00076 
00077         //unbind cI from cI repressible promoter
00078         RateConstant *kuPcIr = new RateConstant(0.5,"kuPcIr");
00079         rateConstants.push_back(kuPcIr);
00080 
00081         //bind cI to cI inducible promoter
00082         RateConstant *kbPcIi = new RateConstant(0.005,"kbPcIi");
00083         rateConstants.push_back(kbPcIi);
00084 
00085         //unbind cI from cI inducible promoter
00086         RateConstant *kuPcIi = new RateConstant(0.5,"kuPcIi");
00087         rateConstants.push_back(kuPcIi);
00088 
00089         //bind free TetR to TetR repressible promoter
00090         RateConstant *kbPtetRr = new RateConstant(0.005,"kbPtetRr");
00091         rateConstants.push_back(kbPtetRr);
00092 
00093         //unbind TetR from TetR repressible promoter
00094         RateConstant *kuPtetRr = new RateConstant(0.5,"kuPtetRr");
00095         rateConstants.push_back(kuPtetRr);
00096 
00097         //bind free LacI to LacI repressible promoter1
00098         RateConstant *kbPlacIr1 = new RateConstant(0.005,"kbPlacIr1");
00099         rateConstants.push_back(kbPlacIr1);
00100 
00101         //unbind LacI  from LacI repressible promoter1
00102         RateConstant *kuPlacIr1 = new RateConstant(0.5,"kuPlacIr1");
00103         rateConstants.push_back(kuPlacIr1);
00104 
00105         //bind free LacI to LacI repressible promoter2
00106         RateConstant *kbPlacIr2 = new RateConstant(0.005,"kbPlacIr2");
00107         rateConstants.push_back(kbPlacIr2);
00108 
00109         //unbind LacI  from LacI repressible promoter2
00110         RateConstant *kuPlacIr2 = new RateConstant(0.5,"kuPlacIr2");
00111         rateConstants.push_back(kuPlacIr2);
00112 
00113         //bind free TetR to aTc
00114         RateConstant *kbaTcTetR = new RateConstant(0.005, "kbaTcTetR");
00115         rateConstants.push_back(kbaTcTetR);
00116 
00117         //unbind free TetR from aTc
00118         RateConstant *kuaTcTetR = new RateConstant(0.5, "kuaTcTetR");
00119         rateConstants.push_back(kuaTcTetR);
00120 
00121         //bind free LacI to IPTG
00122         RateConstant *kbIPTGLacI = new RateConstant(0.005,"kbIPTGLacI");
00123         rateConstants.push_back(kbIPTGLacI);
00124 
00125         //unbind LacI from IPTG
00126         RateConstant *kuIPTGLacI = new RateConstant(0.5,"kuIPTGLacI");
00127         rateConstants.push_back(kuIPTGLacI);
00128 
00129         //degrade free cI
00130         RateConstant *kdcI = new RateConstant(0.5, "kdcI");
00131         rateConstants.push_back(kdcI);
00132 
00133         //degrade free TetR
00134         RateConstant *kdTetR = new RateConstant(0.5, "kdTetR");
00135         rateConstants.push_back(kdTetR);
00136 
00137         //degrade free LacI
00138         RateConstant *kdLacI = new RateConstant(0.5, "kdLacI");
00139         rateConstants.push_back(kdLacI);
00140 
00141         //degrade GFP
00142         RateConstant *kdGFP = new RateConstant(0.1,"kdGFP");
00143         rateConstants.push_back(kdGFP);
00144 
00145         //these reactions encapsulate both transcription and translation (protein made
00146         // directly); simple reactions likely not appropriate
00147         //transcribe cI
00148         RateConstant *ktcI = new RateConstant(0.5, "ktcI");
00149         rateConstants.push_back(ktcI);
00150 
00151         //transcribe TetR
00152         RateConstant *ktTetR = new RateConstant(0.5, "ktTetR");
00153         rateConstants.push_back(ktTetR);
00154 
00155         //transcribe LacI
00156         RateConstant *ktLacI = new RateConstant(0.5, "ktLacI");
00157         rateConstants.push_back(ktLacI);
00158 
00159         //transcribe GFP
00160         RateConstant *ktGFP = new RateConstant(0.5,"ktGFP");
00161         rateConstants.push_back(ktGFP);
00162 
00163         // reactions
00164         // the first 11 reactions should be true for all the networks
00165         TranscriptionReaction *GFPTranscription = new TranscriptionReaction(GFPFreePromoter, GFP, ktGFP, "GFPTranscription");
00166         reactions.push_back(GFPTranscription);
00167 
00168         UnstableProteinDegradationReaction *GFPDegradation = new UnstableProteinDegradationReaction(GFP,kdGFP,"GFPDegradation");
00169         reactions.push_back(GFPDegradation);
00170 
00171         HeterodimerizationReaction *GFPPromoterBinding = new HeterodimerizationReaction(GFPFreePromoter,cI,GFPBoundPromoter,kbPcIr,"GFPPromoterBinding");
00172         reactions.push_back(GFPPromoterBinding);
00173 
00174         HeterodimerDissociationReaction *GFPPromoterUnbinding = new HeterodimerDissociationReaction(GFPBoundPromoter,GFPFreePromoter,cI,kuPcIr,"GFPPromoterUnbinding");
00175         reactions.push_back(GFPPromoterUnbinding);
00176 
00177         UnstableProteinDegradationReaction *cIDegradation = new UnstableProteinDegradationReaction(cI,kdcI,"cIDegradation");
00178         reactions.push_back(cIDegradation);
00179 
00180         UnstableProteinDegradationReaction *FreeLacIDegradation = new UnstableProteinDegradationReaction(FreeLacI,kdLacI,"FreeLacIDegradation");
00181         reactions.push_back(FreeLacIDegradation);
00182 
00183         UnstableProteinDegradationReaction *FreeTetRDegradation = new UnstableProteinDegradationReaction(FreeTetR,kdTetR,"FreeTetRDegradation");
00184         reactions.push_back(FreeTetRDegradation);
00185 
00186         HeterodimerizationReaction *IPTGLacIBinding = new HeterodimerizationReaction(IPTG,FreeLacI,BoundLacI,kbIPTGLacI,"IPTGLacIBinding");
00187         reactions.push_back(IPTGLacIBinding);
00188 
00189         HeterodimerDissociationReaction *IPTGLacIUnbinding = new HeterodimerDissociationReaction(BoundLacI,FreeLacI,IPTG,kuIPTGLacI,"IPTGLacIUnbinding");
00190         reactions.push_back(IPTGLacIUnbinding);
00191 
00192         HeterodimerizationReaction *aTcTetRBinding = new HeterodimerizationReaction(aTc,FreeTetR,BoundTetR,kbaTcTetR,"aTcTetRBinding");
00193         reactions.push_back(aTcTetRBinding);
00194 
00195         HeterodimerDissociationReaction *aTcTetRUnbinding = new HeterodimerDissociationReaction(BoundTetR,FreeTetR,aTc,kuaTcTetR,"aTcTetRUnbinding");
00196         reactions.push_back(aTcTetRUnbinding);
00197 
00198         // the following reactions are not true for all the networks
00199         //for cI governed by any repressible promoter (rxn 11)
00200         TranscriptionReaction *cITranscriptionFromFreePromoter = new TranscriptionReaction(cIFreePromoter, cI, ktcI, "cITranscriptionFromFreePromoter");
00201         reactions.push_back(cITranscriptionFromFreePromoter);
00202 
00203         //for cI governed by any inducible promoter (rxn 12)
00204         TranscriptionReaction *cITranscriptionFromBoundPromoter = new TranscriptionReaction(cIBoundPromoter, cI, ktcI, "cITranscriptionFromBoundPromoter");
00205         reactions.push_back(cITranscriptionFromBoundPromoter);
00206 
00207         //for tetR governed by any repressible promoter (rxn 13)
00208         TranscriptionReaction *TetRTranscriptionFromFreePromoter = new TranscriptionReaction(tetRFreePromoter, FreeTetR, ktTetR, "TetRTranscriptionFromFreePromoter");
00209         reactions.push_back(TetRTranscriptionFromFreePromoter);
00210 
00211         //for tetR governed by any inducible promoter (rxn 14)
00212         TranscriptionReaction *TetRTranscriptionFromBoundPromoter = new TranscriptionReaction(tetRBoundPromoter, FreeTetR, ktTetR, "TetRTranscriptionFromBoundPromoter");
00213         reactions.push_back(TetRTranscriptionFromBoundPromoter);
00214 
00215         //for lacI governed by any repressible promoter (rxn 15)
00216         TranscriptionReaction *LacITranscriptionFromFreePromoter = new TranscriptionReaction(lacIFreePromoter, FreeLacI, ktLacI, "LacITranscriptionFromFreePromoter");
00217         reactions.push_back(LacITranscriptionFromFreePromoter);
00218 
00219         //for lacI governed by any inducible promoter (rxn 16)
00220         TranscriptionReaction *LacITranscriptionFromBoundPromoter = new TranscriptionReaction(lacIBoundPromoter, FreeLacI, ktLacI, "LacITranscriptionFromBoundPromoter");
00221         reactions.push_back(LacITranscriptionFromBoundPromoter);
00222 
00223         //lacI promoter varieties:
00224         //use next two if lacI governed by cI repressible promoter (rxns 17,18)
00225         HeterodimerizationReaction *BindingcIRepressibleLacIPromoter = new HeterodimerizationReaction(cI, lacIFreePromoter, lacIBoundPromoter, kbPcIr, "BindingcIRepressibleLacIPromoter");
00226         reactions.push_back(BindingcIRepressibleLacIPromoter);
00227 
00228         HeterodimerDissociationReaction *UnbindingcIRepressibleLacIPromoter = new HeterodimerDissociationReaction(lacIBoundPromoter, lacIFreePromoter, cI, kuPcIr, "UnbindingcIRepressibleLacIPromoter");
00229         reactions.push_back(UnbindingcIRepressibleLacIPromoter);
00230 
00231         //use next two if lacI governed by cI inducible promoter (rxns 19,20)
00232         HeterodimerizationReaction *BindingcIInducibleLacIPromoter = new HeterodimerizationReaction(cI, lacIFreePromoter, lacIBoundPromoter, kbPcIi, "BindingcIInducibleLacIPromoter");
00233         reactions.push_back(BindingcIInducibleLacIPromoter);
00234 
00235         HeterodimerDissociationReaction *UnbindingcIInducibleLacIPromoter = new HeterodimerDissociationReaction(lacIBoundPromoter, lacIFreePromoter, cI, kuPcIi, "UnbindingcIInducibleLacIPromoter");
00236         reactions.push_back(UnbindingcIInducibleLacIPromoter);
00237 
00238         //use next two if lacI governed by tetR repressible promoter (rxns 21,22)
00239         HeterodimerizationReaction *BindingTetRRepressibleLacIPromoter = new HeterodimerizationReaction(FreeTetR, lacIFreePromoter, lacIBoundPromoter, kbPtetRr, "BindingTetRRepressibleLacIPromoter");
00240         reactions.push_back(BindingTetRRepressibleLacIPromoter);
00241 
00242         HeterodimerDissociationReaction *UnbindingTetRRepressibleLacIPromoter = new HeterodimerDissociationReaction(lacIBoundPromoter, lacIFreePromoter, FreeTetR, kuPcIi, "UnbindingTetRRepressibleLacIPromoter");
00243         reactions.push_back(UnbindingTetRRepressibleLacIPromoter);
00244 
00245         //use next two if lacI governed by lacI repressible promoter 1 (rxns 23,24)
00246         HeterodimerizationReaction *BindingLacIRepressible1LacIPromoter = new HeterodimerizationReaction(FreeLacI, lacIFreePromoter, lacIBoundPromoter, kbPlacIr1, "BindingLacIRepressible1LacIPromoter");
00247         reactions.push_back(BindingLacIRepressible1LacIPromoter);
00248 
00249         HeterodimerDissociationReaction *UnbindingLacIRepressible1LacIPromoter = new HeterodimerDissociationReaction(lacIBoundPromoter, lacIFreePromoter, FreeLacI, kuPlacIr1, "UnbindingLacIRepressible1LacIPromoter");
00250         reactions.push_back(UnbindingLacIRepressible1LacIPromoter);
00251 
00252         //use next two if lacI governed by lacI repressible promoter 2 (rxns 25,26)
00253         HeterodimerizationReaction *BindingLacIRepressible2LacIPromoter = new HeterodimerizationReaction(FreeLacI, lacIFreePromoter, lacIBoundPromoter, kbPlacIr2, "BindingLacIRepressible2LacIPromoter");
00254         reactions.push_back(BindingLacIRepressible2LacIPromoter);
00255 
00256         HeterodimerDissociationReaction *UnbindingLacIRepressible2LacIPromoter = new HeterodimerDissociationReaction(lacIBoundPromoter, lacIFreePromoter, FreeLacI, kuPlacIr2, "UnbindingLacIRepressible2LacIPromoter");
00257         reactions.push_back(UnbindingLacIRepressible2LacIPromoter);
00258 
00259         //tetR promoter varieties:
00260         //use next two if tetR governed by cI repressible promoter (rxns 27,28)
00261         HeterodimerizationReaction *BindingcIRepressibleTetRPromoter = new HeterodimerizationReaction(cI, tetRFreePromoter, tetRBoundPromoter, kbPcIr, "BindingcIRepressibleTetRPromoter");
00262         reactions.push_back(BindingcIRepressibleTetRPromoter);
00263 
00264         HeterodimerDissociationReaction *UnbindingcIRepressibleTetRPromoter = new HeterodimerDissociationReaction(tetRBoundPromoter, tetRFreePromoter, cI, kuPcIr, "UnbindingcIRepressibleTetRPromoter");
00265         reactions.push_back(UnbindingcIRepressibleTetRPromoter);
00266 
00267         //use next two if tetR governed by cI inducible promoter (rxns 29,30)
00268         HeterodimerizationReaction *BindingcIInducibleTetRPromoter = new HeterodimerizationReaction(cI, tetRFreePromoter, tetRBoundPromoter, kbPcIi, "BindingcIInducibleTetRPromoter");
00269         reactions.push_back(BindingcIInducibleTetRPromoter);
00270 
00271         HeterodimerDissociationReaction *UnbindingcIInducibleTetRPromoter = new HeterodimerDissociationReaction(tetRBoundPromoter, tetRFreePromoter, cI, kuPcIi, "UnbindingcIInducibleTetRPromoter");
00272         reactions.push_back(UnbindingcIInducibleTetRPromoter);
00273 
00274         //use next two if tetR governed by tetR repressible promoter (rxns 31,32)
00275         HeterodimerizationReaction *BindingTetRRepressibleTetRPromoter = new HeterodimerizationReaction(FreeTetR, tetRFreePromoter, tetRBoundPromoter, kbPtetRr, "BindingTetRRepressibleTetRPromoter");
00276         reactions.push_back(BindingTetRRepressibleTetRPromoter);
00277 
00278         HeterodimerDissociationReaction *UnbindingTetRRepressibleTetRPromoter = new HeterodimerDissociationReaction(tetRBoundPromoter, tetRFreePromoter, FreeTetR, kuPcIi, "UnbindingTetRRepressibleTetRPromoter");
00279         reactions.push_back(UnbindingTetRRepressibleTetRPromoter);
00280 
00281         //use next two if tetR governed by lacI repressible promoter 1 (rxns 33,34)
00282         HeterodimerizationReaction *BindingLacIRepressible1TetRPromoter = new HeterodimerizationReaction(FreeLacI, tetRFreePromoter, tetRBoundPromoter, kbPlacIr1, "BindingLacIRepressible1TetRPromoter");
00283         reactions.push_back(BindingLacIRepressible1TetRPromoter);
00284 
00285         HeterodimerDissociationReaction *UnbindingLacIRepressible1TetRPromoter = new HeterodimerDissociationReaction(tetRBoundPromoter, tetRFreePromoter, FreeLacI, kuPlacIr1, "UnbindingLacIRepressible1TetRPromoter");
00286         reactions.push_back(UnbindingLacIRepressible1TetRPromoter);
00287 
00288         //use next two if tetR governed by lacI repressible promoter 2 (rxns 35,36)
00289         HeterodimerizationReaction *BindingLacIRepressible2TetRPromoter = new HeterodimerizationReaction(FreeLacI, tetRFreePromoter, tetRBoundPromoter, kbPlacIr2, "BindingLacIRepressible2TetRPromoter");
00290         reactions.push_back(BindingLacIRepressible2TetRPromoter);
00291 
00292         HeterodimerDissociationReaction *UnbindingLacIRepressible2TetRPromoter = new HeterodimerDissociationReaction(tetRBoundPromoter, tetRFreePromoter, FreeLacI, kuPlacIr2, "UnbindingLacIRepressible2TetRPromoter");
00293         reactions.push_back(UnbindingLacIRepressible2TetRPromoter);
00294 
00295         //cI promoter varieties:
00296         //use next two if cI governed by cI repressible promoter (rxns 37,38)
00297         HeterodimerizationReaction *BindingcIRepressiblecIPromoter = new HeterodimerizationReaction(cI, cIFreePromoter, cIBoundPromoter, kbPcIr, "BindingcIRepressiblecIPromoter");
00298         reactions.push_back(BindingcIRepressiblecIPromoter);
00299 
00300         HeterodimerDissociationReaction *UnbindingcIRepressiblecIPromoter = new HeterodimerDissociationReaction(cIBoundPromoter, cIFreePromoter, cI, kuPcIr, "UnbindingcIRepressiblecIPromoter");
00301         reactions.push_back(UnbindingcIRepressiblecIPromoter);
00302 
00303         //use next two if cI governed by cI inducible promoter (rxns 39,40)
00304         HeterodimerizationReaction *BindingcIInduciblecIPromoter = new HeterodimerizationReaction(cI, cIFreePromoter, cIBoundPromoter, kbPcIi, "BindingcIInduciblecIPromoter");
00305         reactions.push_back(BindingcIInduciblecIPromoter);
00306 
00307         HeterodimerDissociationReaction *UnbindingcIInduciblecIPromoter = new HeterodimerDissociationReaction(cIBoundPromoter, cIFreePromoter, cI, kuPcIi, "UnbindingcIInduciblecIPromoter");
00308         reactions.push_back(UnbindingcIInduciblecIPromoter);
00309 
00310         //use next two if cI governed by tetR repressible promoter (rxns 41,42)
00311         HeterodimerizationReaction *BindingTetRRepressiblecIPromoter = new HeterodimerizationReaction(FreeTetR, cIFreePromoter, cIBoundPromoter, kbPtetRr, "BindingTetRRepressiblecIPromoter");
00312         reactions.push_back(BindingTetRRepressiblecIPromoter);
00313 
00314         HeterodimerDissociationReaction *UnbindingTetRRepressiblecIPromoter = new HeterodimerDissociationReaction(cIBoundPromoter, cIFreePromoter, FreeTetR, kuPcIi, "UnbindingTetRRepressiblecIPromoter");
00315         reactions.push_back(UnbindingTetRRepressiblecIPromoter);
00316 
00317         //use next two if cI governed by lacI repressible promoter 1 (rxns 43,44)
00318         HeterodimerizationReaction *BindingLacIRepressible1cIPromoter = new HeterodimerizationReaction(FreeLacI, cIFreePromoter, cIBoundPromoter, kbPlacIr1, "BindingLacIRepressible1cIPromoter");
00319         reactions.push_back(BindingLacIRepressible1cIPromoter);
00320 
00321         HeterodimerDissociationReaction *UnbindingLacIRepressible1cIPromoter = new HeterodimerDissociationReaction(cIBoundPromoter, cIFreePromoter, FreeLacI, kuPlacIr1, "UnbindingLacIRepressible1cIPromoter");
00322         reactions.push_back(UnbindingLacIRepressible1cIPromoter);
00323 
00324         //use next two if cI governed by lacI repressible promoter 2 (rxns 45,46)
00325         HeterodimerizationReaction *BindingLacIRepressible2cIPromoter = new HeterodimerizationReaction(FreeLacI, cIFreePromoter, cIBoundPromoter, kbPlacIr2, "BindingLacIRepressible2cIPromoter");
00326         reactions.push_back(BindingLacIRepressible2cIPromoter);
00327 
00328         HeterodimerDissociationReaction *UnbindingLacIRepressible2cIPromoter = new HeterodimerDissociationReaction(cIBoundPromoter, cIFreePromoter, FreeLacI, kuPlacIr2, "UnbindingLacIRepressible2cIPromoter");
00329         reactions.push_back(UnbindingLacIRepressible2cIPromoter);
00330 
00331 }
00332 
00333 CCombinatorialNetwork::~CCombinatorialNetwork()
00334 {
00335 
00336 }

Generated on Mon Nov 3 09:37:40 2003 by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002