diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/extension/multi/BioEntityFeature.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/extension/multi/BioEntityFeature.java index b1f340397721a09845e7da559b512998b6c83931..bb89d1600854becebb505544626ac2ceea9f2d14 100644 --- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/extension/multi/BioEntityFeature.java +++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/extension/multi/BioEntityFeature.java @@ -23,6 +23,9 @@ public enum BioEntityFeature { FORMULA("Formula", null, new Class<?>[] { Element.class }, "minerva_formula_"), + DIMER("Dimer", null, new Class<?>[] { Element.class }, + "minerva_dimer_"), + ABBREVIATION("Abbreviation", null, new Class<?>[] { Element.class }, "minerva_abbreviation_"), diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesExporter.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesExporter.java index a0ea4fa4730d5c8aedb35dd73bdd39ce180146de..7dad53fae4896a5fc7868c1e67a89c521c1e02b5 100644 --- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesExporter.java +++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesExporter.java @@ -103,6 +103,7 @@ public class SbmlSpeciesExporter extends SbmlElementExporter<Species, org.sbml.j assignSymbolToMulti(element, multiExtension, speciesType); assignFullNameToMulti(element, multiExtension, speciesType); assignFormulaToMulti(element, multiExtension, speciesType); + assignDimerToMulti(element, multiExtension, speciesType); assignAbbreviationToMulti(element, multiExtension, speciesType); } @@ -296,9 +297,17 @@ public class SbmlSpeciesExporter extends SbmlElementExporter<Species, org.sbml.j assignValueToFeature(element, multiExtension, speciesType, element.getFormula(), BioEntityFeature.FORMULA); } + private void assignDimerToMulti(Species element, MultiSpeciesPlugin multiExtension, + MultiSpeciesType speciesType) { + if (element.getHomodimer() != 1) { + assignValueToFeature(element, multiExtension, speciesType, element.getHomodimer() + "", BioEntityFeature.DIMER); + } + } + private void assignAbbreviationToMulti(Species element, MultiSpeciesPlugin multiExtension, MultiSpeciesType speciesType) { - assignValueToFeature(element, multiExtension, speciesType, element.getAbbreviation(), BioEntityFeature.ABBREVIATION); + assignValueToFeature(element, multiExtension, speciesType, element.getAbbreviation(), + BioEntityFeature.ABBREVIATION); } private void assignValueToFeature(Species element, MultiSpeciesPlugin multiExtension, MultiSpeciesType speciesType, diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesParser.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesParser.java index 1de4988a3f35644697274c14db508d3eb7ab9de9..b2a3de6028f77719cf4dc277e2edcadf37d246c3 100644 --- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesParser.java +++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesParser.java @@ -147,6 +147,16 @@ public class SbmlSpeciesParser extends SbmlElementParser<org.sbml.jsbml.Species> minervaElement.setSynonyms(featureValues); } else if (MultiPackageNamingUtils.isFeatureId(featureTypeString, BioEntityFeature.FORMER_SYMBOL)) { minervaElement.setFormerSymbols(featureValues); + } else if (MultiPackageNamingUtils.isFeatureId(featureTypeString, BioEntityFeature.DIMER)) { + if (featureValues.size() != 1) { + logger.warn(warnPrefix + "Dimer must have exactly one value"); + } else { + try { + minervaElement.setHomodimer(Integer.parseInt(featureValues.get(0))); + } catch (NumberFormatException e) { + logger.warn(warnPrefix + "Dimer must have integer value, instead found: " + featureValues.get(0)); + } + } } else if (MultiPackageNamingUtils.isFeatureId(featureTypeString, BioEntityFeature.SYMBOL)) { if (featureValues.size() != 1) { logger.warn(warnPrefix + "Symbol must have exactly one value"); diff --git a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/CellDesignerToMultiExportTest.java b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/CellDesignerToMultiExportTest.java index 7c22d4b924e2583b143e6bf2c22f6553a4365fb1..fbee348241c311019f4919018c574396696f9306 100644 --- a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/CellDesignerToMultiExportTest.java +++ b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/CellDesignerToMultiExportTest.java @@ -74,4 +74,5 @@ public class CellDesignerToMultiExportTest { } } + } diff --git a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/ElementPropertiesExportToMultiTest.java b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/ElementPropertiesExportToMultiTest.java index 7f026419554bea0168a6746a035574e9d497a60c..50f4af36dad1bb8baa5d066431fa112cd34f4e7e 100644 --- a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/ElementPropertiesExportToMultiTest.java +++ b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/ElementPropertiesExportToMultiTest.java @@ -21,6 +21,7 @@ import lcsb.mapviewer.model.map.model.ModelComparator; import lcsb.mapviewer.model.map.model.ModelFullIndexed; import lcsb.mapviewer.model.map.species.Element; import lcsb.mapviewer.model.map.species.GenericProtein; +import lcsb.mapviewer.model.map.species.Species; @RunWith(Parameterized.class) public class ElementPropertiesExportToMultiTest { @@ -39,7 +40,7 @@ public class ElementPropertiesExportToMultiTest { data.add(createTestEntry("Empty", createElement())); - Element element = createElement(); + Species element = createElement(); element.setAbbreviation("xyz"); data.add(createTestEntry("Abbreviation", element)); @@ -55,6 +56,10 @@ public class ElementPropertiesExportToMultiTest { element.setFullName("Amazing element"); data.add(createTestEntry("Full name", element)); + element = createElement(); + element.setHomodimer(4); + data.add(createTestEntry("Homodimer", element)); + element = createElement(); element.setSymbol("H2O"); data.add(createTestEntry("Symbol", element)); @@ -75,8 +80,8 @@ public class ElementPropertiesExportToMultiTest { return new Object[] { string, result }; } - private static Element createElement() { - Element element = new GenericProtein("id"); + private static Species createElement() { + Species element = new GenericProtein("id"); element.setX(10); element.setY(10); element.setWidth(1000);