00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #include "StochasticWntCellCycleModel.hpp"
00029
00030
00031 StochasticWntCellCycleModel::StochasticWntCellCycleModel()
00032 : WntCellCycleModel()
00033 {
00034 }
00035
00036
00037 StochasticWntCellCycleModel::StochasticWntCellCycleModel(AbstractOdeSystem* pParentOdeSystem,
00038 CellMutationState mutationState,
00039 double birthTime,
00040 double lastTime,
00041 bool inSG2MPhase,
00042 bool readyToDivide,
00043 double divideTime,
00044 double g2Duration)
00045 : WntCellCycleModel(pParentOdeSystem, mutationState, birthTime, lastTime, inSG2MPhase, readyToDivide, divideTime),
00046 mG2Duration(g2Duration)
00047 {
00048 }
00049
00050 StochasticWntCellCycleModel::StochasticWntCellCycleModel(std::vector<double> parentProteinConcentrations,
00051 CellMutationState mutationState)
00052 : WntCellCycleModel(parentProteinConcentrations, mutationState)
00053 {
00054 }
00055
00056
00057 void StochasticWntCellCycleModel::SetG2Duration()
00058 {
00059 CancerParameters* p_params = CancerParameters::Instance();
00060 RandomNumberGenerator* p_gen = RandomNumberGenerator::Instance();
00061
00062 double mean = p_params->GetG2Duration();
00063 double standard_deviation = 0.9;
00064
00065 mG2Duration = p_gen->NormalRandomDeviate(mean, standard_deviation);
00066
00067
00068 if (mG2Duration < p_params->GetMinimumGapDuration())
00069 {
00070 #define COVERAGE_IGNORE
00071 mG2Duration = p_params->GetMinimumGapDuration();
00072 #undef COVERAGE_IGNORE
00073 }
00074 }
00075
00076
00077 void StochasticWntCellCycleModel::InitialiseDaughterCell()
00078 {
00079 SetG2Duration();
00080 }
00081
00082
00083 void StochasticWntCellCycleModel::Initialise()
00084 {
00085 WntCellCycleModel::Initialise();
00086 SetG2Duration();
00087 }
00088
00089
00090 void StochasticWntCellCycleModel::ResetForDivision()
00091 {
00092 AbstractWntOdeBasedCellCycleModel::ResetForDivision();
00093 SetG2Duration();
00094 }
00095
00096
00097 double StochasticWntCellCycleModel::GetG2Duration()
00098 {
00099 return mG2Duration;
00100 }
00101
00102
00103 AbstractCellCycleModel* StochasticWntCellCycleModel::CreateDaughterCellCycleModel()
00104 {
00105 assert(mpCell!=NULL);
00106
00107
00108
00109
00110
00111
00112 return new StochasticWntCellCycleModel(mpOdeSystem,
00113 mpCell->GetMutationState(),
00114 mBirthTime,
00115 mLastTime,
00116 mFinishedRunningOdes,
00117 mReadyToDivide,
00118 mDivideTime,
00119 mG2Duration);
00120 }