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 e77e87b9d87e22f84696625f29839f2258b6483b..103ad6f6436eb71104f29f6e42d9788387ba640b 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 a5efde95d9cfbf815fc4182d09658b297331679b..8eb79c0076059cd62f50f5822a51629ac09f4478 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) {