libSBML C++ API  5.20.2
example1.cpp

An example layout.

/**
* @file example1.cpp
* @brief SBML Layout example
* @author Ralph Gauges
* @author Akiya Jouraku (Modified this file for layout package of SBML Level 3
* in libSBML 5)
*
* Copyright 2004 European Media Laboratories Research gGmbH
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation; either version 2.1 of the License, or
* any later version.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. The software and
* documentation provided hereunder is on an "as is" basis, and the
* European Media Laboratories Research gGmbH have no obligations to
* provide maintenance, support, updates, enhancements or modifications.
* In no event shall the European Media Laboratories Research gGmbH be
* liable to any party for direct, indirect, special, incidental or
* consequential damages, including lost profits, arising out of the use of
* this software and its documentation, even if the European Media
* Laboratories Research gGmbH have been advised of the possibility of such
* damage. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* The original code contained here was initially developed by:
*
* Ralph Gauges
* Bioinformatics Group
* European Media Laboratories Research gGmbH
* Schloss-Wolfsbrunnenweg 31c
* 69118 Heidelberg
* Germany
*
* http://www.eml-research.de/english/Research/BCB/
* mailto:ralph.gauges@eml-r.villa-bosch.de
*/
#include "sbml/Model.h"
#include "sbml/Species.h"
#include "sbml/Reaction.h"
#if (!defined LIBSBML_HAS_PACKAGE_LAYOUT)
#error "This example requires libSBML to be built with the layout extension."
#endif
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, 4);
// (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, 4);
//
// create the document
SBMLDocument *document = new SBMLDocument(&sbmlns);
// create the Model
Model* model = document->createModel();
model->setId("TestModel");
document->setModel(model);
// create the Compartment
Compartment* compartment = model->createCompartment();
compartment->setId("Compartment_1");
// create the Species
Species* species1 = model->createSpecies();
species1->setId("Species_1");
species1->setCompartment(compartment->getId());
Species* species2 = model->createSpecies();
species2->setId("Species_2");
species2->setCompartment(compartment->getId());
// create the Reactions
Reaction* reaction1 = model->createReaction();
reaction1->setId("Reaction_1");
reaction1->setReversible(false);
SpeciesReference* reference1 = reaction1->createReactant();
reference1->setSpecies(species1->getId());
reference1->setId("SpeciesReference_1");
SpeciesReference* reference2 = reaction1->createProduct();
reference2->setSpecies(species2->getId());
reference2->setId("SpeciesReference_2");
Reaction* reaction2 = model->createReaction();
reaction2->setId("Reaction_2");
reaction2->setReversible(false);
SpeciesReference* reference3 = reaction2->createReactant();
reference3->setSpecies(species2->getId());
reference3->setId("SpeciesReference_3");
SpeciesReference* reference4 = reaction2->createProduct();
reference4->setSpecies(species1->getId());
reference4->setId("SpeciesReference_4");
// create the Layout
LayoutPkgNamespaces layoutns(2, 4);
= static_cast<LayoutModelPlugin*>(model->getPlugin("layout"));
Layout* layout = mplugin->createLayout();
layout->setId("Layout_1");
Dimensions dim(&layoutns, 400.0, 220.0);
layout->setDimensions(&dim);
// create the CompartmentGlyph
CompartmentGlyph* compartmentGlyph = layout->createCompartmentGlyph();
compartmentGlyph->setId("CompartmentGlyph_1");
compartmentGlyph->setCompartmentId(compartment->getId());
BoundingBox bb(&layoutns, "bb1", 5, 5, 390, 210);
compartmentGlyph->setBoundingBox(&bb);
// create the SpeciesGlyphs
SpeciesGlyph* speciesGlyph1 = layout->createSpeciesGlyph();
speciesGlyph1->setId("SpeciesGlyph_1");
speciesGlyph1->setSpeciesId(species1->getId());
bb = BoundingBox(&layoutns, "bb2", 80, 26, 240, 24);
speciesGlyph1->setBoundingBox(&bb);
TextGlyph* textGlyph1 = layout->createTextGlyph();
textGlyph1->setId("TextGlyph_01");
bb = BoundingBox(&layoutns, "bbA", 92, 26, 228, 24);
textGlyph1->setBoundingBox(&bb);
textGlyph1->setOriginOfTextId(speciesGlyph1->getId());
textGlyph1->setGraphicalObjectId(speciesGlyph1->getId());
SpeciesGlyph* speciesGlyph2 = layout->createSpeciesGlyph();
speciesGlyph2->setId("SpeciesGlyph_2");
speciesGlyph2->setSpeciesId(species2->getId());
bb = BoundingBox(&layoutns, "bb3", 80, 170, 240, 24);
speciesGlyph2->setBoundingBox(&bb);
TextGlyph* textGlyph2 = layout->createTextGlyph();
textGlyph2->setId("TextGlyph_02");
bb = BoundingBox(&layoutns, "bbB", 92, 170, 228, 24);
textGlyph2->setBoundingBox(&bb);
textGlyph2->setOriginOfTextId(speciesGlyph2->getId());
textGlyph2->setGraphicalObjectId(speciesGlyph2->getId());
// create the ReactionGlyphs
ReactionGlyph* reactionGlyph1 = layout->createReactionGlyph();
reactionGlyph1->setId("ReactionGlyph_1");
reactionGlyph1->setReactionId(reaction1->getId());
Curve* reactionCurve1 = reactionGlyph1->getCurve();
LineSegment* ls = reactionCurve1->createLineSegment();
Point p(&layoutns, 165, 105);
ls->setStart(&p);
p = Point(&layoutns, 165, 115);
ls->setEnd(&p);
ReactionGlyph* reactionGlyph2 = layout->createReactionGlyph();
reactionGlyph2->setId("ReactionGlyph_1");
reactionGlyph2->setReactionId(reaction2->getId());
Curve* reactionCurve2 = reactionGlyph2->getCurve();
ls = reactionCurve2->createLineSegment();
p = Point(&layoutns, 235, 105);
ls->setStart(&p);
p = Point(&layoutns, 235, 115);
ls->setEnd(&p);
// add the SpeciesReferenceGlyphs
SpeciesReferenceGlyph* speciesReferenceGlyph1 = reactionGlyph1->createSpeciesReferenceGlyph();
speciesReferenceGlyph1->setId("SpeciesReferenceGlyph_1");
speciesReferenceGlyph1->setSpeciesGlyphId(speciesGlyph1->getId());
speciesReferenceGlyph1->setSpeciesReferenceId(reference1->getId());
speciesReferenceGlyph1->setRole(SPECIES_ROLE_SUBSTRATE);
Curve* speciesReferenceCurve1 = speciesReferenceGlyph1->getCurve();
CubicBezier* cb = speciesReferenceCurve1->createCubicBezier();
p = Point(&layoutns, 165, 105);
cb->setStart(&p);
p = Point(&layoutns, 165, 90);
cb->setBasePoint1(&p);
p = Point(&layoutns, 165, 90);
cb->setBasePoint2(&p);
p = Point(&layoutns, 195, 60);
cb->setEnd(&p);
SpeciesReferenceGlyph* speciesReferenceGlyph2
= reactionGlyph1->createSpeciesReferenceGlyph();
speciesReferenceGlyph2->setId("SpeciesReferenceGlyph_2");
speciesReferenceGlyph2->setSpeciesGlyphId(speciesGlyph2->getId());
speciesReferenceGlyph2->setSpeciesReferenceId(reference2->getId());
speciesReferenceGlyph2->setRole(SPECIES_ROLE_PRODUCT);
Curve* speciesReferenceCurve2 = speciesReferenceGlyph2->getCurve();
cb = speciesReferenceCurve2->createCubicBezier();
p = Point(&layoutns, 165, 115);
cb->setStart(&p);
p = Point(&layoutns, 165, 130);
cb->setBasePoint1(&p);
p = Point(&layoutns, 165, 130);
cb->setBasePoint2(&p);
p = Point(&layoutns, 195, 160);
cb->setEnd(&p);
SpeciesReferenceGlyph* speciesReferenceGlyph3
= reactionGlyph2->createSpeciesReferenceGlyph();
speciesReferenceGlyph3->setId("SpeciesReferenceGlyph_3");
speciesReferenceGlyph3->setSpeciesGlyphId(speciesGlyph2->getId());
speciesReferenceGlyph3->setSpeciesReferenceId(reference3->getId());
speciesReferenceGlyph3->setRole(SPECIES_ROLE_SUBSTRATE);
Curve* speciesReferenceCurve3 = speciesReferenceGlyph3->getCurve();
cb = speciesReferenceCurve3->createCubicBezier();
p = Point(&layoutns, 235, 115);
cb->setStart(&p);
p = Point(&layoutns, 235, 130);
cb->setBasePoint1(&p);
p = Point(&layoutns, 235, 130);
cb->setBasePoint2(&p);
p = Point(&layoutns, 205, 160);
cb->setEnd(&p);
SpeciesReferenceGlyph* speciesReferenceGlyph4
= reactionGlyph2->createSpeciesReferenceGlyph();
speciesReferenceGlyph4->setId("SpeciesReferenceGlyph_4");
speciesReferenceGlyph4->setSpeciesGlyphId(speciesGlyph1->getId());
speciesReferenceGlyph4->setSpeciesReferenceId(reference4->getId());
speciesReferenceGlyph4->setRole(SPECIES_ROLE_PRODUCT);
Curve* speciesReferenceCurve4 = speciesReferenceGlyph4->getCurve();
cb = speciesReferenceCurve4->createCubicBezier();
p = Point(&layoutns, 235, 105);
cb->setStart(&p);
p = Point(&layoutns, 235, 90);
cb->setBasePoint1(&p);
p = Point(&layoutns, 235, 90);
cb->setBasePoint2(&p);
p = Point(&layoutns, 205, 60);
cb->setEnd(&p);
writeSBML(document,"layout_example1_L2.xml");
delete document;
}
Definition of BoundingBox for SBML Layout.
Definitions of Compartment and ListOfCompartments.
Definition of CompartmentGlyph for SBML Layout.
Definition of CubicBezier for SBML Layout.
Definition of Curve for SBML Layout.
Definition of Dimensions for SBML Layout.
Definition of Layout for SBML Layout.
Definition of LayoutExtension, the core module of layout package.
Definition of LayoutModelPlugin, the plugin class of layout package for Model element.
Definition of LineSegment for SBML Layout.
Definition of Model.
Definition of Point for SBML Layout.
Definitions of Reaction and ListOfReactions.
Definition of ReactionGlyph for SBML Layout.
Top-level container for an SBML Model and associated data.
Writes an SBML Document to file or in-memory string.
int writeSBML(const SBMLDocument_t *d, const char *filename)
Writes the given SBML document d to the file named by filename.
Definitions of Species and ListOfSpecies.
Definition of SpeciesGlyph for SBML Layout.
Definitions of SpeciesReference and ListOfSpeciesReferences.
Definition of SpeciesReferenceGlyph for SBML Layout.
@ SPECIES_ROLE_SUBSTRATE
Definition: SpeciesReferenceRole.h:61
@ SPECIES_ROLE_PRODUCT
Definition: SpeciesReferenceRole.h:62
Definition: BoundingBox.h:64
Definition: CompartmentGlyph.h:60
int setCompartmentId(const std::string &id)
Sets the id of the associated compartment.
Definition: CompartmentGlyph.cpp:223
Definition: Compartment.h:490
virtual const std::string & getId() const
Returns the value of the "id" attribute of this Compartment.
Definition: Compartment.cpp:243
virtual int setId(const std::string &sid)
Sets the value of the "id" attribute of this Compartment object.
Definition: Compartment.cpp:479
Definition: CubicBezier.h:71
void setBasePoint2(const Point *p)
Initializes second base point with a copy of the given point.
Definition: CubicBezier.cpp:457
void setBasePoint1(const Point *p)
Initializes first base point with a copy of the given point.
Definition: CubicBezier.cpp:408
Definition: Curve.h:217
LineSegment * createLineSegment()
Creates a new LineSegment and adds it to the end of the list.
Definition: Curve.cpp:364
CubicBezier * createCubicBezier()
Creates a new CubicBezier and adds it to the end of the list.
Definition: Curve.cpp:379
Definition: Dimensions.h:71
virtual int setId(const std::string &sid)
Sets the value of the "id" attribute of this GraphicalObject.
Definition: GraphicalObject.cpp:390
void setBoundingBox(const BoundingBox *bb)
Sets the boundingbox for the GraphicalObject.
Definition: GraphicalObject.cpp:475
virtual const std::string & getId() const
Returns the value of the "id" attribute of this GraphicalObject.
Definition: GraphicalObject.cpp:372
static const std::string & getXmlnsL2()
Returns the XML namespace URI of the SBML Level&#160;2 version of the package implemented by this libSBML ...
Definition: LayoutExtension.cpp:109
Definition: Layout.h:789
virtual int setId(const std::string &sid)
Sets the value of the "id" attribute of this Layout.
Definition: Layout.cpp:454
CompartmentGlyph * createCompartmentGlyph()
Creates a CompartmentGlyph object, adds it to the end of the compartment glyph objects list and retur...
Definition: Layout.cpp:1385
ReactionGlyph * createReactionGlyph()
Creates a ReactionGlyph object, adds it to the end of the reaction glyph objects list and returns a p...
Definition: Layout.cpp:1417
void setDimensions(const Dimensions *dimensions)
Sets the dimensions of the layout.
Definition: Layout.cpp:520
TextGlyph * createTextGlyph()
Creates a TextGlyph object, adds it to the end of the text glyph objects list and returns a pointer t...
Definition: Layout.cpp:1448
SpeciesGlyph * createSpeciesGlyph()
Creates a SpeciesGlyph object, adds it to the end of the species glyph objects list and returns a poi...
Definition: Layout.cpp:1401
Definition: LayoutModelPlugin.h:68
Layout * createLayout()
Creates a new layout object and adds it to the list of layout objects and returns it.
Definition: LayoutModelPlugin.cpp:480
Definition: LineSegment.h:69
void setEnd(const Point *end)
Initializes the end point with a copy of the given Point object.
Definition: LineSegment.cpp:374
void setStart(const Point *start)
Initializes the start point with a copy of the given Point object.
Definition: LineSegment.cpp:327
Definition: Model.h:485
Reaction * createReaction()
Creates a new Reaction inside this Model and returns it.
Definition: Model.cpp:1782
virtual int setId(const std::string &sid)
Sets the value of the "id" attribute of this Model.
Definition: Model.cpp:717
Species * createSpecies()
Creates a new Species inside this Model and returns it.
Definition: Model.cpp:1586
Compartment * createCompartment()
Creates a new Compartment inside this Model and returns it.
Definition: Model.cpp:1558
Definition: Point.h:65
Definition: ReactionGlyph.h:255
SpeciesReferenceGlyph * createSpeciesReferenceGlyph()
Creates a new SpeciesReferenceGlyph object, adds it to the end of the list of species reference objec...
Definition: ReactionGlyph.cpp:501
int setReactionId(const std::string &id)
Sets the id of the associated reaction.
Definition: ReactionGlyph.cpp:324
const Curve * getCurve() const
Returns the curve object for the reaction glyph.
Definition: ReactionGlyph.cpp:452
Definition: Reaction.h:224
SpeciesReference * createReactant()
Creates a new SpeciesReference, adds it to this Reaction's list of reactants, and returns it.
Definition: Reaction.cpp:954
int setReversible(bool value)
Sets the value of the "reversible" attribute of this Reaction.
Definition: Reaction.cpp:599
virtual int setId(const std::string &sid)
Sets the value of the "id" attribute of this Reaction.
Definition: Reaction.cpp:517
virtual const std::string & getId() const
Returns the value of the "id" attribute of this Reaction.
Definition: Reaction.cpp:376
SpeciesReference * createProduct()
Creates a new SpeciesReference, adds it to this Reaction's list of products, and returns it.
Definition: Reaction.cpp:983
Definition: SBMLDocument.h:349
Model * createModel(const std::string sid="")
Creates a new Model inside this SBMLDocument, and returns a pointer to it.
Definition: SBMLDocument.cpp:627
int setModel(const Model *m)
Sets the Model for this SBMLDocument to a copy of the given Model.
Definition: SBMLDocument.cpp:583
Definition: SBMLNamespaces.h:145
int addNamespace(const std::string &uri, const std::string &prefix)
Add an XML namespace (a pair of URI and prefix) to the set of namespaces within this SBMLNamespaces o...
Definition: SBMLNamespaces.cpp:483
SBasePlugin * getPlugin(const std::string &package)
Returns a plug-in object (extension interface) for an SBML Level&#160;3 package extension with the given p...
Definition: SBase.cpp:3530
virtual int setId(const std::string &sid)
Sets the value of the "id" attribute of this SimpleSpeciesReference.
Definition: SimpleSpeciesReference.cpp:214
virtual const std::string & getId() const
Returns the value of the "id" attribute of this SimpleSpeciesReference.
Definition: SimpleSpeciesReference.cpp:132
int setSpecies(const std::string &sid)
Sets the "species" attribute of this SimpleSpeciesReference.
Definition: SimpleSpeciesReference.cpp:196
Definition: SpeciesGlyph.h:65
void setSpeciesId(const std::string &id)
Sets the id of the associated species object.
Definition: SpeciesGlyph.cpp:206
Definition: Species.h:429
int setCompartment(const std::string &sid)
Sets the "compartment" attribute of this Species object.
Definition: Species.cpp:661
virtual const std::string & getId() const
Returns the value of the "id" attribute of this Species.
Definition: Species.cpp:278
virtual int setId(const std::string &sid)
Sets the value of the "id" attribute of this Species.
Definition: Species.cpp:591
Definition: SpeciesReferenceGlyph.h:71
void setSpeciesReferenceId(const std::string &id)
Sets the id of the associated species reference.
Definition: SpeciesReferenceGlyph.cpp:309
Curve * getCurve()
Returns the curve object for the species reference glyph.
Definition: SpeciesReferenceGlyph.cpp:370
void setSpeciesGlyphId(const std::string &speciesGlyphId)
Sets the id of the associated species glyph.
Definition: SpeciesReferenceGlyph.cpp:289
void setRole(const std::string &role)
Sets the role based on a string.
Definition: SpeciesReferenceGlyph.cpp:343
Definition: SpeciesReference.h:281
Definition: TextGlyph.h:65
int setOriginOfTextId(const std::string &orig)
Sets the id of the origin of text.
Definition: TextGlyph.cpp:266
int setGraphicalObjectId(const std::string &id)
Sets the id of the associated graphical object.
Definition: TextGlyph.cpp:246