Commit 5d5470c9 authored by Piotr Gawron's avatar Piotr Gawron
Browse files

Merge branch '1063-import-sbgn-file' into 'devel_14.0.x'

problematic consumption and reversed reaction are parsed now

See merge request !1070
parents dcf2b8ee 8570b8df
Pipeline #21447 passed with stage
in 17 minutes and 22 seconds
......@@ -14,6 +14,10 @@ minerva (14.0.9) stable; urgency=medium
* Bug fix: exporting map with glyphs crashed (#1130)
* Bug fix: transcription factor on black&white gene are drawn in black
(#1132)
* Bug fix: when SBGN file contained consumption starting in process minerva
crashed (#1063)
* Bug fix: when SBGN file contained reaction where every node started in the
same process port minerva crashed crashed (#1063)
-- Piotr Gawron <piotr.gawron@uni.lu> Mon, 3 Feb 2020 15:00:00 +0200
......
......@@ -395,7 +395,15 @@ public class SbgnmlXmlParser {
private void parseArc(Arc a, Model model) throws InvalidInputDataExecption {
switch (ArcClazz.fromClazz(a.getClazz())) {
case CONSUMPTION:
Port arcTargetPort = (Port) a.getTarget();
Port arcTargetPort;
if (a.getTarget() instanceof Port) {
arcTargetPort = (Port) a.getTarget();
} else if (a.getSource() instanceof Port) {
logger.warn("[" + a.getId() + "]\tConsumption is going from process");
arcTargetPort = (Port) a.getSource();
} else {
throw new InvalidInputDataExecption("[" + a.getId() + "]\tConsumption must be connected to a Port");
}
for (Process p : processes) {
if (p.getCentralPoint().getPort().contains(arcTargetPort)) {
p.addReagentArc(a);
......@@ -1209,26 +1217,37 @@ public class SbgnmlXmlParser {
}
p.setProductsPort((Port) p.getProductArcs().get(0).getSource());
for (Arc productArc : p.getProductArcs()) {
if (!((Port) productArc.getSource()).equals(p.getProductsPort())) {
p.setReversible(true);
p.setReagentsPort((Port) productArc.getSource());
}
if (p.getProductArcs().size() >= 2 && p.getReagentArcs().size() == 0) {
p.setReversible(true);
}
if (p.getReagentsPort() == null && !p.getReagentArcs().isEmpty()) {
p.setReagentsPort((Port) p.getReagentArcs().get(0).getTarget());
Set<Port> ports = new HashSet<>();
for (Arc a : p.getProductArcs()) {
ports.add(getTargetPort(a));
}
for (Arc a : p.getReagentArcs()) {
ports.add(getSourcePort(a));
}
if (ports.size() < 2) {
logger.warn("There is only one port used in process: " + p.getProductsPort().getId());
}
if ((p.getReagentArcs().isEmpty() && !p.isReversible()) || (p.getRevReagentArcs().isEmpty() && p.isReversible())) {
throw new InvalidArgumentException(
p.getCentralPoint().getId() + ": The process must have at least one incoming arc.");
if (p.getReagentsPort() == null && !p.getReagentArcs().isEmpty()) {
Port port;
if (p.getReagentArcs().get(0).getTarget() instanceof Port) {
port = (Port) p.getReagentArcs().get(0).getTarget();
} else if (p.getReagentArcs().get(0).getSource() instanceof Port) {
port = (Port) p.getReagentArcs().get(0).getSource();
} else {
throw new InvalidArgumentException("Cannot find proces for arc: " + p.getReagentArcs().get(0).getId());
}
p.setReagentsPort(port);
}
Reaction reaction;
if (p.getCentralPoint() == null) {
throw new InvalidArgumentException("Process has no central point.");
}
reaction = getReactionFromProcessGlyphClazz(p.getCentralPoint().getClazz());
Reaction reaction = getReactionFromProcessGlyphClazz(p.getCentralPoint().getClazz());
reaction.setIdReaction(p.getCentralPoint().getId());
reaction.setModel(model);
......@@ -1243,8 +1262,7 @@ public class SbgnmlXmlParser {
// If there are multiple outputs, add Split operator
SplitOperator splitOperator = null;
if ((p.getProductArcs().size() > 1 && !p.isReversible())
|| (p.isReversible() && p.getRevProductArcs().size() > 1)) {
if ((p.getProductArcs().size() > 1 && !p.isReversible()) || (p.getProductArcs().size() > 2)) {
splitOperator = getReactionPortSplitOperator(p);
reaction.addNode(splitOperator);
}
......@@ -1252,7 +1270,7 @@ public class SbgnmlXmlParser {
for (Arc a : p.getReagentArcs()) {
Reactant reactant = new Reactant();
reactant.setReaction(reaction);
Glyph source = (Glyph) a.getSource();
Glyph source = getSourceGlyph(a);
reactant.setElement(model.getElementByElementId(source.getId()));
List<Point2D> pointList = getLinePoints(a);
PolylineData line = parseLine(a, pointList);
......@@ -1265,7 +1283,7 @@ public class SbgnmlXmlParser {
}
for (Arc a : p.getProductArcs()) {
if (((Port) a.getSource()).equals(p.getProductsPort())) {
if (getSourcePort(a).equals(p.getProductsPort()) && ports.size() == 2 || reaction.getProducts().size() == 0) {
Product product = new Product();
product.setReaction(reaction);
Glyph target = (Glyph) a.getTarget();
......@@ -1290,7 +1308,6 @@ public class SbgnmlXmlParser {
if (andOperator != null) {
andOperator.addInput(reactant);
}
reaction.addReactant(reactant);
}
}
......@@ -1347,6 +1364,36 @@ public class SbgnmlXmlParser {
model.addReaction(reaction);
}
private Port getTargetPort(Arc a) {
if (a.getTarget() instanceof Port) {
return (Port) a.getTarget();
} else if (a.getSource() instanceof Port) {
return (Port) a.getSource();
} else {
throw new InvalidArgumentException("Arc is not connected to glyph: " + a.getId());
}
}
private Port getSourcePort(Arc a) {
if (a.getSource() instanceof Port) {
return (Port) a.getSource();
} else if (a.getTarget() instanceof Port) {
return (Port) a.getTarget();
} else {
throw new InvalidArgumentException("Arc is not connected to glyph: " + a.getId());
}
}
private Glyph getSourceGlyph(Arc a) {
if (a.getSource() instanceof Glyph) {
return (Glyph) a.getSource();
} else if (a.getTarget() instanceof Glyph) {
return (Glyph) a.getTarget();
} else {
throw new InvalidArgumentException("Arc is not connected to glyph: " + a.getId());
}
}
/**
* Returns {@link ArrowTypeData} based on given {@link ArcClazz}.
*
......
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<sbgn xmlns="http://sbgn.org/libsbgn/0.2">
<map language="process description">
<extension>
<renderInformation
xmlns="http://www.sbml.org/sbml/level3/version1/render/version1" id="renderInformation" program-name="sbgnviz" program-version="5.0.0" background-color="#00000000">
<listOfColorDefinitions>
<colorDefinition id="color_1" value="#ffffffff"/>
<colorDefinition id="color_2" value="#838383"/>
<colorDefinition id="color_3" value="#555555"/>
<colorDefinition id="color_4" value="#ffffff"/>
<colorDefinition id="color_5" value="#000000"/>
</listOfColorDefinitions>
<listOfBackgroundImages>
<backgroundImage id="image_1" value="http://newteditor.org/color-scheme-images/rb3_3d.png"/>
<backgroundImage id="image_2" value="http://newteditor.org/color-scheme-images/pg5_3d.png"/>
<backgroundImage id="image_3" value="http://newteditor.org/color-scheme-images/bw1_3d.png"/>
</listOfBackgroundImages>
<listOfStyles>
<style id="nodeffffff18383833.2514normalnormalHelvetica000image_1none5050100100" id-list="nwtN_3ab42db3-7946-4642-a215-98b2f74f5061 nwtN_31dec67c-8c37-40ec-bfad-d038cf1dc815">
<g font-size="14" font-family="Helvetica" font-weight="normal" font-style="normal" font-color="#000" stroke="color_2" stroke-width="3.25" fill="color_1" background-image="image_1" background-fit="none" background-pos-x="50%" background-pos-y="50%" background-width="100%" background-height="100%"/>
</style>
<style id="nodeffffff15555551.2518normalnormalHelvetica000image_2none5050100100" id-list="2f567801-fc2c-e128-f352-1dfab2f0dbce 35a3e0be-6e00-7a99-fca5-18ed65c2fac1">
<g font-size="18" font-family="Helvetica" font-weight="normal" font-style="normal" font-color="#000" stroke="color_3" stroke-width="1.25" fill="color_1" background-image="image_2" background-fit="none" background-pos-x="50%" background-pos-y="50%" background-width="100%" background-height="100%"/>
</style>
<style id="infoboxffffff5555552.259normalnormalArial0f0f0fstadium" id-list="2f567801-fc2c-e128-f352-1dfab2f0dbce_0 35a3e0be-6e00-7a99-fca5-18ed65c2fac1_0">
<g font-size="9" font-family="Arial" font-weight="normal" font-style="normal" font-color="#0f0f0f" stroke="color_3" stroke-width="2.25" fill="color_4" shape-name="stadium"/>
</style>
<style id="nodeffffff15555551.25image_3none5050100100" id-list="d6a6f52d-8036-ba76-8a3e-dfa5dcd6d57e 6507b78f-2da9-659a-4d3f-d78d84be17ed">
<g stroke="color_3" stroke-width="1.25" fill="color_1" background-image="image_3" background-fit="none" background-pos-x="50%" background-pos-y="50%" background-width="100%" background-height="100%"/>
</style>
<style id="nodeffffff10000001.25image_3none5050100100" id-list="nwtN_af68cdcd-f3e3-4438-9be7-e8feb28bb2e8">
<g stroke="color_5" stroke-width="1.25" fill="color_1" background-image="image_3" background-fit="none" background-pos-x="50%" background-pos-y="50%" background-width="100%" background-height="100%"/>
</style>
<style id="nodeffffff15555551.2511normalnormalHelvetica000image_1none5050100100" id-list="e342a729-472c-3bbf-78da-d20caa7b1c03 0088e5e3-506d-b360-cc23-6ca191128211">
<g font-size="11" font-family="Helvetica" font-weight="normal" font-style="normal" font-color="#000" stroke="color_3" stroke-width="1.25" fill="color_1" background-image="image_1" background-fit="none" background-pos-x="50%" background-pos-y="50%" background-width="100%" background-height="100%"/>
</style>
<style id="edge5555551.25" id-list="01a1302c-8279-8a9d-3025-b640251301f6 cc9b0b19-5606-60a6-4325-45883e217e2f b88e5a04-bd6f-2617-8c80-8bb7aeaf724b f5c88b0d-d0f6-110a-6964-35337c5b66a9 nwtE_6b731a56-0e87-49ea-8425-136bf3b6b18f nwtE_00484b84-815f-4ecb-b309-b3fe9c02b2b1">
<g stroke="color_3" stroke-width="1.25"/>
</style>
</listOfStyles>
</renderInformation>
<mapProperties>
<compoundPadding>20</compoundPadding>
<extraCompartmentPadding>14</extraCompartmentPadding>
<extraComplexPadding>10</extraComplexPadding>
<arrowScale>1.25</arrowScale>
<showComplexName>true</showComplexName>
<dynamicLabelSize>regular</dynamicLabelSize>
<inferNestingOnLoad>false</inferNestingOnLoad>
<fitLabelsToNodes>false</fitLabelsToNodes>
<fitLabelsToInfoboxes>false</fitLabelsToInfoboxes>
<recalculateLayoutOnComplexityManagement>true</recalculateLayoutOnComplexityManagement>
<rearrangeOnComplexityManagement>true</rearrangeOnComplexityManagement>
<animateOnDrawingChanges>true</animateOnDrawingChanges>
<adjustNodeLabelFontSizeAutomatically>false</adjustNodeLabelFontSizeAutomatically>
<enablePorts>false</enablePorts>
<enableSIFTopologyGrouping>false</enableSIFTopologyGrouping>
<allowCompoundNodeResize>false</allowCompoundNodeResize>
<mapColorScheme>opposed_purple_green</mapColorScheme>
<mapColorSchemeStyle>3D</mapColorSchemeStyle>
<mapName>PD map of the Drosophila cell cycle</mapName>
<mapDescription>doi:10.1371/journal.pcbi.1005740</mapDescription>
<defaultInfoboxHeight>12</defaultInfoboxHeight>
<defaultInfoboxWidth>8</defaultInfoboxWidth>
<rearrangeAfterExpandCollapse>true</rearrangeAfterExpandCollapse>
</mapProperties>
</extension>
<glyph id="nwtN_3ab42db3-7946-4642-a215-98b2f74f5061" class="compartment">
<label text="Cytoplasm"/>
<bbox x="456.79999999999995" y="491.17499999999995" w="210.40000000000003" h="166.7"/>
</glyph>
<glyph id="nwtN_31dec67c-8c37-40ec-bfad-d038cf1dc815" class="compartment" compartmentRef="nwtN_3ab42db3-7946-4642-a215-98b2f74f5061">
<label text="Nucleus"/>
<bbox x="478.625" y="513" w="166.75" h="44.875"/>
</glyph>
<glyph id="35a3e0be-6e00-7a99-fca5-18ed65c2fac1" class="macromolecule" compartmentRef="nwtN_31dec67c-8c37-40ec-bfad-d038cf1dc815">
<label text="String"/>
<bbox x="573.75" y="521.25" w="70" h="35"/>
<glyph id="35a3e0be-6e00-7a99-fca5-18ed65c2fac1_0" class="state variable">
<state value="p"/>
<bbox x="609.85" y="515.25" w="16" h="12"/>
</glyph>
</glyph>
<glyph id="0088e5e3-506d-b360-cc23-6ca191128211" class="source and sink" compartmentRef="nwtN_31dec67c-8c37-40ec-bfad-d038cf1dc815">
<bbox x="480.25" y="526.25" w="25" h="25"/>
</glyph>
<glyph id="d6a6f52d-8036-ba76-8a3e-dfa5dcd6d57e" class="process" compartmentRef="nwtN_31dec67c-8c37-40ec-bfad-d038cf1dc815">
<bbox x="535.6056851311953" y="535.1056851311953" w="7.288629737609365" h="7.288629737609365"/>
<port id="d6a6f52d-8036-ba76-8a3e-dfa5dcd6d57e.1" x="534.1479591836735" y="538.75"/>
<port id="d6a6f52d-8036-ba76-8a3e-dfa5dcd6d57e.2" x="544.3520408163265" y="538.75"/>
</glyph>
<glyph id="2f567801-fc2c-e128-f352-1dfab2f0dbce" class="macromolecule" compartmentRef="nwtN_3ab42db3-7946-4642-a215-98b2f74f5061">
<label text="String"/>
<bbox x="573.75" y="621.25" w="70" h="35"/>
<glyph id="2f567801-fc2c-e128-f352-1dfab2f0dbce_0" class="state variable">
<state value="p"/>
<bbox x="609.85" y="615.25" w="16" h="12"/>
</glyph>
</glyph>
<glyph id="e342a729-472c-3bbf-78da-d20caa7b1c03" class="source and sink" compartmentRef="nwtN_3ab42db3-7946-4642-a215-98b2f74f5061">
<bbox x="482.375" y="626.25" w="25" h="25"/>
</glyph>
<glyph id="6507b78f-2da9-659a-4d3f-d78d84be17ed" class="process" compartmentRef="nwtN_3ab42db3-7946-4642-a215-98b2f74f5061">
<bbox x="537.7306851311953" y="635.1056851311953" w="7.288629737609365" h="7.288629737609365"/>
<port id="6507b78f-2da9-659a-4d3f-d78d84be17ed.1" x="536.2729591836735" y="638.75"/>
<port id="6507b78f-2da9-659a-4d3f-d78d84be17ed.2" x="546.4770408163265" y="638.75"/>
</glyph>
<glyph id="nwtN_af68cdcd-f3e3-4438-9be7-e8feb28bb2e8" class="process" compartmentRef="nwtN_3ab42db3-7946-4642-a215-98b2f74f5061">
<bbox x="605.1056851311953" y="591.1056851311953" w="7.288629737609365" h="7.288629737609365"/>
<port id="nwtN_af68cdcd-f3e3-4438-9be7-e8feb28bb2e8.1" x="603.6479591836735" y="594.75"/>
<port id="nwtN_af68cdcd-f3e3-4438-9be7-e8feb28bb2e8.2" x="613.8520408163265" y="594.75"/>
</glyph>
<arc id="01a1302c-8279-8a9d-3025-b640251301f6" class="consumption" source="35a3e0be-6e00-7a99-fca5-18ed65c2fac1" target="d6a6f52d-8036-ba76-8a3e-dfa5dcd6d57e.1">
<start x="573.125" y="538.75"/>
<end x="544.9770408163265" y="538.75"/>
</arc>
<arc id="cc9b0b19-5606-60a6-4325-45883e217e2f" class="production" source="d6a6f52d-8036-ba76-8a3e-dfa5dcd6d57e.2" target="0088e5e3-506d-b360-cc23-6ca191128211">
<start x="533.5229591836735" y="538.75"/>
<end x="509" y="538.75"/>
</arc>
<arc id="b88e5a04-bd6f-2617-8c80-8bb7aeaf724b" class="production" source="6507b78f-2da9-659a-4d3f-d78d84be17ed.2" target="e342a729-472c-3bbf-78da-d20caa7b1c03">
<start x="535.6479591836735" y="638.75"/>
<end x="511.125" y="638.75"/>
</arc>
<arc id="f5c88b0d-d0f6-110a-6964-35337c5b66a9" class="consumption" source="2f567801-fc2c-e128-f352-1dfab2f0dbce" target="6507b78f-2da9-659a-4d3f-d78d84be17ed.1">
<start x="573.125" y="638.75"/>
<end x="547.1020408163265" y="638.75"/>
</arc>
<arc id="nwtE_6b731a56-0e87-49ea-8425-136bf3b6b18f" class="production" source="nwtN_af68cdcd-f3e3-4438-9be7-e8feb28bb2e8.2" target="35a3e0be-6e00-7a99-fca5-18ed65c2fac1">
<start x="608.75" y="589.0229591836735"/>
<end x="608.75" y="560"/>
</arc>
<arc id="nwtE_00484b84-815f-4ecb-b309-b3fe9c02b2b1" class="production" source="nwtN_af68cdcd-f3e3-4438-9be7-e8feb28bb2e8.2" target="2f567801-fc2c-e128-f352-1dfab2f0dbce">
<start x="608.75" y="600.4770408163265"/>
<end x="608.75" y="617.5"/>
</arc>
</map>
</sbgn>
\ No newline at end of file
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<sbgn xmlns="http://sbgn.org/libsbgn/0.2">
<map language="process description">
<extension>
<renderInformation
xmlns="http://www.sbml.org/sbml/level3/version1/render/version1" id="renderInformation" program-name="sbgnviz" program-version="5.0.0" background-color="#00000000">
<listOfColorDefinitions>
<colorDefinition id="color_1" value="#ffffff7f"/>
<colorDefinition id="color_2" value="#838383"/>
<colorDefinition id="color_3" value="#555555"/>
<colorDefinition id="color_4" value="#ffffff"/>
<colorDefinition id="color_5" value="#ffffffff"/>
</listOfColorDefinitions>
<listOfBackgroundImages>
<backgroundImage id="image_1" value="http://newteditor.org/color-scheme-images/rb3_3d.png"/>
<backgroundImage id="image_2" value="http://newteditor.org/color-scheme-images/pg4_3d.png"/>
<backgroundImage id="image_3" value="http://newteditor.org/color-scheme-images/bw1_3d.png"/>
</listOfBackgroundImages>
<listOfStyles>
<style id="nodeffffff0.58383833.2514normalnormalHelvetica000image_1none5050100100" id-list="nwtN_3ab42db3-7946-4642-a215-98b2f74f5061">
<g font-size="14" font-family="Helvetica" font-weight="normal" font-style="normal" font-color="#000" stroke="color_2" stroke-width="3.25" fill="color_1" background-image="image_1" background-fit="none" background-pos-x="50%" background-pos-y="50%" background-width="100%" background-height="100%"/>
</style>
<style id="nodeffffff0.55555551.2511normalnormalHelvetica000image_2none5050100100" id-list="nwtN_a2561374-b8e8-424c-b1ab-d9939f94408b">
<g font-size="11" font-family="Helvetica" font-weight="normal" font-style="normal" font-color="#000" stroke="color_3" stroke-width="1.25" fill="color_1" background-image="image_2" background-fit="none" background-pos-x="50%" background-pos-y="50%" background-width="100%" background-height="100%"/>
</style>
<style id="infoboxffffff5555552.259normalnormalArial0f0f0fstadium" id-list="nwtN_a2561374-b8e8-424c-b1ab-d9939f94408b_0">
<g font-size="9" font-family="Arial" font-weight="normal" font-style="normal" font-color="#0f0f0f" stroke="color_3" stroke-width="2.25" fill="color_4" shape-name="stadium"/>
</style>
<style id="nodeffffff15555551.2511normalnormalHelvetica000image_1none5050100100" id-list="8aa9f4cb-fe26-03ac-1ef5-62dca5582e83">
<g font-size="11" font-family="Helvetica" font-weight="normal" font-style="normal" font-color="#000" stroke="color_3" stroke-width="1.25" fill="color_5" background-image="image_1" background-fit="none" background-pos-x="50%" background-pos-y="50%" background-width="100%" background-height="100%"/>
</style>
<style id="nodeffffff15555551.25image_3none5050100100" id-list="a6478aa6-4c6e-15e2-60dc-1b6d2acaf9a6">
<g stroke="color_3" stroke-width="1.25" fill="color_5" background-image="image_3" background-fit="none" background-pos-x="50%" background-pos-y="50%" background-width="100%" background-height="100%"/>
</style>
<style id="edge5555551.25" id-list="nwtE_9a58509d-82ab-4ba0-9299-e0e6f5c66d1c nwtE_2ed03d75-60e5-426d-8b51-58a9b654d6b5">
<g stroke="color_3" stroke-width="1.25"/>
</style>
</listOfStyles>
</renderInformation>
<mapProperties>
<compoundPadding>20</compoundPadding>
<extraCompartmentPadding>14</extraCompartmentPadding>
<extraComplexPadding>10</extraComplexPadding>
<arrowScale>1.25</arrowScale>
<showComplexName>true</showComplexName>
<dynamicLabelSize>regular</dynamicLabelSize>
<inferNestingOnLoad>false</inferNestingOnLoad>
<fitLabelsToNodes>false</fitLabelsToNodes>
<fitLabelsToInfoboxes>false</fitLabelsToInfoboxes>
<recalculateLayoutOnComplexityManagement>true</recalculateLayoutOnComplexityManagement>
<rearrangeOnComplexityManagement>true</rearrangeOnComplexityManagement>
<animateOnDrawingChanges>true</animateOnDrawingChanges>
<adjustNodeLabelFontSizeAutomatically>false</adjustNodeLabelFontSizeAutomatically>
<enablePorts>false</enablePorts>
<enableSIFTopologyGrouping>false</enableSIFTopologyGrouping>
<allowCompoundNodeResize>false</allowCompoundNodeResize>
<mapColorScheme>opposed_purple_green</mapColorScheme>
<mapColorSchemeStyle>3D</mapColorSchemeStyle>
<mapName>PD map of the Drosophila cell cycle</mapName>
<mapDescription>doi:10.1371/journal.pcbi.1005740</mapDescription>
<defaultInfoboxHeight>12</defaultInfoboxHeight>
<defaultInfoboxWidth>8</defaultInfoboxWidth>
<rearrangeAfterExpandCollapse>true</rearrangeAfterExpandCollapse>
</mapProperties>
</extension>
<glyph id="nwtN_3ab42db3-7946-4642-a215-98b2f74f5061" class="compartment">
<label text="Cytoplasm"/>
<bbox x="364.875" y="3.875" w="188.875" h="96.75"/>
</glyph>
<glyph id="nwtN_a2561374-b8e8-424c-b1ab-d9939f94408b" class="complex" compartmentRef="nwtN_3ab42db3-7946-4642-a215-98b2f74f5061">
<label text="preMPF"/>
<bbox x="477.875" y="12.125" w="74.25" h="86.875"/>
<glyph id="nwtN_a2561374-b8e8-424c-b1ab-d9939f94408b_0" class="state variable">
<state value="inactive"/>
<bbox x="514.5925" y="6.125" w="32" h="12"/>
</glyph>
</glyph>
<glyph id="8aa9f4cb-fe26-03ac-1ef5-62dca5582e83" class="source and sink" compartmentRef="nwtN_3ab42db3-7946-4642-a215-98b2f74f5061">
<bbox x="366.5" y="67.25" w="25" h="25"/>
</glyph>
<glyph id="a6478aa6-4c6e-15e2-60dc-1b6d2acaf9a6" class="process" compartmentRef="nwtN_3ab42db3-7946-4642-a215-98b2f74f5061">
<bbox x="419.8979591836735" y="74.64795918367346" w="10.204081632653063" h="10.204081632653063"/>
<port id="a6478aa6-4c6e-15e2-60dc-1b6d2acaf9a6.1" x="417.85714285714283" y="79.75"/>
<port id="a6478aa6-4c6e-15e2-60dc-1b6d2acaf9a6.2" x="432.14285714285717" y="79.75"/>
</glyph>
<arc id="nwtE_9a58509d-82ab-4ba0-9299-e0e6f5c66d1c" class="production" source="a6478aa6-4c6e-15e2-60dc-1b6d2acaf9a6.2" target="8aa9f4cb-fe26-03ac-1ef5-62dca5582e83">
<start x="417.23214285714283" y="79.75"/>
<end x="395.25" y="79.75"/>
</arc>
<arc id="nwtE_2ed03d75-60e5-426d-8b51-58a9b654d6b5" class="production" source="a6478aa6-4c6e-15e2-60dc-1b6d2acaf9a6.2" target="nwtN_a2561374-b8e8-424c-b1ab-d9939f94408b">
<start x="432.76785714285717" y="77.66238839285714"/>
<end x="474.232086826986" y="66.51887666524752"/>
</arc>
</map>
</sbgn>
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment