Chaste
Release::2018.1
|
#include <AbstractSrnModel.hpp>
Public Member Functions | |
AbstractSrnModel () | |
virtual | ~AbstractSrnModel () |
void | SetCell (CellPtr pCell) |
virtual void | Initialise () |
virtual void | InitialiseDaughterCell () |
CellPtr | GetCell () |
void | SetSimulatedToTime (double simulatedToTime) |
double | GetSimulatedToTime () const |
virtual void | SimulateToCurrentTime ()=0 |
virtual void | ResetForDivision () |
virtual AbstractSrnModel * | CreateSrnModel ()=0 |
void | OutputSrnModelInfo (out_stream &rParamsFile) |
virtual void | OutputSrnModelParameters (out_stream &rParamsFile) |
Public Member Functions inherited from Identifiable | |
virtual | ~Identifiable () |
std::string | GetIdentifier () const |
Protected Member Functions | |
AbstractSrnModel (const AbstractSrnModel &rModel) | |
Protected Attributes | |
CellPtr | mpCell |
double | mSimulatedToTime |
Private Member Functions | |
template<class Archive > | |
void | serialize (Archive &archive, const unsigned int version) |
AbstractSrnModel & | operator= (const AbstractSrnModel &) |
Friends | |
class | boost::serialization::access |
The AbstractSrnModel contains basic information to all sub-cellular reaction network (SRN) models.
SRN models are noncopyable since cells are noncopyable.
Definition at line 61 of file AbstractSrnModel.hpp.
|
protected |
Protected copy-constructor for use by CreateSrnModel(). The only way for external code to create a copy of a SRN 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 SRN model will have had ResetForDivision() called just before CreateSrnModel() 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 SRN model to copy. |
Definition at line 55 of file AbstractSrnModel.cpp.
AbstractSrnModel::AbstractSrnModel | ( | ) |
Sets up a new AbstractSrnModel, gives it a birth time of the current simulation time (which is overwritten by some subclasses)
Definition at line 38 of file AbstractSrnModel.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 SRN model when it is destroyed.
Definition at line 43 of file AbstractSrnModel.cpp.
|
pure virtual |
Builder method to create new instances of the SRN model.
As this method is pure virtual, it must be overridden in subclasses.
This method is called by Cell::Divide() to create a SRN model for the daughter cell. Note that the parent SRN model will have had ResetForDivision() called just before CreateSrnModel() 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.
Implemented in NullSrnModel, Goldbeter1991SrnModel, and DeltaNotchSrnModel.
Referenced by Cell::Divide().
CellPtr AbstractSrnModel::GetCell | ( | ) |
Definition at line 86 of file AbstractSrnModel.cpp.
References mpCell.
double AbstractSrnModel::GetSimulatedToTime | ( | ) | const |
Definition at line 97 of file AbstractSrnModel.cpp.
References mSimulatedToTime.
|
virtual |
Initialise the SRN 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(), CreateSrnModel() 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 Goldbeter1991SrnModel, and DeltaNotchSrnModel.
Definition at line 47 of file AbstractSrnModel.cpp.
Referenced by DeltaNotchSrnModel::Initialise(), Goldbeter1991SrnModel::Initialise(), and Cell::InitialiseSrnModel().
|
virtual |
Initialise the new daughter cell's SRN 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 SRN 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 CreateSrnModel() (called on the reset parent to create the new cell-cycle model object).
Definition at line 51 of file AbstractSrnModel.cpp.
|
private |
Prevent copy-assignment of this class, or its subclasses. Note that we do not define this method, therefore statements like "AbstractSrnModel new = old;" will not compile. We do not inherit from boost::noncopyable because we *do* define a protected copy-constructor, for use by CreateSrnModel.
void AbstractSrnModel::OutputSrnModelInfo | ( | out_stream & | rParamsFile | ) |
Output SRN model used in the simulation to file and then call OutputSrnParameters() to output all relevant parameters.
rParamsFile | the file stream to which the parameters are output |
Definition at line 111 of file AbstractSrnModel.cpp.
References Identifiable::GetIdentifier(), and OutputSrnModelParameters().
|
virtual |
Output SRN 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 |
Reimplemented in AbstractOdeSrnModel, DeltaNotchSrnModel, and Goldbeter1991SrnModel.
Definition at line 120 of file AbstractSrnModel.cpp.
Referenced by OutputSrnModelInfo(), and AbstractOdeSrnModel::OutputSrnModelParameters().
|
virtual |
Each SRN model must be able to be reset 'after' a cell division.
Actually, this method is called from Cell::Divide() to reset the SRN just before the daughter cell is created. CreateSrnModel() can then clone our state to generate a cell-cycle model instance for the daughter cell.
Reimplemented in AbstractOdeSrnModel.
Definition at line 74 of file AbstractSrnModel.cpp.
References SimulationTime::Instance(), mSimulatedToTime, and SimulateToCurrentTime().
Referenced by Cell::Divide(), and AbstractOdeSrnModel::ResetForDivision().
|
inlineprivate |
Archive the SRN model and its member variables.
archive | the archive |
version | the current version of this class |
Definition at line 74 of file AbstractSrnModel.hpp.
References SerializableSingleton< SINGLETON_CLASS >::GetSerializationWrapper(), SimulationTime::Instance(), and mSimulatedToTime.
void AbstractSrnModel::SetCell | ( | CellPtr | pCell | ) |
Gives the SRN model a pointer to its host cell.
pCell | pointer to the cell |
Definition at line 81 of file AbstractSrnModel.cpp.
References mpCell.
Referenced by Cell::Cell(), and Cell::SetSrnModel().
void AbstractSrnModel::SetSimulatedToTime | ( | double | simulatedToTime | ) |
Set the time that the SRN simulation has run to.
simulatedToTime | the current simulation time of the SRN. |
Definition at line 92 of file AbstractSrnModel.cpp.
References mSimulatedToTime.
Referenced by NullSrnModel::SimulateToCurrentTime(), and AbstractOdeSrnModel::SimulateToCurrentTime().
|
pure virtual |
Simulate the SRN to the current time.
As this method is pure virtual, it must be overridden in subclasses.
Implemented in AbstractOdeSrnModel, Goldbeter1991SrnModel, DeltaNotchSrnModel, and NullSrnModel.
Referenced by Cell::ReadyToDivide(), and ResetForDivision().
|
friend |
Needed for serialization.
Definition at line 66 of file AbstractSrnModel.hpp.
|
protected |
The cell that this model is associated with.
Definition at line 99 of file AbstractSrnModel.hpp.
Referenced by GetCell(), AbstractOdeSrnModel::Initialise(), SetCell(), and DeltaNotchSrnModel::UpdateDeltaNotch().
|
protected |
The time the SRN model has been simulated to.
Definition at line 104 of file AbstractSrnModel.hpp.
Referenced by GetSimulatedToTime(), AbstractOdeSrnModel::Initialise(), AbstractOdeSrnModel::ResetForDivision(), ResetForDivision(), serialize(), and SetSimulatedToTime().