void createKineticLawForReaction(Reaction* reaction) { if (reaction == NULL) return; reaction->unsetKineticLaw(); KineticLaw *law = reaction->getKineticLaw(); if (law == NULL) { law = reaction->createKineticLaw(); LocalParameter* fluxValue = law->createLocalParameter(); fluxValue->initDefaults(); fluxValue->setId("FLUX_VALUE"); fluxValue->setValue(0); fluxValue->setUnits("dimensionless"); ASTNode* astn = SBML_parseFormula("FLUX_VALUE"); law->setMath(astn); delete astn; } LocalParameter* LB = law->getLocalParameter("LOWER_BOUND"); if (LB == NULL) { LB = law->createLocalParameter(); LB->initDefaults(); LB->setId("LOWER_BOUND"); LB->setUnits("dimensionless"); LB->setValue(-std::numeric_limits<double>::infinity()); } LocalParameter* UB = law->getLocalParameter("UPPER_BOUND"); if (UB == NULL) { UB = law->createLocalParameter(); UB->initDefaults(); UB->setId("UPPER_BOUND"); UB->setUnits("dimensionless"); LB->setValue(std::numeric_limits<double>::infinity()); } LocalParameter* param = law->getLocalParameter("OBJECTIVE_COEFFICIENT"); if (param == NULL) { param = law->createLocalParameter(); param->initDefaults(); param->setId("OBJECTIVE_COEFFICIENT"); param->setUnits("dimensionless"); param->setValue(0); } }
void updateKineticLawFromBound(Reaction* reaction, FluxBound* current) { if (reaction == NULL || current == NULL) return; const string operation = current -> getOperation(); KineticLaw *law = reaction->getKineticLaw(); LocalParameter* LB = law->getLocalParameter("LOWER_BOUND"); LocalParameter* UB = law->getLocalParameter("UPPER_BOUND"); if (operation == "less" || operation == "lessEqual" || operation == "equal") { UB->setValue(current->getValue()); } if (operation == "greater" || operation == "greaterEqual" || operation == "equal") { LB->setValue(current->getValue()); } }
END_TEST START_TEST (test_WriteL3SBML_KineticLaw_ListOfParameters) { const char* expected = "<kineticLaw>\n" " <listOfLocalParameters>\n" " <localParameter id=\"n\" value=\"1.2\"/>\n" " </listOfLocalParameters>\n" "</kineticLaw>"; KineticLaw *kl = D->createModel()->createReaction()->createKineticLaw(); LocalParameter *p = kl->createLocalParameter(); p->setId("n"); p->setValue(1.2); char* sbml = kl->toSBML(); fail_unless( equals(expected, sbml) ); safe_free(sbml); }
void setObjectiveCoefficient(FbcModelPlugin* plugin, Model* model) { if (plugin == NULL || model == NULL) return; Objective* obj = plugin->getActiveObjective(); if (obj == NULL) return; for (unsigned int i = 0; i < obj->getNumFluxObjectives(); ++i) { FluxObjective* fluxObj = obj->getFluxObjective(i); if (fluxObj == NULL) continue; Reaction* reaction = model->getReaction(fluxObj->getReaction()); if (reaction == NULL) continue; KineticLaw* law = reaction->getKineticLaw(); if (law == NULL) continue; LocalParameter* param = law->getLocalParameter("OBJECTIVE_COEFFICIENT"); param->setValue(fluxObj->getCoefficient()); } }