public static int Main(string[] args) { if (args.Length != 2) { Console.WriteLine(" Usage: addRenderInformation <input file> <output file> \n" + " Adds a render information object to the input file"); return(1); } string inputFile = args[0]; string outputFile = args[1]; SBMLDocument doc = libsbml.readSBMLFromFile(inputFile); long numErrors = doc.getNumErrors(libsbml.LIBSBML_SEV_ERROR); if (numErrors > 0) { Console.WriteLine("Encountered errors while reading the file. "); Console.WriteLine("Please correct the following errors and try again."); doc.printErrors(); return(2); } Model model = doc.getModel(); LayoutModelPlugin plugin = (LayoutModelPlugin)model.getPlugin("layout"); if (plugin == null || plugin.getNumLayouts() == 0) { Console.WriteLine("The loaded model contains no layout information, please add these first."); return(3); } RenderListOfLayoutsPlugin lolPlugin = (RenderListOfLayoutsPlugin)plugin.getListOfLayouts().getPlugin("render"); if (lolPlugin != null && lolPlugin.getNumGlobalRenderInformationObjects() > 0) { Console.WriteLine("The loaded model contains global Render information. "); } // add render information to the first layout Layout layout = plugin.getLayout(0); RenderLayoutPlugin rPlugin = (RenderLayoutPlugin)layout.getPlugin("render"); if (rPlugin != null && rPlugin.getNumLocalRenderInformationObjects() > 0) { Console.WriteLine("The loaded model contains local Render information. "); } else { string uri = doc.getLevel() == 2 ? RenderExtension.getXmlnsL2() : RenderExtension.getXmlnsL3V1V1(); // enable render package doc.enablePackage(uri, "render", true); doc.setPackageRequired("render", false); rPlugin = (RenderLayoutPlugin)layout.getPlugin("render"); addRenderInformation(rPlugin); libsbml.writeSBMLToFile(doc, outputFile); } return(0); }
public static void Main(string[] args) { // // Creates an SBMLNamespaces object with the given SBML level, version // package name, package version. // // (NOTE) By defualt, the name of package (i.e. "layout") 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,"layout",1,"LAYOUT"); // SBMLNamespaces sbmlns = new SBMLNamespaces(3, 1, "layout", 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 layout package namespace to the object. // // SBMLNamespaces sbmlns(3,1); // sbmlns.addPkgNamespace("layout",1); // // OR // // SBMLNamespaces sbmlns(3,1); // sbmlns.addNamespace(LayoutExtension::XmlnsL3V1V1,"layout"); // // (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, // and package version // // LayoutPkgNamespaces sbmlns(3,1,1); // // create the document SBMLDocument document = new SBMLDocument(sbmlns); // set the "required" attribute of layout package to "true" document.setPkgRequired("layout", true); // create the Model Model model = document.createModel(); model.setId("TestModel"); document.setModel(model); // create the Compartment Compartment compartment = model.createCompartment(); compartment.setId("Compartment_1"); compartment.setConstant(true); // create the Species Species species1 = model.createSpecies(); species1.setId("Species_1"); species1.setCompartment(compartment.getId()); species1.setHasOnlySubstanceUnits(false); species1.setBoundaryCondition(false); species1.setConstant(false); Species species2 = model.createSpecies(); species2.setId("Species_2"); species2.setCompartment(compartment.getId()); species2.setHasOnlySubstanceUnits(false); species2.setBoundaryCondition(false); species2.setConstant(false); // create the Reactions Reaction reaction1 = model.createReaction(); reaction1.setId("Reaction_1"); reaction1.setReversible(false); reaction1.setFast(false); SpeciesReference reference1 = reaction1.createReactant(); reference1.setSpecies(species1.getId()); reference1.setId("SpeciesReference_1"); reference1.setConstant(false); SpeciesReference reference2 = reaction1.createProduct(); reference2.setSpecies(species2.getId()); reference2.setId("SpeciesReference_2"); reference2.setConstant(false); Reaction reaction2 = model.createReaction(); reaction2.setId("Reaction_2"); reaction2.setReversible(false); reaction2.setFast(false); SpeciesReference reference3 = reaction2.createReactant(); reference3.setSpecies(species2.getId()); reference3.setId("SpeciesReference_3"); reference3.setConstant(false); SpeciesReference reference4 = reaction2.createProduct(); reference4.setSpecies(species1.getId()); reference4.setId("SpeciesReference_4"); reference4.setConstant(false); // create the Layout // // set the LayoutPkgNamespaces for Level 3 Version1 Layout Version 1 // LayoutPkgNamespaces layoutns = new LayoutPkgNamespaces(3, 1, 1); // // Get a LayoutModelPlugin 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. // LayoutModelPlugin mplugin = (LayoutModelPlugin)(model.getPlugin("layout")); if (mplugin == null) { Console.Error.WriteLine("[Fatal Error] Layout Extension Level " + layoutns.getLevel() + " Version " + layoutns.getVersion() + " package version " + layoutns.getPackageVersion() + " is not registered."); Environment.Exit(1); } // // Creates a Layout object via LayoutModelPlugin object. // Layout layout = mplugin.createLayout(); layout.setId("Layout_1"); Dimensions dim = new Dimensions(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 = new BoundingBox(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 = new BoundingBox(layoutns, "bb2", 80, 26, 240, 24); speciesGlyph1.setBoundingBox(bb); TextGlyph textGlyph1 = layout.createTextGlyph(); textGlyph1.setId("TextGlyph_01"); bb = new 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 = new BoundingBox(layoutns, "bb3", 80, 170, 240, 24); speciesGlyph2.setBoundingBox(bb); TextGlyph textGlyph2 = layout.createTextGlyph(); textGlyph2.setId("TextGlyph_02"); bb = new 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 = new Point(layoutns, 165, 105); ls.setStart(p); p = new 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 = new Point(layoutns, 235, 105); ls.setStart(p); p = new 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(libsbml.SPECIES_ROLE_SUBSTRATE); Curve speciesReferenceCurve1 = speciesReferenceGlyph1.getCurve(); CubicBezier cb = speciesReferenceCurve1.createCubicBezier(); p = new Point(layoutns, 165, 105); cb.setStart(p); p = new Point(layoutns, 165, 90); cb.setBasePoint1(p); p = new Point(layoutns, 165, 90); cb.setBasePoint2(p); p = new 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(libsbml.SPECIES_ROLE_PRODUCT); Curve speciesReferenceCurve2 = speciesReferenceGlyph2.getCurve(); cb = speciesReferenceCurve2.createCubicBezier(); p = new Point(layoutns, 165, 115); cb.setStart(p); p = new Point(layoutns, 165, 130); cb.setBasePoint1(p); p = new Point(layoutns, 165, 130); cb.setBasePoint2(p); p = new 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(libsbml.SPECIES_ROLE_SUBSTRATE); Curve speciesReferenceCurve3 = speciesReferenceGlyph3.getCurve(); cb = speciesReferenceCurve3.createCubicBezier(); p = new Point(layoutns, 235, 115); cb.setStart(p); p = new Point(layoutns, 235, 130); cb.setBasePoint1(p); p = new Point(layoutns, 235, 130); cb.setBasePoint2(p); p = new 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(libsbml.SPECIES_ROLE_PRODUCT); Curve speciesReferenceCurve4 = speciesReferenceGlyph4.getCurve(); cb = speciesReferenceCurve4.createCubicBezier(); p = new Point(layoutns, 235, 105); cb.setStart(p); p = new Point(layoutns, 235, 90); cb.setBasePoint1(p); p = new Point(layoutns, 235, 90); cb.setBasePoint2(p); p = new Point(layoutns, 205, 60); cb.setEnd(p); libsbml.writeSBML(document, "layout_example1_L3-cs.xml"); Console.WriteLine("all done ..."); }
public static int Main(string[] args) { if (args.Length != 1) { Console.WriteLine(" Usage: printRenderInformation <input file> \n" + " prints a summary of the render information object."); return(1); } string inputFile = args[0]; SBMLDocument doc = libsbml.readSBMLFromFile(inputFile); Console.WriteLine("Using libSBML: {0} supporting packages for:", libsbml.getLibSBMLDottedVersion()); for (int i = 0; i < SBMLExtensionRegistry.getNumRegisteredPackages(); ++i) { Console.WriteLine("\t {0}", SBMLExtensionRegistry.getRegisteredPackageName(i)); } Console.WriteLine("\nThe document is: level {0}, version {1}", doc.getLevel(), doc.getVersion()); for (int i = 0; i < doc.getNumPlugins(); ++i) { Console.WriteLine(" doc uses package: {0}", doc.getPlugin(i).getElementNamespace()); } Console.WriteLine("\n"); long numErrors = doc.getNumErrors(libsbml.LIBSBML_SEV_ERROR); if (numErrors > 0) { Console.WriteLine("Encountered errors while reading the file. "); Console.WriteLine("Please correct the following errors and try again."); doc.printErrors(); return(2); } Model model = doc.getModel(); LayoutModelPlugin plugin = (LayoutModelPlugin)model.getPlugin("layout"); if (plugin == null || plugin.getNumLayouts() == 0) { Console.WriteLine("The loaded model contains no layout information, please add these first."); return(3); } RenderListOfLayoutsPlugin lolPlugin = (RenderListOfLayoutsPlugin)plugin.getListOfLayouts().getPlugin("render"); if (lolPlugin != null && lolPlugin.getNumGlobalRenderInformationObjects() > 0) { Console.WriteLine("The loaded model contains global Render information: "); for (int i = 0; i < lolPlugin.getNumGlobalRenderInformationObjects(); ++i) { GlobalRenderInformation info = lolPlugin.getRenderInformation(i); print_render_info(info); } } Layout layout = plugin.getLayout(0); RenderLayoutPlugin rPlugin = (RenderLayoutPlugin)layout.getPlugin("render"); if (rPlugin != null && rPlugin.getNumLocalRenderInformationObjects() > 0) { Console.WriteLine("The loaded model contains local Render information. "); // here we would do the same as above for the local render information ... for (int i = 0; i < rPlugin.getNumLocalRenderInformationObjects(); ++i) { LocalRenderInformation info = rPlugin.getRenderInformation(i); print_render_info(info); } } return(0); }