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 93db74e678b5a60282ec7639a1481d9bb8892f6f..a1b95b4d590f5383aa932011f5bc029aa5f83b11 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 @@ -29,6 +29,9 @@ public enum BioEntityFeature { DIMER("Dimer", null, new Class<?>[] { Element.class }, "minerva_dimer_"), + CHARGE("Charge", null, new Class<?>[] { Element.class }, + "minerva_charge_"), + 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 532aa20056a0950d0857348da6bd7d3e0e7ea892..a3c6131fb71fc4a557758362949f6f4a99df14dd 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 @@ -106,6 +106,7 @@ public class SbmlSpeciesExporter extends SbmlElementExporter<Species, org.sbml.j assignDimerToMulti(element, multiExtension, speciesType); assignHypotheticalToMulti(element, multiExtension, speciesType); assignAbbreviationToMulti(element, multiExtension, speciesType); + assignChargeToMulti(element, multiExtension, speciesType); } private void assignElementModificationResiduesToMulti(Species element, MultiSpeciesPlugin multiExtension, @@ -305,6 +306,13 @@ public class SbmlSpeciesExporter extends SbmlElementExporter<Species, org.sbml.j } } + private void assignChargeToMulti(Species element, MultiSpeciesPlugin multiExtension, + MultiSpeciesType speciesType) { + if (element.getCharge() != null) { + assignValueToFeature(element, multiExtension, speciesType, element.getCharge().toString(), BioEntityFeature.CHARGE); + } + } + private void assignHypotheticalToMulti(Species element, MultiSpeciesPlugin multiExtension, MultiSpeciesType speciesType) { if (element.getHypothetical() != null) { 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 3022498a9199ec2796934c0a35ba9c1cdad26176..de9ba5546d6efadd08fa7f0165bf991a9ec28bc9 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 @@ -86,6 +86,9 @@ public class SbmlSpeciesParser extends SbmlElementParser<org.sbml.jsbml.Species> if (species.isSetConstant()) { result.setConstant(species.getConstant()); } + if (species.isSetCharge()) { + result.setCharge(species.getCharge()); + } assignBioEntityData(species, result); if (getLayout() == null) { assignCompartment(result, species.getCompartment()); @@ -157,6 +160,16 @@ public class SbmlSpeciesParser extends SbmlElementParser<org.sbml.jsbml.Species> logger.warn(warnPrefix + "Dimer must have integer value, instead found: " + featureValues.get(0)); } } + } else if (MultiPackageNamingUtils.isFeatureId(featureTypeString, BioEntityFeature.CHARGE)) { + if (featureValues.size() != 1) { + logger.warn(warnPrefix + "Charge must have exactly one value"); + } else { + try { + minervaElement.setCharge(Integer.parseInt(featureValues.get(0))); + } catch (NumberFormatException e) { + logger.warn(warnPrefix + "Charge 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/ElementPropertiesExportToMultiTest.java b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/ElementPropertiesExportToMultiTest.java index ad4ba2ac9dd574e0a4efe8faba19ab92e628ccce..ea0af3d65868a97db0efed823455993d2aab034b 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 @@ -60,6 +60,10 @@ public class ElementPropertiesExportToMultiTest { element.setHomodimer(4); data.add(createTestEntry("Homodimer", element)); + element = createElement(); + element.setCharge(5); + data.add(createTestEntry("Charge", element)); + element = createElement(); element.setHypothetical(true); data.add(createTestEntry("Hypothetical", element));