From 228abca827f4a10536080639f29bc1053aa0360e Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Tue, 20 Mar 2018 10:07:33 +0100 Subject: [PATCH] when sbo term for reaction didn't exists there was exception thrown --- converter-sbml/.gitignore | 2 + .../sbml/reaction/SbmlReactionExporter.java | 11 +++- .../model/sbml/AllSbmlConverterTests.java | 6 +- .../reaction/AllSbmlReactionParserTests.java | 13 ++++ .../reaction/SbmlReactionExporterTest.java | 62 +++++++++++++++++++ 5 files changed, 90 insertions(+), 4 deletions(-) create mode 100644 converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/reaction/AllSbmlReactionParserTests.java create mode 100644 converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporterTest.java diff --git a/converter-sbml/.gitignore b/converter-sbml/.gitignore index 3ef28bc255..b63db0be70 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 ef9da4db73..59dce0b23a 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 8996139330..30246e7ed2 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 0000000000..50a0ba00c3 --- /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 0000000000..dd090c25ea --- /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; + } + +} -- GitLab