Commit a5d9331e authored by Piotr Gawron's avatar Piotr Gawron
Browse files

import from sbml could be problematic when provided layout placed two elements...

import from sbml could be problematic when provided layout placed two elements in exactly the same position
parent 46870d8b
minerva (12.2.0~beta.2) unstable; urgency=medium
* Bug fix: import from sbml with layout could crash when two elements
occupied the exact same position (#717)
* Bug fix: overlays added via API couldn't be visualized after refresh (#718)
* Bug fix: Safari sometimes cached server responses and used wrong data, for
example in admin panel configuration tab (#719)
......
......@@ -19,7 +19,6 @@ import org.sbml.jsbml.ext.SBasePlugin;
import org.sbml.jsbml.ext.layout.Layout;
import org.sbml.jsbml.ext.layout.LayoutModelPlugin;
import org.sbml.jsbml.ext.multi.MultiModelPlugin;
import org.sbml.jsbml.ext.render.LocalStyle;
import lcsb.mapviewer.commands.CommandExecutionException;
import lcsb.mapviewer.commands.layout.ApplySimpleLayoutModelCommand;
......@@ -157,7 +156,7 @@ public class SbmlParser implements IConverter {
if (element instanceof Complex && element != species) {
Complex complex = (Complex) element;
if (complex.getWidth() != 0 || complex.getHeight() != 0) {
if (complex.contains(species)) {
if (complex.contains(species) && complex.getSize() > species.getSize()) {
if (result == null) {
result = complex;
} else if (result.getSize() > complex.getSize()) {
......
......@@ -5,9 +5,10 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.awt.Color;
import java.io.FileNotFoundException;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.apache.log4j.Logger;
import org.apache.log4j.spi.LoggingEvent;
......@@ -15,7 +16,7 @@ import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import lcsb.mapviewer.common.Configuration;
import lcsb.mapviewer.commands.CreateHierarchyCommand;
import lcsb.mapviewer.common.EventStorageLoggerAppender;
import lcsb.mapviewer.converter.ConverterParams;
import lcsb.mapviewer.converter.InvalidInputDataExecption;
......@@ -23,6 +24,7 @@ import lcsb.mapviewer.model.map.compartment.Compartment;
import lcsb.mapviewer.model.map.model.Model;
import lcsb.mapviewer.model.map.reaction.Reaction;
import lcsb.mapviewer.model.map.reaction.ReactionNode;
import lcsb.mapviewer.model.map.species.Element;
import lcsb.mapviewer.model.map.species.Gene;
import lcsb.mapviewer.model.map.species.GenericProtein;
import lcsb.mapviewer.model.map.species.Species;
......@@ -199,9 +201,32 @@ public class SbmlParserTest {
@Test
public void testParseConflictingTypesFromMulti() throws Exception {
Model model = parser.createModel(new ConverterParams().filename("testFiles/multi_features/conflicting_species_type.xml"));
Model model = parser
.createModel(new ConverterParams().filename("testFiles/multi_features/conflicting_species_type.xml"));
assertTrue(model.getElementByElementId("species_0") instanceof GenericProtein);
assertEquals(1, getWarnings().size());
}
@Test
public void testCyclicComplexes() throws Exception {
try {
Model model = parser.createModel(new ConverterParams().filename("testFiles/cyclic_complex.xml"));
new CreateHierarchyCommand(model, 8, 80).execute();
for (Species species : model.getSpeciesList()) {
Set<Element> parents = new HashSet<Element>();
while (species.getComplex() != null) {
assertFalse("Cyclic nesting", parents.contains(species.getComplex()));
species= species.getComplex();
parents.add(species);
}
}
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:layout="http://www.sbml.org/sbml/level3/version1/layout/version1" level="3" version="1" layout:required="false">
<model substanceUnits="mole" timeUnits="second" extentUnits="mole">
<listOfUnitDefinitions>
<unitDefinition id="per_second">
<listOfUnits>
<unit kind="second" exponent="-1" scale="0" multiplier="1"/>
</listOfUnits>
</unitDefinition>
</listOfUnitDefinitions>
<listOfCompartments>
<compartment id="comp_0" name="compartment1" constant="false"/>
</listOfCompartments>
<listOfSpecies>
<species sboTerm="SBO:0000297" id="species_7" name="BasalACh2" compartment="comp_0" initialAmount="0" hasOnlySubstanceUnits="true" boundaryCondition="false" constant="false"/>
<species sboTerm="SBO:0000297" id="species_10" name="BasalACh" compartment="comp_0" initialAmount="0" hasOnlySubstanceUnits="true" boundaryCondition="false" constant="false"/>
<species sboTerm="SBO:0000297" id="species_8" name="ActiveACh2" compartment="comp_0" initialAmount="0" hasOnlySubstanceUnits="true" boundaryCondition="false" constant="false"/>
<species sboTerm="SBO:0000297" id="species_5" name="ActiveACh" compartment="comp_0" initialAmount="0" hasOnlySubstanceUnits="true" boundaryCondition="false" constant="false"/>
<species sboTerm="SBO:0000247" id="species_2" name="Basal" compartment="comp_0" initialAmount="0" hasOnlySubstanceUnits="true" boundaryCondition="false" constant="false"/>
<species sboTerm="SBO:0000297" id="species_0" name="IntermediateACh" compartment="comp_0" initialAmount="0" hasOnlySubstanceUnits="true" boundaryCondition="false" constant="false"/>
<species sboTerm="SBO:0000297" id="species_1" name="IntermediateACh2" compartment="comp_0" initialAmount="0" hasOnlySubstanceUnits="true" boundaryCondition="false" constant="false"/>
<species sboTerm="SBO:0000297" id="species_6" name="DesensitisedACh" compartment="comp_0" initialAmount="0" hasOnlySubstanceUnits="true" boundaryCondition="false" constant="false"/>
<species sboTerm="SBO:0000247" id="species_4" name="Desensitised" compartment="comp_0" initialAmount="0" hasOnlySubstanceUnits="true" boundaryCondition="false" constant="false"/>
<species sboTerm="SBO:0000297" id="species_3" name="DesensitisedACh2" compartment="comp_0" initialAmount="0" hasOnlySubstanceUnits="true" boundaryCondition="false" constant="false"/>
<species sboTerm="SBO:0000247" id="species_11" name="Intermediate" compartment="comp_0" initialAmount="0" hasOnlySubstanceUnits="true" boundaryCondition="false" constant="false"/>
<species sboTerm="SBO:0000247" id="species_9" name="Active" compartment="comp_0" initialAmount="0" hasOnlySubstanceUnits="true" boundaryCondition="false" constant="false"/>
</listOfSpecies>
<listOfReactions>
<reaction sboTerm="SBO:0000176" id="reaction_glyph_14" reversible="false" fast="false">
<listOfReactants>
<speciesReference species="species_10" constant="false"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="species_7" constant="false"/>
</listOfProducts>
</reaction>
<reaction sboTerm="SBO:0000176" id="reaction_glyph_0" reversible="false" fast="false">
<listOfReactants>
<speciesReference species="species_7" constant="false"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="species_8" constant="false"/>
</listOfProducts>
</reaction>
<reaction sboTerm="SBO:0000176" id="reaction_glyph_1" reversible="false" fast="false">
<listOfReactants>
<speciesReference species="species_10" constant="false"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="species_5" constant="false"/>
</listOfProducts>
</reaction>
<reaction sboTerm="SBO:0000176" id="reaction_glyph_11" reversible="false" fast="false">
<listOfReactants>
<speciesReference species="species_8" constant="false"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="species_1" constant="false"/>
</listOfProducts>
</reaction>
<reaction sboTerm="SBO:0000176" id="reaction_glyph_3" reversible="false" fast="false">
<listOfReactants>
<speciesReference species="species_5" constant="false"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="species_8" constant="false"/>
</listOfProducts>
</reaction>
<reaction sboTerm="SBO:0000176" id="reaction_glyph_10" reversible="false" fast="false">
<listOfReactants>
<speciesReference species="species_5" constant="false"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="species_0" constant="false"/>
</listOfProducts>
</reaction>
<reaction sboTerm="SBO:0000176" id="reaction_glyph_5" reversible="false" fast="false">
<listOfReactants>
<speciesReference species="species_2" constant="false"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="species_10" constant="false"/>
</listOfProducts>
</reaction>
<reaction sboTerm="SBO:0000176" id="reaction_glyph_2" reversible="false" fast="false">
<listOfReactants>
<speciesReference species="species_0" constant="false"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="species_1" constant="false"/>
</listOfProducts>
</reaction>
<reaction sboTerm="SBO:0000176" id="reaction_glyph_6" reversible="false" fast="false">
<listOfReactants>
<speciesReference species="species_9" constant="false"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="species_5" constant="false"/>
</listOfProducts>
</reaction>
<reaction sboTerm="SBO:0000176" id="reaction_glyph_15" reversible="false" fast="false">
<listOfReactants>
<speciesReference species="species_1" constant="false"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="species_3" constant="false"/>
</listOfProducts>
</reaction>
<reaction sboTerm="SBO:0000176" id="reaction_glyph_13" reversible="false" fast="false">
<listOfReactants>
<speciesReference species="species_2" constant="false"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="species_9" constant="false"/>
</listOfProducts>
</reaction>
<reaction sboTerm="SBO:0000176" id="reaction_glyph_16" reversible="false" fast="false">
<listOfReactants>
<speciesReference species="species_0" constant="false"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="species_6" constant="false"/>
</listOfProducts>
</reaction>
<reaction sboTerm="SBO:0000176" id="reaction_glyph_9" reversible="false" fast="false">
<listOfReactants>
<speciesReference species="species_4" constant="false"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="species_6" constant="false"/>
</listOfProducts>
</reaction>
<reaction sboTerm="SBO:0000176" id="reaction_glyph_4" reversible="false" fast="false">
<listOfReactants>
<speciesReference species="species_6" constant="false"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="species_3" constant="false"/>
</listOfProducts>
</reaction>
<reaction sboTerm="SBO:0000176" id="reaction_glyph_8" reversible="false" fast="false">
<listOfReactants>
<speciesReference species="species_9" constant="false"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="species_11" constant="false"/>
</listOfProducts>
</reaction>
<reaction sboTerm="SBO:0000176" id="reaction_glyph_7" reversible="false" fast="false">
<listOfReactants>
<speciesReference species="species_11" constant="false"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="species_0" constant="false"/>
</listOfProducts>
</reaction>
<reaction sboTerm="SBO:0000176" id="reaction_glyph_12" reversible="false" fast="false">
<listOfReactants>
<speciesReference species="species_11" constant="false"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="species_4" constant="false"/>
</listOfProducts>
</reaction>
</listOfReactions>
<layout:listOfLayouts xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:layout="http://www.sbml.org/sbml/level3/version1/layout/version1">
<layout:layout layout:id="predicted_layout">
<layout:dimensions layout:width="634.5" layout:height="261.79151086467"/>
<layout:listOfCompartmentGlyphs>
<layout:compartmentGlyph layout:id="cg_comp_0" layout:compartment="comp_0">
<layout:boundingBox layout:id="bb_cg_comp_0">
<layout:position layout:x="0" layout:y="1"/>
<layout:dimensions layout:width="715" layout:height="302"/>
</layout:boundingBox>
</layout:compartmentGlyph>
</layout:listOfCompartmentGlyphs>
<layout:listOfSpeciesGlyphs>
<layout:speciesGlyph layout:id="sg_BLL__entityVertex_10008821_1129446" layout:species="species_7">
<layout:boundingBox layout:id="bb_sg_BLL__entityVertex_10008821_1129446">
<layout:position layout:x="348" layout:y="89"/>
<layout:dimensions layout:width="80" layout:height="40"/>
</layout:boundingBox>
</layout:speciesGlyph>
<layout:speciesGlyph layout:id="sg_BL__entityVertex_10008824_1129452" layout:species="species_10">
<layout:boundingBox layout:id="bb_sg_BL__entityVertex_10008824_1129452">
<layout:position layout:x="515" layout:y="89"/>
<layout:dimensions layout:width="80" layout:height="40"/>
</layout:boundingBox>
</layout:speciesGlyph>
<layout:speciesGlyph layout:id="sg_ALL__entityVertex_9999112_1129444" layout:species="species_8">
<layout:boundingBox layout:id="bb_sg_ALL__entityVertex_9999112_1129444">
<layout:position layout:x="120.5" layout:y="116"/>
<layout:dimensions layout:width="80" layout:height="40"/>
</layout:boundingBox>
</layout:speciesGlyph>
<layout:speciesGlyph layout:id="sg_AL__entityVertex_10008823_1129455" layout:species="species_5">
<layout:boundingBox layout:id="bb_sg_AL__entityVertex_10008823_1129455">
<layout:position layout:x="489.5" layout:y="203"/>
<layout:dimensions layout:width="80" layout:height="40"/>
</layout:boundingBox>
</layout:speciesGlyph>
<layout:speciesGlyph layout:id="sg_B__React0__React5" layout:species="species_2">
<layout:boundingBox layout:id="bb_sg_B__React0__React5">
<layout:position layout:x="337.239206103396" layout:y="125.647389215088"/>
<layout:dimensions layout:width="80" layout:height="40"/>
</layout:boundingBox>
</layout:speciesGlyph>
<layout:speciesGlyph layout:id="sg_IL__React10__React15" layout:species="species_0">
<layout:boundingBox layout:id="bb_sg_IL__React10__React15">
<layout:position layout:x="337.239206103396" layout:y="125.647389215088"/>
<layout:dimensions layout:width="80" layout:height="40"/>
</layout:boundingBox>
</layout:speciesGlyph>
<layout:speciesGlyph layout:id="sg_AL__React10__React3" layout:species="species_5">
<layout:boundingBox layout:id="bb_sg_AL__React10__React3">
<layout:position layout:x="337.239206103396" layout:y="125.647389215088"/>
<layout:dimensions layout:width="80" layout:height="40"/>
</layout:boundingBox>
</layout:speciesGlyph>
<layout:speciesGlyph layout:id="sg_ILL__React11__React16" layout:species="species_1">
<layout:boundingBox layout:id="bb_sg_ILL__React11__React16">
<layout:position layout:x="278.365520669189" layout:y="93.1137846275741"/>
<layout:dimensions layout:width="80" layout:height="40"/>
</layout:boundingBox>
</layout:speciesGlyph>
<layout:speciesGlyph layout:id="sg_DL__React12__React13" layout:species="species_6">
<layout:boundingBox layout:id="bb_sg_DL__React12__React13">
<layout:position layout:x="337.239206103396" layout:y="125.647389215088"/>
<layout:dimensions layout:width="80" layout:height="40"/>
</layout:boundingBox>
</layout:speciesGlyph>
<layout:speciesGlyph layout:id="sg_D__React12__React14" layout:species="species_4">
<layout:boundingBox layout:id="bb_sg_D__React12__React14">
<layout:position layout:x="337.239206103396" layout:y="125.647389215088"/>
<layout:dimensions layout:width="80" layout:height="40"/>
</layout:boundingBox>
</layout:speciesGlyph>
<layout:speciesGlyph layout:id="sg_DLL__React13__React16" layout:species="species_3">
<layout:boundingBox layout:id="bb_sg_DLL__React13__React16">
<layout:position layout:x="337.239206103396" layout:y="125.647389215088"/>
<layout:dimensions layout:width="80" layout:height="40"/>
</layout:boundingBox>
</layout:speciesGlyph>
<layout:speciesGlyph layout:id="sg_I__React14__React7" layout:species="species_11">
<layout:boundingBox layout:id="bb_sg_I__React14__React7">
<layout:position layout:x="337.239206103396" layout:y="125.647389215088"/>
<layout:dimensions layout:width="80" layout:height="40"/>
</layout:boundingBox>
</layout:speciesGlyph>
<layout:speciesGlyph layout:id="sg_A__React3__React5" layout:species="species_9">
<layout:boundingBox layout:id="bb_sg_A__React3__React5">
<layout:position layout:x="337.239206103396" layout:y="125.647389215088"/>
<layout:dimensions layout:width="80" layout:height="40"/>
</layout:boundingBox>
</layout:speciesGlyph>
<layout:speciesGlyph layout:id="sg_IL__React7__React8" layout:species="species_0">
<layout:boundingBox layout:id="bb_sg_IL__React7__React8">
<layout:position layout:x="337.239206103396" layout:y="125.647389215088"/>
<layout:dimensions layout:width="80" layout:height="40"/>
</layout:boundingBox>
</layout:speciesGlyph>
<layout:speciesGlyph layout:id="sg_React0_BL" layout:species="species_10">
<layout:boundingBox layout:id="bb_sg_React0_BL">
<layout:position layout:x="337.239206103396" layout:y="61.2084891353298"/>
<layout:dimensions layout:width="80" layout:height="40"/>
</layout:boundingBox>
</layout:speciesGlyph>
<layout:speciesGlyph layout:id="sg_React15_DL" layout:species="species_6">
<layout:boundingBox layout:id="bb_sg_React15_DL">
<layout:position layout:x="337.239206103396" layout:y="61.2084891353298"/>
<layout:dimensions layout:width="80" layout:height="40"/>
</layout:boundingBox>
</layout:speciesGlyph>
<layout:speciesGlyph layout:id="sg_React8_ILL" layout:species="species_1">
<layout:boundingBox layout:id="bb_sg_React8_ILL">
<layout:position layout:x="337.239206103396" layout:y="61.2084891353298"/>
<layout:dimensions layout:width="80" layout:height="40"/>
</layout:boundingBox>
</layout:speciesGlyph>
<layout:speciesGlyph layout:id="sg_React9_A" layout:species="species_9">
<layout:boundingBox layout:id="bb_sg_React9_A">
<layout:position layout:x="305.019756063517" layout:y="181.453113676086"/>
<layout:dimensions layout:width="80" layout:height="40"/>
</layout:boundingBox>
</layout:speciesGlyph>
<layout:speciesGlyph layout:id="sg_React9_I" layout:species="species_11">
<layout:boundingBox layout:id="bb_sg_React9_I">
<layout:position layout:x="305.019756063517" layout:y="69.8416647540904"/>
<layout:dimensions layout:width="80" layout:height="40"/>
</layout:boundingBox>
</layout:speciesGlyph>
</layout:listOfSpeciesGlyphs>
<layout:listOfReactionGlyphs>
<layout:reactionGlyph layout:id="rg_React1" layout:reaction="reaction_glyph_14">
<layout:curve>
<layout:listOfCurveSegments>
<layout:curveSegment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="LineSegment">
<layout:start layout:x="471.5" layout:y="109"/>
<layout:end layout:x="471.5" layout:y="109"/>
</layout:curveSegment>
</layout:listOfCurveSegments>
</layout:curve>
<layout:listOfSpeciesReferenceGlyphs>
<layout:speciesReferenceGlyph layout:id="srg_BLL__entityVertex_10008821_1129446_product_1" layout:speciesGlyph="sg_BLL__entityVertex_10008821_1129446" layout:role="product">
<layout:curve>
<layout:listOfCurveSegments>
<layout:curveSegment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="LineSegment">
<layout:start layout:x="471.5" layout:y="109"/>
<layout:end layout:x="388" layout:y="109"/>
</layout:curveSegment>
</layout:listOfCurveSegments>
</layout:curve>
</layout:speciesReferenceGlyph>
<layout:speciesReferenceGlyph layout:id="srg_BL__entityVertex_10008824_1129452_substrate_1" layout:speciesGlyph="sg_BL__entityVertex_10008824_1129452" layout:role="substrate">
<layout:curve>
<layout:listOfCurveSegments>
<layout:curveSegment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="LineSegment">
<layout:start layout:x="471.5" layout:y="109"/>
<layout:end layout:x="555" layout:y="109"/>
</layout:curveSegment>
</layout:listOfCurveSegments>
</layout:curve>
</layout:speciesReferenceGlyph>
</layout:listOfSpeciesReferenceGlyphs>
</layout:reactionGlyph>
<layout:reactionGlyph layout:id="rg_React2" layout:reaction="reaction_glyph_0">
<layout:curve>
<layout:listOfCurveSegments>
<layout:curveSegment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="LineSegment">
<layout:start layout:x="274.25" layout:y="122.5"/>
<layout:end layout:x="274.25" layout:y="122.5"/>
</layout:curveSegment>
</layout:listOfCurveSegments>
</layout:curve>
<layout:listOfSpeciesReferenceGlyphs>
<layout:speciesReferenceGlyph layout:id="srg_BLL__entityVertex_10008821_1129446_substrate_1" layout:speciesGlyph="sg_BLL__entityVertex_10008821_1129446" layout:role="substrate">
<layout:curve>
<layout:listOfCurveSegments>
<layout:curveSegment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="LineSegment">
<layout:start layout:x="274.25" layout:y="122.5"/>
<layout:end layout:x="388" layout:y="109"/>
</layout:curveSegment>
</layout:listOfCurveSegments>
</layout:curve>
</layout:speciesReferenceGlyph>
<layout:speciesReferenceGlyph layout:id="srg_ALL__entityVertex_9999112_1129444_product_1" layout:speciesGlyph="sg_ALL__entityVertex_9999112_1129444" layout:role="product">
<layout:curve>
<layout:listOfCurveSegments>
<layout:curveSegment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="LineSegment">
<layout:start layout:x="274.25" layout:y="122.5"/>
<layout:end layout:x="160.5" layout:y="136"/>
</layout:curveSegment>
</layout:listOfCurveSegments>
</layout:curve>
</layout:speciesReferenceGlyph>
</layout:listOfSpeciesReferenceGlyphs>
</layout:reactionGlyph>
<layout:reactionGlyph layout:id="rg_React6" layout:reaction="reaction_glyph_1">
<layout:curve>
<layout:listOfCurveSegments>
<layout:curveSegment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="LineSegment">
<layout:start layout:x="542.25" layout:y="166"/>
<layout:end layout:x="542.25" layout:y="166"/>
</layout:curveSegment>
</layout:listOfCurveSegments>
</layout:curve>
<layout:listOfSpeciesReferenceGlyphs>
<layout:speciesReferenceGlyph layout:id="srg_BL__entityVertex_10008824_1129452_substrate_2" layout:speciesGlyph="sg_BL__entityVertex_10008824_1129452" layout:role="substrate">
<layout:curve>
<layout:listOfCurveSegments>
<layout:curveSegment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="LineSegment">
<layout:start layout:x="542.25" layout:y="166"/>
<layout:end layout:x="555" layout:y="109"/>
</layout:curveSegment>
</layout:listOfCurveSegments>
</layout:curve>
</layout:speciesReferenceGlyph>
<layout:speciesReferenceGlyph layout:id="srg_AL__entityVertex_10008823_1129455_product_1" layout:speciesGlyph="sg_AL__entityVertex_10008823_1129455" layout:role="product">
<layout:curve>
<layout:listOfCurveSegments>
<layout:curveSegment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="LineSegment">
<layout:start layout:x="542.25" layout:y="166"/>
<layout:end layout:x="529.5" layout:y="223"/>
</layout:curveSegment>
</layout:listOfCurveSegments>
</layout:curve>
</layout:speciesReferenceGlyph>
</layout:listOfSpeciesReferenceGlyphs>
</layout:reactionGlyph>
<layout:reactionGlyph layout:id="rg_React11" layout:reaction="reaction_glyph_11">
<layout:curve>
<layout:listOfCurveSegments>
<layout:curveSegment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="LineSegment">
<layout:start layout:x="239.432760334595" layout:y="124.556892313787"/>
<layout:end layout:x="239.432760334595" layout:y="124.556892313787"/>
</layout:curveSegment>
</layout:listOfCurveSegments>
</layout:curve>
<layout:listOfSpeciesReferenceGlyphs>
<layout:speciesReferenceGlyph layout:id="srg_ALL__entityVertex_9999112_1129444_substrate_1" layout:speciesGlyph="sg_ALL__entityVertex_9999112_1129444" layout:role="substrate">
<layout:curve>
<layout:listOfCurveSegments>
<layout:curveSegment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="LineSegment">
<layout:start layout:x="239.432760334595" layout:y="124.556892313787"/>
<layout:end layout:x="160.5" layout:y="136"/>
</layout:curveSegment>
</layout:listOfCurveSegments>
</layout:curve>
</layout:speciesReferenceGlyph>
<layout:speciesReferenceGlyph layout:id="srg_ILL__React11__React16_product_1" layout:speciesGlyph="sg_ILL__React11__React16" layout:role="product">
<layout:curve>
<layout:listOfCurveSegments>
<layout:curveSegment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="LineSegment">
<layout:start layout:x="239.432760334595" layout:y="124.556892313787"/>
<layout:end layout:x="318.365520669189" layout:y="113.113784627574"/>
</layout:curveSegment>
</layout:listOfCurveSegments>
</layout:curve>
</layout:speciesReferenceGlyph>
</layout:listOfSpeciesReferenceGlyphs>
</layout:reactionGlyph>
<layout:reactionGlyph layout:id="rg_React4" layout:reaction="reaction_glyph_3">
<layout:curve>
<layout:listOfCurveSegments>
<layout:curveSegment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="LineSegment">
<layout:start layout:x="345" layout:y="179.5"/>
<layout:end layout:x="345" layout:y="179.5"/>
</layout:curveSegment>
</layout:listOfCurveSegments>
</layout:curve>
<layout:listOfSpeciesReferenceGlyphs>
<layout:speciesReferenceGlyph layout:id="srg_ALL__entityVertex_9999112_1129444_product_2" layout:speciesGlyph="sg_ALL__entityVertex_9999112_1129444" layout:role="product">
<layout:curve>
<layout:listOfCurveSegments>
<layout:curveSegment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="LineSegment">
<layout:start layout:x="345" layout:y="179.5"/>
<layout:end layout:x="160.5" layout:y="136"/>
</layout:curveSegment>
</layout:listOfCurveSegments>
</layout:curve>
</layout:speciesReferenceGlyph>
<layout:speciesReferenceGlyph layout:id="srg_AL__entityVertex_10008823_1129455_substrate_1" layout:speciesGlyph="sg_AL__entityVertex_10008823_1129455" layout:role="substrate">
<layout:curve>
<layout:listOfCurveSegments>
<layout:curveSegment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="LineSegment">
<layout:start layout:x="345" layout:y="179.5"/>
<layout:end layout:x="529.5" layout:y="223"/>
</layout:curveSegment>
</layout:listOfCurveSegments>
</layout:curve>
</layout:speciesReferenceGlyph>
</layout:listOfSpeciesReferenceGlyphs>
</layout:reactionGlyph>
<layout:reactionGlyph layout:id="rg_React10" layout:reaction="reaction_glyph_10">
<layout:curve>
<layout:listOfCurveSegments>
<layout:curveSegment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="LineSegment">
<layout:start layout:x="377.239206103396" layout:y="145.647389215088"/>
<layout:end layout:x="377.239206103396" layout:y="145.647389215088"/>
</layout:curveSegment>
</layout:listOfCurveSegments>
</layout:curve>
<layout:listOfSpeciesReferenceGlyphs>
<layout:speciesReferenceGlyph layout:id="srg_IL__React10__React15_product_1" layout:speciesGlyph="sg_IL__React10__React15" layout:role="product">
<layout:curve>
<layout:listOfCurveSegments>
<layout:curveSegment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="LineSegment">
<layout:start layout:x="377.239206103396" layout:y="145.647389215088"/>
<layout:end layout:x="377.239206103396" layout:y="145.647389215088"/>
</layout:curveSegment>
</layout:listOfCurveSegments>
</layout:curve>
</layout:speciesReferenceGlyph>
<layout:speciesReferenceGlyph layout:id="srg_AL__React10__React3_substrate_1" layout:speciesGlyph="sg_AL__React10__React3" layout:role="substrate">
<layout:curve>
<layout:listOfCurveSegments>
<layout:curveSegment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="LineSegment">
<layout:start layout:x="377.239206103396" layout:y="145.647389215088"/>
<layout:end layout:x="377.239206103396" layout:y="145.647389215088"/>
</layout:curveSegment>
</layout:listOfCurveSegments>
</layout:curve>
</layout:speciesReferenceGlyph>
</layout:listOfSpeciesReferenceGlyphs>
</layout:reactionGlyph>
<layout:reactionGlyph layout:id="rg_React0" layout:reaction="reaction_glyph_5">
<layout:curve>
<layout:listOfCurveSegments>
<layout:curveSegment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="LineSegment">
<layout:start layout:x="377.239206103396" layout:y="113.427939175209"/>
<layout:end layout:x="377.239206103396" layout:y="113.427939175209"/>
</layout:curveSegment>
</layout:listOfCurveSegments>
</layout:curve>
<layout:listOfSpeciesReferenceGlyphs>
<layout:speciesReferenceGlyph layout:id="srg_B__React0__React5_substrate_1" layout:speciesGlyph="sg_B__React0__React5" layout:role="substrate">
<layout:curve>
<layout:listOfCurveSegments>
<layout:curveSegment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="LineSegment">
<layout:start layout:x="377.239206103396" layout:y="113.427939175209"/>
<layout:end layout:x="377.239206103396" layout:y="145.647389215088"/>