22 #include "utilities.hpp"
25 #include "sbml/SBMLDocument.h"
26 #include "sbml/Model.h"
27 #include "sbml/Rule.h"
28 #include "sbml/Species.h"
29 #include "sbml/Parameter.h"
30 #include "sbml/math/ASTNode.h"
57 CPPUNIT_ASSERT(pDataModel->
getModel() != NULL);
60 CPPUNIT_ASSERT(pDocument != NULL);
61 Model* pModel = pDocument->getModel();
62 CPPUNIT_ASSERT(pModel != NULL);
65 CPPUNIT_ASSERT(pModel->getNumCompartments() == 1);
66 Compartment* pCompartment = pModel->getCompartment(0);
67 CPPUNIT_ASSERT(pCompartment->getConstant() ==
true);
68 CPPUNIT_ASSERT(pModel->getNumParameters() == 0);
69 CPPUNIT_ASSERT(pModel->getNumSpecies() == 1);
70 const Species* pSpecies = pModel->getSpecies(0);
71 std::string idSpeciesA = pSpecies->getId();
72 CPPUNIT_ASSERT(pSpecies->getHasOnlySubstanceUnits() ==
false);
73 CPPUNIT_ASSERT(pModel->getNumRules() == 1);
74 AssignmentRule* pRule =
dynamic_cast<AssignmentRule*
>(pModel->getRule(0));
75 CPPUNIT_ASSERT(pRule != NULL);
76 CPPUNIT_ASSERT(pRule->getVariable() == idSpeciesA);
77 const ASTNode* pMath = pRule->getMath();
78 CPPUNIT_ASSERT(pMath != NULL);
81 CPPUNIT_ASSERT(pMath->getType() == AST_FUNCTION_PIECEWISE);
82 CPPUNIT_ASSERT(pMath->getNumChildren() == 3);
83 CPPUNIT_ASSERT(pMath->getChild(0) != NULL);
84 CPPUNIT_ASSERT(pMath->getChild(0)->getType() == AST_REAL);
85 CPPUNIT_ASSERT(pMath->getChild(0)->getReal() < 1e-6);
86 CPPUNIT_ASSERT(pMath->getChild(2) != NULL);
87 CPPUNIT_ASSERT(pMath->getChild(2)->getType() == AST_REAL);
88 CPPUNIT_ASSERT(fabs((pMath->getChild(2)->getReal() - 10.0) / 10.0) < 1e-3);
89 pMath = pMath->getChild(1);
90 CPPUNIT_ASSERT(pMath != NULL);
91 CPPUNIT_ASSERT(pMath->getType() == AST_RELATIONAL_LT);
92 CPPUNIT_ASSERT(pMath->getNumChildren() == 2);
93 CPPUNIT_ASSERT(pMath->getChild(0) != NULL);
94 CPPUNIT_ASSERT(pMath->getChild(0)->getType() == AST_NAME_TIME);
95 CPPUNIT_ASSERT(pMath->getChild(1) != NULL);
96 CPPUNIT_ASSERT(pMath->getChild(1)->getType() == AST_REAL);
97 CPPUNIT_ASSERT(fabs((pMath->getChild(1)->getReal() - 5.0) / 5.0) < 1e-3);
98 CPPUNIT_ASSERT(pModel->getNumReactions() == 0);
102 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
103 "<!-- generated with COPASI 4.3 (Build 25) (http://www.copasi.org) at 2008-03-04 00:11:31 UTC -->\n"
104 "<COPASI xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://www.copasi.org/static/schema.xsd\" versionMajor=\"1\" versionMinor=\"0\" versionDevel=\"25\">\n"
105 " <Model key=\"Model_0\" name=\"New Model\" timeUnit=\"s\" volumeUnit=\"ml\" quantityUnit=\"mmol\" type=\"deterministic\">\n"
107 " <body xmlns=\"http://www.w3.org/1999/xhtml\">\n"
111 " <ListOfCompartments>\n"
112 " <Compartment key=\"Compartment_0\" name=\"compartment\" simulationType=\"fixed\">\n"
114 " </ListOfCompartments>\n"
115 " <ListOfMetabolites>\n"
116 " <Metabolite key=\"Metabolite_0\" name=\"species\" simulationType=\"assignment\" compartment=\"Compartment_0\">\n"
118 " if(<CN=Root,Model=New Model,Reference=Time> lt 5,0,10)\n"
121 " </ListOfMetabolites>\n"
123 " <StateTemplateVariable objectReference=\"Model_0\"/>\n"
124 " <StateTemplateVariable objectReference=\"Metabolite_0\"/>\n"
125 " <StateTemplateVariable objectReference=\"Compartment_0\"/>\n"
126 " </StateTemplate>\n"
127 " <InitialState type=\"initialState\">\n"
132 " <Task key=\"Task_9\" name=\"Steady-State\" type=\"steadyState\" scheduled=\"false\" updateModel=\"false\">\n"
133 " <Report reference=\"Report_6\" target=\"\" append=\"1\"/>\n"
135 " <Parameter name=\"JacobianRequested\" type=\"bool\" value=\"1\"/>\n"
136 " <Parameter name=\"StabilityAnalysisRequested\" type=\"bool\" value=\"1\"/>\n"
138 " <Method name=\"Enhanced Newton\" type=\"EnhancedNewton\">\n"
139 " <Parameter name=\"Resolution\" type=\"unsignedFloat\" value=\"1e-009\"/>\n"
140 " <Parameter name=\"Derivation Factor\" type=\"unsignedFloat\" value=\"0.001\"/>\n"
141 " <Parameter name=\"Use Newton\" type=\"bool\" value=\"1\"/>\n"
142 " <Parameter name=\"Use Integration\" type=\"bool\" value=\"1\"/>\n"
143 " <Parameter name=\"Use Back Integration\" type=\"bool\" value=\"1\"/>\n"
144 " <Parameter name=\"Accept Negative Concentrations\" type=\"bool\" value=\"0\"/>\n"
145 " <Parameter name=\"Iteration Limit\" type=\"unsignedInteger\" value=\"50\"/>\n"
148 " <Task key=\"Task_8\" name=\"Time-Course\" type=\"timeCourse\" scheduled=\"false\" updateModel=\"false\">\n"
150 " <Parameter name=\"StepNumber\" type=\"unsignedInteger\" value=\"100\"/>\n"
151 " <Parameter name=\"StepSize\" type=\"float\" value=\"0.01\"/>\n"
152 " <Parameter name=\"Duration\" type=\"float\" value=\"1\"/>\n"
153 " <Parameter name=\"TimeSeriesRequested\" type=\"bool\" value=\"1\"/>\n"
154 " <Parameter name=\"OutputStartTime\" type=\"float\" value=\"0\"/>\n"
156 " <Method name=\"Deterministic (LSODA)\" type=\"Deterministic(LSODA)\">\n"
157 " <Parameter name=\"Integrate Reduced Model\" type=\"bool\" value=\"1\"/>\n"
158 " <Parameter name=\"Relative Tolerance\" type=\"unsignedFloat\" value=\"1e-006\"/>\n"
159 " <Parameter name=\"Absolute Tolerance\" type=\"unsignedFloat\" value=\"1e-012\"/>\n"
160 " <Parameter name=\"Adams Max Order\" type=\"unsignedInteger\" value=\"12\"/>\n"
161 " <Parameter name=\"BDF Max Order\" type=\"unsignedInteger\" value=\"5\"/>\n"
162 " <Parameter name=\"Max Internal Steps\" type=\"unsignedInteger\" value=\"10000\"/>\n"
165 " <Task key=\"Task_7\" name=\"Scan\" type=\"scan\" scheduled=\"false\" updateModel=\"false\">\n"
167 " <Parameter name=\"Subtask\" type=\"unsignedInteger\" value=\"1\"/>\n"
168 " <ParameterGroup name=\"ScanItems\">\n"
169 " </ParameterGroup>\n"
170 " <Parameter name=\"Output in subtask\" type=\"bool\" value=\"1\"/>\n"
171 " <Parameter name=\"Adjust initial conditions\" type=\"bool\" value=\"0\"/>\n"
173 " <Method name=\"Scan Framework\" type=\"ScanFramework\">\n"
176 " <Task key=\"Task_6\" name=\"Elementary Flux Modes\" type=\"fluxMode\" scheduled=\"false\" updateModel=\"false\">\n"
177 " <Report reference=\"Report_5\" target=\"\" append=\"1\"/>\n"
180 " <Method name=\"EFM Algorithm\" type=\"EFMAlgorithm\">\n"
183 " <Task key=\"Task_5\" name=\"Optimization\" type=\"optimization\" scheduled=\"false\" updateModel=\"false\">\n"
184 " <Report reference=\"Report_4\" target=\"\" append=\"1\"/>\n"
186 " <Parameter name=\"Steady-State\" type=\"key\" value=\"\"/>\n"
187 " <Parameter name=\"Time-Course\" type=\"key\" value=\"\"/>\n"
188 " <Parameter name=\"ObjectiveFunction\" type=\"key\" value=\"\"/>\n"
189 " <Parameter name=\"Maximize\" type=\"bool\" value=\"0\"/>\n"
190 " <ParameterGroup name=\"OptimizationItemList\">\n"
191 " </ParameterGroup>\n"
192 " <ParameterGroup name=\"OptimizationConstraintList\">\n"
193 " </ParameterGroup>\n"
195 " <Method name=\"Random Search\" type=\"RandomSearch\">\n"
196 " <Parameter name=\"Number of Iterations\" type=\"unsignedInteger\" value=\"100000\"/>\n"
197 " <Parameter name=\"Random Number Generator\" type=\"unsignedInteger\" value=\"1\"/>\n"
198 " <Parameter name=\"Seed\" type=\"unsignedInteger\" value=\"0\"/>\n"
201 " <Task key=\"Task_4\" name=\"Parameter Estimation\" type=\"parameterFitting\" scheduled=\"false\" updateModel=\"false\">\n"
202 " <Report reference=\"Report_3\" target=\"\" append=\"1\"/>\n"
204 " <Parameter name=\"Steady-State\" type=\"key\" value=\"Task_9\"/>\n"
205 " <Parameter name=\"Time-Course\" type=\"key\" value=\"Task_8\"/>\n"
206 " <ParameterGroup name=\"OptimizationItemList\">\n"
207 " </ParameterGroup>\n"
208 " <ParameterGroup name=\"OptimizationConstraintList\">\n"
209 " </ParameterGroup>\n"
210 " <ParameterGroup name=\"Experiment Set\">\n"
211 " </ParameterGroup>\n"
213 " <Method name=\"Evolutionary Programming\" type=\"EvolutionaryProgram\">\n"
214 " <Parameter name=\"Number of Generations\" type=\"unsignedInteger\" value=\"200\"/>\n"
215 " <Parameter name=\"Population Size\" type=\"unsignedInteger\" value=\"20\"/>\n"
216 " <Parameter name=\"Random Number Generator\" type=\"unsignedInteger\" value=\"1\"/>\n"
217 " <Parameter name=\"Seed\" type=\"unsignedInteger\" value=\"0\"/>\n"
220 " <Task key=\"Task_3\" name=\"Metabolic Control Analysis\" type=\"metabolicControlAnalysis\" scheduled=\"false\" updateModel=\"false\">\n"
221 " <Report reference=\"Report_2\" target=\"\" append=\"1\"/>\n"
223 " <Parameter name=\"Steady-State\" type=\"key\" value=\"Task_9\"/>\n"
225 " <Method name=\"MCA Method (Reder)\" type=\"MCAMethod(Reder)\">\n"
226 " <Parameter name=\"Modulation Factor\" type=\"unsignedFloat\" value=\"1e-009\"/>\n"
229 " <Task key=\"Task_2\" name=\"Lyapunov Exponents\" type=\"lyapunovExponents\" scheduled=\"false\" updateModel=\"false\">\n"
230 " <Report reference=\"Report_1\" target=\"\" append=\"1\"/>\n"
232 " <Parameter name=\"ExponentNumber\" type=\"unsignedInteger\" value=\"3\"/>\n"
233 " <Parameter name=\"DivergenceRequested\" type=\"bool\" value=\"1\"/>\n"
234 " <Parameter name=\"TransientTime\" type=\"float\" value=\"0\"/>\n"
236 " <Method name=\"Wolf Method\" type=\"WolfMethod\">\n"
237 " <Parameter name=\"Orthonormalization Interval\" type=\"unsignedFloat\" value=\"1\"/>\n"
238 " <Parameter name=\"Overall time\" type=\"unsignedFloat\" value=\"1000\"/>\n"
239 " <Parameter name=\"Relative Tolerance\" type=\"unsignedFloat\" value=\"1e-006\"/>\n"
240 " <Parameter name=\"Use Default Absolute Tolerance\" type=\"bool\" value=\"1\"/>\n"
241 " <Parameter name=\"Absolute Tolerance\" type=\"unsignedFloat\" value=\"1e-012\"/>\n"
242 " <Parameter name=\"Adams Max Order\" type=\"unsignedInteger\" value=\"12\"/>\n"
243 " <Parameter name=\"BDF Max Order\" type=\"unsignedInteger\" value=\"5\"/>\n"
244 " <Parameter name=\"Max Internal Steps\" type=\"unsignedInteger\" value=\"10000\"/>\n"
247 " <Task key=\"Task_1\" name=\"Sensitivities\" type=\"sensitivities\" scheduled=\"false\" updateModel=\"false\">\n"
248 " <Report reference=\"Report_0\" target=\"\" append=\"1\"/>\n"
250 " <Parameter name=\"SubtaskType\" type=\"unsignedInteger\" value=\"1\"/>\n"
251 " <ParameterGroup name=\"TargetFunctions\">\n"
252 " <Parameter name=\"SingleObject\" type=\"cn\" value=\"\"/>\n"
253 " <Parameter name=\"ObjectListType\" type=\"unsignedInteger\" value=\"7\"/>\n"
254 " </ParameterGroup>\n"
255 " <ParameterGroup name=\"ListOfVariables\">\n"
256 " <ParameterGroup name=\"Variables\">\n"
257 " <Parameter name=\"SingleObject\" type=\"cn\" value=\"\"/>\n"
258 " <Parameter name=\"ObjectListType\" type=\"unsignedInteger\" value=\"41\"/>\n"
259 " </ParameterGroup>\n"
260 " </ParameterGroup>\n"
262 " <Method name=\"Sensitivities Method\" type=\"SensitivitiesMethod\">\n"
263 " <Parameter name=\"Delta factor\" type=\"unsignedFloat\" value=\"1e-006\"/>\n"
264 " <Parameter name=\"Delta minimum\" type=\"unsignedFloat\" value=\"1e-012\"/>\n"
267 " <Task key=\"Task_0\" name=\"Moieties\" type=\"moieties\" scheduled=\"false\" updateModel=\"false\">\n"
270 " <Method name=\"Householder Reduction\" type=\"Householder\">\n"
275 " <Report key=\"Report_6\" name=\"Steady-State\" taskType=\"steadyState\" separator=\"	\" precision=\"6\">\n"
277 " <body xmlns=\"http://www.w3.org/1999/xhtml\">\n"
278 " Automatically generated report.\n"
282 " <Object cn=\"CN=Root,Vector=TaskList[Steady-State]\"/>\n"
285 " <Report key=\"Report_5\" name=\"Elementary Flux Modes\" taskType=\"fluxMode\" separator=\"	\" precision=\"6\">\n"
287 " <body xmlns=\"http://www.w3.org/1999/xhtml\">\n"
288 " Automatically generated report.\n"
292 " <Object cn=\"CN=Root,Vector=TaskList[Elementary Flux Modes],Object=Result\"/>\n"
295 " <Report key=\"Report_4\" name=\"Optimization\" taskType=\"optimization\" separator=\"	\" precision=\"6\">\n"
297 " <body xmlns=\"http://www.w3.org/1999/xhtml\">\n"
298 " Automatically generated report.\n"
302 " <Object cn=\"CN=Root,Vector=TaskList[Optimization],Object=Description\"/>\n"
303 " <Object cn=\"String=\\[Function Evaluations\\]\"/>\n"
304 " <Object cn=\"Separator=	\"/>\n"
305 " <Object cn=\"String=\\[Best Value\\]\"/>\n"
306 " <Object cn=\"Separator=	\"/>\n"
307 " <Object cn=\"String=\\[Best Parameters\\]\"/>\n"
310 " <Object cn=\"CN=Root,Vector=TaskList[Optimization],Problem=Optimization,Reference=Function Evaluations\"/>\n"
311 " <Object cn=\"Separator=	\"/>\n"
312 " <Object cn=\"CN=Root,Vector=TaskList[Optimization],Problem=Optimization,Reference=Best Value\"/>\n"
313 " <Object cn=\"Separator=	\"/>\n"
314 " <Object cn=\"CN=Root,Vector=TaskList[Optimization],Problem=Optimization,Reference=Best Parameters\"/>\n"
317 " <Object cn=\"String=
\"/>\n"
318 " <Object cn=\"CN=Root,Vector=TaskList[Optimization],Object=Result\"/>\n"
321 " <Report key=\"Report_3\" name=\"Parameter Estimation\" taskType=\"parameterFitting\" separator=\"	\" precision=\"6\">\n"
323 " <body xmlns=\"http://www.w3.org/1999/xhtml\">\n"
324 " Automatically generated report.\n"
328 " <Object cn=\"CN=Root,Vector=TaskList[Parameter Estimation],Object=Description\"/>\n"
329 " <Object cn=\"String=\\[Function Evaluations\\]\"/>\n"
330 " <Object cn=\"Separator=	\"/>\n"
331 " <Object cn=\"String=\\[Best Value\\]\"/>\n"
332 " <Object cn=\"Separator=	\"/>\n"
333 " <Object cn=\"String=\\[Best Parameters\\]\"/>\n"
336 " <Object cn=\"CN=Root,Vector=TaskList[Parameter Estimation],Problem=Parameter Estimation,Reference=Function Evaluations\"/>\n"
337 " <Object cn=\"Separator=	\"/>\n"
338 " <Object cn=\"CN=Root,Vector=TaskList[Parameter Estimation],Problem=Parameter Estimation,Reference=Best Value\"/>\n"
339 " <Object cn=\"Separator=	\"/>\n"
340 " <Object cn=\"CN=Root,Vector=TaskList[Parameter Estimation],Problem=Parameter Estimation,Reference=Best Parameters\"/>\n"
343 " <Object cn=\"String=
\"/>\n"
344 " <Object cn=\"CN=Root,Vector=TaskList[Parameter Estimation],Object=Result\"/>\n"
347 " <Report key=\"Report_2\" name=\"Metabolic Control Analysis\" taskType=\"metabolicControlAnalysis\" separator=\"	\" precision=\"6\">\n"
349 " <body xmlns=\"http://www.w3.org/1999/xhtml\">\n"
350 " Automatically generated report.\n"
354 " <Object cn=\"CN=Root,Vector=TaskList[Metabolic Control Analysis],Object=Description\"/>\n"
357 " <Object cn=\"String=
\"/>\n"
358 " <Object cn=\"CN=Root,Vector=TaskList[Metabolic Control Analysis],Object=Result\"/>\n"
361 " <Report key=\"Report_1\" name=\"Lyapunov Exponents\" taskType=\"lyapunovExponents\" separator=\"	\" precision=\"6\">\n"
363 " <body xmlns=\"http://www.w3.org/1999/xhtml\">\n"
364 " Automatically generated report.\n"
368 " <Object cn=\"CN=Root,Vector=TaskList[Lyapunov Exponents],Object=Description\"/>\n"
371 " <Object cn=\"String=
\"/>\n"
372 " <Object cn=\"CN=Root,Vector=TaskList[Lyapunov Exponents],Object=Result\"/>\n"
375 " <Report key=\"Report_0\" name=\"Sensitivities\" taskType=\"sensitivities\" separator=\"	\" precision=\"6\">\n"
377 " <body xmlns=\"http://www.w3.org/1999/xhtml\">\n"
378 " Automatically generated report.\n"
382 " <Object cn=\"CN=Root,Vector=TaskList[Sensitivities],Object=Description\"/>\n"
385 " <Object cn=\"String=
\"/>\n"
386 " <Object cn=\"CN=Root,Vector=TaskList[Sensitivities],Object=Result\"/>\n"
389 " </ListOfReports>\n"
SBMLDocument * getCurrentSBMLDocument()
std::string exportSBMLToString(CProcessReport *pExportHandler, int sbmlLevel, int sbmlVersion)
static const char * MODEL_STRING
bool load_cps_model_from_stream(std::istream &is, CCopasiDataModel &dataModel)
static CCopasiDataModel * pCOPASIDATAMODEL
static CCopasiDataModel * addDatamodel()
static void init(int argc, char *argv[], const bool &withGui=false)