Chaste  Build::
Owen2011OxygenBasedCellCycleModel.hpp
1 /*
2 
3 Copyright (c) 2005-2016, University of Oxford.
4 All rights reserved.
5 
6 University of Oxford means the Chancellor, Masters and Scholars of the
7 University of Oxford, having an administrative office at Wellington
8 Square, Oxford OX1 2JD, UK.
9 
10 This file is part of Chaste.
11 
12 Redistribution and use in source and binary forms, with or without
13 modification, are permitted provided that the following conditions are met:
14  * Redistributions of source code must retain the above copyright notice,
15  this list of conditions and the following disclaimer.
16  * Redistributions in binary form must reproduce the above copyright notice,
17  this list of conditions and the following disclaimer in the documentation
18  and/or other materials provided with the distribution.
19  * Neither the name of the University of Oxford nor the names of its
20  contributors may be used to endorse or promote products derived from this
21  software without specific prior written permission.
22 
23 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
24 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
27 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
28 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
29 GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
32 OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 
34  */
35 
36 #ifndef OWEN2011OXYGENBASEDCELLCYCLEMODEL_HPP_
37 #define OWEN2011OXYGENBASEDCELLCYCLEMODEL_HPP_
38 
39 #include "ChasteSerialization.hpp"
40 #include <boost/serialization/base_object.hpp>
41 #include <vector>
42 #include "AbstractOdeBasedPhaseBasedCellCycleModel.hpp"
43 #include "AbstractCellMutationState.hpp"
44 #include "CancerCellMutationState.hpp"
45 #include "Owen2011OxygenBasedCellCycleOdeSystem.hpp"
46 #include "UnitCollection.hpp"
47 
52 {
53 
54 private:
55 
64  template<class Archive>
65  void serialize(Archive & archive, const unsigned int version)
66  {
67  archive & boost::serialization::base_object<AbstractOdeBasedPhaseBasedCellCycleModel>(*this);
68  archive & mCurrentQuiescentDuration;
73  }
74 
80  void AdjustOdeParameters(double currentTime);
81 
82 protected:
83 
87  units::quantity<unit::time> mOdeIntegrationTimeStep;
88 
92  units::quantity<unit::dimensionless> sOnset;
93 
97  units::quantity<unit::dimensionless> g2Onset;
98 
102  units::quantity<unit::dimensionless> mOnset;
103 
107  units::quantity<unit::time> mReferenceTimeScale;
108 
112  units::quantity<unit::concentration> mReferenceConcentrationScale;
113 
117  units::quantity<unit::solubility> mReferenceSolubility;
118 
122  units::quantity<unit::dimensionless> mMaxRandInitialPhase;
123 
127  units::quantity<unit::time> mCurrentQuiescentDuration;
128 
132  units::quantity<unit::time> mCurrentQuiescenceOnsetTime;
133 
138  units::quantity<unit::pressure> mEnterQuiescenceOxygenConcentration;
139 
143  units::quantity<unit::pressure> mLeaveQuiescenceOxygenConcentration;
144 
148  units::quantity<unit::time> mCriticalQuiescentDuration;
149 
154 
159 
164  units::quantity<unit::dimensionless> mthresholdFractionOfNormalCellNeighbours;
165 
166 public:
167 
173  Owen2011OxygenBasedCellCycleModel(boost::shared_ptr<AbstractCellCycleModelOdeSolver> pOdeSolver = boost::shared_ptr<AbstractCellCycleModelOdeSolver>());
174 
180  AbstractCellCycleModel* CreateCellCycleModel();
181 
186  void CheckAndLabelCell();
187 
191  units::quantity<unit::time> GetCurrentQuiescentDuration();
192 
196  units::quantity<unit::time> GetCurrentQuiescenceOnsetTime();
197 
201  units::quantity<unit::pressure> GetEnterQuiescenceOxygenConcentration();
202 
206  units::quantity<unit::time> GetCriticalQuiescentDuration();
207 
212  double GetSDuration() const;
213 
218  double GetG2Duration() const;
219 
224  double GetMDuration() const;
225 
230  double GetPhi();
231 
236  double GetVEGF();
237 
242  double GetP53();
243 
247  units::quantity<unit::pressure> GetLeaveQuiescenceOxygenConcentration();
248 
260  void Initialise();
261 
265  void InitialiseDaughterCell();
266 
272  virtual void OutputCellCycleModelParameters(out_stream& rParamsFile);
273 
282  bool ReadyToDivide();
283 
292  virtual void ResetForDivision();
293 
298  void SetMaxRandInitialPhase(units::quantity<unit::dimensionless> rand_max_phase);
299 
305  void SetEnterQuiescenceOxygenConcentration(units::quantity<unit::pressure> enterQuiescenceOxygenConcentration);
306 
312  void SetLeaveQuiescenceOxygenConcentration(units::quantity<unit::pressure> leaveQuiescenceOxygenConcentration);
313 
319  void SetCriticalQuiescentDuration(units::quantity<unit::time> criticalQuiescentDuration);
320 
326  void SetCurrentQuiescenceOnsetTime(units::quantity<unit::time> currentQuiescenceOnsetTime);
327 
333  void SetG2Onset(units::quantity<unit::dimensionless> value);
334 
340  void SetSOnset(units::quantity<unit::dimensionless> value);
341 
347  void SetMOnset(units::quantity<unit::dimensionless> value);
348 
354  void SetOdeSolverTimeStep(units::quantity<unit::time> timeStep);
355 
361  void SetReferenceTimeScale(units::quantity<unit::time> referenceTimeScale);
362 
368  void SetReferenceConcentrationScale(units::quantity<unit::concentration> referenceConcentrationScale);
369 
376 
381 
385  void UpdateCellCyclePhase();
386 };
387 
388 // Declare identifier for the serializer
389 #include "SerializationExportWrapper.hpp"
390 CHASTE_CLASS_EXPORT(Owen2011OxygenBasedCellCycleModel)
391 #include "CellCycleModelOdeSolverExportWrapper.hpp"
392 EXPORT_CELL_CYCLE_MODEL_ODE_SOLVER(Owen2011OxygenBasedCellCycleModel)
393 
394 #endif /*OWEN2011OXYGENBASEDCELLCYCLEMODEL_HPP_*/
void SetReferenceConcentrationScale(units::quantity< unit::concentration > referenceConcentrationScale)
units::quantity< unit::time > GetCurrentQuiescenceOnsetTime()
void serialize(Archive &archive, const unsigned int version)
units::quantity< unit::solubility > mReferenceSolubility
void SetLeaveQuiescenceOxygenConcentration(units::quantity< unit::pressure > leaveQuiescenceOxygenConcentration)
void SetOdeSolverTimeStep(units::quantity< unit::time > timeStep)
units::quantity< unit::dimensionless > sOnset
units::quantity< unit::concentration > mReferenceConcentrationScale
units::quantity< unit::time > mCurrentQuiescenceOnsetTime
void SetMOnset(units::quantity< unit::dimensionless > value)
units::quantity< unit::time > GetCurrentQuiescentDuration()
units::quantity< unit::dimensionless > mp53ThresholdForApoptosisOfNormalCellsInTumourMicroenvironment
void SetCriticalQuiescentDuration(units::quantity< unit::time > criticalQuiescentDuration)
virtual void OutputCellCycleModelParameters(out_stream &rParamsFile)
void SetEnterQuiescenceOxygenConcentration(units::quantity< unit::pressure > enterQuiescenceOxygenConcentration)
units::quantity< unit::pressure > GetEnterQuiescenceOxygenConcentration()
units::quantity< unit::dimensionless > g2Onset
units::quantity< unit::pressure > GetLeaveQuiescenceOxygenConcentration()
units::quantity< unit::dimensionless > mMaxRandInitialPhase
Owen2011OxygenBasedCellCycleModel(boost::shared_ptr< AbstractCellCycleModelOdeSolver > pOdeSolver=boost::shared_ptr< AbstractCellCycleModelOdeSolver >())
void SetSOnset(units::quantity< unit::dimensionless > value)
units::quantity< unit::dimensionless > mthresholdFractionOfNormalCellNeighbours
units::quantity< unit::time > GetCriticalQuiescentDuration()
void SetReferenceTimeScale(units::quantity< unit::time > referenceTimeScale)
void SetG2Onset(units::quantity< unit::dimensionless > value)
units::quantity< unit::dimensionless > mp53ThresholdForApoptosisOfNormalCellsInHealthyMicroenvironment
void SetCurrentQuiescenceOnsetTime(units::quantity< unit::time > currentQuiescenceOnsetTime)
units::quantity< unit::pressure > mEnterQuiescenceOxygenConcentration
units::quantity< unit::dimensionless > mOnset
units::quantity< unit::pressure > mLeaveQuiescenceOxygenConcentration
void SetMaxRandInitialPhase(units::quantity< unit::dimensionless > rand_max_phase)
units::quantity< unit::time > mCriticalQuiescentDuration