diff --git a/converter-sbml/.gitignore b/converter-sbml/.gitignore index 3ef28bc2556a4519dae74f24e6cd947984f838ba..b63db0be70551e9eba1324140647e7df021613bc 100644 --- a/converter-sbml/.gitignore +++ b/converter-sbml/.gitignore @@ -1,3 +1,5 @@ +.settings/org.eclipse.wst.validation.prefs + /bin/ tmp.png tmp.xml diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporter.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporter.java index ef9da4db73f43dd08b3ee0c90691189516fca5dc..59dce0b23a80580760f66c28d8ba78b809208bf9 100644 --- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporter.java +++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporter.java @@ -10,6 +10,7 @@ import org.apache.log4j.Logger; import org.sbml.jsbml.ASTNode; import org.sbml.jsbml.KineticLaw; import org.sbml.jsbml.LocalParameter; +import org.sbml.jsbml.Model; import org.sbml.jsbml.SimpleSpeciesReference; import org.sbml.jsbml.Species; import org.sbml.jsbml.SpeciesReference; @@ -63,7 +64,10 @@ public class SbmlReactionExporter extends SbmlBioEntityExporter<Reaction, org.sb } result = getSbmlModel().createReaction(reactionId); result.setReversible(reaction.isReversible()); - result.setSBOTerm(SBOTermReactionType.getTermByType(reaction.getClass())); + String sboTerm = SBOTermReactionType.getTermByType(reaction.getClass()); + if (sboTerm != null) { + result.setSBOTerm(sboTerm); + } for (Product product : reaction.getProducts()) { Species sbmlSymbol = speciesExporter.getSbmlElementByElementId(product.getElement().getElementId()); SpeciesReference speciesReference = result.createProduct(sbmlSymbol); @@ -222,4 +226,9 @@ public class SbmlReactionExporter extends SbmlBioEntityExporter<Reaction, org.sb return curve; } + @Override + protected void setSbmlModel(Model sbmlModel) { + super.setSbmlModel(sbmlModel); + } + } diff --git a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/AllSbmlConverterTests.java b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/AllSbmlConverterTests.java index 899613933053c2f1c5c9252f8586b2099c078703..30246e7ed2d40ed6539e4ccdf7a982d3654e17ff 100644 --- a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/AllSbmlConverterTests.java +++ b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/AllSbmlConverterTests.java @@ -4,16 +4,16 @@ import org.junit.runner.RunWith; import org.junit.runners.Suite; import org.junit.runners.Suite.SuiteClasses; -import lcsb.mapviewer.converter.model.sbml.reaction.SbmlReactionParserTest; +import lcsb.mapviewer.converter.model.sbml.reaction.AllSbmlReactionParserTests; import lcsb.mapviewer.converter.model.sbml.species.SbmlSpeciesParserTest; @RunWith(Suite.class) -@SuiteClasses({ GenericSbmlParserTest.class, // +@SuiteClasses({ AllSbmlReactionParserTests.class, // + GenericSbmlParserTest.class, // GenericSbmlToXmlParserTest.class, // SbmlExporterTest.class, // SbmlPareserForInvalidReactionTest.class, // SbmlParserTest.class, // - SbmlReactionParserTest.class, // SbmlSpeciesParserTest.class,// }) public class AllSbmlConverterTests { diff --git a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/reaction/AllSbmlReactionParserTests.java b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/reaction/AllSbmlReactionParserTests.java new file mode 100644 index 0000000000000000000000000000000000000000..50a0ba00c3a05782421c37d7d128bb2689494ae2 --- /dev/null +++ b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/reaction/AllSbmlReactionParserTests.java @@ -0,0 +1,13 @@ +package lcsb.mapviewer.converter.model.sbml.reaction; + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; +import org.junit.runners.Suite.SuiteClasses; + +@RunWith(Suite.class) +@SuiteClasses({ SbmlReactionExporterTest.class, // + SbmlReactionParserTest.class // +}) +public class AllSbmlReactionParserTests { + +} diff --git a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporterTest.java b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporterTest.java new file mode 100644 index 0000000000000000000000000000000000000000..dd090c25eab7d005fe66d4494a51c25b51734c2a --- /dev/null +++ b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporterTest.java @@ -0,0 +1,62 @@ +package lcsb.mapviewer.converter.model.sbml.reaction; + +import static org.junit.Assert.assertNotNull; + +import org.junit.Test; +import org.sbml.jsbml.Model; +import org.sbml.jsbml.SBMLDocument; +import org.sbml.jsbml.ext.layout.Dimensions; +import org.sbml.jsbml.ext.layout.Layout; +import org.sbml.jsbml.ext.layout.LayoutModelPlugin; + +import lcsb.mapviewer.converter.model.sbml.SbmlBioEntityExporter; +import lcsb.mapviewer.converter.model.sbml.SbmlCompartmentExporter; +import lcsb.mapviewer.converter.model.sbml.species.SbmlSpeciesExporter; +import lcsb.mapviewer.model.map.InconsistentModelException; +import lcsb.mapviewer.model.map.model.ModelFullIndexed; +import lcsb.mapviewer.model.map.reaction.type.TriggerReaction; +import lcsb.mapviewer.model.map.species.Species; + +public class SbmlReactionExporterTest { + + @Test + public void testTriggerReactionToSbml() throws InconsistentModelException { + ModelFullIndexed model = new ModelFullIndexed(null); + + SbmlReactionExporter exporter = createExporter(model); + org.sbml.jsbml.Reaction result = exporter.createSbmlElement(new TriggerReaction()); + assertNotNull(result); + } + + private SbmlReactionExporter createExporter(ModelFullIndexed model) { + SBMLDocument doc = new SBMLDocument(3, 1); + Model result = doc.createModel(model.getIdModel()); + result.setName(model.getName()); + LayoutModelPlugin plugin = new LayoutModelPlugin(result); + + Layout layout = new Layout(); + Dimensions dimensions = new Dimensions(); + if (model.getHeight() != null) { + dimensions.setHeight(model.getHeight()); + } else { + dimensions.setHeight(640); + } + if (model.getWidth() != null) { + dimensions.setWidth(model.getWidth()); + } else { + dimensions.setWidth(480); + } + layout.setDimensions(dimensions); + plugin.add(layout); + result.addExtension("layout", plugin); + + SbmlCompartmentExporter compartmentExporter = new SbmlCompartmentExporter(layout, model); + SbmlBioEntityExporter<Species, org.sbml.jsbml.Species> speciesExporter = new SbmlSpeciesExporter(layout, model, + compartmentExporter); + + SbmlReactionExporter exporter = new SbmlReactionExporter(layout, model, speciesExporter, compartmentExporter); + exporter.setSbmlModel(result); + return exporter; + } + +}