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 #ifndef STOCHASTICWNTCELLCYCLEMODEL_HPP_
00029 #define STOCHASTICWNTCELLCYCLEMODEL_HPP_
00030
00031 #include <boost/serialization/access.hpp>
00032 #include <boost/serialization/base_object.hpp>
00033
00034 #include "WntCellCycleModel.hpp"
00035 #include "RandomNumberGenerator.hpp"
00036
00037
00038 #include <boost/serialization/export.hpp>
00039
00046 class StochasticWntCellCycleModel : public WntCellCycleModel
00047 {
00048 private:
00049
00051 friend class boost::serialization::access;
00064 template<class Archive>
00065 void serialize(Archive & archive, const unsigned int version)
00066 {
00067 archive & boost::serialization::base_object<WntCellCycleModel>(*this);
00068
00069 RandomNumberGenerator* p_gen = RandomNumberGenerator::Instance();
00070 archive & *p_gen;
00071 archive & p_gen;
00072
00073 archive & mG2Duration;
00074 }
00075
00077 double mG2Duration;
00078
00090 void SetG2Duration();
00091
00092 public:
00093
00097 void InitialiseDaughterCell();
00098
00106 void Initialise();
00107
00112 void ResetForDivision();
00113
00117 double GetG2Duration();
00118
00122 StochasticWntCellCycleModel();
00123
00137 StochasticWntCellCycleModel(AbstractOdeSystem* pParentOdeSystem,
00138 CellMutationState mutationState,
00139 double birthTime,
00140 double lastTime,
00141 bool inSG2MPhase,
00142 bool readyToDivide,
00143 double divideTime,
00144 double g2Duration);
00145
00152 StochasticWntCellCycleModel(std::vector<double> parentProteinConcentrations,
00153 CellMutationState mutationState);
00154
00164 AbstractCellCycleModel* CreateDaughterCellCycleModel();
00165
00166 };
00167
00168
00169
00170 BOOST_CLASS_EXPORT(StochasticWntCellCycleModel)
00171
00172 namespace boost
00173 {
00174 namespace serialization
00175 {
00180 template<class Archive>
00181 inline void save_construct_data(
00182 Archive & ar, const StochasticWntCellCycleModel * t, const unsigned int file_version)
00183 {
00184 }
00185
00190 template<class Archive>
00191 inline void load_construct_data(
00192 Archive & ar, StochasticWntCellCycleModel * t, const unsigned int file_version)
00193 {
00201 std::vector<double> state_vars;
00202 for (unsigned i=0; i<9; i++)
00203 {
00204 state_vars.push_back(0.0);
00205 }
00206
00207 CellMutationState mutation_state = HEALTHY;
00208
00209 ::new(t)StochasticWntCellCycleModel(state_vars, mutation_state);
00210 }
00211 }
00212 }
00213
00214 #endif