diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporter.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporter.java index 7a5f8f5bd03642de4e9ec52becc0ede264d67a53..05889cd4ff94cab9cbf1ebecdcd9c47234cca9b8 100644 --- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporter.java +++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporter.java @@ -191,8 +191,6 @@ public class SbmlReactionExporter extends SbmlBioEntityExporter<Reaction, org.sb boolean firstReactant = true; reactionGlyph.setCurve(new Curve()); - Point2D reactantEndPoint = null; - for (Reactant reactant : reaction.getReactants()) { SpeciesReferenceGlyph reactantGlyph = createNodeGlyph(reactionGlyph, reactant); if (firstReactant) { @@ -200,14 +198,9 @@ public class SbmlReactionExporter extends SbmlBioEntityExporter<Reaction, org.sb for (NodeOperator operator : reaction.getOperators()) { if (operator.isReactantOperator()) { addOperatorLineToGlyph(reactionGlyph, operator, false); - if (reactantEndPoint == null) { - reactantEndPoint = operator.getLine().getEndPoint(); - } + break; } } - if (reactantEndPoint == null) { - reactantEndPoint = reactant.getLine().getEndPoint(); - } } else { reactantGlyph.setRole(SpeciesReferenceRole.SIDESUBSTRATE); } @@ -221,6 +214,7 @@ public class SbmlReactionExporter extends SbmlBioEntityExporter<Reaction, org.sb for (NodeOperator operator : reaction.getOperators()) { if (operator.isProductOperator()) { addOperatorLineToGlyph(reactionGlyph, operator, false); + break; } } } else { diff --git a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlExporterTest.java b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlExporterTest.java index a57933503b8a485fde4385d17a498e857ecc7377..8144beb26ab92392654e69bd2c9c0310f9cc3255 100644 --- a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlExporterTest.java +++ b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlExporterTest.java @@ -90,7 +90,6 @@ public class SbmlExporterTest { private Model getModelAfterSerializing(Model originalModel) throws Exception { String xml = exporter.toXml(originalModel); - logger.debug(xml); ByteArrayInputStream stream = new ByteArrayInputStream(xml.getBytes("UTF-8")); Model result = parser.createModel(new ConverterParams().inputStream(stream)); // showImage(originalModel); @@ -635,12 +634,40 @@ public class SbmlExporterTest { assertEquals("Notes weren't exported/imported properly", model.getNotes(), deserializedModel.getNotes()); } - + @Test public void testExportImportOfInputOperator() throws Exception { - Model originalModel = new CellDesignerXmlParser().createModel(new ConverterParams().filename("testFiles/cell_designer_problems/heterodimer_association.xml")); + Model originalModel = new CellDesignerXmlParser() + .createModel(new ConverterParams().filename("testFiles/cell_designer_problems/heterodimer_association.xml")); + Model model = getModelAfterSerializing(originalModel); + List<Line2D> lines1 = originalModel.getReactions().iterator().next().getLines(); + List<Line2D> lines2 = model.getReactions().iterator().next().getLines(); + + ListComparator<Line2D> comparator = new ListComparator<>(new LineComparator(Configuration.EPSILON)); + assertEquals(0, comparator.compare(lines1, lines2)); + + } + + @Test + public void testExportImportOfAdvancedInputOperator() throws Exception { + Model originalModel = new CellDesignerXmlParser().createModel(new ConverterParams() + .filename("testFiles/cell_designer_problems/heterodimer_association_with_additional_reactant.xml")); + Model model = getModelAfterSerializing(originalModel); + Reaction r1 = originalModel.getReactions().iterator().next(); + Reaction r2 = model.getReactions().iterator().next(); + Line2D line1 = r1.getCenterLine(); + Line2D line2 = r2.getCenterLine(); + + assertEquals(0, new LineComparator().compare(line1, line2)); + + } + + @Test + public void testExportImportOfOutputOperator() throws Exception { + Model originalModel = new CellDesignerXmlParser() + .createModel(new ConverterParams().filename("testFiles/cell_designer_problems/dissociation.xml")); Model model = getModelAfterSerializing(originalModel); - List<Line2D> lines1 = originalModel.getReactions().iterator().next().getLines(); + List<Line2D> lines1 = originalModel.getReactions().iterator().next().getLines(); List<Line2D> lines2 = model.getReactions().iterator().next().getLines(); ListComparator<Line2D> comparator = new ListComparator<>(new LineComparator(Configuration.EPSILON)); diff --git a/converter-sbml/testFiles/cell_designer_problems/dissociation.xml b/converter-sbml/testFiles/cell_designer_problems/dissociation.xml new file mode 100644 index 0000000000000000000000000000000000000000..8795ad50b6f7fb20a924fd4fbc3fe97ef1c5c1fd --- /dev/null +++ b/converter-sbml/testFiles/cell_designer_problems/dissociation.xml @@ -0,0 +1,204 @@ +<?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:listOfComplexSpeciesAliases/> +<celldesigner:listOfSpeciesAliases> +<celldesigner:speciesAlias id="sa1" species="s1"> +<celldesigner:activity>inactive</celldesigner:activity> +<celldesigner:bounds x="271.0" y="95.0" w="80.0" h="40.0"/> +<celldesigner:font size="12"/> +<celldesigner:view state="usual"/> +<celldesigner:usualView> +<celldesigner:innerPosition x="0.0" y="0.0"/> +<celldesigner:boxSize width="80.0" height="40.0"/> +<celldesigner:singleLine width="1.0"/> +<celldesigner:paint color="ffccffcc" scheme="Color"/> +</celldesigner:usualView> +<celldesigner:briefView> +<celldesigner:innerPosition x="0.0" y="0.0"/> +<celldesigner:boxSize width="80.0" height="60.0"/> +<celldesigner:singleLine width="0.0"/> +<celldesigner:paint color="3fff0000" scheme="Color"/> +</celldesigner:briefView> +<celldesigner:info state="empty" angle="-1.5707963267948966"/> +</celldesigner:speciesAlias> +<celldesigner:speciesAlias id="sa2" species="s2"> +<celldesigner:activity>inactive</celldesigner:activity> +<celldesigner:bounds x="269.0" y="234.0" w="80.0" h="40.0"/> +<celldesigner:font size="12"/> +<celldesigner:view state="usual"/> +<celldesigner:usualView> +<celldesigner:innerPosition x="0.0" y="0.0"/> +<celldesigner:boxSize width="80.0" height="40.0"/> +<celldesigner:singleLine width="1.0"/> +<celldesigner:paint color="ffccffcc" scheme="Color"/> +</celldesigner:usualView> +<celldesigner:briefView> +<celldesigner:innerPosition x="0.0" y="0.0"/> +<celldesigner:boxSize width="80.0" height="60.0"/> +<celldesigner:singleLine width="0.0"/> +<celldesigner:paint color="3fff0000" scheme="Color"/> +</celldesigner:briefView> +<celldesigner:info state="empty" angle="-1.5707963267948966"/> +</celldesigner:speciesAlias> +<celldesigner:speciesAlias id="sa3" species="s3"> +<celldesigner:activity>inactive</celldesigner:activity> +<celldesigner:bounds x="462.0" y="165.0" w="80.0" h="40.0"/> +<celldesigner:font size="12"/> +<celldesigner:view state="usual"/> +<celldesigner:usualView> +<celldesigner:innerPosition x="0.0" y="0.0"/> +<celldesigner:boxSize width="80.0" height="40.0"/> +<celldesigner:singleLine width="1.0"/> +<celldesigner:paint color="ffccffcc" scheme="Color"/> +</celldesigner:usualView> +<celldesigner:briefView> +<celldesigner:innerPosition x="0.0" y="0.0"/> +<celldesigner:boxSize width="80.0" height="60.0"/> +<celldesigner:singleLine width="0.0"/> +<celldesigner:paint color="3fff0000" scheme="Color"/> +</celldesigner:briefView> +<celldesigner:info state="empty" angle="-1.5707963267948966"/> +</celldesigner:speciesAlias> +</celldesigner:listOfSpeciesAliases> +<celldesigner:listOfGroups/> +<celldesigner:listOfProteins> +<celldesigner:protein id="pr1" name="s1" type="GENERIC"/> +<celldesigner:protein id="pr2" name="s2" type="GENERIC"/> +<celldesigner:protein id="pr3" name="s3" type="GENERIC"/> +</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="CDMT00004" kind="mole"/> +</listOfUnits> +</unitDefinition> +<unitDefinition metaid="volume" id="volume" name="volume"> +<listOfUnits> +<unit metaid="CDMT00005" kind="litre"/> +</listOfUnits> +</unitDefinition> +<unitDefinition metaid="area" id="area" name="area"> +<listOfUnits> +<unit metaid="CDMT00006" kind="metre" exponent="2"/> +</listOfUnits> +</unitDefinition> +<unitDefinition metaid="length" id="length" name="length"> +<listOfUnits> +<unit metaid="CDMT00007" kind="metre"/> +</listOfUnits> +</unitDefinition> +<unitDefinition metaid="time" id="time" name="time"> +<listOfUnits> +<unit metaid="CDMT00008" kind="second"/> +</listOfUnits> +</unitDefinition> +</listOfUnitDefinitions> +<listOfCompartments> +<compartment metaid="default" id="default" size="1" units="volume"/> +</listOfCompartments> +<listOfSpecies> +<species metaid="s1" id="s1" name="s1" compartment="default" initialAmount="0"> +<annotation> +<celldesigner:extension> +<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment> +<celldesigner:speciesIdentity> +<celldesigner:class>PROTEIN</celldesigner:class> +<celldesigner:proteinReference>pr1</celldesigner:proteinReference> +</celldesigner:speciesIdentity> +</celldesigner:extension> +</annotation> +</species> +<species metaid="s2" id="s2" name="s2" compartment="default" initialAmount="0"> +<annotation> +<celldesigner:extension> +<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment> +<celldesigner:speciesIdentity> +<celldesigner:class>PROTEIN</celldesigner:class> +<celldesigner:proteinReference>pr2</celldesigner:proteinReference> +</celldesigner:speciesIdentity> +</celldesigner:extension> +</annotation> +</species> +<species metaid="s3" id="s3" name="s3" compartment="default" initialAmount="0"> +<annotation> +<celldesigner:extension> +<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment> +<celldesigner:speciesIdentity> +<celldesigner:class>PROTEIN</celldesigner:class> +<celldesigner:proteinReference>pr3</celldesigner:proteinReference> +</celldesigner:speciesIdentity> +</celldesigner:extension> +</annotation> +</species> +</listOfSpecies> +<listOfReactions> +<reaction metaid="re1" id="re1" reversible="false"> +<annotation> +<celldesigner:extension> +<celldesigner:reactionType>DISSOCIATION</celldesigner:reactionType> +<celldesigner:baseReactants> +<celldesigner:baseReactant species="s3" alias="sa3"> +<celldesigner:linkAnchor position="INACTIVE"/> +</celldesigner:baseReactant> +</celldesigner:baseReactants> +<celldesigner:baseProducts> +<celldesigner:baseProduct species="s2" alias="sa2"> +<celldesigner:linkAnchor position="INACTIVE"/> +</celldesigner:baseProduct> +<celldesigner:baseProduct species="s1" alias="sa1"> +<celldesigner:linkAnchor position="INACTIVE"/> +</celldesigner:baseProduct> +</celldesigner:baseProducts> +<celldesigner:connectScheme connectPolicy="direct"> +<celldesigner:listOfLineDirection> +<celldesigner:lineDirection arm="0" index="0" value="unknown"/> +<celldesigner:lineDirection arm="1" index="0" value="unknown"/> +<celldesigner:lineDirection arm="2" index="0" value="unknown"/> +</celldesigner:listOfLineDirection> +</celldesigner:connectScheme> +<celldesigner:editPoints num0="0" num1="0" num2="0" tShapeIndex="0">0.3278504252688371,0.3231668477649965</celldesigner:editPoints> +<celldesigner:line width="1.0" color="ff000000"/> +</celldesigner:extension> +</annotation> +<listOfReactants> +<speciesReference metaid="CDMT00001" species="s3"> +<annotation> +<celldesigner:extension> +<celldesigner:alias>sa3</celldesigner:alias> +</celldesigner:extension> +</annotation> +</speciesReference> +</listOfReactants> +<listOfProducts> +<speciesReference metaid="CDMT00002" species="s2"> +<annotation> +<celldesigner:extension> +<celldesigner:alias>sa2</celldesigner:alias> +</celldesigner:extension> +</annotation> +</speciesReference> +<speciesReference metaid="CDMT00003" species="s1"> +<annotation> +<celldesigner:extension> +<celldesigner:alias>sa1</celldesigner:alias> +</celldesigner:extension> +</annotation> +</speciesReference> +</listOfProducts> +</reaction> +</listOfReactions> +</model> +</sbml> diff --git a/converter-sbml/testFiles/cell_designer_problems/heterodimer_association_with_additional_reactant.xml b/converter-sbml/testFiles/cell_designer_problems/heterodimer_association_with_additional_reactant.xml new file mode 100644 index 0000000000000000000000000000000000000000..e6765c45e60fbe489928a3a2f956116162b7abc9 --- /dev/null +++ b/converter-sbml/testFiles/cell_designer_problems/heterodimer_association_with_additional_reactant.xml @@ -0,0 +1,253 @@ +<?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:listOfComplexSpeciesAliases/> +<celldesigner:listOfSpeciesAliases> +<celldesigner:speciesAlias id="sa1" species="s1"> +<celldesigner:activity>inactive</celldesigner:activity> +<celldesigner:bounds x="161.0" y="74.0" w="80.0" h="40.0"/> +<celldesigner:font size="12"/> +<celldesigner:view state="usual"/> +<celldesigner:usualView> +<celldesigner:innerPosition x="0.0" y="0.0"/> +<celldesigner:boxSize width="80.0" height="40.0"/> +<celldesigner:singleLine width="1.0"/> +<celldesigner:paint color="ffccffcc" scheme="Color"/> +</celldesigner:usualView> +<celldesigner:briefView> +<celldesigner:innerPosition x="0.0" y="0.0"/> +<celldesigner:boxSize width="80.0" height="60.0"/> +<celldesigner:singleLine width="0.0"/> +<celldesigner:paint color="3fff0000" scheme="Color"/> +</celldesigner:briefView> +<celldesigner:info state="empty" angle="-1.5707963267948966"/> +</celldesigner:speciesAlias> +<celldesigner:speciesAlias id="sa2" species="s2"> +<celldesigner:activity>inactive</celldesigner:activity> +<celldesigner:bounds x="181.0" y="274.0" w="80.0" h="40.0"/> +<celldesigner:font size="12"/> +<celldesigner:view state="usual"/> +<celldesigner:usualView> +<celldesigner:innerPosition x="0.0" y="0.0"/> +<celldesigner:boxSize width="80.0" height="40.0"/> +<celldesigner:singleLine width="1.0"/> +<celldesigner:paint color="ffccffcc" scheme="Color"/> +</celldesigner:usualView> +<celldesigner:briefView> +<celldesigner:innerPosition x="0.0" y="0.0"/> +<celldesigner:boxSize width="80.0" height="60.0"/> +<celldesigner:singleLine width="0.0"/> +<celldesigner:paint color="3fff0000" scheme="Color"/> +</celldesigner:briefView> +<celldesigner:info state="empty" angle="-1.5707963267948966"/> +</celldesigner:speciesAlias> +<celldesigner:speciesAlias id="sa3" species="s3"> +<celldesigner:activity>inactive</celldesigner:activity> +<celldesigner:bounds x="444.0" y="176.0" w="80.0" h="40.0"/> +<celldesigner:font size="12"/> +<celldesigner:view state="usual"/> +<celldesigner:usualView> +<celldesigner:innerPosition x="0.0" y="0.0"/> +<celldesigner:boxSize width="80.0" height="40.0"/> +<celldesigner:singleLine width="1.0"/> +<celldesigner:paint color="ffccffcc" scheme="Color"/> +</celldesigner:usualView> +<celldesigner:briefView> +<celldesigner:innerPosition x="0.0" y="0.0"/> +<celldesigner:boxSize width="80.0" height="60.0"/> +<celldesigner:singleLine width="0.0"/> +<celldesigner:paint color="3fff0000" scheme="Color"/> +</celldesigner:briefView> +<celldesigner:info state="empty" angle="-1.5707963267948966"/> +</celldesigner:speciesAlias> +<celldesigner:speciesAlias id="sa4" species="s4"> +<celldesigner:activity>inactive</celldesigner:activity> +<celldesigner:bounds x="271.0" y="13.0" w="80.0" h="40.0"/> +<celldesigner:font size="12"/> +<celldesigner:view state="usual"/> +<celldesigner:usualView> +<celldesigner:innerPosition x="0.0" y="0.0"/> +<celldesigner:boxSize width="80.0" height="40.0"/> +<celldesigner:singleLine width="1.0"/> +<celldesigner:paint color="ffccffcc" scheme="Color"/> +</celldesigner:usualView> +<celldesigner:briefView> +<celldesigner:innerPosition x="0.0" y="0.0"/> +<celldesigner:boxSize width="80.0" height="60.0"/> +<celldesigner:singleLine width="0.0"/> +<celldesigner:paint color="3fff0000" scheme="Color"/> +</celldesigner:briefView> +<celldesigner:info state="empty" angle="-1.5707963267948966"/> +</celldesigner:speciesAlias> +</celldesigner:listOfSpeciesAliases> +<celldesigner:listOfGroups/> +<celldesigner:listOfProteins> +<celldesigner:protein id="pr1" name="s1" type="GENERIC"/> +<celldesigner:protein id="pr2" name="s2" type="GENERIC"/> +<celldesigner:protein id="pr3" name="s3" type="GENERIC"/> +<celldesigner:protein id="pr4" name="s4" type="GENERIC"/> +</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="CDMT00004" kind="mole"/> +</listOfUnits> +</unitDefinition> +<unitDefinition metaid="volume" id="volume" name="volume"> +<listOfUnits> +<unit metaid="CDMT00005" kind="litre"/> +</listOfUnits> +</unitDefinition> +<unitDefinition metaid="area" id="area" name="area"> +<listOfUnits> +<unit metaid="CDMT00006" kind="metre" exponent="2"/> +</listOfUnits> +</unitDefinition> +<unitDefinition metaid="length" id="length" name="length"> +<listOfUnits> +<unit metaid="CDMT00007" kind="metre"/> +</listOfUnits> +</unitDefinition> +<unitDefinition metaid="time" id="time" name="time"> +<listOfUnits> +<unit metaid="CDMT00008" kind="second"/> +</listOfUnits> +</unitDefinition> +</listOfUnitDefinitions> +<listOfCompartments> +<compartment metaid="default" id="default" size="1" units="volume"/> +</listOfCompartments> +<listOfSpecies> +<species metaid="s1" id="s1" name="s1" compartment="default" initialAmount="0"> +<annotation> +<celldesigner:extension> +<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment> +<celldesigner:speciesIdentity> +<celldesigner:class>PROTEIN</celldesigner:class> +<celldesigner:proteinReference>pr1</celldesigner:proteinReference> +</celldesigner:speciesIdentity> +</celldesigner:extension> +</annotation> +</species> +<species metaid="s2" id="s2" name="s2" compartment="default" initialAmount="0"> +<annotation> +<celldesigner:extension> +<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment> +<celldesigner:speciesIdentity> +<celldesigner:class>PROTEIN</celldesigner:class> +<celldesigner:proteinReference>pr2</celldesigner:proteinReference> +</celldesigner:speciesIdentity> +</celldesigner:extension> +</annotation> +</species> +<species metaid="s3" id="s3" name="s3" compartment="default" initialAmount="0"> +<annotation> +<celldesigner:extension> +<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment> +<celldesigner:speciesIdentity> +<celldesigner:class>PROTEIN</celldesigner:class> +<celldesigner:proteinReference>pr3</celldesigner:proteinReference> +</celldesigner:speciesIdentity> +</celldesigner:extension> +</annotation> +</species> +<species metaid="s4" id="s4" name="s4" compartment="default" initialAmount="0"> +<annotation> +<celldesigner:extension> +<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment> +<celldesigner:speciesIdentity> +<celldesigner:class>PROTEIN</celldesigner:class> +<celldesigner:proteinReference>pr4</celldesigner:proteinReference> +</celldesigner:speciesIdentity> +</celldesigner:extension> +</annotation> +</species> +</listOfSpecies> +<listOfReactions> +<reaction metaid="re2" id="re2" reversible="false"> +<annotation> +<celldesigner:extension> +<celldesigner:reactionType>HETERODIMER_ASSOCIATION</celldesigner:reactionType> +<celldesigner:baseReactants> +<celldesigner:baseReactant species="s1" alias="sa1"> +<celldesigner:linkAnchor position="INACTIVE"/> +</celldesigner:baseReactant> +<celldesigner:baseReactant species="s2" alias="sa2"> +<celldesigner:linkAnchor position="INACTIVE"/> +</celldesigner:baseReactant> +</celldesigner:baseReactants> +<celldesigner:baseProducts> +<celldesigner:baseProduct species="s3" alias="sa3"> +<celldesigner:linkAnchor position="INACTIVE"/> +</celldesigner:baseProduct> +</celldesigner:baseProducts> +<celldesigner:listOfReactantLinks> +<celldesigner:reactantLink reactant="s4" alias="sa4" targetLineIndex="2,0"> +<celldesigner:linkAnchor position="INACTIVE"/> +<celldesigner:connectScheme connectPolicy="direct"> +<celldesigner:listOfLineDirection> +<celldesigner:lineDirection index="0" value="unknown"/> +</celldesigner:listOfLineDirection> +</celldesigner:connectScheme> +<celldesigner:line width="1.0" color="ff000000" type="Straight"/> +</celldesigner:reactantLink> +</celldesigner:listOfReactantLinks> +<celldesigner:connectScheme connectPolicy="direct"> +<celldesigner:listOfLineDirection> +<celldesigner:lineDirection arm="0" index="0" value="unknown"/> +<celldesigner:lineDirection arm="1" index="0" value="unknown"/> +<celldesigner:lineDirection arm="2" index="0" value="unknown"/> +</celldesigner:listOfLineDirection> +</celldesigner:connectScheme> +<celldesigner:editPoints num0="0" num1="0" num2="0" tShapeIndex="0">0.3416972140762462,0.3398093841642229</celldesigner:editPoints> +<celldesigner:line width="1.0" color="ff000000"/> +</celldesigner:extension> +</annotation> +<listOfReactants> +<speciesReference metaid="CDMT00009" species="s1"> +<annotation> +<celldesigner:extension> +<celldesigner:alias>sa1</celldesigner:alias> +</celldesigner:extension> +</annotation> +</speciesReference> +<speciesReference metaid="CDMT00010" species="s2"> +<annotation> +<celldesigner:extension> +<celldesigner:alias>sa2</celldesigner:alias> +</celldesigner:extension> +</annotation> +</speciesReference> +<speciesReference metaid="CDMT00011" species="s4"> +<annotation> +<celldesigner:extension> +<celldesigner:alias>sa4</celldesigner:alias> +</celldesigner:extension> +</annotation> +</speciesReference> +</listOfReactants> +<listOfProducts> +<speciesReference metaid="CDMT00012" species="s3"> +<annotation> +<celldesigner:extension> +<celldesigner:alias>sa3</celldesigner:alias> +</celldesigner:extension> +</annotation> +</speciesReference> +</listOfProducts> +</reaction> +</listOfReactions> +</model> +</sbml>