libSBML C++ API  libSBML 5.18.0 C++ API
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
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;
}
SpeciesReference
A reference to an SBML species in a reaction.
Definition: SpeciesReference.h:275
SBMLDocument::setModel
int setModel(const Model *m)
Sets the Model for this SBMLDocument to a copy of the given Model.
Definition: SBMLDocument.cpp:599
SpeciesReferenceGlyph::setRole
void setRole(const std::string &role)
Sets the role based on a string.
Definition: SpeciesReferenceGlyph.cpp:338
Dimensions
Spatial dimensions of a 2D or 3D shape.
Definition: Dimensions.h:65
Reaction
An SBML reaction between species in an SBML model.
Definition: Reaction.h:218
Layout.h
Definition of Layout for SBML Layout.
CubicBezier::setBasePoint1
void setBasePoint1(const Point *p)
Initializes first base point with a copy of the given point.
Definition: CubicBezier.cpp:403
GraphicalObject::setId
virtual int setId(const std::string &sid)
Sets the value of the "id" attribute of this GraphicalObject.
Definition: GraphicalObject.cpp:385
CubicBezier
A Cubic Bézier smooth curve.
Definition: CubicBezier.h:65
Point
Representation of a point.
Definition: Point.h:59
Curve
A curve connecting elements in a diagram.
Definition: Curve.h:211
SimpleSpeciesReference::getId
virtual const std::string & getId() const
Returns the value of the "id" attribute of this SimpleSpeciesReference.
Definition: SimpleSpeciesReference.cpp:128
LayoutModelPlugin.h
Definition of LayoutModelPlugin, the plugin class of layout package for Model element.
Layout::createCompartmentGlyph
CompartmentGlyph * createCompartmentGlyph()
Creates a CompartmentGlyph object, adds it to the end of the compartment glyph objects list and retur...
Definition: Layout.cpp:1380
ReactionGlyph::createSpeciesReferenceGlyph
SpeciesReferenceGlyph * createSpeciesReferenceGlyph()
Creates a new SpeciesReferenceGlyph object, adds it to the end of the list of species reference objec...
Definition: ReactionGlyph.cpp:496
Curve::createLineSegment
LineSegment * createLineSegment()
Creates a new LineSegment and adds it to the end of the list.
Definition: Curve.cpp:359
Point.h
Definition of Point for SBML Layout.
Model::createReaction
Reaction * createReaction()
Creates a new Reaction inside this Model and returns it.
Definition: Model.cpp:1779
LayoutModelPlugin
Extension of Model.
Definition: LayoutModelPlugin.h:62
Reaction::getId
virtual const std::string & getId() const
Returns the value of the "id" attribute of this Reaction.
Definition: Reaction.cpp:375
Reaction::setReversible
int setReversible(bool value)
Sets the value of the "reversible" attribute of this Reaction.
Definition: Reaction.cpp:607
ReactionGlyph
A glyph for an SBML reaction.
Definition: ReactionGlyph.h:249
SPECIES_ROLE_SUBSTRATE
@ SPECIES_ROLE_SUBSTRATE
Definition: SpeciesReferenceRole.h:56
SpeciesGlyph.h
Definition of SpeciesGlyph for SBML Layout.
SpeciesGlyph::setSpeciesId
void setSpeciesId(const std::string &id)
Sets the id of the associated species object.
Definition: SpeciesGlyph.cpp:201
SpeciesReferenceGlyph.h
Definition of SpeciesReferenceGlyph for SBML Layout.
SBMLDocument::createModel
Model * createModel(const std::string sid="")
Creates a new Model inside this SBMLDocument, and returns a pointer to it.
Definition: SBMLDocument.cpp:643
LayoutModelPlugin::createLayout
Layout * createLayout()
Creates a new layout object and adds it to the list of layout objects and returns it.
Definition: LayoutModelPlugin.cpp:475
LineSegment::setEnd
void setEnd(const Point *end)
Initializes the end point with a copy of the given Point object.
Definition: LineSegment.cpp:369
SpeciesReferenceGlyph::getCurve
Curve * getCurve()
Returns the curve object for the species reference glyph.
Definition: SpeciesReferenceGlyph.cpp:365
Model::createSpecies
Species * createSpecies()
Creates a new Species inside this Model and returns it.
Definition: Model.cpp:1590
CubicBezier.h
Definition of CubicBezier for SBML Layout.
LayoutExtension::getXmlnsL2
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:104
SpeciesReferenceGlyph::setSpeciesGlyphId
void setSpeciesGlyphId(const std::string &speciesGlyphId)
Sets the id of the associated species glyph.
Definition: SpeciesReferenceGlyph.cpp:284
SimpleSpeciesReference::setId
virtual int setId(const std::string &sid)
Sets the value of the "id" attribute of this SimpleSpeciesReference.
Definition: SimpleSpeciesReference.cpp:210
Compartment::setId
virtual int setId(const std::string &sid)
Sets the value of the "id" attribute of this Compartment object.
Definition: Compartment.cpp:474
BoundingBox.h
Definition of BoundingBox for SBML Layout.
Layout::createTextGlyph
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:1443
Reaction::createReactant
SpeciesReference * createReactant()
Creates a new SpeciesReference, adds it to this Reaction's list of reactants, and returns it.
Definition: Reaction.cpp:955
SpeciesReference.h
Definitions of SpeciesReference and ListOfSpeciesReferences.
SpeciesReferenceGlyph::setSpeciesReferenceId
void setSpeciesReferenceId(const std::string &id)
Sets the id of the associated species reference.
Definition: SpeciesReferenceGlyph.cpp:304
ReactionGlyph.h
Definition of ReactionGlyph for SBML Layout.
CubicBezier::setBasePoint2
void setBasePoint2(const Point *p)
Initializes second base point with a copy of the given point.
Definition: CubicBezier.cpp:452
Compartment
An SBML compartment, where species are located.
Definition: Compartment.h:484
SpeciesGlyph
A glyph for an SBML species.
Definition: SpeciesGlyph.h:59
Layout::createReactionGlyph
ReactionGlyph * createReactionGlyph()
Creates a ReactionGlyph object, adds it to the end of the reaction glyph objects list and returns a p...
Definition: Layout.cpp:1412
SBMLNamespaces::addNamespace
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:480
LayoutExtension.h
Definition of LayoutExtension, the core module of layout package.
Curve.h
Definition of Curve for SBML Layout.
SimpleSpeciesReference::setSpecies
int setSpecies(const std::string &sid)
Sets the "species" attribute of this SimpleSpeciesReference.
Definition: SimpleSpeciesReference.cpp:192
Species.h
Definitions of Species and ListOfSpecies.
Model.h
Definition of Model.
Layout
The layout of a diagram of an SBML model.
Definition: Layout.h:783
Model
An SBML model.
Definition: Model.h:479
Species::setId
virtual int setId(const std::string &sid)
Sets the value of the "id" attribute of this Species.
Definition: Species.cpp:586
LayoutPkgNamespaces
SBMLNamespaces extension for the package.
Layout::setId
virtual int setId(const std::string &sid)
Sets the value of the "id" attribute of this Layout.
Definition: Layout.cpp:449
TextGlyph::setGraphicalObjectId
int setGraphicalObjectId(const std::string &id)
Sets the id of the associated graphical object.
Definition: TextGlyph.cpp:241
LineSegment.h
Definition of LineSegment for SBML Layout.
GraphicalObject::getId
virtual const std::string & getId() const
Returns the value of the "id" attribute of this GraphicalObject.
Definition: GraphicalObject.cpp:367
SBMLWriter.h
Writes an SBML Document to file or in-memory string.
Reaction.h
Definitions of Reaction and ListOfReactions.
CompartmentGlyph
A glyph for an SBML compartment.
Definition: CompartmentGlyph.h:54
BoundingBox
A bounding box for an item in a diagram.
Definition: BoundingBox.h:58
LineSegment
Representation of a line.
Definition: LineSegment.h:63
Reaction::createProduct
SpeciesReference * createProduct()
Creates a new SpeciesReference, adds it to this Reaction's list of products, and returns it.
Definition: Reaction.cpp:983
ReactionGlyph::setReactionId
int setReactionId(const std::string &id)
Sets the id of the associated reaction.
Definition: ReactionGlyph.cpp:319
SBMLDocument.h
Top-level container for an SBML Model and associated data.
LineSegment::setStart
void setStart(const Point *start)
Initializes the start point with a copy of the given Point object.
Definition: LineSegment.cpp:322
Reaction::setId
virtual int setId(const std::string &sid)
Sets the value of the "id" attribute of this Reaction.
Definition: Reaction.cpp:516
TextGlyph::setOriginOfTextId
int setOriginOfTextId(const std::string &orig)
Sets the id of the origin of text.
Definition: TextGlyph.cpp:261
Layout::setDimensions
void setDimensions(const Dimensions *dimensions)
Sets the dimensions of the layout.
Definition: Layout.cpp:515
ReactionGlyph::getCurve
const Curve * getCurve() const
Returns the curve object for the reaction glyph.
Definition: ReactionGlyph.cpp:447
CompartmentGlyph.h
Definition of CompartmentGlyph for SBML Layout.
SBMLNamespaces
Set of SBML Level + Version + namespace triples.
Definition: SBMLNamespaces.h:139
Curve::createCubicBezier
CubicBezier * createCubicBezier()
Creates a new CubicBezier and adds it to the end of the list.
Definition: Curve.cpp:374
CompartmentGlyph::setCompartmentId
int setCompartmentId(const std::string &id)
Sets the id of the associated compartment.
Definition: CompartmentGlyph.cpp:218
Layout::createSpeciesGlyph
SpeciesGlyph * createSpeciesGlyph()
Creates a SpeciesGlyph object, adds it to the end of the species glyph objects list and returns a poi...
Definition: Layout.cpp:1396
Species::setCompartment
int setCompartment(const std::string &sid)
Sets the "compartment" attribute of this Species object.
Definition: Species.cpp:665
Compartment::getId
virtual const std::string & getId() const
Returns the value of the "id" attribute of this Compartment.
Definition: Compartment.cpp:238
Dimensions.h
Definition of Dimensions for SBML Layout.
Compartment.h
Definitions of Compartment and ListOfCompartments.
TextGlyph
A glyph for a text label.
Definition: TextGlyph.h:59
Model::setId
virtual int setId(const std::string &sid)
Sets the value of the "id" attribute of this Model.
Definition: Model.cpp:717
Model::createCompartment
Compartment * createCompartment()
Creates a new Compartment inside this Model and returns it.
Definition: Model.cpp:1563
SpeciesReferenceGlyph
A glyph for an SBML species reference.
Definition: SpeciesReferenceGlyph.h:65
GraphicalObject::setBoundingBox
void setBoundingBox(const BoundingBox *bb)
Sets the boundingbox for the GraphicalObject.
Definition: GraphicalObject.cpp:470
SPECIES_ROLE_PRODUCT
@ SPECIES_ROLE_PRODUCT
Definition: SpeciesReferenceRole.h:57
Species
An SBML species – a pool of entities.
Definition: Species.h:423
Species::getId
virtual const std::string & getId() const
Returns the value of the "id" attribute of this Species.
Definition: Species.cpp:273
LIBSBML_CPP_NAMESPACE_USE
#define LIBSBML_CPP_NAMESPACE_USE
Definition: libsbml-namespace.h:67
SBMLDocument
Overall SBML container object.
Definition: SBMLDocument.h:342
SBase::getPlugin
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:3460
writeSBML
int writeSBML(const SBMLDocument_t *d, const char *filename)
Writes the given SBML document d to the file named by filename.