From 6fb4496022d0a28a08fcfc2d616a9b95826f285d Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Thu, 23 Aug 2018 16:06:55 +0200 Subject: [PATCH] export to celldesigner with undefined units in kinetics didn't work --- .../sbml/reaction/SbmlReactionExporter.java | 8 ++++++-- .../reaction/SbmlReactionExporterTest.java | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) 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 ec80720e0d..20e89b58a1 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 @@ -103,8 +103,12 @@ public class SbmlReactionExporter extends SbmlBioEntityExporter<Reaction, org.sb LocalParameter parameter = new LocalParameter(); parameter.setId(minervaParameter.getElementId()); parameter.setName(minervaParameter.getName()); - parameter.setValue(minervaParameter.getValue()); - parameter.setUnits(minervaParameter.getUnits().getUnitId()); + if (minervaParameter.getValue() != null) { + parameter.setValue(minervaParameter.getValue()); + } + if (minervaParameter.getUnits() != null) { + parameter.setUnits(minervaParameter.getUnits().getUnitId()); + } result.addLocalParameter(parameter); } } 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 index dd090c25ea..472737e3dd 100644 --- 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 @@ -13,7 +13,10 @@ 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.kinetics.SbmlKinetics; +import lcsb.mapviewer.model.map.kinetics.SbmlParameter; import lcsb.mapviewer.model.map.model.ModelFullIndexed; +import lcsb.mapviewer.model.map.reaction.Reaction; import lcsb.mapviewer.model.map.reaction.type.TriggerReaction; import lcsb.mapviewer.model.map.species.Species; @@ -28,6 +31,22 @@ public class SbmlReactionExporterTest { assertNotNull(result); } + @Test + public void testReactionWithKineticsWithoutUnitsToSbml() throws InconsistentModelException { + ModelFullIndexed model = new ModelFullIndexed(null); + + SbmlReactionExporter exporter = createExporter(model); + Reaction reaction = new TriggerReaction(); + SbmlKinetics kinetics = new SbmlKinetics(); + reaction.setKinetics(kinetics); + kinetics.setDefinition("<lambda>" + "<bvar><ci> x </ci></bvar>" + "<bvar><ci> y </ci></bvar>" + + "<apply><plus/><ci> x </ci><ci> x </ci><cn type=\"integer\"> 2 </cn></apply>" + "</lambda>\n\n"); + SbmlParameter parameter = new SbmlParameter("x"); + kinetics.addParameter(parameter); + org.sbml.jsbml.Reaction result = exporter.createSbmlElement(reaction); + assertNotNull(result); + } + private SbmlReactionExporter createExporter(ModelFullIndexed model) { SBMLDocument doc = new SBMLDocument(3, 1); Model result = doc.createModel(model.getIdModel()); -- GitLab