diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/SpeciesAliasXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/SpeciesAliasXmlParser.java index 30ab81753601fb2038ed17e7c881db0dc4b95766..631685017f23deda1b68c4c322817b6039265ec1 100644 --- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/SpeciesAliasXmlParser.java +++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/SpeciesAliasXmlParser.java @@ -143,7 +143,6 @@ public class SpeciesAliasXmlParser extends AbstractAliasXmlParser<Species> { complex.addSpecies(result); } } - species.updateModelElementAfterLayoutAdded(result); return result; @@ -205,12 +204,12 @@ public class SpeciesAliasXmlParser extends AbstractAliasXmlParser<Species> { sb.append("<celldesigner:speciesAlias "); sb.append("id=\"" + species.getElementId() + "\" "); sb.append("species=\"" + elements.getElementId(species) + "\" "); - if (compartmentAliasId != null) { - sb.append("compartmentAlias=\"" + compartmentAliasId + "\" "); - } if (complex != null) { sb.append("complexSpeciesAlias=\"" + complex.getElementId() + "\" "); + } else if (compartmentAliasId != null) { + // you cannot have both if there are both then CellDesigner behaves improperly + sb.append("compartmentAlias=\"" + compartmentAliasId + "\" "); } sb.append(">\n"); diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ModelContructor.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ModelContructor.java index a051eda38e15fbbb919689dce992d662a39aa720..f340ba5f5b221059b2bc5e756260f88d17fa5ff3 100644 --- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ModelContructor.java +++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ModelContructor.java @@ -983,15 +983,17 @@ public class ModelContructor { * {@link Compartment} into a proper compartment. * * @param model - * model where aliases will be modifed + * model where aliases will be modified */ private void putAliasesIntoCompartments(Model model) { - for (Element alias : model.getElements()) { - if (alias.getCompartment() == null) { - if (alias instanceof Species) { + for (Element element : model.getElements()) { + if (element instanceof Species) { + if (((Species) element).getComplex() != null) { + element.setCompartment(null); + } else if (element.getCompartment() == null) { Compartment selectedAlias = null; for (Compartment cAlias : model.getCompartments()) { - if (cAlias.cross(alias)) { + if (cAlias.cross(element)) { if (selectedAlias == null) { selectedAlias = cAlias; } else if (selectedAlias.getSize() > cAlias.getSize()) { @@ -1000,7 +1002,7 @@ public class ModelContructor { } } if (selectedAlias != null) { - selectedAlias.addElement(alias); + selectedAlias.addElement(element); } } } @@ -1128,16 +1130,16 @@ public class ModelContructor { compartmentAlias.getElements().clear(); } - for (Element alias : model.getElements()) { + for (Element element : model.getElements()) { // elements inside complexes shouldn't be considered - if (alias instanceof Species) { - if (((Species) alias).getComplex() != null) { + if (element instanceof Species) { + if (((Species) element).getComplex() != null) { continue; } } Compartment parentAlias = null; for (Compartment compartmentAlias : aliases) { - if (compartmentAlias.contains(alias)) { + if (compartmentAlias.contains(element)) { if (parentAlias == null) { parentAlias = compartmentAlias; } else if (parentAlias.getSize() > compartmentAlias.getSize()) { @@ -1146,8 +1148,8 @@ public class ModelContructor { } } if (parentAlias != null) { - parentAlias.addElement(alias); - alias.setCompartment(parentAlias); + parentAlias.addElement(element); + element.setCompartment(parentAlias); } } }