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 INGEWNTSWATCELLCYCLEMODEL_HPP_
00029 #define INGEWNTSWATCELLCYCLEMODEL_HPP_
00030
00031 #include <boost/serialization/access.hpp>
00032 #include <boost/serialization/base_object.hpp>
00033
00034 #include <cfloat>
00035
00036 #include "AbstractOdeSystem.hpp"
00037 #include "AbstractWntOdeBasedCellCycleModel.hpp"
00038 #include "IngeWntSwatCellCycleOdeSystem.hpp"
00039 #include "CellMutationStates.hpp"
00040 #include "Exception.hpp"
00041
00042
00043
00044 #include <boost/serialization/export.hpp>
00045
00052 class IngeWntSwatCellCycleModel : public AbstractWntOdeBasedCellCycleModel
00053 {
00054 private:
00055
00057 friend class boost::serialization::access;
00064 template<class Archive>
00065 void serialize(Archive & archive, const unsigned int version)
00066 {
00067 assert(mpOdeSystem!=NULL);
00068 archive & boost::serialization::base_object<AbstractWntOdeBasedCellCycleModel>(*this);
00069
00070
00071
00072 archive & static_cast<IngeWntSwatCellCycleOdeSystem*>(mpOdeSystem)->rGetMutationState();
00073 }
00074
00083 void ChangeCellTypeDueToCurrentBetaCateninLevel();
00084
00089 unsigned mHypothesis;
00090
00091 public:
00092
00100 IngeWntSwatCellCycleModel(unsigned hypothesis, unsigned dimension);
00101
00109 IngeWntSwatCellCycleModel(const IngeWntSwatCellCycleModel& rOtherModel);
00110
00111
00120 IngeWntSwatCellCycleModel(const unsigned& rHypothesis,
00121 const std::vector<double>& rParentProteinConcentrations,
00122 const CellMutationState& rMutationState,
00123 const unsigned& rDimension);
00124
00129 AbstractCellCycleModel* CreateCellCycleModel();
00130
00136 void Initialise();
00137
00144 bool SolveOdeToTime(double currentTime);
00145
00149 double GetMembraneBoundBetaCateninLevel();
00150
00154 double GetCytoplasmicBetaCateninLevel();
00155
00159 double GetNuclearBetaCateninLevel();
00160
00164 unsigned GetHypothesis() const;
00165
00166 };
00167
00168
00169 BOOST_CLASS_EXPORT(IngeWntSwatCellCycleModel)
00170
00171
00172 namespace boost
00173 {
00174 namespace serialization
00175 {
00180 template<class Archive>
00181 inline void save_construct_data(
00182 Archive & ar, const IngeWntSwatCellCycleModel * t, const unsigned int file_version)
00183 {
00184 const unsigned hypothesis = t->GetHypothesis();
00185 ar & hypothesis;
00186 }
00187
00192 template<class Archive>
00193 inline void load_construct_data(
00194 Archive & ar, IngeWntSwatCellCycleModel * t, const unsigned int file_version)
00195 {
00203 std::vector<double> state_vars;
00204 for (unsigned i=0; i<22; i++)
00205 {
00206 state_vars.push_back(0.0);
00207 }
00208
00209 CellMutationState mutation_state = HEALTHY;
00210 unsigned dimension = UINT_MAX;
00211
00212 unsigned hypothesis;
00213 ar & hypothesis;
00214
00215 ::new(t)IngeWntSwatCellCycleModel(hypothesis, state_vars, mutation_state, dimension);
00216 }
00217 }
00218 }
00219
00220 #endif
00221