From bc2f74f35d8e638beab2edb74ef6fa92978a043d Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Fri, 4 Jan 2019 13:23:33 +0100 Subject: [PATCH] export/import of synonyms implemented --- .../sbml/species/SbmlSpeciesExporter.java | 29 ++++++++++++------- .../model/sbml/species/SbmlSpeciesParser.java | 10 +++++++ .../ReactionPropertiesExportToMultiTest.java | 2 ++ 3 files changed, 30 insertions(+), 11 deletions(-) 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 d2af7f4ee5..d5b7937f4b 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 @@ -98,6 +98,7 @@ public class SbmlSpeciesExporter extends SbmlElementExporter<Species, org.sbml.j assignStructuralStateToMulti(element, multiExtension, speciesType); assignPostionToCompartmentToMulti(element, multiExtension, speciesType); assignElementModificationResiduesToMulti(element, multiExtension, speciesType); + assignListOfSynonymsToMulti(element, multiExtension, speciesType); } private void assignElementModificationResiduesToMulti(Species element, MultiSpeciesPlugin multiExtension, @@ -216,12 +217,7 @@ public class SbmlSpeciesExporter extends SbmlElementExporter<Species, org.sbml.j structuralState = ((Complex) element).getStructuralState(); } if (structuralState != null) { - SpeciesFeatureType structuralStateFeature = getFeature(element.getClass(), speciesType, - BioEntityFeature.STRUCTURAL_STATE); - PossibleSpeciesFeatureValue structuralStateFeatureValue = getPosibleFeatureIdByName(structuralState, - structuralStateFeature); - - addSpeciesFeatureValue(multiExtension, structuralStateFeature, structuralStateFeatureValue); + assignValueToFeature(element, multiExtension, speciesType, structuralState, BioEntityFeature.STRUCTURAL_STATE); } } @@ -259,13 +255,24 @@ public class SbmlSpeciesExporter extends SbmlElementExporter<Species, org.sbml.j private void assignPostionToCompartmentToMulti(Species element, MultiSpeciesPlugin multiExtension, MultiSpeciesType speciesType) { - String positionToCompartmentName = "undefined"; + String value = "undefined"; if (element.getPositionToCompartment() != null) { - positionToCompartmentName = element.getPositionToCompartment().name(); + value = element.getPositionToCompartment().name(); } - SpeciesFeatureType structuralStateFeature = getFeature(element.getClass(), speciesType, - BioEntityFeature.POSITION_TO_COMPARTMENT); - PossibleSpeciesFeatureValue structuralStateFeatureValue = getPosibleFeatureIdByName(positionToCompartmentName, + assignValueToFeature(element, multiExtension, speciesType, value, BioEntityFeature.POSITION_TO_COMPARTMENT); + } + + private void assignListOfSynonymsToMulti(Species element, MultiSpeciesPlugin multiExtension, + MultiSpeciesType speciesType) { + for (String synonym : element.getSynonyms()) { + assignValueToFeature(element, multiExtension, speciesType, synonym, BioEntityFeature.SYNONYM); + } + } + + private void assignValueToFeature(Species element, MultiSpeciesPlugin multiExtension, MultiSpeciesType speciesType, + String value, BioEntityFeature feature) { + SpeciesFeatureType structuralStateFeature = getFeature(element.getClass(), speciesType, feature); + PossibleSpeciesFeatureValue structuralStateFeatureValue = getPosibleFeatureIdByName(value, structuralStateFeature); addSpeciesFeatureValue(multiExtension, structuralStateFeature, structuralStateFeatureValue); 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 12566be85f..1b6bfa6afc 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 @@ -157,6 +157,16 @@ public class SbmlSpeciesParser extends SbmlElementParser<org.sbml.jsbml.Species> } else { minervaElement.setPositionToCompartment(PositionToCompartment.getByString(positionToCompartments.get(0))); } + } else if (MultiPackageNamingUtils.isFeatureId(featureTypeString, BioEntityFeature.SYNONYM)) { + SpeciesFeatureType featureType = speciesType.getListOfSpeciesFeatureTypes().get(featureTypeString); + + List<String> synonyms = new ArrayList<>(); + for (SpeciesFeatureValue featureValue : feature.getListOfSpeciesFeatureValues()) { + PossibleSpeciesFeatureValue possibleSpeciesFeatureValue = featureType.getListOfPossibleSpeciesFeatureValues() + .get(featureValue.getValue()); + synonyms.add(possibleSpeciesFeatureValue.getName()); + } + minervaElement.setSynonyms(synonyms); } else if (MultiPackageNamingUtils.isModificationFeatureId(featureTypeString)) { createModificationResidues(minervaElement, speciesType, feature); } else { diff --git a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/ReactionPropertiesExportToMultiTest.java b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/ReactionPropertiesExportToMultiTest.java index f8f211ade7..a6e7faca96 100644 --- a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/ReactionPropertiesExportToMultiTest.java +++ b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/ReactionPropertiesExportToMultiTest.java @@ -11,6 +11,7 @@ import java.util.Arrays; import java.util.Collection; import org.apache.log4j.Logger; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; @@ -28,6 +29,7 @@ import lcsb.mapviewer.model.map.reaction.ReactionNode; import lcsb.mapviewer.model.map.reaction.type.StateTransitionReaction; import lcsb.mapviewer.model.map.species.Ion; +@Ignore("Not supported by multi extension") @RunWith(Parameterized.class) public class ReactionPropertiesExportToMultiTest { -- GitLab