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
00124 StochasticWntCellCycleModel(unsigned dimension);
00125
00133 StochasticWntCellCycleModel(const std::vector<double>& rParentProteinConcentrations,
00134 const CellMutationState& rMutationState,
00135 const unsigned& rDimension);
00136
00141 AbstractCellCycleModel* CreateCellCycleModel();
00142
00143 };
00144
00145
00146
00147 BOOST_CLASS_EXPORT(StochasticWntCellCycleModel)
00148
00149 namespace boost
00150 {
00151 namespace serialization
00152 {
00157 template<class Archive>
00158 inline void save_construct_data(
00159 Archive & ar, const StochasticWntCellCycleModel * t, const unsigned int file_version)
00160 {
00161 }
00162
00167 template<class Archive>
00168 inline void load_construct_data(
00169 Archive & ar, StochasticWntCellCycleModel * t, const unsigned int file_version)
00170 {
00178 std::vector<double> state_vars;
00179 for (unsigned i=0; i<9; i++)
00180 {
00181 state_vars.push_back(0.0);
00182 }
00183
00184 CellMutationState mutation_state = HEALTHY;
00185 unsigned dimension = UINT_MAX;
00186 ::new(t)StochasticWntCellCycleModel(state_vars, mutation_state, dimension);
00187 }
00188 }
00189 }
00190
00191 #endif