36 mSubstrateCompartments(),
37 mProductCompartments(),
38 mModifierCompartments(),
39 mSubstrateDisplayNames(),
40 mProductDisplayNames(),
41 mModifierDisplayNames(),
53 mSubstrateCompartments(),
54 mProductCompartments(),
55 mModifierCompartments(),
56 mSubstrateDisplayNames(),
57 mProductDisplayNames(),
58 mModifierDisplayNames(),
67 std::string ChemicalEquation;
76 ChemicalEquation +=
" + ";
82 ChemicalEquation +=
" = ";
84 ChemicalEquation +=
" -> ";
89 ChemicalEquation +=
" + ";
96 ChemicalEquation +=
"; ";
100 ChemicalEquation +=
" ";
106 return ChemicalEquation;
112 std::istringstream buffer(ces);
115 bool success = (Parser.
yyparse() == 0);
143 std::string DefaultCompartment;
146 DefaultCompartment =
"compartment";
152 std::string ReactionCompartment =
"";
154 bool HaveReactionCompartment =
true;
156 std::vector< std::string >::iterator itCompartment, endCompartment;
161 for (; itCompartment != endCompartment && HaveReactionCompartment; ++itCompartment)
163 if (*itCompartment ==
"")
continue;
167 ReactionCompartment = *itCompartment;
170 else if (ReactionCompartment != *itCompartment)
171 HaveReactionCompartment =
false;
177 for (; itCompartment != endCompartment && HaveReactionCompartment; ++itCompartment)
179 if (*itCompartment ==
"")
continue;
183 ReactionCompartment = *itCompartment;
186 else if (ReactionCompartment != *itCompartment)
187 HaveReactionCompartment =
false;
193 for (; itCompartment != endCompartment && HaveReactionCompartment; ++itCompartment)
195 if (*itCompartment ==
"")
continue;
199 ReactionCompartment = *itCompartment;
202 else if (ReactionCompartment != *itCompartment)
203 HaveReactionCompartment =
false;
207 ReactionCompartment = DefaultCompartment;
211 std::vector< std::string >::iterator itMetab;
217 for (; itCompartment != endCompartment; ++itCompartment, ++itMetab)
218 if (*itCompartment ==
"")
223 *itCompartment = ReactionCompartment;
232 if (pMetab == NULL && ReactionCompartment != DefaultCompartment)
247 for (; itCompartment != endCompartment; ++itCompartment, ++itMetab)
248 if (*itCompartment ==
"")
253 *itCompartment = ReactionCompartment;
262 if (pMetab == NULL && ReactionCompartment != DefaultCompartment)
277 for (; itCompartment != endCompartment; ++itCompartment, ++itMetab)
278 if (*itCompartment ==
"")
283 *itCompartment = ReactionCompartment;
292 if (pMetab == NULL && ReactionCompartment != DefaultCompartment)
311 imax = elements->
size();
316 for (i = 0; i < imax; ++i)
324 imax = elements->
size();
329 for (i = 0; i < imax; ++i)
331 mProductNames[i] = (*elements)[i]->getMetabolite()->getObjectName();
337 imax = elements->
size();
342 for (i = 0; i < imax; ++i)
344 mModifierNames[i] = (*elements)[i]->getMetabolite()->getObjectName();
358 std::vector< std::string >::const_iterator itName, itCompartment;
359 std::vector< std::string >::iterator it, end;
369 ++itName, ++itCompartment, ++it)
380 ++itName, ++itCompartment, ++it)
391 ++itName, ++itCompartment, ++it)
400 std::string metabkey;
407 for (i = 0; i < imax; ++i)
411 if (metabkey.empty())
419 for (i = 0; i < imax; ++i)
423 if (metabkey.empty())
431 for (i = 0; i < imax; ++i)
435 if (metabkey.empty())
468 std::pair< std::string, std::string > Modifier =
472 std::vector< std::string >::const_iterator it, itEnd =
mModifierNames.end();
476 if (Modifier.first == *it &&
477 Modifier.second == *itComp)
break;
498 std::ostringstream Element;
499 Element.imbue(std::locale::classic());
500 Element.precision(6);
502 std::string Metabolite = name;
505 if (Metabolite[Metabolite.length() - 1] ==
';')
506 Metabolite =
"\"" + Metabolite +
"\"";
509 Metabolite =
"\"" + Metabolite +
"\"";
515 for (i = 0; i < imax; ++i)
517 if (i) Element <<
" + ";
519 Element << Metabolite;
526 Element << Metabolite;
530 Element << mult <<
" * " << Metabolite;
534 return Element.str();
539 const std::vector<C_FLOAT64> * tmpVector = NULL;
549 size_t ccc, i, imax = tmpVector->size();
552 for (i = 0; i < imax; ++i)
554 if ((*tmpVector)[i] != floor((*tmpVector)[i] + 0.5))
557 ccc += (size_t) floor((*tmpVector)[i]);
565 std::vector<std::string> dummyNames;
566 std::vector<C_FLOAT64> dummyMults;
567 std::vector<std::string> dummyCompartments;
584 std::set<std::string> ret;
586 std::vector<std::string>::const_iterator it, itEnd;
611 std::set< std::pair< std::string, std::string > > ret;
612 std::pair< std::string, std::string > Insert;
614 std::vector<std::string>::const_iterator it, itComp, itEnd;
622 Insert.second = *itComp;
632 Insert.second = *itComp;
642 Insert.second = *itComp;
653 if (metabs.size() == 0) ret =
false;
else ret =
true;
655 std::set< std::pair< std::string, std::string > >::const_iterator it, itEnd;
657 itEnd = metabs.end();
659 for (it = metabs.begin(); it != itEnd; ++it)
677 bool Initialize =
true;
678 std::string Compartment =
"";
680 std::vector< std::string >::const_iterator it;
681 std::vector< std::string >::const_iterator end;
690 else if (Compartment != *it)
700 else if (Compartment != *it)
710 else if (Compartment != *it)
725 const CMetab * metab = NULL;
758 if (eq.empty())
return false;
761 std::istringstream buffer(eq);
764 return (Parser.
yyparse() == 0);
size_t getMolecularity(CFunctionParameter::Role role) const
bool loadFromChemEq(const CChemEq &ce)
size_t getCompartmentNumber() const
bool isNumber(const std::string &str)
std::vector< std::string > mModifierCompartments
static void setChemEqFromString(CModel *model, CReaction &rea, const std::string &ces)
const std::string & getObjectName() const
const std::vector< std::string > & getModifierCompartments() const
virtual size_t size() const
std::vector< C_FLOAT64 > mSubstrateMult
const std::vector< std::string > & getSubstrateCompartments() const
std::vector< std::string > mModifierNames
const CCompartment * getCompartment() const
void completeCompartments()
virtual size_t getIndex(const std::string &name) const
std::vector< C_FLOAT64 > mModifierMult
const bool & isReversible() const
std::set< std::string > listOfNonUniqueMetabNames() const
static bool isValidEq(const std::string &eq)
const CCopasiVector< CChemEqElement > & getProducts() const
std::vector< std::string > mSubstrateDisplayNames
std::vector< C_FLOAT64 > mProductMult
std::vector< std::string > mProductNames
const std::vector< std::string > & getListOfDisplayNames(CFunctionParameter::Role role) const
bool setChemEqString(const std::string &ces)
const bool & getReversibility() const
std::string getChemEqString(bool expanded) const
bool createNonExistingMetabs()
const CCopasiVector< CChemEqElement > & getSubstrates() const
const std::vector< C_FLOAT64 > & getListOfMultiplicities(CFunctionParameter::Role role) const
static std::string writeElement(const std::string &name, C_FLOAT64 mult, bool expanded)
bool addMetabolite(const std::string &key, const C_FLOAT64 multiplicity, const MetaboliteRole &role)
std::string quote(const std::string &name, const std::string &additionalEscapes)
bool writeToChemEq(CChemEq &ce) const
const std::vector< C_FLOAT64 > & getModifierMulitplicities() const
CCopasiVectorNS< CCompartment > & getCompartments()
const std::vector< C_FLOAT64 > & getSubstrateMulitplicities() const
const std::vector< std::string > & getSubstrateNames() const
const CCopasiVector< CChemEqElement > & getModifiers() const
const std::vector< std::string > & getProductCompartments() const
void addModifier(const std::string &name)
bool isMulticompartment() const
std::vector< std::string > mModifierDisplayNames
const std::vector< std::string > & getProductNames() const
const std::vector< std::string > & getModifierNames() const
std::vector< std::string > mProductDisplayNames
std::set< std::pair< std::string, std::string > > listOfNonExistingMetabNames() const
void setReversibility(const bool &reversible)
const CChemEq & getChemEq() const
std::vector< std::string > mSubstrateCompartments
const std::vector< C_FLOAT64 > & getProductMulitplicities() const
CCompartment * createCompartment(const std::string &name, const C_FLOAT64 &volume=1.0)
std::vector< std::string > mSubstrateNames
std::vector< std::string > mProductCompartments
CMetab * createMetabolite(const std::string &name, const std::string &compartment, const C_FLOAT64 &iconc=1.0, const CModelEntity::Status &status=CModelEntity::REACTIONS)