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 WNTCELLCYCLEMODEL_HPP_
00029 #define WNTCELLCYCLEMODEL_HPP_
00030
00031 #include <boost/serialization/access.hpp>
00032 #include <boost/serialization/base_object.hpp>
00033
00034 #include <cfloat>
00035
00036 #include "AbstractWntOdeBasedCellCycleModel.hpp"
00037 #include "WntCellCycleOdeSystem.hpp"
00038 #include "CellMutationStates.hpp"
00039
00040
00041
00042 #include <boost/serialization/export.hpp>
00043
00056 class WntCellCycleModel : public AbstractWntOdeBasedCellCycleModel
00057 {
00058 private:
00059
00060 friend class boost::serialization::access;
00061 template<class Archive>
00062 void serialize(Archive & archive, const unsigned int version)
00063 {
00064 assert(mpOdeSystem!=NULL);
00065 archive & boost::serialization::base_object<AbstractWntOdeBasedCellCycleModel>(*this);
00071 archive & static_cast<WntCellCycleOdeSystem*>(mpOdeSystem)->rGetMutationState();
00072 }
00073
00082 void ChangeCellTypeDueToCurrentBetaCateninLevel();
00083
00084 public:
00085
00091 WntCellCycleModel(unsigned dimension)
00092 : AbstractWntOdeBasedCellCycleModel(dimension)
00093 {}
00094
00102 WntCellCycleModel(const WntCellCycleModel& rOtherModel);
00103
00117 WntCellCycleModel(AbstractOdeSystem* pParentOdeSystem,
00118 const CellMutationState& rMutationState,
00119 double birthTime,
00120 double lastTime,
00121 bool inSG2MPhase,
00122 bool readyToDivide,
00123 double divideTime,
00124 unsigned dimension);
00125
00133 WntCellCycleModel(const std::vector<double>& rParentProteinConcentrations,
00134 const CellMutationState& rMutationState,
00135 const unsigned& rDimension);
00136
00141 AbstractCellCycleModel* CreateCellCycleModel();
00142
00150 void Initialise();
00151
00158 bool SolveOdeToTime(double currentTime);
00159 };
00160
00161
00162
00163 BOOST_CLASS_EXPORT(WntCellCycleModel)
00164
00165 namespace boost
00166 {
00167 namespace serialization
00168 {
00173 template<class Archive>
00174 inline void save_construct_data(
00175 Archive & ar, const WntCellCycleModel * t, const unsigned int file_version)
00176 {
00177 }
00178
00183 template<class Archive>
00184 inline void load_construct_data(
00185 Archive & ar, WntCellCycleModel * t, const unsigned int file_version)
00186 {
00194 std::vector<double> state_vars;
00195 for (unsigned i=0; i<9; i++)
00196 {
00197 state_vars.push_back(0.0);
00198 }
00199
00200 CellMutationState mutation_state = HEALTHY;
00201 unsigned dimension = UINT_MAX;
00202 ::new(t)WntCellCycleModel(state_vars, mutation_state, dimension);
00203 }
00204 }
00205 }
00206
00207 #endif