From 3131738400461b3147c2ac4ddba6016d9f6270d3 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Wed, 28 Jun 2017 15:55:35 +0200 Subject: [PATCH] parent compartment is assigned properly when processing compartments --- .../alias/AliasCollectionXmlParser.java | 1 + .../CellDesignerXmlParserTest.java | 24 ++++ .../annotation/RestAnnotationParserTest.java | 1 - ...ested_compartments_in_few_compartments.xml | 105 ++++++++++++++++++ 4 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 converter-CellDesigner/testFiles/compartment/nested_compartments_in_few_compartments.xml diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/AliasCollectionXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/AliasCollectionXmlParser.java index 688f761cfe..e80d09ae7a 100644 --- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/AliasCollectionXmlParser.java +++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/AliasCollectionXmlParser.java @@ -215,6 +215,7 @@ public class AliasCollectionXmlParser extends XmlParser { } if (parent != nullParent) { child.setCompartment(parent); + parent.addElement(child); } } } diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerXmlParserTest.java index 445722f272..5ebeb1ae3a 100644 --- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerXmlParserTest.java +++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerXmlParserTest.java @@ -29,6 +29,7 @@ import lcsb.mapviewer.converter.ConverterParams; import lcsb.mapviewer.converter.InvalidInputDataExecption; import lcsb.mapviewer.converter.model.celldesigner.annotation.RestAnnotationParser; import lcsb.mapviewer.model.graphics.PolylineData; +import lcsb.mapviewer.model.map.compartment.Compartment; import lcsb.mapviewer.model.map.layout.graphics.Layer; import lcsb.mapviewer.model.map.layout.graphics.LayerOval; import lcsb.mapviewer.model.map.layout.graphics.LayerRect; @@ -991,4 +992,27 @@ public class CellDesignerXmlParserTest extends CellDesignerTestFunctions { } } + @Test + public void testCompartmentWithSubcompartments() throws Exception { + try { + CellDesignerXmlParser parser = new CellDesignerXmlParser(); + Model model = parser.createModel(new ConverterParams().filename("testFiles/compartment/nested_compartments_in_few_compartments.xml")); + Compartment c3 = model.getElementByElementId("ca3"); + Compartment c4 = model.getElementByElementId("ca4"); + Compartment c1 = model.getElementByElementId("ca1"); + Compartment c2 = model.getElementByElementId("ca2"); + assertEquals("ca1", c3.getCompartment().getElementId()); + assertEquals("ca2", c4.getCompartment().getElementId()); + + assertEquals(1, c1.getElements().size()); + assertEquals(1, c2.getElements().size()); + assertEquals(0, c3.getElements().size()); + assertEquals(0, c4.getElements().size()); + + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + } diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/annotation/RestAnnotationParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/annotation/RestAnnotationParserTest.java index 0195858815..f396388cca 100644 --- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/annotation/RestAnnotationParserTest.java +++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/annotation/RestAnnotationParserTest.java @@ -289,7 +289,6 @@ public class RestAnnotationParserTest extends CellDesignerTestFunctions { element.addFormerSymbol(former2); element.setCharge(1); String str = rap.createAnnotationString(element, true); - logger.debug(str); assertTrue(str.contains(former1)); assertTrue(str.contains(former2)); diff --git a/converter-CellDesigner/testFiles/compartment/nested_compartments_in_few_compartments.xml b/converter-CellDesigner/testFiles/compartment/nested_compartments_in_few_compartments.xml new file mode 100644 index 0000000000..8ca2988a0d --- /dev/null +++ b/converter-CellDesigner/testFiles/compartment/nested_compartments_in_few_compartments.xml @@ -0,0 +1,105 @@ +<?xml version="1.0" encoding="UTF-8"?> +<sbml xmlns="http://www.sbml.org/sbml/level2/version4" xmlns:celldesigner="http://www.sbml.org/2001/ns/celldesigner" level="2" version="4"> +<model metaid="untitled" id="untitled"> +<annotation> +<celldesigner:extension> +<celldesigner:modelVersion>4.0</celldesigner:modelVersion> +<celldesigner:modelDisplay sizeX="600" sizeY="400"/> +<celldesigner:listOfCompartmentAliases> +<celldesigner:compartmentAlias id="ca1" compartment="c1"> +<celldesigner:class>SQUARE</celldesigner:class> +<celldesigner:bounds x="35.0" y="77.0" w="171.0" h="179.0"/> +<celldesigner:namePoint x="98.5" y="153.5"/> +<celldesigner:doubleLine thickness="12.0" outerWidth="2.0" innerWidth="1.0"/> +<celldesigner:paint color="ffcccc00" scheme="Color"/> +<celldesigner:info state="empty" angle="-1.5707963267948966"/> +</celldesigner:compartmentAlias> +<celldesigner:compartmentAlias id="ca2" compartment="c2"> +<celldesigner:class>SQUARE</celldesigner:class> +<celldesigner:bounds x="316.0" y="110.0" w="248.0" h="149.0"/> +<celldesigner:namePoint x="432.5" y="222.5"/> +<celldesigner:doubleLine thickness="12.0" outerWidth="2.0" innerWidth="1.0"/> +<celldesigner:paint color="ffcccc00" scheme="Color"/> +<celldesigner:info state="empty" angle="-1.5707963267948966"/> +</celldesigner:compartmentAlias> +<celldesigner:compartmentAlias id="ca3" compartment="c3"> +<celldesigner:class>SQUARE</celldesigner:class> +<celldesigner:bounds x="64.0" y="144.0" w="105.0" h="68.0"/> +<celldesigner:namePoint x="109.0" y="175.5"/> +<celldesigner:doubleLine thickness="12.0" outerWidth="2.0" innerWidth="1.0"/> +<celldesigner:paint color="ffcccc00" scheme="Color"/> +<celldesigner:info state="empty" angle="-1.5707963267948966"/> +</celldesigner:compartmentAlias> +<celldesigner:compartmentAlias id="ca4" compartment="c3"> +<celldesigner:class>SQUARE</celldesigner:class> +<celldesigner:bounds x="351.0" y="180.0" w="86.0" h="33.0"/> +<celldesigner:namePoint x="386.5" y="184.5"/> +<celldesigner:doubleLine thickness="12.0" outerWidth="2.0" innerWidth="1.0"/> +<celldesigner:paint color="ffcccc00" scheme="Color"/> +<celldesigner:info state="empty" angle="-1.5707963267948966"/> +</celldesigner:compartmentAlias> +</celldesigner:listOfCompartmentAliases> +<celldesigner:listOfComplexSpeciesAliases/> +<celldesigner:listOfSpeciesAliases/> +<celldesigner:listOfGroups/> +<celldesigner:listOfProteins/> +<celldesigner:listOfGenes/> +<celldesigner:listOfRNAs/> +<celldesigner:listOfAntisenseRNAs/> +<celldesigner:listOfLayers/> +<celldesigner:listOfBlockDiagrams/> +</celldesigner:extension> +</annotation> +<listOfUnitDefinitions> +<unitDefinition metaid="substance" id="substance" name="substance"> +<listOfUnits> +<unit metaid="CDMT00001" kind="mole"/> +</listOfUnits> +</unitDefinition> +<unitDefinition metaid="volume" id="volume" name="volume"> +<listOfUnits> +<unit metaid="CDMT00002" kind="litre"/> +</listOfUnits> +</unitDefinition> +<unitDefinition metaid="area" id="area" name="area"> +<listOfUnits> +<unit metaid="CDMT00003" kind="metre" exponent="2"/> +</listOfUnits> +</unitDefinition> +<unitDefinition metaid="length" id="length" name="length"> +<listOfUnits> +<unit metaid="CDMT00004" kind="metre"/> +</listOfUnits> +</unitDefinition> +<unitDefinition metaid="time" id="time" name="time"> +<listOfUnits> +<unit metaid="CDMT00005" kind="second"/> +</listOfUnits> +</unitDefinition> +</listOfUnitDefinitions> +<listOfCompartments> +<compartment metaid="default" id="default" size="1" units="volume"/> +<compartment metaid="c1" id="c1" name="c1" size="1" units="volume" outside="default"> +<annotation> +<celldesigner:extension> +<celldesigner:name>c1</celldesigner:name> +</celldesigner:extension> +</annotation> +</compartment> +<compartment metaid="c2" id="c2" name="c2" size="1" units="volume" outside="default"> +<annotation> +<celldesigner:extension> +<celldesigner:name>c2</celldesigner:name> +</celldesigner:extension> +</annotation> +</compartment> +<compartment metaid="c3" id="c3" name="c3" size="1" units="volume" outside="c2"> +<annotation> +<celldesigner:extension> +<celldesigner:name>c3</celldesigner:name> +</celldesigner:extension> +</annotation> +</compartment> +</listOfCompartments> +</model> +</sbml> -- GitLab