LIBSBML_CPP_NAMESPACE_USE int main(int argc,char** argv) { if (argc != 2) { std::cout << "Usage: example1\n"; return 1; } // // Creates an SBMLNamespaces object with the given SBML level, version // package name, package version. // // (NOTE) By defualt, the name of package (i.e. "qual") will be used // if the arugment for the prefix is missing or empty. Thus the argument // for the prefix can be added as follows: // // SBMLNamespaces sbmlns(3,1,"qual",1,"QUAL"); // SBMLNamespaces sbmlns(3,1,"qual",1); // // (NOTES) The above code creating an SBMLNamespaces object can be replaced // with one of the following other styles. // // (1) Creates an SBMLNamespace object with a SBML core namespace and then // adds a qual package namespace to the object. // // SBMLNamespaces sbmlns(3,1); // sbmlns.addPkgNamespace("qual",1); // // OR // // SBMLNamespaces sbmlns(3,1); // sbmlns.addNamespace(QualExtension::XmlnsL3V1V1,"qual"); // // (2) Creates a QualPkgNamespaces object (SBMLNamespace derived class for // qual package. The class is basically used for createing an SBase // derived objects defined in the qual package) with the given SBML // level, version, and package version // // QualPkgNamespaces sbmlns(3,1,1); // // create the document SBMLDocument *document = new SBMLDocument(&sbmlns); // mark qual as required document->setPackageRequired("qual", true); // create the Model Model* model=document->createModel(); // create the Compartment Compartment* compartment = model->createCompartment(); compartment->setId("c"); compartment->setConstant(true); // // Get a QualModelPlugin 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 casted for the // corresponding derived class. // QualModelPlugin* mplugin = static_cast<QualModelPlugin*>(model->getPlugin("qual")); // create the QualitativeSpecies QualitativeSpecies* qs = mplugin->createQualitativeSpecies(); qs->setId("s1"); qs->setCompartment("c"); qs->setConstant(false); qs->setInitialLevel(1); qs->setMaxLevel(4); qs->setName("sss"); // create the Transition Transition* t = mplugin->createTransition(); t->setId("d"); t->setSBOTerm(1); Input* i = t->createInput(); i->setId("RD"); i->setQualitativeSpecies("s1"); i->setTransitionEffect(INPUT_TRANSITION_EFFECT_NONE); i->setSign(INPUT_SIGN_NEGATIVE); i->setThresholdLevel(2); i->setName("aa"); Output* o = t->createOutput(); o->setId("wd"); o->setQualitativeSpecies("s1"); o->setTransitionEffect(OUTPUT_TRANSITION_EFFECT_PRODUCTION); o->setOutputLevel(2); o->setName("aa"); DefaultTerm* dt = t->createDefaultTerm(); dt->setResultLevel(2) ; FunctionTerm* ft = t->createFunctionTerm(); ASTNode* math = SBML_parseL3Formula("geq(s1, 2)"); ft->setResultLevel(1); ft->setMath(math); writeSBML(document,"qual_example1.xml"); delete document; return 0; }
LIBSBML_CPP_NAMESPACE_USE int main(int argc, char** argv) { // // Creates an SBMLNamespaces object with the given SBML level, version // package name. // SBMLNamespaces sbmlns(2, 3); sbmlns.addNamespace(LayoutExtension::getXmlnsL2(), "layout"); // (NOTES) The above code creating an SBMLNamespaces object can be replaced // with the following other style. // // (2) Creates a LayoutPkgNamespaces object (SBMLNamespace derived class // for layout package. The class is basically used for createing an // SBase derived objects belonging to the layout package) with the // given SBML level, version. (Package version is not required by // Layout extension of SBML Level 2) // // LayoutPkgNamespaces sbmlns(2, 3); // // create the document SBMLDocument *document = new SBMLDocument(&sbmlns); // create the Model Model* model = document->createModel(); model->setId("TestModel_with_modifiers"); document->setModel(model); // create the Layout LayoutPkgNamespaces layoutns(2, 3); LayoutModelPlugin* mplugin = static_cast<LayoutModelPlugin*>(model->getPlugin("layout")); Layout* layout = mplugin->createLayout(); layout->setId("Layout_1"); Dimensions dim(&layoutns, 400.0, 230.0); layout->setDimensions(&dim); // create the Compartment Compartment* compartment = model->createCompartment(); compartment->setId("Yeast"); // create the CompartmentGlyph CompartmentGlyph* compartmentGlyph = layout->createCompartmentGlyph(); compartmentGlyph->setId("CompartmentGlyph_1"); compartmentGlyph->setCompartmentId(compartment->getId()); BoundingBox bb(&layoutns, "bb1", 5, 5, 390, 220); compartmentGlyph->setBoundingBox(&bb); // create the Species, SpeciesGlyphs and associated TextGlyphs // Glucose Species* species_Gluc = model->createSpecies(); species_Gluc->setId("Glucose"); species_Gluc->setCompartment(compartment->getId()); SpeciesGlyph* glyph_Gluc = layout->createSpeciesGlyph(); glyph_Gluc->setId("SpeciesGlyph_Glucose"); glyph_Gluc->setSpeciesId(species_Gluc->getId()); bb = BoundingBox(&layoutns, "bb2", 105, 20, 130, 20); glyph_Gluc->setBoundingBox(&bb); TextGlyph* tGlyph = layout->createTextGlyph(); tGlyph->setId("TextGlyph_Glucose"); bb = BoundingBox(&layoutns, "bbA", 115, 20, 110, 20); tGlyph->setBoundingBox(&bb); tGlyph->setOriginOfTextId(species_Gluc->getId()); tGlyph->setGraphicalObjectId(glyph_Gluc->getId()); // Glucose-6-phosphate Species* species_G6P = model->createSpecies(); species_G6P->setId("Glucose_hyphen_6_hyphen_phosphate"); species_G6P->setCompartment(compartment->getId()); SpeciesGlyph* glyph_G6P = layout->createSpeciesGlyph(); glyph_G6P->setId("SpeciesGlyph_G6P"); glyph_G6P->setSpeciesId(species_G6P->getId()); bb = BoundingBox(&layoutns, "bb5", 50, 190, 270, 20); glyph_G6P->setBoundingBox(&bb); tGlyph = layout->createTextGlyph(); tGlyph->setId("TextGlyph_G6P"); bb = BoundingBox(&layoutns, "bbD", 60, 190, 250, 20); tGlyph->setBoundingBox(&bb); tGlyph->setOriginOfTextId(species_G6P->getId()); tGlyph->setGraphicalObjectId(glyph_G6P->getId()); // ATP Species* species_ATP = model->createSpecies(); species_ATP->setId("ATP"); species_ATP->setCompartment(compartment->getId()); SpeciesGlyph* glyph_ATP = layout->createSpeciesGlyph(); glyph_ATP->setId("SpeciesGlyph_ATP"); glyph_ATP->setSpeciesId(species_ATP->getId()); bb = BoundingBox(&layoutns, "bb3", 270, 70, 80, 20); glyph_ATP->setBoundingBox(&bb); tGlyph = layout->createTextGlyph(); tGlyph->setId("TextGlyph_ATP"); bb = BoundingBox(&layoutns, "bbB", 280, 70, 60, 20); tGlyph->setBoundingBox(&bb); tGlyph->setOriginOfTextId(species_ATP->getId()); tGlyph->setGraphicalObjectId(glyph_ATP->getId()); // ADP Species* species_ADP = model->createSpecies(); species_ADP->setId("ADP"); species_ADP->setCompartment(compartment->getId()); SpeciesGlyph* glyph_ADP = layout->createSpeciesGlyph(); glyph_ADP->setId("glyph_ADP"); glyph_ADP->setSpeciesId(species_ADP->getId()); bb = BoundingBox(&layoutns, "bb4", 270, 140, 80, 20); glyph_ADP->setBoundingBox(&bb); tGlyph = layout->createTextGlyph(); tGlyph->setId("TextGlyph_ADP"); bb = BoundingBox(&layoutns, "bbC", 280, 140, 60, 20); tGlyph->setBoundingBox(&bb); tGlyph->setOriginOfTextId(species_ADP->getId()); tGlyph->setGraphicalObjectId(glyph_ADP->getId()); // Phosphate Species* species_Pi = model->createSpecies(); species_Pi->setId("Pi"); species_Pi->setCompartment(compartment->getId()); SpeciesGlyph* glyph_Pi = layout->createSpeciesGlyph(); glyph_Pi->setId("SpeciesGlyph_Pi"); glyph_Pi->setSpeciesId(species_Pi->getId()); bb = BoundingBox(&layoutns, "bb6", 50, 100, 60, 20); glyph_Pi->setBoundingBox(&bb); tGlyph = layout->createTextGlyph(); tGlyph->setId("TextGlyph_PI"); bb = BoundingBox(&layoutns, "bbE", 60, 100, 40, 20); tGlyph->setBoundingBox(&bb); tGlyph->setOriginOfTextId(species_Pi->getId()); tGlyph->setGraphicalObjectId(glyph_Pi->getId()); // create the Reaction Reaction* reaction_Hexokinase = model->createReaction(); reaction_Hexokinase->setId("Hexokinase"); reaction_Hexokinase->setReversible(false); ReactionGlyph* glyph_Hexokinase = layout->createReactionGlyph(); glyph_Hexokinase->setId("glyph_Hexokinase"); glyph_Hexokinase->setReactionId(reaction_Hexokinase->getId()); Curve* curve_Hexokinase = glyph_Hexokinase->getCurve(); LineSegment* ls = curve_Hexokinase->createLineSegment(); Point p(&layoutns, 170, 100); ls->setStart(&p); p = Point(&layoutns, 170, 130); ls->setEnd(&p); // create the species reference for glucose SpeciesReference* reference_Gluc = reaction_Hexokinase->createReactant(); reference_Gluc->setSpecies(species_Gluc->getId()); reference_Gluc->setId("SpeciesReference_Glucose"); // create species reference glyph for glucose SpeciesReferenceGlyph* speciesReferenceGlyph = glyph_Hexokinase->createSpeciesReferenceGlyph(); speciesReferenceGlyph->setId("SpeciesReferenceGlyph_Glucose"); speciesReferenceGlyph->setSpeciesGlyphId(glyph_Gluc->getId()); speciesReferenceGlyph->setSpeciesReferenceId(reference_Gluc->getId()); speciesReferenceGlyph->setRole(SPECIES_ROLE_SUBSTRATE); ls = speciesReferenceGlyph->createLineSegment(); p = Point(&layoutns, 170, 100); ls->setStart(&p); p = Point(&layoutns, 170, 50); ls->setEnd(&p); // create species reference for ATP SpeciesReference* reference_ATP = reaction_Hexokinase->createReactant(); reference_ATP->setSpecies(species_ATP->getId()); reference_ATP->setId("SpeciesReference_ATP"); // create the species reference glyph for ATP speciesReferenceGlyph = glyph_Hexokinase->createSpeciesReferenceGlyph(); speciesReferenceGlyph->setId("SpeciesReferenceGlyph_ATP"); speciesReferenceGlyph->setSpeciesGlyphId(glyph_ATP->getId()); speciesReferenceGlyph->setSpeciesReferenceId(reference_ATP->getId()); speciesReferenceGlyph->setRole(SPECIES_ROLE_SIDESUBSTRATE); CubicBezier* cb = speciesReferenceGlyph->createCubicBezier(); p = Point(&layoutns, 170, 100); cb->setStart(&p); p = Point(&layoutns, 170, 80); cb->setBasePoint1(&p); p = Point(&layoutns, 170, 80); cb->setBasePoint2(&p); p = Point(&layoutns, 260, 80); cb->setEnd(&p); // create species reference for G6P SpeciesReference* reference_G6P = reaction_Hexokinase->createProduct(); reference_G6P->setSpecies(species_G6P->getId()); reference_G6P->setId("SpeciesReference_G6P"); // create species reference for G6P as product speciesReferenceGlyph = glyph_Hexokinase->createSpeciesReferenceGlyph(); speciesReferenceGlyph->setId("SpeciesReferenceGlyph_G6P_1"); speciesReferenceGlyph->setSpeciesGlyphId(glyph_G6P->getId()); speciesReferenceGlyph->setSpeciesReferenceId(reference_G6P->getId()); speciesReferenceGlyph->setRole(SPECIES_ROLE_PRODUCT); ls = speciesReferenceGlyph->createLineSegment(); p = Point(&layoutns, 170, 130); ls->setStart(&p); p = Point(&layoutns, 170, 180); ls->setEnd(&p); // create species reference for ADP SpeciesReference* reference_ADP = reaction_Hexokinase->createProduct(); reference_ADP->setSpecies(species_ADP->getId()); reference_ADP->setId("SpeciesReference_ADP"); // create the species reference glyph for ADP speciesReferenceGlyph = glyph_Hexokinase->createSpeciesReferenceGlyph(); speciesReferenceGlyph->setId("SpeciesReferenceGlyph_ADP"); speciesReferenceGlyph->setSpeciesGlyphId(glyph_ADP->getId()); speciesReferenceGlyph->setSpeciesReferenceId(reference_ADP->getId()); speciesReferenceGlyph->setRole(SPECIES_ROLE_SIDEPRODUCT); cb = speciesReferenceGlyph->createCubicBezier(); p = Point(&layoutns, 170, 130); cb->setStart(&p); p = Point(&layoutns, 170, 150); cb->setBasePoint1(&p); p = Point(&layoutns, 170, 150); cb->setBasePoint2(&p); p = Point(&layoutns, 260, 150); cb->setEnd(&p); // create modifier species reference for glucose-6-phosphate ModifierSpeciesReference* reference_G6P_2 = reaction_Hexokinase->createModifier(); reference_G6P_2->setSpecies(species_G6P->getId()); reference_G6P_2->setId("ModifierSpeciesReference_G6P"); reaction_Hexokinase->addModifier(reference_G6P_2); // create species reference glyph for G6P as a modifier speciesReferenceGlyph = glyph_Hexokinase->createSpeciesReferenceGlyph(); speciesReferenceGlyph->setId("SpeciesReferenceGlyph_G6P_2"); speciesReferenceGlyph->setSpeciesReferenceId(reference_G6P_2->getId()); speciesReferenceGlyph->setSpeciesGlyphId(glyph_G6P->getId()); speciesReferenceGlyph->setRole(SPECIES_ROLE_INHIBITOR); cb = speciesReferenceGlyph->createCubicBezier(); p = Point(&layoutns, 45, 200); cb->setStart(&p); p = Point(&layoutns, 0, 200); cb->setBasePoint1(&p); p = Point(&layoutns, 0, 120); cb->setBasePoint2(&p); p = Point(&layoutns, 165, 120); cb->setEnd(&p); // create modifier species reference for phosphate ModifierSpeciesReference* reference_Pi = reaction_Hexokinase->createModifier(); reference_Pi->setSpecies(species_Pi->getId()); reference_Pi->setId("ModifierSpeciesReference_Pi"); reaction_Hexokinase->addModifier(reference_Pi); // create the species reference glyph for Phosphate speciesReferenceGlyph = glyph_Hexokinase->createSpeciesReferenceGlyph(); speciesReferenceGlyph->setId("SpeciesReferenceGlyph_PI"); speciesReferenceGlyph->setSpeciesReferenceId(reference_Pi->getId()); speciesReferenceGlyph->setSpeciesGlyphId(glyph_Pi->getId()); speciesReferenceGlyph->setRole(SPECIES_ROLE_ACTIVATOR); cb = speciesReferenceGlyph->createCubicBezier(); p = Point(&layoutns, 115, 110); cb->setStart(&p); p = Point(&layoutns, 140, 110); cb->setBasePoint1(&p); p = Point(&layoutns, 140, 110); cb->setBasePoint2(&p); p = Point(&layoutns, 165, 110); cb->setEnd(&p); // write model to file writeSBML(document, "layout_example3_L2.xml"); delete document; }
LIBSBML_CPP_NAMESPACE_USE int main(int argc,char** argv) { SBMLNamespaces sbmlns(3,1,"fbc",1); // create the document SBMLDocument *document = new SBMLDocument(&sbmlns); document->setPackageRequired("fbc", false); // create the Model Model* model=document->createModel(); // create the Compartment Compartment* compartment = model->createCompartment(); compartment->setId("compartment"); compartment->setConstant(true); compartment->setSize(1); // create the Species Species* species = model->createSpecies(); species->setId("Node1"); species->setCompartment("compartment"); species->setBoundaryCondition(false); species->setConstant(false); species->setHasOnlySubstanceUnits(false); species = model->createSpecies(); species->setId("Node2"); species->setCompartment("compartment"); species->setBoundaryCondition(false); species->setConstant(false); species->setHasOnlySubstanceUnits(false); species = model->createSpecies(); species->setId("Node3"); species->setCompartment("compartment"); species->setBoundaryCondition(false); species->setConstant(false); species->setHasOnlySubstanceUnits(false); species = model->createSpecies(); species->setId("Node4"); species->setCompartment("compartment"); species->setBoundaryCondition(false); species->setConstant(false); species->setHasOnlySubstanceUnits(false); species = model->createSpecies(); species->setId("Node5"); species->setCompartment("compartment"); species->setBoundaryCondition(false); species->setConstant(false); species->setHasOnlySubstanceUnits(false); species = model->createSpecies(); species->setId("Node6"); species->setCompartment("compartment"); species->setBoundaryCondition(false); species->setConstant(false); species->setHasOnlySubstanceUnits(false); species = model->createSpecies(); species->setId("Node7"); species->setCompartment("compartment"); species->setBoundaryCondition(false); species->setConstant(false); species->setHasOnlySubstanceUnits(false); species = model->createSpecies(); species->setId("Node8"); species->setCompartment("compartment"); species->setBoundaryCondition(false); species->setConstant(false); species->setHasOnlySubstanceUnits(false); species = model->createSpecies(); species->setId("Node0"); species->setCompartment("compartment"); species->setBoundaryCondition(true); species->setConstant(false); species->setHasOnlySubstanceUnits(false); species = model->createSpecies(); species->setId("Node9"); species->setCompartment("compartment"); species->setBoundaryCondition(true); species->setConstant(false); species->setHasOnlySubstanceUnits(false); Reaction* reaction = model->createReaction(); reaction->setId("J0"); reaction->setReversible(false); reaction->setFast(false); SpeciesReference* reactant = reaction->createReactant(); reactant->setSpecies("Node0"); reactant->setStoichiometry(1); reactant->setConstant(true); SpeciesReference* product = reaction->createProduct(); product->setSpecies("Node1"); product->setStoichiometry(1); product->setConstant(true); reaction = model->createReaction(); reaction->setId("J1"); reaction->setReversible(false); reaction->setFast(false); reactant = reaction->createReactant(); reactant->setSpecies("Node1"); reactant->setStoichiometry(1); reactant->setConstant(true); product = reaction->createProduct(); product->setSpecies("Node2"); product->setStoichiometry(1); product->setConstant(true); reaction = model->createReaction(); reaction->setId("J2"); reaction->setReversible(false); reaction->setFast(false); reactant = reaction->createReactant(); reactant->setSpecies("Node2"); reactant->setStoichiometry(1); reactant->setConstant(true); product = reaction->createProduct(); product->setSpecies("Node3"); product->setStoichiometry(1); product->setConstant(true); reaction = model->createReaction(); reaction->setId("J3"); reaction->setReversible(false); reaction->setFast(false); reactant = reaction->createReactant(); reactant->setSpecies("Node1"); reactant->setStoichiometry(1); reactant->setConstant(true); product = reaction->createProduct(); product->setSpecies("Node4"); product->setStoichiometry(1); product->setConstant(true); reaction = model->createReaction(); reaction->setId("J4"); reaction->setReversible(false); reaction->setFast(false); reactant = reaction->createReactant(); reactant->setSpecies("Node4"); reactant->setStoichiometry(1); reactant->setConstant(true); product = reaction->createProduct(); product->setSpecies("Node3"); product->setStoichiometry(1); product->setConstant(true); reaction = model->createReaction(); reaction->setId("J5"); reaction->setReversible(false); reaction->setFast(false); reactant = reaction->createReactant(); reactant->setSpecies("Node3"); reactant->setStoichiometry(1); reactant->setConstant(true); product = reaction->createProduct(); product->setSpecies("Node5"); product->setStoichiometry(1); product->setConstant(true); reaction = model->createReaction(); reaction->setId("J6"); reaction->setReversible(false); reaction->setFast(false); reactant = reaction->createReactant(); reactant->setSpecies("Node5"); reactant->setStoichiometry(1); reactant->setConstant(true); product = reaction->createProduct(); product->setSpecies("Node6"); product->setStoichiometry(1); product->setConstant(true); reaction = model->createReaction(); reaction->setId("J7"); reaction->setReversible(false); reaction->setFast(false); reactant = reaction->createReactant(); reactant->setSpecies("Node6"); reactant->setStoichiometry(1); reactant->setConstant(true); product = reaction->createProduct(); product->setSpecies("Node7"); product->setStoichiometry(1); product->setConstant(true); reaction = model->createReaction(); reaction->setId("J8"); reaction->setReversible(false); reaction->setFast(false); reactant = reaction->createReactant(); reactant->setSpecies("Node5"); reactant->setStoichiometry(1); reactant->setConstant(true); product = reaction->createProduct(); product->setSpecies("Node8"); product->setStoichiometry(1); product->setConstant(true); reaction = model->createReaction(); reaction->setId("J9"); reaction->setReversible(false); reaction->setFast(false); reactant = reaction->createReactant(); reactant->setSpecies("Node8"); reactant->setStoichiometry(1); reactant->setConstant(true); product = reaction->createProduct(); product->setSpecies("Node7"); product->setStoichiometry(1); product->setConstant(true); reaction = model->createReaction(); reaction->setId("J10"); reaction->setReversible(false); reaction->setFast(false); reactant = reaction->createReactant(); reactant->setSpecies("Node7"); reactant->setStoichiometry(1); reactant->setConstant(true); product = reaction->createProduct(); product->setSpecies("Node9"); product->setStoichiometry(1); product->setConstant(true); // // Get a FbcModelPlugin 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 casted for the // corresponding derived class. // FbcModelPlugin* mplugin = static_cast<FbcModelPlugin*>(model->getPlugin("fbc")); FluxBound* bound= mplugin->createFluxBound(); bound->setId("bound1"); bound->setReaction("J0"); bound->setOperation("equal"); bound->setValue(10); Objective* objective = mplugin->createObjective(); objective->setId("obj1"); objective->setType("maximize"); // mark obj1 as active objective mplugin->setActiveObjectiveId("obj1"); FluxObjective* fluxObjective = objective->createFluxObjective(); fluxObjective->setReaction("J8"); fluxObjective->setCoefficient(1); writeSBML(document,"fbc_example1.xml"); delete document; }
LIBSBML_CPP_NAMESPACE_USE int main(int argc,char** argv){ // // Creates an SBMLNamespaces object with the given SBML level, version // package name, package version. // // (NOTE) By defualt, the name of package (i.e. "groups") will be used // if the arugment for the prefix is missing or empty. Thus the argument // for the prefix can be added as follows: // // SBMLNamespaces sbmlns(3,1,"groups",1,"GROUP"); // SBMLNamespaces sbmlns(3,1,"groups",1); // // (NOTES) The above code creating an SBMLNamespaces object can be replaced // with one of the following other styles. // // (1) Creates an SBMLNamespace object with a SBML core namespace and then // adds a groups package namespace to the object. // // SBMLNamespaces sbmlns(3,1); // sbmlns.addPkgNamespace("groups",1); // // OR // // SBMLNamespaces sbmlns(3,1); // sbmlns.addNamespace(GroupsExtension::XmlnsL3V1V1,"groups"); // // (2) Creates a GroupsPkgNamespaces object (SBMLNamespace derived class for // groups package. The class is basically used for createing an SBase derived // objects defined in the groups package) with the given SBML level, version, // and package version // // GroupsPkgNamespaces sbmlns(3,1,1); // // create the document SBMLDocument *document = new SBMLDocument(&sbmlns); // create the Model Model* model=document->createModel(); // create the Compartment Compartment* compartment = model->createCompartment(); compartment->setId("cytosol"); compartment->setConstant(true); compartment=model->createCompartment(); compartment->setId("mitochon"); compartment->setConstant(true); // create the Species Species* species = model->createSpecies(); species->setId("ATPc"); species->setCompartment("cytosol"); species->setInitialConcentration(1); species->setHasOnlySubstanceUnits(false); species->setBoundaryCondition(false); species->setConstant(false); species = model->createSpecies(); species->setId("ATPm"); species->setCompartment("mitochon"); species->setInitialConcentration(2); species->setHasOnlySubstanceUnits(false); species->setBoundaryCondition(false); species->setConstant(false); // create the Groups // // Get a GroupsModelPlugin 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 casted for the corresponding derived class. // GroupsModelPlugin* mplugin = static_cast<GroupsModelPlugin*>(model->getPlugin("groups")); // // Creates a Group object via GroupsModelPlugin object. // Group* group = mplugin->createGroup(); group->setId("ATP"); group->setKind(GROUP_KIND_CLASSIFICATION); group->setSBOTerm("SBO:0000252"); Member* member = group->createMember(); member->setIdRef("ATPc"); member = group->createMember(); member->setIdRef("ATPm"); writeSBML(document,"groups_example1.xml"); delete document; }