36 #include "VanLeeuwen2009WntSwatCellCycleOdeSystem.hpp"
37 #include "CellwiseOdeSystemInformation.hpp"
39 #include "ApcOneHitCellMutationState.hpp"
40 #include "ApcTwoHitCellMutationState.hpp"
41 #include "BetaCateninOneHitCellMutationState.hpp"
45 boost::shared_ptr<AbstractCellMutationState> pMutationState,
46 std::vector<double> stateVariables)
48 mpMutationState(pMutationState),
49 mHypothesis(hypothesis),
52 if (hypothesis!=1 && hypothesis!=2)
54 EXCEPTION(
"You must set up this cell cycle ODE system with hypothesis one or two.");
87 double d_d_hat =
mDd +
mXiD*wntLevel;
89 double d_x_hat =
mDx +
mXiX*wntLevel;
90 double p_c_hat =
mPc +
mXiC*wntLevel;
114 double steady_D = ((1.0-sigma_D)*
mSd*
mSx)/((1.0-sigma_D)*
mSd*d_d_hat + d_x_hat*(d_d_hat + d_d_x_hat));
117 double temp = (mSx*(d_d_hat+d_d_x_hat))/((1.0-sigma_D)*
mSd*d_d_hat+d_x_hat*(d_d_hat+d_d_x_hat));
121 temp = (
mPu*steady_D*steady_Cf)/(
mDu*(steady_Cf+
mKd));
124 double theta =
mDc + (
mPu*steady_D)/(steady_Cf +
mKd);
126 double steady_Co = (
mSc - p_c_hat - theta*
mKc + sqrt(4.0*
mSc*theta*
mKc +
SmallPow((
mSc - p_c_hat - theta*
mKc),2)) )/(2.0*theta);
129 double steady_Cc = steady_Cf - steady_Co;
131 if ((steady_Cc < 0) && (steady_Cc+100*DBL_EPSILON > 0) )
152 if (stateVariables != std::vector<double>())
190 double phi_pRb = 0.005;
191 double phi_E2F1 = 0.1;
192 double phi_CycDi = 0.023;
193 double phi_CycDa = 0.03;
194 double phi_pRbp = 0.06;
197 double mitogenic_factorF = 1.0/25.0;
200 mk2d = k2/(Km2*phi_E2F1);
201 mk3d = k3*mitogenic_factorF/(Km4*phi_E2F1);
202 mk34d = k34/phi_E2F1;
203 mk43d = k43/phi_E2F1;
204 mk23d = k23*Km2/(Km4*phi_E2F1);
206 mJ11d = J11*phi_E2F1/k1;
207 mJ12d = J12*phi_E2F1/k1;
208 mJ13d = J13*phi_E2F1/k1;
209 mJ61d = J61*phi_E2F1/k1;
210 mJ62d = J62*phi_E2F1/k1;
211 mJ63d = J63*phi_E2F1/k1;
213 mkpd = kp/(Km2*phi_E2F1);
214 mphi_r = phi_pRb/phi_E2F1;
215 mphi_i = phi_CycDi/phi_E2F1;
216 mphi_j = phi_CycDa/phi_E2F1;
217 mphi_p = phi_pRbp/phi_E2F1;
218 mk16d = k16*Km4/phi_E2F1;
219 mk61d = k61/phi_E2F1;
292 double stimulus_wnt = rY[21];
300 double d_d_hat =
mDd +
mXiD*stimulus_wnt;
301 double d_d_x_hat =
mDdx +
mXiDx*stimulus_wnt;
302 double d_x_hat =
mDx +
mXiX*stimulus_wnt;
303 double p_c_hat =
mPc +
mXiC*stimulus_wnt;
305 double sigma_D = 0.0;
306 double sigma_B = 0.0;
348 rDY[5] = (1.0-sigma_D)*
mSd*X - (d_d_hat + d_d_x_hat)*D;
349 rDY[6] =
mSx - (1.0-sigma_D)*
mSd*X - d_x_hat*X + d_d_x_hat*D;
353 - (p_c_hat*Co)/(Co + Mo +
mKc) - (
mPu*D*Co)/(Cf+
mKd);
355 rDY[9] = (p_c_hat*Co)/(Co + Mo +
mKc) +
mDct*Cct - (
mSct*T +
mDc)*Cc
359 - (p_c_hat*Mo)/(Co + Mo +
mKc);
361 rDY[11] = (p_c_hat*Mo)/(Co + Mo +
mKc) +
mDct*Mct - (
mSct*T +
mDc)*Mc;
370 rDY[20] = (
mSy*(Ct+Mt))/(Ct + Mt +
mKt) -
mDy*Y;
381 std::vector<double> dy(rY.size());
384 return (rY[1] > 1.0 && dy[1] > 0.0);
395 this->mVariableNames.push_back(
"pRb");
396 this->mVariableUnits.push_back(
"non_dim");
397 this->mInitialConditions.push_back(7.357000000000000e-01);
399 this->mVariableNames.push_back(
"E2F1");
400 this->mVariableUnits.push_back(
"non_dim");
401 this->mInitialConditions.push_back(1.713000000000000e-01);
403 this->mVariableNames.push_back(
"CycD_i");
404 this->mVariableUnits.push_back(
"non_dim");
405 this->mInitialConditions.push_back(6.900000000000001e-02);
407 this->mVariableNames.push_back(
"CycD_a");
408 this->mVariableUnits.push_back(
"non_dim");
409 this->mInitialConditions.push_back(3.333333333333334e-03);
411 this->mVariableNames.push_back(
"pRb_p");
412 this->mVariableUnits.push_back(
"non_dim");
413 this->mInitialConditions.push_back(1.000000000000000e-04);
415 this->mVariableNames.push_back(
"D");
416 this->mVariableUnits.push_back(
"nM");
417 this->mInitialConditions.push_back(
NAN);
419 this->mVariableNames.push_back(
"X");
420 this->mVariableUnits.push_back(
"nM");
421 this->mInitialConditions.push_back(
NAN);
423 this->mVariableNames.push_back(
"Cu");
424 this->mVariableUnits.push_back(
"nM");
425 this->mInitialConditions.push_back(
NAN);
427 this->mVariableNames.push_back(
"Co");
428 this->mVariableUnits.push_back(
"nM");
429 this->mInitialConditions.push_back(
NAN);
431 this->mVariableNames.push_back(
"Cc");
432 this->mVariableUnits.push_back(
"nM");
433 this->mInitialConditions.push_back(
NAN);
435 this->mVariableNames.push_back(
"Mo");
436 this->mVariableUnits.push_back(
"nM");
437 this->mInitialConditions.push_back(0.0);
439 this->mVariableNames.push_back(
"Mc");
440 this->mVariableUnits.push_back(
"nM");
441 this->mInitialConditions.push_back(0.0);
443 this->mVariableNames.push_back(
"A");
444 this->mVariableUnits.push_back(
"nM");
445 this->mInitialConditions.push_back(
NAN);
447 this->mVariableNames.push_back(
"Ca");
448 this->mVariableUnits.push_back(
"nM");
449 this->mInitialConditions.push_back(
NAN);
451 this->mVariableNames.push_back(
"Ma");
452 this->mVariableUnits.push_back(
"nM");
453 this->mInitialConditions.push_back(0.0);
455 this->mVariableNames.push_back(
"T");
456 this->mVariableUnits.push_back(
"nM");
457 this->mInitialConditions.push_back(
NAN);
459 this->mVariableNames.push_back(
"Cot");
460 this->mVariableUnits.push_back(
"nM");
461 this->mInitialConditions.push_back(
NAN);
463 this->mVariableNames.push_back(
"Cct");
464 this->mVariableUnits.push_back(
"nM");
465 this->mInitialConditions.push_back(
NAN);
467 this->mVariableNames.push_back(
"Mot");
468 this->mVariableUnits.push_back(
"nM");
469 this->mInitialConditions.push_back(0.0);
471 this->mVariableNames.push_back(
"Mct");
472 this->mVariableUnits.push_back(
"nM");
473 this->mInitialConditions.push_back(0.0);
475 this->mVariableNames.push_back(
"Y");
476 this->mVariableUnits.push_back(
"nM");
477 this->mInitialConditions.push_back(
NAN);
479 this->mVariableNames.push_back(
"Sw");
480 this->mVariableUnits.push_back(
"nM");
481 this->mInitialConditions.push_back(
NAN);
483 this->mInitialised =
true;
VanLeeuwen2009WntSwatCellCycleOdeSystem(unsigned hypothesis, double wntLevel=0.0, boost::shared_ptr< AbstractCellMutationState > pMutationState=boost::shared_ptr< AbstractCellMutationState >(), std::vector< double > stateVariables=std::vector< double >())
void SetDefaultInitialCondition(unsigned index, double initialCondition)
double SmallPow(double x, unsigned exponent)
#define EXCEPTION(message)
boost::shared_ptr< AbstractCellMutationState > mpMutationState
unsigned GetHypothesis() const
void SetStateVariables(const std::vector< double > &rStateVariables)
~VanLeeuwen2009WntSwatCellCycleOdeSystem()
const boost::shared_ptr< AbstractCellMutationState > GetMutationState() const
double CalculateRootFunction(double time, const std::vector< double > &rY)
bool CalculateStoppingEvent(double time, const std::vector< double > &rY)
double GetWntLevel() const
void SetMutationState(boost::shared_ptr< AbstractCellMutationState > pMutationState)
boost::shared_ptr< AbstractOdeSystemInformation > mpSystemInfo
#define CHASTE_CLASS_EXPORT(T)
void EvaluateYDerivatives(double time, const std::vector< double > &rY, std::vector< double > &rDY)