public static void Main(String[] args) { if (args.Length < 2 || args.Length > 3) { Console.WriteLine("Usage: FlattenModel [-p] input-filename output-filename"); Console.WriteLine(" -p : list unused ports"); Environment.Exit(2); } SBMLReader reader = new SBMLReader(); SBMLWriter writer = new SBMLWriter(); bool leavePorts = false; SBMLDocument doc; if (args.Length == 2) { doc = reader.readSBML(args[0]); } else { doc = reader.readSBML(args[1]); leavePorts = true; } if (doc.getErrorLog().getNumFailsWithSeverity(libsbml.LIBSBML_SEV_ERROR) > 0) { doc.printErrors(); } else { /* create a new conversion properties structure */ ConversionProperties props = new ConversionProperties(); /* add an option that we want to flatten */ props.addOption("flatten comp", true, "flatten comp"); /* add an option to leave ports if the user has requested this */ props.addOption("leavePorts", leavePorts, "unused ports should be listed in the flattened model"); /* perform the conversion */ int result = doc.convert(props); if (result != libsbml.LIBSBML_OPERATION_SUCCESS) { Console.WriteLine("conversion failed ... ({0})", result); doc.printErrors(); Environment.Exit(3); } if (args.Length == 2) { writer.writeSBML(doc, args[1]); } else { writer.writeSBML(doc, args[2]); } } }
public static void Main(string[] args) { if (args.Length != 3) { string myname = Path.GetFileName(Environment.GetCommandLineArgs()[0]); Console.WriteLine("Usage: {0} input-filename package-to-strip output-filename", myname); Environment.Exit(1); } string inputFile = args[0]; string packageToStrip = args[1]; string outputFile = args[2]; if ( ! File.Exists(inputFile) ) { Console.WriteLine("[Error] {0} : No such file.", inputFile); Environment.Exit(1); } SBMLReader reader = new SBMLReader(); SBMLWriter writer = new SBMLWriter(); SBMLDocument sbmlDoc = reader.readSBML(inputFile); if ( sbmlDoc.getErrorLog().getNumFailsWithSeverity(libsbml.LIBSBML_SEV_ERROR) > 0) { sbmlDoc.printErrors(); Console.WriteLine("[Error] Cannot read {0}", inputFile); Environment.Exit(1); } /* create a new conversion properties structure */ ConversionProperties props = new ConversionProperties(); /* add an option that we want to strip a given package */ props.addOption("stripPackage", true, "Strip SBML Level 3 package constructs from the model"); /* add an option with the package we want to remove */ props.addOption("package", packageToStrip, "Name of the SBML Level 3 package to be stripped"); /* perform the conversion */ if (sbmlDoc.convert(props) != libsbml.LIBSBML_OPERATION_SUCCESS) { Console.WriteLine ("conversion failed ... "); Environment.Exit(3); } writer.writeSBML(sbmlDoc, outputFile); Console.WriteLine("[OK] Stripped package '{0}' from {1} and wrote to {2}", packageToStrip, inputFile, outputFile); }
public static void Main(string[] args) { if (args.Length != 2) { string myname = Path.GetFileName(Environment.GetCommandLineArgs()[0]); Console.WriteLine("Usage: {0} input-filename output-filename", myname); Environment.Exit(1); } string inputFile = args[0]; string outputFile = args[1]; if ( ! File.Exists(inputFile) ) { Console.WriteLine("[Error] {0} : No such file.", inputFile); Environment.Exit(1); } var now = DateTime.Now.Ticks; SBMLReader reader = new SBMLReader(); SBMLWriter writer = new SBMLWriter(); SBMLDocument sbmlDoc = reader.readSBML(inputFile); if ( sbmlDoc.getErrorLog().getNumFailsWithSeverity(libsbml.LIBSBML_SEV_ERROR) > 0) { sbmlDoc.printErrors(); Console.WriteLine("[Error] Cannot read {0}", inputFile); Environment.Exit(1); } Console.WriteLine("Read {0} in {1}", inputFile, new TimeSpan(DateTime.Now.Ticks - now).TotalMilliseconds); /* create a new conversion properties structure */ ConversionProperties props = new ConversionProperties(); /* add an option that we want to convert a model with L3 FBC to L2 with COBRA annotation */ props.addOption("convert fbc to cobra", true, "Convert FBC model to Cobra model"); now = DateTime.Now.Ticks; /* perform the conversion */ int result = sbmlDoc.convert(props); if (result != libsbml.LIBSBML_OPERATION_SUCCESS) { Console.WriteLine ("conversion failed ... "); Environment.Exit(3); } writer.writeSBML(sbmlDoc, outputFile); Console.WriteLine("[OK] converted to FBC from {0} and wrote to {1} (in {2} msec)", inputFile, outputFile, new TimeSpan(DateTime.Now.Ticks - now).TotalMilliseconds); }
public static void Main(string[] args) { if (args.Length != 2) { string myname = Path.GetFileName(Environment.GetCommandLineArgs()[0]); Console.WriteLine("Usage: {0} input-filenameoutput-filename", myname); Environment.Exit(1); } string inputFile = args[0]; string outputFile = args[1]; if ( ! File.Exists(inputFile) ) { Console.WriteLine("[Error] {0} : No such file.", inputFile); Environment.Exit(1); } SBMLReader reader = new SBMLReader(); SBMLWriter writer = new SBMLWriter(); SBMLDocument sbmlDoc = reader.readSBML(inputFile); if ( sbmlDoc.getErrorLog().getNumFailsWithSeverity(libsbml.LIBSBML_SEV_ERROR) > 0) { sbmlDoc.printErrors(); Console.WriteLine("[Error] Cannot read {0}", inputFile); Environment.Exit(1); } /* create a new conversion properties structure */ ConversionProperties props = new ConversionProperties(); /* add an option that we want to promote parameters */ props.addOption("promoteLocalParameters", true, "Promotes all Local Parameters to Global ones"); /* perform the conversion */ if (sbmlDoc.convert(props) != libsbml.LIBSBML_OPERATION_SUCCESS) { Console.WriteLine ("conversion failed ... "); Environment.Exit(3); } writer.writeSBML(sbmlDoc, outputFile); Console.WriteLine("[OK] promoted paramters from {0} and wrote to {1}", inputFile, outputFile); }
private string WriteUsingFBC(int version = 1) { var doc = libsbml.readSBMLFromString(SBML); var model = doc.getModel(); if (doc.getLevel() < 3) { var properties = new ConversionProperties(new SBMLNamespaces(3, 1)); properties.addOption("strict", false); properties.addOption("setLevelAndVersion", true); properties.addOption("ignorePackages", true); doc.convert(properties); } if (version == 1) { doc.enablePackage(FbcExtension.getXmlnsL3V1V2(), "fbc", false); doc.enablePackage(FbcExtension.getXmlnsL3V1V1(), "fbc", true); } else if (version == 2) { doc.enablePackage(FbcExtension.getXmlnsL3V1V1(), "fbc", false); doc.enablePackage(FbcExtension.getXmlnsL3V1V2(), "fbc", true); } doc.setPackageRequired("fbc", false); var plugin = (FbcModelPlugin)model.getPlugin("fbc"); if (plugin == null) { throw new Exception("Could not save using Fbc. Please check that your model contains no errors!"); } plugin.getListOfFluxBounds().clear(); plugin.getListOfGeneAssociations().clear(); plugin.getListOfObjectives().clear(); plugin.getListOfGeneProducts().clear(); if (version == 1) { plugin.unsetStrict(); foreach (var constraint in Constraints) { var bound = plugin.createFluxBound(); bound.setReaction(constraint.Id); bound.setOperation(ToFbcString(constraint.Operator)); bound.setValue(constraint.Value); } } else { plugin.setStrict(false); foreach (var constraint in Constraints) { var reaction = model.getReaction(constraint.Id); if (reaction == null) continue; var rplug = (FbcReactionPlugin)reaction.getPlugin("fbc"); if (rplug == null) continue; switch (constraint.Operator) { case lpsolve_constr_types.LE: { var param = model.createParameter(); param.setId(string.Format("fb_{0}_ub", reaction.getId())); param.setConstant(true); param.setValue(constraint.Value); rplug.setUpperFluxBound(param.getId()); } break; case lpsolve_constr_types.EQ: { var param = model.createParameter(); param.setId(string.Format("fb_{0}_ub", reaction.getId())); param.setConstant(true); param.setValue(constraint.Value); rplug.setUpperFluxBound(param.getId()); param = model.createParameter(); param.setId(string.Format("fb_{0}_lb", reaction.getId())); param.setConstant(true); param.setValue(constraint.Value); rplug.setLowerFluxBound(param.getId()); } break; case lpsolve_constr_types.GE: { var param = model.createParameter(); param.setId(string.Format("fb_{0}_lb", reaction.getId())); param.setConstant(true); param.setValue(constraint.Value); rplug.setLowerFluxBound(param.getId()); } break; default: break; } } } var active = plugin.createObjective(); active.setId("objective1"); active.setType(Mode == FBA_Mode.maximize ? "maximize" : "minimize"); foreach (var objective in Objectives) { var current = active.createFluxObjective(); current.setReaction(objective.Id); current.setCoefficient(objective.Value); } plugin.setActiveObjectiveId("objective1"); return libsbml.writeSBMLToString(doc); }
private void InitializeFromCobraAnnotation(string sbmlContent) { try { var doc = libsbml.readSBMLFromString(sbmlContent); var props = new ConversionProperties(); props.addOption("convert cobra", true, ""); if (doc.convert(props) != libsbml.LIBSBML_OPERATION_SUCCESS) return; InitializeFromSBMLDocument(doc); } catch { } }
public string WriteAsCobraAnnotation() { var doc = libsbml.readSBMLFromString(SBML); var model = doc.getModel(); if (doc.getLevel() < 3) { var properties = new ConversionProperties(new SBMLNamespaces(3, 1)); properties.addOption("strict", false); properties.addOption("setLevelAndVersion", true); properties.addOption("ignorePackages", true); doc.convert(properties); } doc.enablePackage(FbcExtension.getXmlnsL3V1V1(), "fbc", true); var plugin = (FbcModelPlugin)model.getPlugin("fbc"); if (plugin == null) { throw new Exception("Could not save using Fbc. Please check that your model contains no errors!"); } plugin.getListOfFluxBounds().clear(); plugin.getListOfGeneAssociations().clear(); plugin.getListOfObjectives().clear(); foreach (var constraint in Constraints) { var bound = plugin.createFluxBound(); bound.setReaction(constraint.Id); bound.setOperation(ToFbcString(constraint.Operator)); bound.setValue(constraint.Value); } var active = plugin.createObjective(); active.setId("objective1"); active.setType(Mode == FBA_Mode.maximize ? "maximize" : "minimize"); foreach (var objective in Objectives) { var current = active.createFluxObjective(); current.setReaction(objective.Id); current.setCoefficient(objective.Value); } plugin.setActiveObjectiveId("objective1"); // convert to COBRA var props = new ConversionProperties(); props.addOption("convert fbc to cobra", true, "Convert FBC model to Cobra model"); if (doc.convert(props) != libsbml.LIBSBML_OPERATION_SUCCESS) { throw new Exception(doc.getErrorLog().toString()); } model = doc.getModel(); plugin = (FbcModelPlugin)model.getPlugin("fbc"); if (plugin != null) { plugin.getListOfGeneProducts().clear(); plugin.getListOfGeneAssociations().clear(); plugin.getListOfFluxBounds().clear(); plugin.getListOfObjectives().clear(); } return libsbml.writeSBMLToString(doc); }
public static string ConvertToL2(string model) { try { var doc = libsbml.readSBMLFromString(model); if (doc.isPackageEnabled("fbc")) doc.enablePackageInternal(doc.getNamespaces().getURI("fbc"), "fbc", false); var properties = new ConversionProperties(new SBMLNamespaces(2, 4)); properties.addOption("strict", false); properties.addOption("setLevelAndVersion", true); properties.addOption("ignorePackages", true); doc.convert(properties); return libsbml.writeSBMLToString(doc); } catch// (Exception) { return model; } }