From a95332e821e8f942deb08935d9a793beae283e24 Mon Sep 17 00:00:00 2001 From: Kwabena N Amponsah Date: Mon, 20 Jan 2025 15:01:23 +0000 Subject: [PATCH] #3 Add test data for Goldbeter1991 model --- .../data/Goldbeter1991/Goldbeter1991.xml | 464 ++++++++++++++++++ .../Goldbeter1991/Goldbeter1991SrnModel.cpp | 125 +++++ .../Goldbeter1991/Goldbeter1991SrnModel.hpp | 89 ++++ 3 files changed, 678 insertions(+) create mode 100644 chaste_codegen_sbml/tests/data/Goldbeter1991/Goldbeter1991.xml create mode 100644 chaste_codegen_sbml/tests/data/Goldbeter1991/Goldbeter1991SrnModel.cpp create mode 100644 chaste_codegen_sbml/tests/data/Goldbeter1991/Goldbeter1991SrnModel.hpp diff --git a/chaste_codegen_sbml/tests/data/Goldbeter1991/Goldbeter1991.xml b/chaste_codegen_sbml/tests/data/Goldbeter1991/Goldbeter1991.xml new file mode 100644 index 0000000..74d9201 --- /dev/null +++ b/chaste_codegen_sbml/tests/data/Goldbeter1991/Goldbeter1991.xml @@ -0,0 +1,464 @@ + + + + + +
Goldbeter - Min Mit Oscil
+

Minimal cascade model for the mitotic oscillator involving cyclin and cdc2 kinase.

+
+

This model has been generated by MathSBML 2.4.6 (14-January-2005) 14-January-2005 18:33:39.806932.

+
+

This model is described in the article:

+ +
Goldbeter A.
+
Proc. Natl. Acad. Sci. U.S.A. 1991; 88(20):9107-11
+

Abstract:

+

A minimal model for the mitotic oscillator is presented. The model, built on recent experimental advances, is based on the cascade of post-translational modification that modulates the activity of cdc2 kinase during the cell cycle. The model pertains to the situation encountered in early amphibian embryos, where the accumulation of cyclin suffices to trigger the onset of mitosis. In the first cycle of the bicyclic cascade model, cyclin promotes the activation of cdc2 kinase through reversible dephosphorylation, and in the second cycle, cdc2 kinase activates a cyclin protease by reversible phosphorylation. That cyclin activates cdc2 kinase while the kinase triggers the degradation of cyclin has suggested that oscillations may originate from such a negative feedback loop [Félix, M. A., Labbé, J. C., Dorée, M., Hunt, T. & Karsenti, E. (1990) Nature (London) 346, 379-382]. This conjecture is corroborated by the model, which indicates that sustained oscillations of the limit cycle type can arise in the cascade, provided that a threshold exists in the activation of cdc2 kinase by cyclin and in the activation of cyclin proteolysis by cdc2 kinase. The analysis shows how miototic oscillations may readily arise from time lags associated with these thresholds and from the delayed negative feedback provided by cdc2-induced cyclin degradation. A mechanism for the origin of the thresholds is proposed in terms of the phenomenon of zero-order ultrasensitivity previously described for biochemical systems regulated by covalent modification.

+
+
+

This model is hosted on BioModels Database + and identified by: BIOMD0000000003 + .

+

To cite BioModels Database, please use: BioModels Database: An enhanced, curated and annotated resource for published quantitative kinetic models + .

+
+

To the extent possible under law, all copyright and related or neighbouring rights to this encoded model have been dedicated to the public domain worldwide. Please refer to CC0 Public Domain Dedication + for more information.

+
+ + +
+ + + + + + + + Shapiro + Bruce + + bshapiro@jpl.nasa.gov + + NASA Jet Propulsion Laboratory + + + + + Chelliah + Vijayalakshmi + + viji@ebi.ac.uk + + EMBL-EBI + + + + + + 2005-02-06T23:39:40Z + + + 2013-05-16T14:38:01Z + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + C + VM1 + + + + + C + Kc + + -1 + + + + + + + + + M + VM3 + + + + + + + + + + + + + + + + + + + + + + + + + cell + vi + + + + + + + + + + + + + + + + + + + + + + + + + + + C + cell + kd + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + C + cell + vd + X + + + + + C + Kd + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cell + + + 1 + + + -1 + M + + + V1 + + + + + K1 + + + -1 + M + + 1 + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cell + M + V2 + + + + + K2 + M + + -1 + + + + + + + + + + + + + + + + + + cell + V3 + + + 1 + + + -1 + X + + + + + + + K3 + + + -1 + X + + 1 + + -1 + + + + + + + + + + + + + + + + + cell + V4 + X + + + + + K4 + X + + -1 + + + + + + + + + + +
+
\ No newline at end of file diff --git a/chaste_codegen_sbml/tests/data/Goldbeter1991/Goldbeter1991SrnModel.cpp b/chaste_codegen_sbml/tests/data/Goldbeter1991/Goldbeter1991SrnModel.cpp new file mode 100644 index 0000000..7f3f731 --- /dev/null +++ b/chaste_codegen_sbml/tests/data/Goldbeter1991/Goldbeter1991SrnModel.cpp @@ -0,0 +1,125 @@ +#include "Goldbeter1991SrnModel.hpp" +#include "CellwiseOdeSystemInformation.hpp" +/* SBML ODE System */ +Goldbeter1991OdeSystem::Goldbeter1991OdeSystem (std::vector stateVariables) + : AbstractOdeSystem(3) +{ + mpSystemInfo.reset(new CellwiseOdeSystemInformation); + + Init(); + + SetDefaultInitialCondition(0, 0.01); + SetDefaultInitialCondition(1, 0.01); + SetDefaultInitialCondition(2, 0.01); + + + if (stateVariables != std::vector()) { + SetStateVariables(stateVariables); + } +} + +Goldbeter1991OdeSystem::~Goldbeter1991OdeSystem() +{ +} + +void Goldbeter1991OdeSystem::Init() + { + /* Initialise the parameters. */ + cell = 1.0; + V1 = 0.0; + V3 = 0.0; + VM1 = 3.0; + VM3 = 1.0; + Kc = 0.5; +} + +void Goldbeter1991OdeSystem::EvaluateYDerivatives(double time, const std::vector& rY, std::vector& rDY) +{ + /* Define state variables */ + double C = rY[0]; // Cyclin + double M = rY[1]; // cdc_2_kinase + double X = rY[2]; // Cyclin_Protease + + /* Define state parameters */ + + /* Define algebraic rules. */ + V1 = C * VM1 * pow(C + Kc, -1); + V3 = M * VM3; + + /* Define the reactions in this model. */ + // creation of cyclin + double vi = 0.025; + double reaction1 = cell * vi; + + // default degradation of cyclin + double kd = 0.01; + double reaction2 = C * cell * kd; + + // cdc2 kinase triggered degration of cyclin + double vd = 0.25; + double Kd = 0.02; + double reaction3 = C * cell * vd * X * pow(C + Kd, -1); + + // activation of cdc2 kinase + double K1 = 0.005; + double reaction4 = cell * (1 + -1 * M) * V1 * pow(K1 + -1 * M + 1, -1); + + // deactivation of cdc2 kinase + double V2 = 1.5; + double K2 = 0.005; + double reaction5 = cell * M * V2 * pow(K2 + M, -1); + + // activation of cyclin protease + double K3 = 0.005; + double reaction6 = cell * V3 * (1 + -1 * X) * pow(K3 + -1 * X + 1, -1); + + // deactivation of cyclin protease + double K4 = 0.005; + double V4 = 0.5; + double reaction7 = cell * V4 * X * pow(K4 + X, -1); + + + rDY[0] = (reaction1 - reaction2 - reaction3) / cell; // dCyclin/dt + rDY[1] = (reaction4 - reaction5) / cell; // dcdc_2_kinase/dt + rDY[2] = (reaction6 - reaction7) / cell; // dCyclin Protease/dt + + /* Account for the differences in timescales. */ + rDY[0] *= 3600.0; + rDY[1] *= 3600.0; + rDY[2] *= 3600.0; + +} + +template<> +void CellwiseOdeSystemInformation::Initialise() +{ + this->mVariableNames.push_back("Cyclin"); + this->mVariableUnits.push_back("non-dim"); + this->mInitialConditions.push_back(0.01); + + this->mVariableNames.push_back("cdc_2_kinase"); + this->mVariableUnits.push_back("non-dim"); + this->mInitialConditions.push_back(0.01); + + this->mVariableNames.push_back("Cyclin Protease"); + this->mVariableUnits.push_back("non-dim"); + this->mInitialConditions.push_back(0.01); + + + this->mInitialised = true; +} + +/* Define SRN model using Wrappers. */ +#include "SbmlSrnWrapperModel.hpp" +#include "SbmlSrnWrapperModel.cpp" + +typedef SbmlSrnWrapperModel Goldbeter1991SrnModel; + +// Declare identifiers for the serializer +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Goldbeter1991OdeSystem) +EXPORT_TEMPLATE_CLASS2(SbmlSrnWrapperModel, Goldbeter1991OdeSystem, 5) + +#include "CellCycleModelOdeSolverExportWrapper.hpp" +EXPORT_CELL_CYCLE_MODEL_ODE_SOLVER(Goldbeter1991SrnModel) + diff --git a/chaste_codegen_sbml/tests/data/Goldbeter1991/Goldbeter1991SrnModel.hpp b/chaste_codegen_sbml/tests/data/Goldbeter1991/Goldbeter1991SrnModel.hpp new file mode 100644 index 0000000..dc1d256 --- /dev/null +++ b/chaste_codegen_sbml/tests/data/Goldbeter1991/Goldbeter1991SrnModel.hpp @@ -0,0 +1,89 @@ +#ifndef GOLDBETER1991ODESYSTEMANDSRNMODEL_HPP_ +#define GOLDBETER1991ODESYSTEMANDSRNMODEL_HPP_ + +#include "ChasteSerialization.hpp" +#include +#include + +#include +#include +#include "AbstractOdeSystem.hpp" + +class Goldbeter1991OdeSystem : public AbstractOdeSystem +{ +private: + + /* Initialise compartments and values. */ + double cell; + + /* Initialise model parameters. */ + double V1; + double V3; + double VM1; + double VM3; + double Kc; + + + friend class boost::serialization::access; + template + void serialize(Archive & archive, const unsigned int version) + { + archive & boost::serialization::base_object(*this); + } + +public: + + /* Default constructor. */ + Goldbeter1991OdeSystem(std::vector stateVariables=std::vector()); + + /* Destructor. */ + ~Goldbeter1991OdeSystem(); + + + void Init(); + + void EvaluateYDerivatives(double time, const std::vector& rY, std::vector& rDY); + +}; + +namespace +{ +namespace serialization +{ +/* Serialize information required to construct a Goldbeter1991OdeSystem. */ +template +inline void save_construct_data( + Archive & ar, const Goldbeter1991OdeSystem * t, const unsigned int file_version) +{ + const std::vector state_variables = t->rGetConstStateVariables(); + ar & state_variables; +} +/* De-serialize constructor parameters and intiialise a Goldbeter1991OdeSystem. */ +template +inline void load_construct_data( + Archive & ar, Goldbeter1991OdeSystem * t, const unsigned int file_version) +{ + std::vector state_variables; + ar & state_variables; + + // Invoke inplace constructor to initialise instance + ::new(t)Goldbeter1991OdeSystem(state_variables); +} +} +} // namespace ... + +/* Define SRN model using Wrappers. */ +#include "SbmlSrnWrapperModel.hpp" +#include "SbmlSrnWrapperModel.cpp" + +typedef SbmlSrnWrapperModel Goldbeter1991SrnModel; + +// Declare identifiers for the serializer +#include "SerializationExportWrapper.hpp" +CHASTE_CLASS_EXPORT(Goldbeter1991OdeSystem) +EXPORT_TEMPLATE_CLASS2(SbmlSrnWrapperModel, Goldbeter1991OdeSystem, 5) + +#include "CellCycleModelOdeSolverExportWrapper.hpp" +EXPORT_CELL_CYCLE_MODEL_ODE_SOLVER(Goldbeter1991SrnModel) + +#endif /* GOLDBETER1991ODESYSTEMANDSRNMODEL_HPP_ */ \ No newline at end of file