COPASI API  4.16.103
test000055.cpp
Go to the documentation of this file.
1 // Begin CVS Header
2 // $Source: /Volumes/Home/Users/shoops/cvs/copasi_dev/copasi/sbml/unittests/test000055.cpp,v $
3 // $Revision: 1.7 $
4 // $Name: $
5 // $Author: gauges $
6 // $Date: 2010/03/11 11:52:00 $
7 // End CVS Header
8 
9 // Copyright (C) 2010 by Pedro Mendes, Virginia Tech Intellectual
10 // Properties, Inc., University of Heidelberg, and The University
11 // of Manchester.
12 // All rights reserved.
13 
14 // Copyright (C) 2008 by Pedro Mendes, Virginia Tech Intellectual
15 // Properties, Inc., EML Research, gGmbH, University of Heidelberg,
16 // and The University of Manchester.
17 // All rights reserved.
18 
19 #include "test000055.h"
20 
21 #include <sstream>
22 #include "utilities.hpp"
24 #include "copasi/model/CModel.h"
27 
28 #include "sbml/SBMLDocument.h"
29 #include "sbml/Model.h"
30 #include "sbml/Rule.h"
31 #include "sbml/Species.h"
32 #include "sbml/Parameter.h"
33 #include "sbml/math/ASTNode.h"
34 
36 
37 CCopasiDataModel* test000055::pCOPASIDATAMODEL = NULL;
38 
40 {
41  // Create the root container.
42  CCopasiRootContainer::init(0, NULL, false);
43  // Create the global data model.
45 }
46 
48 {
50 }
51 
53 {
54  // load the CPS file
55  // export to SBML
56  // check the resulting SBML model
57  CCopasiDataModel* pDataModel = pCOPASIDATAMODEL;
58  CPPUNIT_ASSERT(pDataModel->importSBMLFromString(test000055::MODEL_STRING));
59  CPPUNIT_ASSERT(pDataModel->getModel() != NULL);
60  // check the order of the rules
61  const SBMLDocument* pDocument = pDataModel->getCurrentSBMLDocument();
62  const Model* pSBMLModel = pDocument->getModel();
63  CPPUNIT_ASSERT(pSBMLModel != NULL);
64  CPPUNIT_ASSERT(pSBMLModel->getNumCompartments() == 0);
65  CPPUNIT_ASSERT(pSBMLModel->getNumSpecies() == 0);
66  CPPUNIT_ASSERT(pSBMLModel->getNumReactions() == 0);
67  CPPUNIT_ASSERT(pSBMLModel->getNumInitialAssignments() == 0);
68  CPPUNIT_ASSERT(pSBMLModel->getNumParameters() == 5);
69  const Parameter* pParameter1 = pSBMLModel->getParameter(0);
70  CPPUNIT_ASSERT(pParameter1 != NULL);
71  CPPUNIT_ASSERT(pParameter1->getConstant() == false);
72  const Parameter* pParameter2 = pSBMLModel->getParameter(1);
73  CPPUNIT_ASSERT(pParameter2 != NULL);
74  CPPUNIT_ASSERT(pParameter2->getConstant() == false);
75  const Parameter* pParameter3 = pSBMLModel->getParameter(2);
76  CPPUNIT_ASSERT(pParameter3 != NULL);
77  CPPUNIT_ASSERT(pParameter3->getConstant() == false);
78  const Parameter* pParameter4 = pSBMLModel->getParameter(3);
79  CPPUNIT_ASSERT(pParameter4 != NULL);
80  CPPUNIT_ASSERT(pParameter4->getConstant() == false);
81  const Parameter* pParameter5 = pSBMLModel->getParameter(4);
82  CPPUNIT_ASSERT(pParameter5 != NULL);
83  CPPUNIT_ASSERT(pParameter5->getConstant() == false);
84  CPPUNIT_ASSERT(pSBMLModel->getNumRules() == 5);
85 
86  const Rule* pRule = pSBMLModel->getRule(0);
87  CPPUNIT_ASSERT(pRule != NULL);
88  CPPUNIT_ASSERT(pRule->getTypeCode() == SBML_ASSIGNMENT_RULE);
89  const AssignmentRule* pARule = dynamic_cast<const AssignmentRule*>(pRule);
90  CPPUNIT_ASSERT(pARule != NULL);
91  CPPUNIT_ASSERT(pARule->getVariable() == pParameter1->getId());
92  CPPUNIT_ASSERT(pARule->isSetMath() == true);
93  const ASTNode* pMath = pARule->getMath();
94  CPPUNIT_ASSERT(pMath != NULL);
95  CPPUNIT_ASSERT(pMath->getType() == AST_TIMES);
96  CPPUNIT_ASSERT(pMath->getNumChildren() == 2);
97  const ASTNode* pChild1 = pMath->getChild(0);
98  CPPUNIT_ASSERT(pChild1 != NULL);
99  CPPUNIT_ASSERT(pChild1->getType() == AST_REAL);
100  CPPUNIT_ASSERT(fabs((pChild1->getReal() - 3.0) / 3.0) < 1e-15);
101  const ASTNode* pChild2 = pMath->getChild(1);
102  CPPUNIT_ASSERT(pChild2 != NULL);
103  CPPUNIT_ASSERT(pChild2->getType() == AST_REAL);
104  CPPUNIT_ASSERT(fabs((pChild2->getReal() - 4.0) / 4.0) < 1e-15);
105 
106  pRule = pSBMLModel->getRule(1);
107  CPPUNIT_ASSERT(pRule != NULL);
108  CPPUNIT_ASSERT(pRule->getTypeCode() == SBML_ASSIGNMENT_RULE);
109  pARule = dynamic_cast<const AssignmentRule*>(pRule);
110  CPPUNIT_ASSERT(pARule != NULL);
111  CPPUNIT_ASSERT(pARule->getVariable() == pParameter2->getId());
112  CPPUNIT_ASSERT(pARule->isSetMath() == true);
113  pMath = pARule->getMath();
114  CPPUNIT_ASSERT(pMath != NULL);
115  CPPUNIT_ASSERT(pMath->getType() == AST_PLUS);
116  CPPUNIT_ASSERT(pMath->getNumChildren() == 2);
117  pChild1 = pMath->getChild(0);
118  CPPUNIT_ASSERT(pChild1 != NULL);
119  CPPUNIT_ASSERT(pChild1->getType() == AST_REAL);
120  CPPUNIT_ASSERT(fabs((pChild1->getReal() - 2.0) / 2.0) < 1e-15);
121  pChild2 = pMath->getChild(1);
122  CPPUNIT_ASSERT(pChild2 != NULL);
123  CPPUNIT_ASSERT(pChild2->getType() == AST_REAL);
124  CPPUNIT_ASSERT(fabs((pChild2->getReal() - 9.0) / 9.0) < 1e-15);
125 
126  pRule = pSBMLModel->getRule(2);
127  CPPUNIT_ASSERT(pRule != NULL);
128  CPPUNIT_ASSERT(pRule->getTypeCode() == SBML_ASSIGNMENT_RULE);
129  pARule = dynamic_cast<const AssignmentRule*>(pRule);
130  CPPUNIT_ASSERT(pARule != NULL);
131  CPPUNIT_ASSERT(pARule->getVariable() == pParameter3->getId());
132  CPPUNIT_ASSERT(pARule->isSetMath() == true);
133  pMath = pARule->getMath();
134  CPPUNIT_ASSERT(pMath != NULL);
135  CPPUNIT_ASSERT(pMath->getType() == AST_MINUS);
136  CPPUNIT_ASSERT(pMath->getNumChildren() == 2);
137  pChild1 = pMath->getChild(0);
138  CPPUNIT_ASSERT(pChild1 != NULL);
139  CPPUNIT_ASSERT(pChild1->getType() == AST_REAL);
140  CPPUNIT_ASSERT(fabs((pChild1->getReal() - 8.0) / 8.0) < 1e-15);
141  pChild2 = pMath->getChild(1);
142  CPPUNIT_ASSERT(pChild2 != NULL);
143  CPPUNIT_ASSERT(pChild2->getType() == AST_REAL);
144  CPPUNIT_ASSERT(fabs((pChild2->getReal() - 4.0) / 4.0) < 1e-15);
145 
146  pRule = pSBMLModel->getRule(3);
147  CPPUNIT_ASSERT(pRule != NULL);
148  CPPUNIT_ASSERT(pRule->getTypeCode() == SBML_ASSIGNMENT_RULE);
149  pARule = dynamic_cast<const AssignmentRule*>(pRule);
150  CPPUNIT_ASSERT(pARule != NULL);
151  CPPUNIT_ASSERT(pARule->getVariable() == pParameter4->getId());
152  CPPUNIT_ASSERT(pARule->isSetMath() == true);
153  pMath = pARule->getMath();
154  CPPUNIT_ASSERT(pMath != NULL);
155  CPPUNIT_ASSERT(pMath->getType() == AST_DIVIDE);
156  CPPUNIT_ASSERT(pMath->getNumChildren() == 2);
157  pChild1 = pMath->getChild(0);
158  CPPUNIT_ASSERT(pChild1 != NULL);
159  CPPUNIT_ASSERT(pChild1->getType() == AST_REAL);
160  CPPUNIT_ASSERT(fabs((pChild1->getReal() - 9.0) / 9.0) < 1e-15);
161  pChild2 = pMath->getChild(1);
162  CPPUNIT_ASSERT(pChild2 != NULL);
163  CPPUNIT_ASSERT(pChild2->getType() == AST_REAL);
164  CPPUNIT_ASSERT(fabs((pChild2->getReal() - 3.0) / 3.0) < 1e-15);
165 
166  pRule = pSBMLModel->getRule(4);
167  CPPUNIT_ASSERT(pRule != NULL);
168  CPPUNIT_ASSERT(pRule->getTypeCode() == SBML_ASSIGNMENT_RULE);
169  pARule = dynamic_cast<const AssignmentRule*>(pRule);
170  CPPUNIT_ASSERT(pARule != NULL);
171  CPPUNIT_ASSERT(pARule->getVariable() == pParameter5->getId());
172  CPPUNIT_ASSERT(pARule->isSetMath() == true);
173  pMath = pARule->getMath();
174  CPPUNIT_ASSERT(pMath != NULL);
175  CPPUNIT_ASSERT(pMath->getType() == AST_PLUS);
176  CPPUNIT_ASSERT(pMath->getNumChildren() == 2);
177  pChild1 = pMath->getChild(0);
178  CPPUNIT_ASSERT(pChild1 != NULL);
179  CPPUNIT_ASSERT(pChild1->getType() == AST_REAL);
180  CPPUNIT_ASSERT(fabs((pChild1->getReal() - 6.0) / 6.0) < 1e-15);
181  pChild2 = pMath->getChild(1);
182  CPPUNIT_ASSERT(pChild2 != NULL);
183  CPPUNIT_ASSERT(pChild2->getType() == AST_REAL);
184  CPPUNIT_ASSERT(fabs((pChild2->getReal() - 1.0) / 1.0) < 1e-15);
185  // modify the assignment rules
186  // make rule for parameter1 depend on parameter3
187  // make rule for parameter3 depend on parameter2
188  // make rule for parameter4 depend on parameter5
189  // make rule for parameter2 depend on parameter4
190  CModel* pModel = pDataModel->getModel();
191  CPPUNIT_ASSERT(pModel != NULL);
192  CPPUNIT_ASSERT(pModel->getModelValues().size() == 5);
193  // find model value that corresponds to parameter1
194  CModelValue *pMV1 = NULL, *pMV2 = NULL, *pMV3 = NULL, *pMV4 = NULL, *pMV5 = NULL;
195  unsigned int i, iMax = pModel->getModelValues().size();
196 
197  for (i = 0; i < iMax; ++i)
198  {
199  CModelValue* pTmpMV = pModel->getModelValues()[i];
200 
201  if (pTmpMV->getSBMLId() == pParameter1->getId())
202  {
203  pMV1 = pTmpMV;
204  }
205  else if (pTmpMV->getSBMLId() == pParameter2->getId())
206  {
207  pMV2 = pTmpMV;
208  }
209  else if (pTmpMV->getSBMLId() == pParameter3->getId())
210  {
211  pMV3 = pTmpMV;
212  }
213  else if (pTmpMV->getSBMLId() == pParameter4->getId())
214  {
215  pMV4 = pTmpMV;
216  }
217  else if (pTmpMV->getSBMLId() == pParameter5->getId())
218  {
219  pMV5 = pTmpMV;
220  }
221  }
222 
223  CPPUNIT_ASSERT(pMV1 != NULL);
224  CPPUNIT_ASSERT(pMV2 != NULL);
225  CPPUNIT_ASSERT(pMV3 != NULL);
226  CPPUNIT_ASSERT(pMV4 != NULL);
227  CPPUNIT_ASSERT(pMV5 != NULL);
228  CEvaluationNodeObject* pObjectNode = new CEvaluationNodeObject(CEvaluationNodeObject::CN, "<" + pMV3->getCN() + ",Reference=Value>");
229  CExpression* pExpr = new CExpression;
230  pExpr->setRoot(pObjectNode);
231  pMV1->setExpressionPtr(pExpr);
232  pObjectNode = new CEvaluationNodeObject(CEvaluationNodeObject::CN, "<" + pMV2->getCN() + ",Reference=Value>");
233  pExpr = new CExpression;
234  pExpr->setRoot(pObjectNode);
235  pMV3->setExpressionPtr(pExpr);
236  pObjectNode = new CEvaluationNodeObject(CEvaluationNodeObject::CN, "<" + pMV5->getCN() + ",Reference=Value>");
237  pExpr = new CExpression;
238  pExpr->setRoot(pObjectNode);
239  pMV4->setExpressionPtr(pExpr);
240  pObjectNode = new CEvaluationNodeObject(CEvaluationNodeObject::CN, "<" + pMV4->getCN() + ",Reference=Value>");
241  pExpr = new CExpression;
242  pExpr->setRoot(pObjectNode);
243  pMV2->setExpressionPtr(pExpr);
244  // reexport to SBML L2V1
245  CPPUNIT_ASSERT(pDataModel->exportSBMLToString(NULL, 2, 1).empty() == false);
246  pDocument = pDataModel->getCurrentSBMLDocument();
247  CPPUNIT_ASSERT(pDocument != NULL);
248  pSBMLModel = pDocument->getModel();
249  CPPUNIT_ASSERT(pSBMLModel != NULL);
250  CPPUNIT_ASSERT(pSBMLModel->getNumCompartments() == 0);
251  CPPUNIT_ASSERT(pSBMLModel->getNumSpecies() == 0);
252  CPPUNIT_ASSERT(pSBMLModel->getNumReactions() == 0);
253  CPPUNIT_ASSERT(pSBMLModel->getNumInitialAssignments() == 0);
254  CPPUNIT_ASSERT(pSBMLModel->getNumParameters() == 5);
255  pParameter1 = pSBMLModel->getParameter(0);
256  CPPUNIT_ASSERT(pParameter1 != NULL);
257  CPPUNIT_ASSERT(pParameter1->getConstant() == false);
258  pParameter2 = pSBMLModel->getParameter(1);
259  CPPUNIT_ASSERT(pParameter2 != NULL);
260  CPPUNIT_ASSERT(pParameter2->getConstant() == false);
261  pParameter3 = pSBMLModel->getParameter(2);
262  CPPUNIT_ASSERT(pParameter3 != NULL);
263  CPPUNIT_ASSERT(pParameter3->getConstant() == false);
264  pParameter4 = pSBMLModel->getParameter(3);
265  CPPUNIT_ASSERT(pParameter4 != NULL);
266  CPPUNIT_ASSERT(pParameter4->getConstant() == false);
267  pParameter5 = pSBMLModel->getParameter(4);
268  CPPUNIT_ASSERT(pParameter5 != NULL);
269  CPPUNIT_ASSERT(pParameter5->getConstant() == false);
270  CPPUNIT_ASSERT(pSBMLModel->getNumRules() == 5);
271 
272  pRule = pSBMLModel->getRule(0);
273  CPPUNIT_ASSERT(pRule != NULL);
274  CPPUNIT_ASSERT(pRule->getTypeCode() == SBML_ASSIGNMENT_RULE);
275  pARule = dynamic_cast<const AssignmentRule*>(pRule);
276  CPPUNIT_ASSERT(pARule != NULL);
277  CPPUNIT_ASSERT(pARule->getVariable() == pParameter5->getId());
278  CPPUNIT_ASSERT(pARule->isSetMath() == true);
279  pMath = pARule->getMath();
280  CPPUNIT_ASSERT(pMath != NULL);
281  CPPUNIT_ASSERT(pMath->getType() == AST_PLUS);
282  CPPUNIT_ASSERT(pMath->getNumChildren() == 2);
283  pChild1 = pMath->getChild(0);
284  CPPUNIT_ASSERT(pChild1 != NULL);
285  CPPUNIT_ASSERT(pChild1->getType() == AST_REAL);
286  CPPUNIT_ASSERT(fabs((pChild1->getReal() - 6.0) / 6.0) < 1e-15);
287  pChild2 = pMath->getChild(1);
288  CPPUNIT_ASSERT(pChild2 != NULL);
289  CPPUNIT_ASSERT(pChild2->getType() == AST_REAL);
290  CPPUNIT_ASSERT(fabs((pChild2->getReal() - 1.0) / 1.0) < 1e-15);
291 
292  pRule = pSBMLModel->getRule(1);
293  CPPUNIT_ASSERT(pRule != NULL);
294  CPPUNIT_ASSERT(pRule->getTypeCode() == SBML_ASSIGNMENT_RULE);
295  pARule = dynamic_cast<const AssignmentRule*>(pRule);
296  CPPUNIT_ASSERT(pARule != NULL);
297  CPPUNIT_ASSERT(pARule->getVariable() == pParameter4->getId());
298  CPPUNIT_ASSERT(pARule->isSetMath() == true);
299  pMath = pARule->getMath();
300  CPPUNIT_ASSERT(pMath != NULL);
301  CPPUNIT_ASSERT(pMath->getType() == AST_NAME);
302  CPPUNIT_ASSERT(pMath->getName() == pParameter5->getId());
303  CPPUNIT_ASSERT(pMath->getNumChildren() == 0);
304 
305  pRule = pSBMLModel->getRule(2);
306  CPPUNIT_ASSERT(pRule != NULL);
307  CPPUNIT_ASSERT(pRule->getTypeCode() == SBML_ASSIGNMENT_RULE);
308  pARule = dynamic_cast<const AssignmentRule*>(pRule);
309  CPPUNIT_ASSERT(pARule != NULL);
310  CPPUNIT_ASSERT(pARule->getVariable() == pParameter2->getId());
311  CPPUNIT_ASSERT(pARule->isSetMath() == true);
312  pMath = pARule->getMath();
313  CPPUNIT_ASSERT(pMath != NULL);
314  CPPUNIT_ASSERT(pMath->getType() == AST_NAME);
315  CPPUNIT_ASSERT(pMath->getName() == pParameter4->getId());
316  CPPUNIT_ASSERT(pMath->getNumChildren() == 0);
317 
318  pRule = pSBMLModel->getRule(3);
319  CPPUNIT_ASSERT(pRule != NULL);
320  CPPUNIT_ASSERT(pRule->getTypeCode() == SBML_ASSIGNMENT_RULE);
321  pARule = dynamic_cast<const AssignmentRule*>(pRule);
322  CPPUNIT_ASSERT(pARule != NULL);
323  CPPUNIT_ASSERT(pARule->getVariable() == pParameter3->getId());
324  CPPUNIT_ASSERT(pARule->isSetMath() == true);
325  pMath = pARule->getMath();
326  CPPUNIT_ASSERT(pMath != NULL);
327  CPPUNIT_ASSERT(pMath->getType() == AST_NAME);
328  CPPUNIT_ASSERT(pMath->getName() == pParameter2->getId());
329  CPPUNIT_ASSERT(pMath->getNumChildren() == 0);
330 
331  pRule = pSBMLModel->getRule(4);
332  CPPUNIT_ASSERT(pRule != NULL);
333  CPPUNIT_ASSERT(pRule->getTypeCode() == SBML_ASSIGNMENT_RULE);
334  pARule = dynamic_cast<const AssignmentRule*>(pRule);
335  CPPUNIT_ASSERT(pARule != NULL);
336  CPPUNIT_ASSERT(pARule->getVariable() == pParameter1->getId());
337  CPPUNIT_ASSERT(pARule->isSetMath() == true);
338  pMath = pARule->getMath();
339  CPPUNIT_ASSERT(pMath != NULL);
340  CPPUNIT_ASSERT(pMath->getType() == AST_NAME);
341  CPPUNIT_ASSERT(pMath->getName() == pParameter3->getId());
342  CPPUNIT_ASSERT(pMath->getNumChildren() == 0);
343 }
344 
345 const char* test000055::MODEL_STRING =
346  "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
347  "<sbml xmlns=\"http://www.sbml.org/sbml/level2\" level=\"2\" version=\"1\">\n"
348  " <model id=\"Model_1\" name=\"New Model\">\n"
349  " <listOfUnitDefinitions>\n"
350  " <unitDefinition id=\"volume\">\n"
351  " <listOfUnits>\n"
352  " <unit kind=\"litre\" scale=\"-3\"/>\n"
353  " </listOfUnits>\n"
354  " </unitDefinition>\n"
355  " <unitDefinition id=\"substance\">\n"
356  " <listOfUnits>\n"
357  " <unit kind=\"mole\" scale=\"-3\"/>\n"
358  " </listOfUnits>\n"
359  " </unitDefinition>\n"
360  " </listOfUnitDefinitions>\n"
361  " <listOfParameters>\n"
362  " <parameter id=\"parameter_1\" name=\"A\" value=\"12\" constant=\"false\"/>\n"
363  " <parameter id=\"parameter_2\" name=\"B\" value=\"11\" constant=\"false\"/>\n"
364  " <parameter id=\"parameter_3\" name=\"C\" value=\"4\" constant=\"false\"/>\n"
365  " <parameter id=\"parameter_4\" name=\"D\" value=\"3\" constant=\"false\"/>\n"
366  " <parameter id=\"parameter_5\" name=\"E\" value=\"7\" constant=\"false\"/>\n"
367  " </listOfParameters>\n"
368  " <listOfRules>\n"
369  " <assignmentRule variable=\"parameter_1\">\n"
370  " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">\n"
371  " <apply>\n"
372  " <times/>\n"
373  " <cn> 3 </cn>\n"
374  " <cn> 4 </cn>\n"
375  " </apply>\n"
376  " </math>\n"
377  " </assignmentRule>\n"
378  " <assignmentRule variable=\"parameter_2\">\n"
379  " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">\n"
380  " <apply>\n"
381  " <plus/>\n"
382  " <cn> 2 </cn>\n"
383  " <cn> 9 </cn>\n"
384  " </apply>\n"
385  " </math>\n"
386  " </assignmentRule>\n"
387  " <assignmentRule variable=\"parameter_3\">\n"
388  " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">\n"
389  " <apply>\n"
390  " <minus/>\n"
391  " <cn> 8 </cn>\n"
392  " <cn> 4 </cn>\n"
393  " </apply>\n"
394  " </math>\n"
395  " </assignmentRule>\n"
396  " <assignmentRule variable=\"parameter_4\">\n"
397  " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">\n"
398  " <apply>\n"
399  " <divide/>\n"
400  " <cn> 9 </cn>\n"
401  " <cn> 3 </cn>\n"
402  " </apply>\n"
403  " </math>\n"
404  " </assignmentRule>\n"
405  " <assignmentRule variable=\"parameter_5\">\n"
406  " <math xmlns=\"http://www.w3.org/1998/Math/MathML\">\n"
407  " <apply>\n"
408  " <plus/>\n"
409  " <cn> 6 </cn>\n"
410  " <cn> 1 </cn>\n"
411  " </apply>\n"
412  " </math>\n"
413  " </assignmentRule>\n"
414  " </listOfRules>\n"
415  " </model>\n"
416  "</sbml>\n"
417  ;
Header file of class CExpression.
void tearDown()
Definition: test000055.cpp:47
virtual bool setRoot(CEvaluationNode *pRootNode)
SBMLDocument * getCurrentSBMLDocument()
Header file of class CModelEntity and CModelValue.
const std::string & getSBMLId() const
std::string exportSBMLToString(CProcessReport *pExportHandler, int sbmlLevel, int sbmlVersion)
void setUp()
Definition: test000055.cpp:39
void test_bug1004()
Definition: test000055.cpp:52
static CCopasiDataModel * addDatamodel()
static CCopasiDataModel * pCOPASIDATAMODEL
Definition: test000055.h:32
bool importSBMLFromString(const std::string &sbmlDocumentText, CProcessReport *pImportHandler=NULL, const bool &deleteOldData=true)
static void init(int argc, char *argv[], const bool &withGui=false)
Definition: CModel.h:50
static const char * MODEL_STRING
Definition: test000055.h:31