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 d2af7f4ee525de798bb11f7831a1f9a5d6c0e3b8..d5b7937f4ba29ece47731a5be39225feaaf88336 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 12566be85fd5b1500cde88370a22d47e182b881d..1b6bfa6afc6b22e38842af3fe0494af1f72a2765 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 f8f211ade7d3845a6d5f623308fdd83050ca0372..a6e7faca96ceeff0c3a15e8cb67d64acf0daac83 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 {