From b5a4d8a71c2d74f9c8b1249145eec62a998ce744 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Fri, 9 Feb 2018 16:01:41 +0100 Subject: [PATCH] fix on kinetics in reactions with complex modifiers --- .../reaction/KineticsXmlParser.java | 9 ++++++--- .../reaction/ReactionFromXml.java | 20 ++++++++++++++----- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/KineticsXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/KineticsXmlParser.java index e77e87b9d8..103ad6f643 100644 --- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/KineticsXmlParser.java +++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/KineticsXmlParser.java @@ -55,15 +55,18 @@ public class KineticsXmlParser extends XmlParser { if (element == null) { element = model.getFunctionById(id); } + if (element == null) { + element = model.getElementByElementId(id); + } if (element != null) { ciNode.setTextContent(element.getElementId()); - } else { + elementsUsedInKinetics.add(element); + } else if (!id.equals("default")) { throw new InvalidXmlSchemaException("Unknown symbol in kinetics: " + id); } - elementsUsedInKinetics.add(element); } result.addArguments(elementsUsedInKinetics); - + String definition = super.nodeToString(mathNode, true); definition = definition.replace(" xmlns=\"http://www.sbml.org/sbml/level2/version4\"", ""); definition = definition.replace("<math>", "<math xmlns=\"http://www.w3.org/1998/Math/MathML\">"); diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXml.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXml.java index a5efde95d9..8eb79c0076 100644 --- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXml.java +++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXml.java @@ -233,20 +233,30 @@ public class ReactionFromXml extends XmlParser { String aliasId = super.getNodeAttr("alias", node); addElementMapping(model, result, speciesId, aliasId); } - + for (Node node : super.getAllNotNecessirellyDirectChild("celldesigner:productLink", annotationNode)) { String speciesId = super.getNodeAttr("product", node); String aliasId = super.getNodeAttr("alias", node); addElementMapping(model, result, speciesId, aliasId); } - + for (Node node : super.getAllNotNecessirellyDirectChild("celldesigner:modification", annotationNode)) { + String speciesId = super.getNodeAttr("modifiers", node); + String aliasId = super.getNodeAttr("aliases", node); + addElementMapping(model, result, speciesId, aliasId); + } + return result; } private void addElementMapping(Model model, Map<String, Element> result, String speciesId, String aliasId) { - Element element = model.getElementByElementId(aliasId); - result.put(speciesId, element); - addCompartmentMapping(result, element); + String[] aliasIds = aliasId.split(","); + String[] speciesIds = speciesId.split(","); + for (int i = 0; i < aliasIds.length; i++) { + + Element element = model.getElementByElementId(aliasIds[i]); + result.put(speciesIds[i], element); + addCompartmentMapping(result, element); + } } private void addCompartmentMapping(Map<String, Element> result, Element element) { -- GitLab