本文整理汇总了C++中Species::getPlugin方法的典型用法代码示例。如果您正苦于以下问题:C++ Species::getPlugin方法的具体用法?C++ Species::getPlugin怎么用?C++ Species::getPlugin使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Species
的用法示例。
在下文中一共展示了Species::getPlugin方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: doc
void TestRoadRunner::testCons1()
{
ConservationPkgNamespaces *sbmlns = new ConservationPkgNamespaces(3,1,1);
SBMLDocument doc(sbmlns);
ConservationDocumentPlugin* docPlugin =
dynamic_cast<ConservationDocumentPlugin*>(doc.getPlugin("conservation"));
cout << "document plugin: " << docPlugin << endl;
Model *m = doc.createModel("foo");
Parameter *p = m->createParameter();
ConservedMoietyPlugin *paramPlugin =
dynamic_cast<ConservedMoietyPlugin*>(p->getPlugin("conservation"));
cout << "parameter plugin: " << paramPlugin << endl;
Species *s = m->createSpecies();
ConservedMoietyPlugin *speciesPlugin =
dynamic_cast<ConservedMoietyPlugin*>(s->getPlugin("conservation"));
cout << "species plugin: " << speciesPlugin << endl;
cout << "its all good" << endl;
}
示例2: prop
int
FbcToCobraConverter::convert()
{
int result = LIBSBML_OPERATION_FAILED;
if (mDocument == NULL)
{
return LIBSBML_INVALID_OBJECT;
}
Model* mModel = mDocument->getModel();
if (mModel == NULL)
{
return LIBSBML_INVALID_OBJECT;
}
FbcModelPlugin *plugin =
static_cast<FbcModelPlugin*>(mDocument->getModel()->getPlugin("fbc"));
// if we have don't have a fbc model we cannot do the conversion
if (plugin == NULL || mDocument->getLevel() != 3)
{
return LIBSBML_OPERATION_FAILED;
}
// collect information
Model* model = mDocument->getModel();
map<const string, int> chargeMap;
map<const string, string> formulaMap;
for (unsigned int i = 0; i < model->getNumSpecies(); ++i)
{
Species* current = model->getSpecies(i);
const string& currentId = current->getId();
FbcSpeciesPlugin *splugin = static_cast<FbcSpeciesPlugin*>(current->getPlugin("fbc"));
if (splugin == NULL)
continue;
if (splugin->isSetCharge())
{
chargeMap[currentId] = splugin->getCharge();
}
if (splugin->isSetChemicalFormula())
{
formulaMap[currentId] = splugin->getChemicalFormula();
}
}
// create KineticLaw
for (unsigned int i = 0; i < model->getNumReactions(); ++i)
{
Reaction* reaction = model->getReaction(i);
if (reaction == NULL)
continue;
createKineticLawForReaction(reaction);
}
// update kinetic law from bounds
for (unsigned int i = 0; i < plugin->getNumFluxBounds(); ++i)
{
FluxBound *current = plugin->getFluxBound(i);
if (current == NULL)
continue;
Reaction* reaction = model->getReaction(current->getReaction());
if (reaction == NULL)
continue;
updateKineticLawFromBound(reaction, current);
}
setObjectiveCoefficient(plugin, model);
// disable package
mDocument->enablePackage("http://www.sbml.org/sbml/level3/version1/fbc/version1", "fbc",false);
// convert model to L2V1 (as L2V2 is the last model that had charge)
mDocument->setConversionValidators(AllChecksON & UnitsCheckOFF);
ConversionProperties prop(new SBMLNamespaces(2,1));
prop.addOption("strict", false, "should validity be preserved");
prop.addOption("ignorePackages", true, "convert even if packages are used");
prop.addOption("setLevelAndVersion", true, "convert the document to the given level and version");
int conversionResult = mDocument->convert(prop);
if (conversionResult != LIBSBML_OPERATION_SUCCESS)
return conversionResult;
// set charge on species
for (unsigned int i = 0; i < model->getNumSpecies(); ++i)
{
Species* current = model->getSpecies(i);
const string currentId = current->getId();
int charge = chargeMap[currentId];
if (charge != 0)
current->setCharge(charge);
const string formula = formulaMap[currentId];
//.........这里部分代码省略.........
示例3: FbcPkgNamespaces
END_TEST
START_TEST(test_FbcExtension_read_and_validate_chemicals)
{
FbcPkgNamespaces *ns = new FbcPkgNamespaces();
SBMLDocument*doc = new SBMLDocument(ns);
doc->setPackageRequired("fbc", false);
Model* model = doc->createModel();
Compartment* comp = model->createCompartment();
comp->initDefaults();
comp->setId("comp");
comp->setSize(1);
Species *s = model->createSpecies();
s->initDefaults();
s->setId("s1");
s->setCompartment("comp");
s->setInitialAmount(1);
FbcSpeciesPlugin* splugin = static_cast<FbcSpeciesPlugin*>(s->getPlugin("fbc"));
fail_unless(splugin != NULL);
// valid
splugin->setChemicalFormula("H2O");
doc->checkInternalConsistency();
fail_unless(!doc->getErrorLog()->contains(FbcSpeciesFormulaMustBeString));
// valid
doc->getErrorLog()->clearLog();
splugin->setChemicalFormula("HO");
doc->checkInternalConsistency();
fail_unless(!doc->getErrorLog()->contains(FbcSpeciesFormulaMustBeString));
// valid
doc->getErrorLog()->clearLog();
splugin->setChemicalFormula("");
doc->checkInternalConsistency();
fail_unless(!doc->getErrorLog()->contains(FbcSpeciesFormulaMustBeString));
// invalid
doc->getErrorLog()->clearLog();
splugin->setChemicalFormula("hO");
doc->checkInternalConsistency();
fail_unless(doc->getErrorLog()->contains(FbcSpeciesFormulaMustBeString));
// invalid
doc->getErrorLog()->clearLog();
splugin->setChemicalFormula("h1O");
doc->checkInternalConsistency();
fail_unless(doc->getErrorLog()->contains(FbcSpeciesFormulaMustBeString));
// invalid
doc->getErrorLog()->clearLog();
splugin->setChemicalFormula("1hO");
doc->checkInternalConsistency();
fail_unless(doc->getErrorLog()->contains(FbcSpeciesFormulaMustBeString));
// invalid
doc->getErrorLog()->clearLog();
splugin->setChemicalFormula("hO");
doc->checkInternalConsistency();
fail_unless(doc->getErrorLog()->contains(FbcSpeciesFormulaMustBeString));
// invalid
doc->getErrorLog()->clearLog();
splugin->setChemicalFormula("_hO");
doc->checkInternalConsistency();
fail_unless(doc->getErrorLog()->contains(FbcSpeciesFormulaMustBeString));
// invalid
doc->getErrorLog()->clearLog();
splugin->setChemicalFormula("H 2 O");
doc->checkInternalConsistency();
fail_unless(doc->getErrorLog()->contains(FbcSpeciesFormulaMustBeString));
// invalid
doc->getErrorLog()->clearLog();
splugin->setChemicalFormula("H*_)(++2 O");
doc->checkInternalConsistency();
fail_unless(doc->getErrorLog()->contains(FbcSpeciesFormulaMustBeString));
delete doc;
}
示例4: readSBMLFromString
END_TEST
START_TEST(test_FbcExtension_read_L3V1V1_with_wonky_chemicals)
{
const char* modelString = "<?xml version='1.0' encoding='UTF-8'?>"
"<sbml xmlns:html='http://www.w3.org/1999/xhtml' xmlns='http://www.sbml.org/sbml/level3/version1/core' xmlns:fbc='http://www.sbml.org/sbml/level3/version1/fbc/version1' level='3' version='1' fbc:required='false'>"
" <model metaid='xxx' id='yyy' timeUnits='dimensionless'>"
" <listOfCompartments>"
" <compartment id='Internal_Species' name='Internal_Species' spatialDimensions='3' size='1' constant='false'/>"
" <compartment id='External_Species' name='External_Species' spatialDimensions='3' size='1' constant='false'/>"
" </listOfCompartments>"
" <listOfSpecies>"
" <species metaid='meta_B1' id='B1' name='Protein component' compartment='Internal_Species' initialConcentration='0' hasOnlySubstanceUnits='false' boundaryCondition='false' constant='false' fbc:chemicalFormula='PROTEIN COMPONENT'>"
" <notes>"
" <html:p>chemFormula: Protein component</html:p>"
" </notes>"
" <annotation>"
" <listOfKeyValueData xmlns='http://pysces.sourceforge.net/KeyValueData'>"
" <data id='chemFormula' type='string' value='Protein component'/>"
" </listOfKeyValueData>"
" </annotation>"
" </species>"
" <species metaid='meta_B2' id='B2' name='DNA component' compartment='Internal_Species' initialConcentration='0' hasOnlySubstanceUnits='false' boundaryCondition='false' constant='false' fbc:chemicalFormula='DNA COMPONENT'>"
" <notes>"
" <html:p>chemFormula: DNA component</html:p>"
" </notes>"
" <annotation>"
" <listOfKeyValueData xmlns='http://pysces.sourceforge.net/KeyValueData'>"
" <data id='chemFormula' type='string' value='DNA component'/>"
" </listOfKeyValueData>"
" </annotation>"
" </species>"
" </listOfSpecies>"
" <listOfReactions>"
" <reaction metaid='meta_R00192' id='R00192' name='R106' reversible='false' fast='false'>"
" <notes>"
" <html:p>EC Number: 3.3.1.1</html:p>"
" <html:p>GENE ASSOCIATION: sll1234</html:p>"
" </notes>"
" <annotation>"
" <listOfKeyValueData xmlns='http://pysces.sourceforge.net/KeyValueData'>"
" <data id='EC_Number' type='string' value='3.3.1.1'/>"
" <data id='GENE_ASSOCIATION' type='string' value='sll1234'/>"
" </listOfKeyValueData>"
" </annotation>"
" <listOfReactants>"
" <speciesReference species='B1' stoichiometry='1' constant='true'/>"
" </listOfReactants>"
" <listOfProducts>"
" <speciesReference species='B2' stoichiometry='1' constant='true'/>"
" </listOfProducts>"
" </reaction>"
" </listOfReactions>"
" <fbc:listOfFluxBounds>"
" <fbc:fluxBound fbc:reaction='R00192' fbc:operation='greaterEqual' fbc:value='0'/>"
" <fbc:fluxBound fbc:reaction='R00192' fbc:operation='lessEqual' fbc:value='999999'/> "
" </fbc:listOfFluxBounds>"
" <fbc:listOfObjectives fbc:activeObjective='obj'>"
" <fbc:objective fbc:id='obj' fbc:type='maximize'>"
" <fbc:listOfFluxObjectives>"
" <fbc:fluxObjective fbc:reaction='R00192' fbc:coefficient='1'/>"
" </fbc:listOfFluxObjectives>"
" </fbc:objective>"
" </fbc:listOfObjectives>"
" </model>"
"</sbml>";
SBMLDocument* doc = readSBMLFromString(modelString);
doc->checkConsistency();
fail_unless(doc->getErrorLog()->contains(FbcSpeciesFormulaMustBeString));
//convert to cobra just to test
ConversionProperties prop;
prop.addOption("convert fbc to cobra", true);
fail_unless(doc->convert(prop) == LIBSBML_OPERATION_SUCCESS);
// add species with notes
Species* testSpecies = doc->getModel()->createSpecies();
testSpecies->initDefaults();
testSpecies->setId("testSpecies");
testSpecies->setNotes(
"<body xmlns='http://www.w3.org/1999/xhtml'>"
" <p>FORMULA: Fe2S2X</p> "
" <p>CHARGE: -1</p> "
"</body> "
);
// convert it back
prop.addOption("convert cobra", true);
fail_unless(doc->convert(prop) == LIBSBML_OPERATION_SUCCESS);
// check the formula
Species* tested = doc->getModel()->getSpecies("testSpecies");
fail_unless(tested != NULL);
FbcSpeciesPlugin* fbcSpeciesPlugin = dynamic_cast<FbcSpeciesPlugin*>(tested->getPlugin("fbc"));
fail_unless(fbcSpeciesPlugin != NULL);
fail_unless(fbcSpeciesPlugin->getCharge() == -1);
fail_unless(fbcSpeciesPlugin->getChemicalFormula() == "Fe2S2X");
//.........这里部分代码省略.........
示例5: main
int main(int argc,char** argv)
{
int retval = 0;
SBMLNamespaces sbmlns(3,1,"comp",1);
// create the document
SBMLDocument *document = new SBMLDocument(&sbmlns);
//Define the external model definitions
CompSBMLDocumentPlugin* compdoc
= static_cast<CompSBMLDocumentPlugin*>(document->getPlugin("comp"));
compdoc->setRequired(true);
ExternalModelDefinition* extmod = compdoc->createExternalModelDefinition();
extmod->setId("ExtMod1");
extmod->setSource("enzyme_model.xml");
extmod->setModelRef("enzyme");
// create the main Model
Model* model=document->createModel();
// Set the submodels
CompModelPlugin* mplugin = static_cast<CompModelPlugin*>(model->getPlugin("comp"));
Submodel* submod1 = mplugin->createSubmodel();
submod1->setId("A");
submod1->setModelRef("ExtMod1");
Submodel* submod2 = mplugin->createSubmodel();
submod2->setId("B");
submod2->setModelRef("ExtMod1");
// create a replacement compartment
Compartment* comp=model->createCompartment();
comp->setSpatialDimensions((unsigned int)3);
comp->setConstant(true);
comp->setId("comp");
comp->setSize(1L);
//Tell the model that this compartment replaces both of the inside ones.
CompSBasePlugin* compartplug = static_cast<CompSBasePlugin*>(comp->getPlugin("comp"));
ReplacedElement re;
re.setIdRef("comp");
re.setSubmodelRef("A");
compartplug->addReplacedElement(&re);
re.setSubmodelRef("B");
compartplug->addReplacedElement(&re);
// create a replacement species
Species* spec = model->createSpecies();
spec->setCompartment("comp");
spec->setHasOnlySubstanceUnits(false);
spec->setConstant(false);
spec->setBoundaryCondition(false);
spec->setId("S");
//Tell the model that this species replaces both of the inside ones.
CompSBasePlugin* spp = static_cast<CompSBasePlugin*>(spec->getPlugin("comp"));
re.setIdRef("S");
re.setSubmodelRef("A");
spp->addReplacedElement(&re);
re.setSubmodelRef("B");
spp->addReplacedElement(&re);
writeSBMLToFile(document,"eg-import-external.xml");
writeSBMLToFile(document,"spec_example2.xml");
delete document;
document = readSBMLFromFile("spec_example2.xml");
if (document == NULL)
{
cout << "Error reading back in file." << endl;
retval = -1;
}
else
{
document->setConsistencyChecks(LIBSBML_CAT_UNITS_CONSISTENCY, false);
document->checkConsistency();
if (document->getErrorLog()->getNumFailsWithSeverity(2) > 0
|| document->getErrorLog()->getNumFailsWithSeverity(3) > 0)
{
stringstream errorstream;
document->printErrors(errorstream);
cout << "Errors encoutered when round-tripping SBML file: \n"
<< errorstream.str() << endl;
retval = -1;
}
writeSBMLToFile(document, "spec_example2_rt.xml");
delete document;
}
#ifdef WIN32
if (retval != 0)
{
cout << "(Press any key to exit.)" << endl;
_getch();
}
#endif
return retval;
}
示例6: readSpatialSBML
void readSpatialSBML() {
SBMLDocument *document2 = readSBML("spatial_example0.xml");
Model *model2 = document2->getModel();
Compartment *comp;
SpatialCompartmentPlugin* cplugin;
RequiredElementsSBasePlugin* reqplugin;
for (unsigned int i = 0; i < model2->getNumCompartments(); i++) {
comp = model2->getCompartment(i);
cout << "Compartment" << i << ": " << comp->getId() << endl;
reqplugin = static_cast<RequiredElementsSBasePlugin*>(comp->getPlugin("req"));
if (!reqplugin->getMathOverridden().empty()) {
cout << "Comp" << i << " req mathOverridden: " << reqplugin->getMathOverridden() << endl;
}
cplugin = static_cast<SpatialCompartmentPlugin*>(comp->getPlugin("spatial"));
if (cplugin->getCompartmentMapping()->isSetSpatialId()) {
cout << "Comp" << i << " CMSpId: " << cplugin->getCompartmentMapping()->getSpatialId() << endl;
cout << "Comp" << i << " CM_Comp: " << cplugin->getCompartmentMapping()->getCompartment() << endl;
cout << "Comp" << i << " CM_DType: " << cplugin->getCompartmentMapping()->getDomainType() << endl;
cout << "Comp" << i << " CM_UnitSz: " << cplugin->getCompartmentMapping()->getUnitSize() << endl;
}
}
Species *sp;
SpatialSpeciesRxnPlugin* srplugin;
for (unsigned int i = 0; i < model2->getNumSpecies(); i++) {
sp = model2->getSpecies(i);
cout << "Species" << i << ": " << sp->getId() << endl;
srplugin = static_cast<SpatialSpeciesRxnPlugin*>(sp->getPlugin("spatial"));
if (srplugin->getIsSpatial()) {
cout << "species" << i << " isSpatial: " << srplugin->getIsSpatial() << endl;
}
}
Parameter *param;
SpatialParameterPlugin* pplugin;
for (unsigned int i = 0; i < model2->getNumParameters(); i++) {
param = model2->getParameter(i);
cout << "Parameter" << i << ": " << param->getId() << endl;
reqplugin = static_cast<RequiredElementsSBasePlugin*>(param->getPlugin("req"));
if (!reqplugin->getMathOverridden().empty()) {
cout << "Parameter" << i << " req mathOverridden: " << reqplugin->getMathOverridden() << endl;
}
pplugin = static_cast<SpatialParameterPlugin*>(param->getPlugin("spatial"));
if (pplugin->getSpatialSymbolReference()->isSetSpatialId()) {
cout << "Parameter" << i << " SpRefId: " << pplugin->getSpatialSymbolReference()->getSpatialId() << endl;
cout << "Parameter" << i << " SpRefType: " << pplugin->getSpatialSymbolReference()->getType() << endl;
}
if (pplugin->getDiffusionCoefficient()->isSetVariable()) {
cout << "Diff_" << i << " SpeciesVarId: " << pplugin->getDiffusionCoefficient()->getVariable() << endl;
cout << "Diff_" << i << " SpCoordIndex: " << pplugin->getDiffusionCoefficient()->getCoordinateIndex() << endl;
}
if (pplugin->getAdvectionCoefficient()->isSetVariable()) {
cout << "Adv_" << i << " SpeciesVarId: " << pplugin->getAdvectionCoefficient()->getVariable() << endl;
cout << "Adv_" << i << " SpCoordIndex: " << pplugin->getAdvectionCoefficient()->getCoordinateIndex() << endl;
}
if (pplugin->getBoundaryCondition()->isSetVariable()) {
cout << "BC_" << i << " SpeciesVarId: " << pplugin->getBoundaryCondition()->getVariable() << endl;
cout << "BC_" << i << " SpCoordBoundary: " << pplugin->getBoundaryCondition()->getCoordinateBoundary() << endl;
cout << "BC_" << i << " SpBoundaryType: " << pplugin->getBoundaryCondition()->getType() << endl;
}
}
Reaction *rxn;
for (unsigned int i = 0; i < model2->getNumReactions(); i++) {
rxn = model2->getReaction(i);
cout << "Reaction" << i << ": " << rxn->getId() << endl;
srplugin = static_cast<SpatialSpeciesRxnPlugin*>(rxn->getPlugin("spatial"));
if (srplugin->getIsLocal()) {
cout << "rxn" << i << " isLocal: " << srplugin->getIsLocal() << endl;
}
}
Rule *rule;
for (unsigned int i = 0; i < model2->getNumRules(); i++) {
rule = model2->getRule(i);
cout << "Rule" << i << ": " << rule->getVariable() << endl;
}
//
// Get a SpatialModelPlugin object plugged in the model object.
//
// The type of the returned value of SBase::getPlugin() function is
// SBasePlugin*, and thus the value needs to be cast for the
// corresponding derived class.
//
SpatialModelPlugin* mplugin2;
mplugin2 = static_cast<SpatialModelPlugin*>(model2->getPlugin("spatial"));
cout << "URI: " << mplugin2->getURI() << endl;
cout << "prefix: " << mplugin2->getPrefix() << endl;
// get a Geometry object via SpatialModelPlugin object.
Geometry* geometry2 = mplugin2->getGeometry();
cout << "Geometry coordSystem: " << geometry2->getCoordinateSystem() << endl;
// get a CoordComponent object via the Geometry object.
CoordinateComponent* coordComp = geometry2->getCoordinateComponent(0);
std::cout << "CoordComponent spatialId: " << coordComp->getSpatialId() << std::endl;
std::cout << "CoordComponent compType: " << coordComp->getComponentType() << std::endl;
std::cout << "CoordComponent sbmlUnit: " << coordComp->getSbmlUnit() << std::endl;
//.........这里部分代码省略.........
示例7: sbmlns
LIBSBML_CPP_NAMESPACE_USE
int
main (int argc, char* argv[])
{
SBMLNamespaces sbmlns(3,1,"multi",1);
// create the document
SBMLDocument *document = new SBMLDocument(&sbmlns);
// set the required attribute to true
MultiSBMLDocumentPlugin * docPlug =
static_cast<MultiSBMLDocumentPlugin*>(document->getPlugin("multi"));
docPlug->setRequired(true);
// create the Model
Model* model=document->createModel();
// create the compartments
Compartment * c = model->createCompartment();
c->setId("membrane");
c->setConstant(true);
// set the multi attribute isType via the compartmentPlugin
MultiCompartmentPlugin * compPlug =
static_cast<MultiCompartmentPlugin*>(c->getPlugin("multi"));
compPlug->setIsType(true);
// create the speciesTypes
MultiModelPlugin * modelPlug =
static_cast<MultiModelPlugin*>(model->getPlugin("multi"));
MultiSpeciesType * st = modelPlug->createMultiSpeciesType();
st->setId("stX");
st->setCompartment("membrane");
// create species
Species *s = model->createSpecies();
s->setId("s1");
s->setCompartment("membrane");
s->setBoundaryCondition(false);
s->setHasOnlySubstanceUnits(false);
s->setConstant(false);
// set the multi attribute speciesType via the compartmentPlugin
MultiSpeciesPlugin * spPlug =
static_cast<MultiSpeciesPlugin*>(s->getPlugin("multi"));
spPlug->setSpeciesType("stX");
// create species feature
SpeciesFeature *sf = spPlug->createSpeciesFeature();
sf->setSpeciesFeatureType("a");
sf->setOccur(1);
sf->setComponent("b");
SpeciesFeatureValue *sfv = sf->createSpeciesFeatureValue();
sfv->setValue("c");
// create a subListOfSpeciesFeatures
SubListOfSpeciesFeatures* subloSF = spPlug->createSubListOfSpeciesFeatures();
subloSF->setRelation(Relation_fromString("and"));
// add speciesFeatures to the subList
SpeciesFeature *sf1 = new SpeciesFeature(3, 1, 1);
sf1->setSpeciesFeatureType("a1");
sf1->setOccur(1);
sf1->setComponent("b1");
SpeciesFeatureValue *sfv1 = sf1->createSpeciesFeatureValue();
sfv1->setValue("c1");
subloSF->appendAndOwn(sf1);
sf1 = new SpeciesFeature(3, 1, 1);
sf1->setSpeciesFeatureType("a2");
sf1->setOccur(1);
sf1->setComponent("b2");
sfv1 = sf1->createSpeciesFeatureValue();
sfv1->setValue("c2");
subloSF->appendAndOwn(sf1);
// create a second subListOfSpeciesfeatures
subloSF = spPlug->createSubListOfSpeciesFeatures();
subloSF->setRelation(Relation_fromString("or"));
sf1 = new SpeciesFeature(3, 1, 1);
sf1->setSpeciesFeatureType("a3");
sf1->setOccur(1);
sf1->setComponent("b3");
sfv1 = sf1->createSpeciesFeatureValue();
sfv1->setValue("c3");
//.........这里部分代码省略.........
示例8: readSpatialSBML
void readSpatialSBML() {
SBMLDocument *document2 = readSBML("spatial_example2.xml");
Model *model2 = document2->getModel();
Compartment *comp;
SpatialCompartmentPlugin* cplugin;
for (unsigned int i = 0; i < model2->getNumCompartments(); i++) {
comp = model2->getCompartment(i);
cout << "Compartment" << i << ": " << comp->getId() << endl;
cplugin = static_cast<SpatialCompartmentPlugin*>(comp->getPlugin("spatial"));
if (cplugin->getCompartmentMapping()->isSetId()) {
cout << "Comp" << i << " CMSpId: " << cplugin->getCompartmentMapping()->getId() << endl;
cout << "Comp" << i << " CM_DType: " << cplugin->getCompartmentMapping()->getDomainType() << endl;
cout << "Comp" << i << " CM_UnitSz: " << cplugin->getCompartmentMapping()->getUnitSize() << endl;
}
}
Species *sp;
SpatialSpeciesPlugin* srplugin;
for (unsigned int i = 0; i < model2->getNumSpecies(); i++) {
sp = model2->getSpecies(i);
cout << "Species" << i << ": " << sp->getId() << endl;
srplugin = static_cast<SpatialSpeciesPlugin*>(sp->getPlugin("spatial"));
if (srplugin->getIsSpatial()) {
cout << "species" << i << " isSpatial: " << srplugin->getIsSpatial() << endl;
}
}
Parameter *param;
SpatialParameterPlugin* pplugin;
for (unsigned int i = 0; i < model2->getNumParameters(); i++) {
param = model2->getParameter(i);
cout << "Parameter" << i << ": " << param->getId() << endl;
pplugin = static_cast<SpatialParameterPlugin*>(param->getPlugin("spatial"));
if (pplugin->isSetSpatialSymbolReference()) {
cout << "Parameter" << i << " SpRefId: " << pplugin->getSpatialSymbolReference()->getSpatialRef() << endl;
}
if (pplugin->isSetDiffusionCoefficient()) {
cout << "Diff_" << i << " SpeciesVarId: " << pplugin->getDiffusionCoefficient()->getVariable() << endl;
cout << "Diff_" << i << " Type: " << DiffusionKind_toString(pplugin->getDiffusionCoefficient()->getType()) << endl;
for (unsigned int j = 0; j < pplugin->getDiffusionCoefficient()->getNumCoordinateReferences(); ++j)
cout << "Diff_" << i << " SpCoordIndex " << j << " : " << CoordinateKind_toString(pplugin->getDiffusionCoefficient()->getCoordinateReference(j) ->getCoordinate()) << endl;
}
if (pplugin->isSetAdvectionCoefficient()) {
cout << "Adv_" << i << " SpeciesVarId: " << pplugin->getAdvectionCoefficient()->getVariable() << endl;
cout << "Adv_" << i << " SpCoordIndex: " << CoordinateKind_toString(pplugin->getAdvectionCoefficient()->getCoordinate()) << endl;
}
if (pplugin->isSetBoundaryCondition()) {
cout << "BC_" << i << " SpeciesVarId: " << pplugin->getBoundaryCondition()->getVariable() << endl;
cout << "BC_" << i << " SpCoordBoundary: " << pplugin->getBoundaryCondition()->getCoordinateBoundary() << endl;
cout << "BC_" << i << " SpBoundaryType: " << pplugin->getBoundaryCondition()->getType() << endl;
}
}
Reaction *rxn;
SpatialReactionPlugin* rplugin;
for (unsigned int i = 0; i < model2->getNumReactions(); i++) {
rxn = model2->getReaction(i);
cout << "Reaction" << i << ": " << rxn->getId() << endl;
rplugin = static_cast<SpatialReactionPlugin*>(rxn->getPlugin("spatial"));
if (rplugin->getIsLocal()) {
cout << "rxn" << i << " isLocal: " << rplugin->getIsLocal() << endl;
}
}
Rule *rule;
for (unsigned int i = 0; i < model2->getNumRules(); i++) {
rule = model2->getRule(i);
cout << "Rule" << i << ": " << rule->getVariable() << endl;
}
//
// Get a SpatialModelPlugin object plugged in the model object.
//
// The type of the returned value of SBase::getPlugin() function is
// SBasePlugin*, and thus the value needs to be cast for the
// corresponding derived class.
//
SpatialModelPlugin* mplugin2;
mplugin2 = static_cast<SpatialModelPlugin*>(model2->getPlugin("spatial"));
cout << "URI: " << mplugin2->getURI() << endl;
cout << "prefix: " << mplugin2->getPrefix() << endl;
// get a Geometry object via SpatialModelPlugin object.
Geometry* geometry2 = mplugin2->getGeometry();
cout << "Geometry coordSystem: " << geometry2->getCoordinateSystem() << endl;
// get a CoordComponent object via the Geometry object.
CoordinateComponent* coordComp = geometry2->getCoordinateComponent(0);
std::cout << "CoordComponent Id: " << coordComp->getId() << std::endl;
std::cout << "CoordComponent type: " << CoordinateKind_toString( coordComp->getType()) << std::endl;
std::cout << "CoordComponent sbmlUnit: " << coordComp->getUnit() << std::endl;
if (coordComp->isSetBoundaryMin())
{
Boundary* minX = coordComp->getBoundaryMin();
std::cout << "minX name: " << minX->getId() << std::endl;
std::cout << "minX value: " << minX->getValue() << std::endl;
}
if (coordComp->isSetBoundaryMax())
{
//.........这里部分代码省略.........
示例9: readSBMLFromFile
END_TEST
START_TEST (test_SpatialExtension_read_L3V1V1_defaultNS)
{
string file = TestDataDirectory;
file += "/read_L3V1V1_defaultNS.xml";
SBMLDocument *document = readSBMLFromFile(file.c_str());
string sbmlDoc = writeSBMLToStdString(document);
Model *model = document->getModel();
//document->printErrors();
fail_unless(model != NULL);
//fail_unless(document->getNumErrors() == 0);
// model : compartment
fail_unless(model->getNumCompartments() == 1);
Compartment *comp = model->getCompartment(0);
// compartment : compartmentMapping
SpatialCompartmentPlugin* cplugin = static_cast<SpatialCompartmentPlugin*>(comp->getPlugin("spatial"));
fail_unless(cplugin != NULL);
CompartmentMapping *cMapping = cplugin->getCompartmentMapping();
if (cMapping->isSetId()) {
fail_unless(cMapping->getId() == "compMap1");
fail_unless(cMapping->getDomainType() == "dtype1");
fail_unless(cMapping->getUnitSize() == 1);
}
// model : species 1
fail_unless(model->getNumSpecies() == 2);
Species *sp = model->getSpecies(0);
SpatialSpeciesPlugin* srplugin = static_cast<SpatialSpeciesPlugin*>(sp->getPlugin("spatial"));
fail_unless(srplugin != NULL);
fail_unless(srplugin->getIsSpatial() == true);
// model : species 2
sp = model->getSpecies(1);
srplugin = static_cast<SpatialSpeciesPlugin*>(sp->getPlugin("spatial"));
fail_unless(srplugin != NULL);
fail_unless(srplugin->getIsSpatial() == true);
// model : parameters (species diffusion, advection coeffs, species boundary conditions, coordinate components from Geometry
fail_unless(model->getNumParameters() == 5);
// parameter 0 : diffusionCoefficient
Parameter *param = model->getParameter(0);
SpatialParameterPlugin* pplugin = static_cast<SpatialParameterPlugin*>(param->getPlugin("spatial"));
fail_unless(pplugin != NULL);
fail_unless(pplugin->isSpatialParameter() == true);
fail_unless(pplugin->getType() == SBML_SPATIAL_DIFFUSIONCOEFFICIENT);
DiffusionCoefficient *diffCoeff = pplugin->getDiffusionCoefficient();
fail_unless(diffCoeff->getVariable() == "ATPc");
fail_unless(diffCoeff->isSetCoordinateReference1());
fail_unless(diffCoeff->getCoordinateReference1() == SPATIAL_COORDINATEKIND_CARTESIAN_X);
// parameter 1 : advectionCoefficient
param = model->getParameter(1);
pplugin = static_cast<SpatialParameterPlugin*>(param->getPlugin("spatial"));
fail_unless(pplugin != NULL);
fail_unless(pplugin->isSpatialParameter() == true);
fail_unless(pplugin->getType() == SBML_SPATIAL_ADVECTIONCOEFFICIENT);
AdvectionCoefficient *advCoeff = pplugin->getAdvectionCoefficient();
fail_unless(advCoeff->getVariable() == "ATPc");
fail_unless(advCoeff->getCoordinate() == SPATIAL_COORDINATEKIND_CARTESIAN_X);
// parameter 2 : boundaryCondition X
param = model->getParameter(2);
pplugin = static_cast<SpatialParameterPlugin*>(param->getPlugin("spatial"));
fail_unless(pplugin != NULL);
fail_unless(pplugin->isSpatialParameter() == true);
fail_unless(pplugin->getType() == SBML_SPATIAL_BOUNDARYCONDITION);
BoundaryCondition *bc = pplugin->getBoundaryCondition();
fail_unless(bc->getVariable() == "ATPc");
fail_unless(bc->getCoordinateBoundary() == "Xmin");
fail_unless(bc->getType() == SPATIAL_BOUNDARYKIND_DIRICHLET);
// parameter 3 : SpatialSymbolReference (coordinateComponent from geometry)
param = model->getParameter(3);
pplugin = static_cast<SpatialParameterPlugin*>(param->getPlugin("spatial"));
fail_unless(pplugin != NULL);
SpatialSymbolReference *spSymRef = pplugin->getSpatialSymbolReference();
fail_unless(spSymRef->getSpatialRef() == "coordComp1");
// model : reaction
fail_unless(model->getNumReactions() == 1);
Reaction *rxn = model->getReaction(0);
SpatialReactionPlugin* rplugin = static_cast<SpatialReactionPlugin*>(rxn->getPlugin("spatial"));
fail_unless(rplugin != NULL);
fail_unless(rplugin->getIsLocal() == true);
//.........这里部分代码省略.........