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 "WntConcentration.hpp"
00039 #include "CellMutationStates.hpp"
00040
00041
00042
00043 #include <boost/serialization/export.hpp>
00044
00057 class WntCellCycleModel : public AbstractWntOdeBasedCellCycleModel
00058 {
00059 private:
00060
00061 friend class boost::serialization::access;
00062 template<class Archive>
00063 void serialize(Archive & archive, const unsigned int version)
00064 {
00065 assert(mpOdeSystem!=NULL);
00066 archive & boost::serialization::base_object<AbstractWntOdeBasedCellCycleModel>(*this);
00072 archive & static_cast<WntCellCycleOdeSystem*>(mpOdeSystem)->rGetMutationState();
00073 }
00074
00083 void ChangeCellTypeDueToCurrentBetaCateninLevel();
00084
00085 public:
00086
00090 WntCellCycleModel()
00091 {}
00092
00105 WntCellCycleModel(AbstractOdeSystem* pParentOdeSystem,
00106 const CellMutationState& rMutationState,
00107 double birthTime,
00108 double lastTime,
00109 bool inSG2MPhase,
00110 bool readyToDivide,
00111 double divideTime);
00112
00119 WntCellCycleModel(const std::vector<double>& rParentProteinConcentrations,
00120 const CellMutationState& rMutationState);
00121
00131 AbstractCellCycleModel* CreateDaughterCellCycleModel();
00132
00140 void Initialise();
00141
00148 bool SolveOdeToTime(double currentTime);
00149 };
00150
00151
00152
00153 BOOST_CLASS_EXPORT(WntCellCycleModel)
00154
00155 namespace boost
00156 {
00157 namespace serialization
00158 {
00163 template<class Archive>
00164 inline void save_construct_data(
00165 Archive & ar, const WntCellCycleModel * t, const unsigned int file_version)
00166 {
00167 }
00168
00173 template<class Archive>
00174 inline void load_construct_data(
00175 Archive & ar, WntCellCycleModel * t, const unsigned int file_version)
00176 {
00184 std::vector<double> state_vars;
00185 for (unsigned i=0; i<9; i++)
00186 {
00187 state_vars.push_back(0.0);
00188 }
00189
00190 CellMutationState mutation_state = HEALTHY;
00191 ::new(t)WntCellCycleModel(state_vars, mutation_state);
00192 }
00193 }
00194 }
00195
00196 #endif