Chaste Commit::ca8ccdedf819b6e02855bc0e8e6f50bdecbc5208
AbstractCellCycleModel Class Referenceabstract

#include <AbstractCellCycleModel.hpp>

+ Inheritance diagram for AbstractCellCycleModel:
+ Collaboration diagram for AbstractCellCycleModel:

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 AbstractCellCycleModelCreateCellCycleModel ()=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)
 
AbstractCellCycleModeloperator= (const AbstractCellCycleModel &)
 

Friends

class boost::serialization::access
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ AbstractCellCycleModel() [1/2]

AbstractCellCycleModel::AbstractCellCycleModel ( const AbstractCellCycleModel rModel)
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().

Parameters
rModelthe cell cycle model to copy.

Definition at line 49 of file AbstractCellCycleModel.cpp.

◆ AbstractCellCycleModel() [2/2]

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.

◆ ~AbstractCellCycleModel()

AbstractCellCycleModel::~AbstractCellCycleModel ( )
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.

Member Function Documentation

◆ CanCellTerminallyDifferentiate()

bool AbstractCellCycleModel::CanCellTerminallyDifferentiate ( )
virtual
Returns
whether a cell with this cell-cycle model is able to fully (terminally) differentiate.

Reimplemented in TysonNovakCellCycleModel, AbstractWntOdeBasedCellCycleModel, and SimpleWntCellCycleModel.

Definition at line 111 of file AbstractCellCycleModel.cpp.

◆ CreateCellCycleModel()

virtual AbstractCellCycleModel * AbstractCellCycleModel::CreateCellCycleModel ( )
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.

Returns
new cell-cycle model

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().

◆ GetAge()

◆ GetAverageStemCellCycleTime()

virtual double AbstractCellCycleModel::GetAverageStemCellCycleTime ( )
pure virtual
Returns
the typical cell cycle duration for a stem cell, in hours.

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.

◆ GetAverageTransitCellCycleTime()

virtual double AbstractCellCycleModel::GetAverageTransitCellCycleTime ( )
pure virtual
Returns
the typical cell cycle duration for a transit cell, in hours.

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.

◆ GetBirthTime()

double AbstractCellCycleModel::GetBirthTime ( ) const
Returns
the time at which the cell was born.

Definition at line 80 of file AbstractCellCycleModel.cpp.

References mBirthTime.

Referenced by Cell::GetBirthTime().

◆ GetCell()

CellPtr AbstractCellCycleModel::GetCell ( )
Returns
The cell which plays host to this cell-cycle model.

Definition at line 69 of file AbstractCellCycleModel.cpp.

References mpCell.

Referenced by MeshBasedCellPopulation< ELEMENT_DIM, SPACE_DIM >::CheckCellPointers().

◆ GetDimension()

unsigned AbstractCellCycleModel::GetDimension ( ) const
Returns
the dimension this cell-cycle model thinks the simulation is in.

Definition at line 106 of file AbstractCellCycleModel.cpp.

References mDimension.

◆ Initialise()

void AbstractCellCycleModel::Initialise ( )
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().

◆ InitialiseDaughterCell()

void AbstractCellCycleModel::InitialiseDaughterCell ( )
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().

◆ operator=()

AbstractCellCycleModel & AbstractCellCycleModel::operator= ( const AbstractCellCycleModel )
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.

Returns
the new cell cycle model.

◆ OutputCellCycleModelInfo()

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.

Parameters
rParamsFilethe file stream to which the parameters are output

Definition at line 116 of file AbstractCellCycleModel.cpp.

References Identifiable::GetIdentifier(), and OutputCellCycleModelParameters().

◆ OutputCellCycleModelParameters()

void AbstractCellCycleModel::OutputCellCycleModelParameters ( out_stream &  rParamsFile)
pure virtual

Outputs cell cycle model parameters to file.

As this method is pure virtual, it must be overridden in subclasses.

Parameters
rParamsFilethe 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().

◆ ReadyToDivide()

virtual bool AbstractCellCycleModel::ReadyToDivide ( )
pure virtual
Returns
whether the cell is ready to divide.

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().

◆ ResetForDivision()

◆ serialize()

template<class Archive >
void AbstractCellCycleModel::serialize ( Archive &  archive,
const unsigned int  version 
)
inlineprivate

Archive the object and its member variables.

Parameters
archivethe archive
versionthe current version of this class

Definition at line 74 of file AbstractCellCycleModel.hpp.

References SerializableSingleton< SINGLETON_CLASS >::GetSerializationWrapper(), SimulationTime::Instance(), mBirthTime, mDimension, and mReadyToDivide.

◆ SetBirthTime()

void AbstractCellCycleModel::SetBirthTime ( double  birthTime)
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).

Parameters
birthTimethe 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().

◆ SetCell()

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).

Parameters
pCellpointer to the cell

Definition at line 64 of file AbstractCellCycleModel.cpp.

References mpCell.

Referenced by Cell::Cell(), and Cell::SetCellCycleModel().

◆ SetDimension()

void AbstractCellCycleModel::SetDimension ( unsigned  dimension)

Set the spatial dimension.

Parameters
dimension

Definition at line 97 of file AbstractCellCycleModel.cpp.

References EXCEPTION, mDimension, and UNSIGNED_UNSET.

Friends And Related Symbol Documentation

◆ boost::serialization::access

friend class boost::serialization::access
friend

Needed for serialization.

Definition at line 66 of file AbstractCellCycleModel.hpp.

Member Data Documentation

◆ mBirthTime

◆ mDimension

unsigned AbstractCellCycleModel::mDimension
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().

◆ mpCell

CellPtr AbstractCellCycleModel::mpCell
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().

◆ mReadyToDivide


The documentation for this class was generated from the following files: