Chaste Commit::baa90ac2819b962188b7562f2326be23c47859a7
|
#include <AbstractCellCycleModel.hpp>
Public Member Functions | |
AbstractCellCycleModel () | |
virtual | ~AbstractCellCycleModel () |
void | SetCell (CellPtr pCell) |
virtual void | Initialise () |
virtual void | InitialiseDaughterCell () |
CellPtr | GetCell () |
virtual void | SetBirthTime (double birthTime) |
void | SetDimension (unsigned dimension) |
unsigned | GetDimension () const |
double | GetBirthTime () const |
double | GetAge () |
virtual bool | ReadyToDivide ()=0 |
virtual void | ResetForDivision () |
virtual AbstractCellCycleModel * | CreateCellCycleModel ()=0 |
virtual bool | CanCellTerminallyDifferentiate () |
virtual double | GetAverageTransitCellCycleTime ()=0 |
virtual double | GetAverageStemCellCycleTime ()=0 |
void | OutputCellCycleModelInfo (out_stream &rParamsFile) |
virtual void | OutputCellCycleModelParameters (out_stream &rParamsFile)=0 |
Public Member Functions inherited from Identifiable | |
virtual | ~Identifiable () |
std::string | GetIdentifier () const |
Protected Member Functions | |
AbstractCellCycleModel (const AbstractCellCycleModel &rModel) | |
Protected Attributes | |
CellPtr | mpCell |
double | mBirthTime |
bool | mReadyToDivide |
unsigned | mDimension |
Private Member Functions | |
template<class Archive > | |
void | serialize (Archive &archive, const unsigned int version) |
AbstractCellCycleModel & | operator= (const AbstractCellCycleModel &) |
Friends | |
class | boost::serialization::access |
The AbstractCellCycleModel contains basic information to all cell-cycle models. It handles assignment of birth time, and associates the model with a Cell.
Cell-cycle models are noncopyable since cells are noncopyable.
Definition at line 61 of file AbstractCellCycleModel.hpp.
|
protected |
Protected copy-constructor for use by CreateCellCycleModel. The only way for external code to create a copy of a cell cycle model is by calling that method, to ensure that a model of the correct subclass is created. This copy-constructor helps subclasses to ensure that all member variables are correctly copied when this happens.
This method is called by child classes to set member variables for a daughter cell upon cell division. Note that the parent cell cycle model will have had ResetForDivision() called just before CreateCellCycleModel() is called, so performing an exact copy of the parent is suitable behaviour. Any daughter-cell-specific initialisation can be done in InitialiseDaughterCell().
rModel | the cell cycle model to copy. |
Definition at line 49 of file AbstractCellCycleModel.cpp.
AbstractCellCycleModel::AbstractCellCycleModel | ( | ) |
Sets up a new AbstractCellCycleModel, gives it a birth time of the present simulation time (which is overwritten by some subclasses)
Definition at line 38 of file AbstractCellCycleModel.cpp.
|
virtual |
Base class with virtual methods needs a virtual destructor. The destructor does not delete mpCell. Instead, the cell takes responsibility for deleting the cell-cycle model when it is destroyed.
Definition at line 45 of file AbstractCellCycleModel.cpp.
|
virtual |
Reimplemented in TysonNovakCellCycleModel, AbstractWntOdeBasedCellCycleModel, and SimpleWntCellCycleModel.
Definition at line 111 of file AbstractCellCycleModel.cpp.
|
pure virtual |
Builder method to create new instances of the cell-cycle model. Each concrete subclass must implement this method to create an instance of that subclass.
This method is called by Cell::Divide() to create a cell cycle model for the daughter cell. Note that the parent cell cycle model will have had ResetForDivision() called just before CreateCellCycleModel() is called, so performing an exact copy of the parent is suitable behaviour. Any daughter-cell-specific initialisation can be done in InitialiseDaughterCell().
Copy constructors are used to set all the member variables in the appropriate classes.
As this method is pure virtual, it must be overridden in subclasses.
Implemented in Alarcon2004OxygenBasedCellCycleModel, AlwaysDivideCellCycleModel, BernoulliTrialCellCycleModel, BiasedBernoulliTrialCellCycleModel, ContactInhibitionCellCycleModel, ExponentialG1GenerationalCellCycleModel, FixedG1GenerationalCellCycleModel, FixedSequenceCellCycleModel, GammaG1CellCycleModel, LabelDependentBernoulliTrialCellCycleModel, NoCellCycleModel, SimpleOxygenBasedCellCycleModel, StochasticOxygenBasedCellCycleModel, TysonNovakCellCycleModel, UniformCellCycleModel, UniformG1GenerationalCellCycleModel, SimpleWntCellCycleModel, SingleOdeWntCellCycleModel, StochasticWntCellCycleModel, VanLeeuwen2009WntSwatCellCycleModelHypothesisOne, VanLeeuwen2009WntSwatCellCycleModelHypothesisTwo, and WntCellCycleModel.
Referenced by Cell::Divide().
double AbstractCellCycleModel::GetAge | ( | ) |
Definition at line 85 of file AbstractCellCycleModel.cpp.
References SimulationTime::GetTime(), SimulationTime::Instance(), and mBirthTime.
Referenced by Cell::GetAge(), AbstractPhaseBasedCellCycleModel::ReadyToDivide(), AbstractSimpleCellCycleModel::ReadyToDivide(), BernoulliTrialCellCycleModel::ReadyToDivide(), BiasedBernoulliTrialCellCycleModel::ReadyToDivide(), LabelDependentBernoulliTrialCellCycleModel::ReadyToDivide(), AbstractOdeBasedPhaseBasedCellCycleModel::UpdateCellCyclePhase(), AbstractSimplePhaseBasedCellCycleModel::UpdateCellCyclePhase(), and ContactInhibitionCellCycleModel::UpdateCellCyclePhase().
|
pure virtual |
As this method is pure virtual, it must be overridden in subclasses.
#2788 Consider merging this with GetAverageTransitCellCycleTime to GetAverageCellCycleDuration
Implemented in AbstractPhaseBasedCellCycleModel, AlwaysDivideCellCycleModel, BernoulliTrialCellCycleModel, BiasedBernoulliTrialCellCycleModel, LabelDependentBernoulliTrialCellCycleModel, NoCellCycleModel, TysonNovakCellCycleModel, UniformCellCycleModel, and AbstractWntOdeBasedCellCycleModel.
|
pure virtual |
As this method is pure virtual, it must be overridden in subclasses.
#2788 Consider merging this with GetAverageStemCellCycleTime to GetAverageCellCycleDuration
Implemented in AbstractPhaseBasedCellCycleModel, AlwaysDivideCellCycleModel, BernoulliTrialCellCycleModel, BiasedBernoulliTrialCellCycleModel, LabelDependentBernoulliTrialCellCycleModel, NoCellCycleModel, TysonNovakCellCycleModel, UniformCellCycleModel, and AbstractWntOdeBasedCellCycleModel.
double AbstractCellCycleModel::GetBirthTime | ( | ) | const |
Definition at line 80 of file AbstractCellCycleModel.cpp.
References mBirthTime.
Referenced by Cell::GetBirthTime().
CellPtr AbstractCellCycleModel::GetCell | ( | ) |
Definition at line 69 of file AbstractCellCycleModel.cpp.
References mpCell.
Referenced by MeshBasedCellPopulation< ELEMENT_DIM, SPACE_DIM >::CheckCellPointers().
unsigned AbstractCellCycleModel::GetDimension | ( | ) | const |
Definition at line 106 of file AbstractCellCycleModel.cpp.
References mDimension.
|
virtual |
Initialise the cell-cycle model at the start of a simulation.
This method will be called precisely once per cell set up in the initial cell population. It is not called on cell division; use ResetForDivision(), CreateCellCycleModel() and InitialiseDaughterCell() for that.
By the time this is called, a CellPopulation will have been set up, so the model can know where its cell is located in space. If relevant to the simulation, any singletons will also have been initialised.
Reimplemented in AbstractSimpleCellCycleModel, AbstractSimplePhaseBasedCellCycleModel, Alarcon2004OxygenBasedCellCycleModel, StochasticOxygenBasedCellCycleModel, TysonNovakCellCycleModel, AbstractVanLeeuwen2009WntSwatCellCycleModel, SingleOdeWntCellCycleModel, StochasticWntCellCycleModel, and WntCellCycleModel.
Definition at line 56 of file AbstractCellCycleModel.cpp.
Referenced by Alarcon2004OxygenBasedCellCycleModel::Initialise(), TysonNovakCellCycleModel::Initialise(), SingleOdeWntCellCycleModel::Initialise(), and Cell::InitialiseCellCycleModel().
|
virtual |
Initialise the new daughter cell's cycle model after a cell division.
This is called by Cell::Divide once the new cell object has been fully created, to perform any initialisation of the cell cycle which requires access to the cell.
Note that much initialisation can be performed using the combination of ResetForDivision() (called on the parent prior to division) and CreateCellCycleModel() (called on the reset parent to create the new cell-cycle model object).
Reimplemented in AbstractSimpleCellCycleModel, AbstractSimpleGenerationalCellCycleModel, AbstractSimplePhaseBasedCellCycleModel, StochasticOxygenBasedCellCycleModel, TysonNovakCellCycleModel, SimpleWntCellCycleModel, and StochasticWntCellCycleModel.
Definition at line 60 of file AbstractCellCycleModel.cpp.
Referenced by AbstractSimpleCellCycleModel::InitialiseDaughterCell(), AbstractSimplePhaseBasedCellCycleModel::InitialiseDaughterCell(), StochasticOxygenBasedCellCycleModel::InitialiseDaughterCell(), and StochasticWntCellCycleModel::InitialiseDaughterCell().
|
private |
Prevent copy-assignment of this class, or its subclasses. Note that we do not define this method, therefore statements like "AbstractCellCycleModel new = old;" will not compile. We do not inherit from boost::noncopyable because we *do* define a protected copy-constructor, for use by CreateCellCycleModel.
void AbstractCellCycleModel::OutputCellCycleModelInfo | ( | out_stream & | rParamsFile | ) |
Outputs cell-cycle model used in the simulation to file and then calls OutputCellCyclemodelParameters to output all relevant parameters.
rParamsFile | the file stream to which the parameters are output |
Definition at line 116 of file AbstractCellCycleModel.cpp.
References Identifiable::GetIdentifier(), and OutputCellCycleModelParameters().
|
pure virtual |
Outputs cell cycle model parameters to file.
As this method is pure virtual, it must be overridden in subclasses.
rParamsFile | the file stream to which the parameters are output |
Implemented in AbstractOdeBasedCellCycleModel, AbstractOdeBasedPhaseBasedCellCycleModel, AbstractSimpleGenerationalCellCycleModel, AbstractSimplePhaseBasedCellCycleModel, Alarcon2004OxygenBasedCellCycleModel, AlwaysDivideCellCycleModel, BernoulliTrialCellCycleModel, BiasedBernoulliTrialCellCycleModel, ContactInhibitionCellCycleModel, ExponentialG1GenerationalCellCycleModel, FixedG1GenerationalCellCycleModel, FixedSequenceCellCycleModel, GammaG1CellCycleModel, LabelDependentBernoulliTrialCellCycleModel, NoCellCycleModel, SimpleOxygenBasedCellCycleModel, StochasticOxygenBasedCellCycleModel, TysonNovakCellCycleModel, UniformCellCycleModel, UniformG1GenerationalCellCycleModel, AbstractVanLeeuwen2009WntSwatCellCycleModel, AbstractWntOdeBasedCellCycleModel, SimpleWntCellCycleModel, SingleOdeWntCellCycleModel, StochasticWntCellCycleModel, VanLeeuwen2009WntSwatCellCycleModelHypothesisOne, VanLeeuwen2009WntSwatCellCycleModelHypothesisTwo, WntCellCycleModel, AbstractPhaseBasedCellCycleModel, and AbstractSimpleCellCycleModel.
Definition at line 125 of file AbstractCellCycleModel.cpp.
Referenced by OutputCellCycleModelInfo(), AbstractOdeBasedCellCycleModel::OutputCellCycleModelParameters(), AlwaysDivideCellCycleModel::OutputCellCycleModelParameters(), BernoulliTrialCellCycleModel::OutputCellCycleModelParameters(), BiasedBernoulliTrialCellCycleModel::OutputCellCycleModelParameters(), LabelDependentBernoulliTrialCellCycleModel::OutputCellCycleModelParameters(), NoCellCycleModel::OutputCellCycleModelParameters(), AbstractPhaseBasedCellCycleModel::OutputCellCycleModelParameters(), and AbstractSimpleCellCycleModel::OutputCellCycleModelParameters().
|
pure virtual |
As this method is pure virtual, it must be overridden in subclasses.
The intention is that this method is called precisely once at each timestep of the simulation. However this does not appear to always be the case at present, and so it can cope with more unusual usage patterns.
Implemented in AbstractOdeBasedCellCycleModel, AbstractPhaseBasedCellCycleModel, AbstractSimpleCellCycleModel, AlwaysDivideCellCycleModel, BernoulliTrialCellCycleModel, BiasedBernoulliTrialCellCycleModel, LabelDependentBernoulliTrialCellCycleModel, and NoCellCycleModel.
Referenced by Cell::ReadyToDivide().
|
virtual |
Each cell-cycle model must be able to be reset 'after' a cell division.
Actually, this method is called from Cell::Divide() to reset the cell cycle just before the daughter cell is created. CreateCellCycleModel() can then clone our state to generate a cell-cycle model instance for the daughter cell.
Reimplemented in AbstractOdeBasedCellCycleModel, AbstractOdeBasedPhaseBasedCellCycleModel, AbstractPhaseBasedCellCycleModel, AbstractSimpleCellCycleModel, AbstractSimpleGenerationalCellCycleModel, AbstractSimplePhaseBasedCellCycleModel, Alarcon2004OxygenBasedCellCycleModel, StochasticOxygenBasedCellCycleModel, TysonNovakCellCycleModel, AbstractWntOdeBasedCellCycleModel, and StochasticWntCellCycleModel.
Definition at line 90 of file AbstractCellCycleModel.cpp.
References SimulationTime::GetTime(), SimulationTime::Instance(), mBirthTime, and mReadyToDivide.
Referenced by Cell::Divide(), AbstractOdeBasedCellCycleModel::ResetForDivision(), AbstractPhaseBasedCellCycleModel::ResetForDivision(), AbstractSimpleCellCycleModel::ResetForDivision(), and StochasticOxygenBasedCellCycleModel::ResetForDivision().
|
inlineprivate |
Archive the object and its member variables.
archive | the archive |
version | the current version of this class |
Definition at line 74 of file AbstractCellCycleModel.hpp.
References SerializableSingleton< SINGLETON_CLASS >::GetSerializationWrapper(), SimulationTime::Instance(), mBirthTime, mDimension, and mReadyToDivide.
|
virtual |
Set the cell's time of birth (usually not required as it should be inside the individual cell-cycle-model-constructor, but useful for tests).
birthTime | the simulation time at this cell's birth. |
(This function is overridden in ODE Based Cell Cycle Models).
Reimplemented in AbstractOdeBasedCellCycleModel, and AbstractOdeBasedPhaseBasedCellCycleModel.
Definition at line 75 of file AbstractCellCycleModel.cpp.
References mBirthTime.
Referenced by AbstractOdeBasedCellCycleModel::AbstractOdeBasedCellCycleModel(), AbstractOdeBasedPhaseBasedCellCycleModel::AbstractOdeBasedPhaseBasedCellCycleModel(), Cell::SetBirthTime(), AbstractOdeBasedCellCycleModel::SetBirthTime(), and AbstractOdeBasedPhaseBasedCellCycleModel::SetBirthTime().
void AbstractCellCycleModel::SetCell | ( | CellPtr | pCell | ) |
Gives the cell-cycle model a pointer to its host cell.
Some cell-cycle models pass this pointer to other classes, which use this information to determine other information based upon the location of the cell (e.g. the Wnt concentration at this location).
pCell | pointer to the cell |
Definition at line 64 of file AbstractCellCycleModel.cpp.
References mpCell.
Referenced by Cell::Cell(), and Cell::SetCellCycleModel().
void AbstractCellCycleModel::SetDimension | ( | unsigned | dimension | ) |
Set the spatial dimension.
dimension |
Definition at line 97 of file AbstractCellCycleModel.cpp.
References EXCEPTION, mDimension, and UNSIGNED_UNSET.
|
friend |
Needed for serialization.
Definition at line 66 of file AbstractCellCycleModel.hpp.
|
protected |
The time that the cell began to split from its parent (i.e. beginning of M phase NOT the end)
Definition at line 105 of file AbstractCellCycleModel.hpp.
Referenced by GetAge(), GetBirthTime(), SingleOdeWntCellCycleModel::Initialise(), ResetForDivision(), AbstractOdeBasedCellCycleModel::ResetForDivision(), AbstractOdeBasedPhaseBasedCellCycleModel::ResetForDivision(), serialize(), SetBirthTime(), and AbstractOdeBasedPhaseBasedCellCycleModel::UpdateCellCyclePhase().
|
protected |
Spatial dimension being used in simulation (defaults to 0, set with SetDimension).
Definition at line 115 of file AbstractCellCycleModel.hpp.
Referenced by GetDimension(), AbstractWntOdeBasedCellCycleModel::GetWntLevel(), SimpleWntCellCycleModel::GetWntLevel(), SimpleWntCellCycleModel::GetWntType(), serialize(), and SetDimension().
|
protected |
The cell that this model is associated with.
Definition at line 99 of file AbstractCellCycleModel.hpp.
Referenced by Alarcon2004OxygenBasedCellCycleModel::Alarcon2004OxygenBasedCellCycleModel(), SingleOdeWntCellCycleModel::SingleOdeWntCellCycleModel(), VanLeeuwen2009WntSwatCellCycleModelHypothesisOne::VanLeeuwen2009WntSwatCellCycleModelHypothesisOne(), VanLeeuwen2009WntSwatCellCycleModelHypothesisTwo::VanLeeuwen2009WntSwatCellCycleModelHypothesisTwo(), WntCellCycleModel::WntCellCycleModel(), Alarcon2004OxygenBasedCellCycleModel::AdjustOdeParameters(), AbstractVanLeeuwen2009WntSwatCellCycleModel::AdjustOdeParameters(), SingleOdeWntCellCycleModel::AdjustOdeParameters(), WntCellCycleModel::AdjustOdeParameters(), AbstractVanLeeuwen2009WntSwatCellCycleModel::ChangeCellProliferativeTypeDueToCurrentBetaCateninLevel(), SingleOdeWntCellCycleModel::ChangeCellProliferativeTypeDueToCurrentBetaCateninLevel(), WntCellCycleModel::ChangeCellProliferativeTypeDueToCurrentBetaCateninLevel(), GetCell(), AbstractWntOdeBasedCellCycleModel::GetWntLevel(), SimpleWntCellCycleModel::GetWntLevel(), Alarcon2004OxygenBasedCellCycleModel::Initialise(), AbstractVanLeeuwen2009WntSwatCellCycleModel::Initialise(), SingleOdeWntCellCycleModel::Initialise(), WntCellCycleModel::Initialise(), AbstractSimpleGenerationalCellCycleModel::InitialiseDaughterCell(), TysonNovakCellCycleModel::InitialiseDaughterCell(), SimpleWntCellCycleModel::InitialiseDaughterCell(), AbstractOdeBasedCellCycleModel::ReadyToDivide(), AbstractPhaseBasedCellCycleModel::ReadyToDivide(), AbstractSimpleCellCycleModel::ReadyToDivide(), BernoulliTrialCellCycleModel::ReadyToDivide(), BiasedBernoulliTrialCellCycleModel::ReadyToDivide(), LabelDependentBernoulliTrialCellCycleModel::ReadyToDivide(), AbstractSimpleGenerationalCellCycleModel::ResetForDivision(), SetCell(), UniformCellCycleModel::SetCellCycleDuration(), AbstractSimplePhaseBasedCellCycleModel::SetG1Duration(), ExponentialG1GenerationalCellCycleModel::SetG1Duration(), FixedSequenceCellCycleModel::SetG1Duration(), GammaG1CellCycleModel::SetG1Duration(), UniformG1GenerationalCellCycleModel::SetG1Duration(), SimpleWntCellCycleModel::SetG1Duration(), AbstractSimplePhaseBasedCellCycleModel::UpdateCellCyclePhase(), ContactInhibitionCellCycleModel::UpdateCellCyclePhase(), SimpleOxygenBasedCellCycleModel::UpdateCellCyclePhase(), SimpleWntCellCycleModel::UpdateCellCyclePhase(), AbstractWntOdeBasedCellCycleModel::UpdateCellProliferativeType(), and SimpleOxygenBasedCellCycleModel::UpdateHypoxicDuration().
|
protected |
Whether the cell is currently ready to undergo division.
Definition at line 110 of file AbstractCellCycleModel.hpp.
Referenced by AlwaysDivideCellCycleModel::AlwaysDivideCellCycleModel(), AbstractOdeBasedCellCycleModel::ReadyToDivide(), AbstractPhaseBasedCellCycleModel::ReadyToDivide(), AbstractSimpleCellCycleModel::ReadyToDivide(), BernoulliTrialCellCycleModel::ReadyToDivide(), BiasedBernoulliTrialCellCycleModel::ReadyToDivide(), LabelDependentBernoulliTrialCellCycleModel::ReadyToDivide(), ResetForDivision(), AbstractOdeBasedCellCycleModel::ResetForDivision(), and serialize().