From 45d4c5bdb514ad8f8d00dfbfa5d9cc5f01ffee0d Mon Sep 17 00:00:00 2001 From: Tom Gebhardt Date: Tue, 23 Nov 2021 16:12:26 +0100 Subject: [PATCH 1/5] added handler for phenotypes * sourc to target --- .../ds/graph/GraphTranslatorSbgnJson.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/main/java/de/unirostock/sems/bives/ds/graph/GraphTranslatorSbgnJson.java b/src/main/java/de/unirostock/sems/bives/ds/graph/GraphTranslatorSbgnJson.java index 57fb391..0e42ada 100644 --- a/src/main/java/de/unirostock/sems/bives/ds/graph/GraphTranslatorSbgnJson.java +++ b/src/main/java/de/unirostock/sems/bives/ds/graph/GraphTranslatorSbgnJson.java @@ -238,6 +238,35 @@ public String translate (ReactionNetwork rn) String rPath = getPath(r.getA(), r.getB(), r.getModification()); + //handle phenotypes + // no process node + // one or more modulation arcs + if (outputs.size() == 1) { + Collection outs = outputs; + ReactionNetworkSubstanceRef o = outs.iterator().next(); + + String sbo = ""; + if(o.getSubstance().getB() != null) { + if(o.getSubstance().getB().getAttributeValue("sboTerm") != null) + sbo = o.getSubstance().getB().getAttributeValue("sboTerm"); + } else if (o.getSubstance().getA() != null) { + if(o.getSubstance().getA().getAttributeValue("sboTerm") != null) + sbo = o.getSubstance().getA().getAttributeValue("sboTerm"); + } + + + if(sbo.equals("SBO:0000358")) { + for(ReactionNetworkSubstanceRef i : inputs) { + //allways nec. stim. + addEdge(i.getSubstance().getId(), o.getSubstance().getId(), "SBO:0000171", i.getModification(), i.getXPath()); + } + continue; + + } + + + } + //add process Node String processId = r.getId(); String compartmentId = null; From 08fa8638e21d56fefba61192eef9743ca2e64586 Mon Sep 17 00:00:00 2001 From: Tom Gebhardt Date: Thu, 2 Dec 2021 16:25:23 +0100 Subject: [PATCH 2/5] working on fix for comparments-ception --- .../sems/bives/ds/rn/ReactionNetworkCompartment.java | 4 ++-- .../sems/bives/ds/rn/ReactionNetworkEntity.java | 12 +++++++++++- .../sems/bives/ds/rn/ReactionNetworkReaction.java | 2 +- .../sems/bives/ds/rn/ReactionNetworkSubstance.java | 2 +- .../java/de/unirostock/sems/bives/TestGraphs.java | 4 ++-- 5 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/main/java/de/unirostock/sems/bives/ds/rn/ReactionNetworkCompartment.java b/src/main/java/de/unirostock/sems/bives/ds/rn/ReactionNetworkCompartment.java index 690d9e2..16fb4af 100644 --- a/src/main/java/de/unirostock/sems/bives/ds/rn/ReactionNetworkCompartment.java +++ b/src/main/java/de/unirostock/sems/bives/ds/rn/ReactionNetworkCompartment.java @@ -24,9 +24,9 @@ public class ReactionNetworkCompartment * @param docA the original document * @param docB the modified document */ - public ReactionNetworkCompartment (ReactionNetwork rn, String labelA, String labelB, DocumentNode docA, DocumentNode docB) + public ReactionNetworkCompartment (ReactionNetwork rn, String labelA, String labelB, DocumentNode docA, DocumentNode docB, ReactionNetworkCompartment outsideA, ReactionNetworkCompartment outsideB) { - super ("c" + rn.getNextCompartmentID (), labelA, labelB, docA, docB); + super ("c" + rn.getNextCompartmentID (), labelA, labelB, docA, docB, outsideA, outsideB); } } diff --git a/src/main/java/de/unirostock/sems/bives/ds/rn/ReactionNetworkEntity.java b/src/main/java/de/unirostock/sems/bives/ds/rn/ReactionNetworkEntity.java index 85ba10b..6c96cec 100644 --- a/src/main/java/de/unirostock/sems/bives/ds/rn/ReactionNetworkEntity.java +++ b/src/main/java/de/unirostock/sems/bives/ds/rn/ReactionNetworkEntity.java @@ -32,6 +32,12 @@ public abstract class ReactionNetworkEntity /** The single doc flag if in single-doc-operation-mode. */ protected boolean singleDoc; + /** Id of the containing compartment in original document **/ + protected ReactionNetworkCompartment outsideA; + + /** Id of the containing compartment in original document **/ + protected ReactionNetworkCompartment outsideB; + /** * Instantiates a new entity. * @@ -40,8 +46,10 @@ public abstract class ReactionNetworkEntity * @param labelB the label of that entity in the modified document * @param docA the original document * @param docB the modified document + * @param outsideB + * @param outsideA */ - public ReactionNetworkEntity (String entityId, String labelA, String labelB, DocumentNode docA, DocumentNode docB) + public ReactionNetworkEntity (String entityId, String labelA, String labelB, DocumentNode docA, DocumentNode docB, ReactionNetworkCompartment outsideA, ReactionNetworkCompartment outsideB) { this.id = entityId; this.labelA = labelA; @@ -49,6 +57,8 @@ public ReactionNetworkEntity (String entityId, String labelA, String labelB, Doc this.docA = docA; this.docB = docB; singleDoc = false; + this.outsideA = outsideA; + this.outsideB = outsideB; } /** diff --git a/src/main/java/de/unirostock/sems/bives/ds/rn/ReactionNetworkReaction.java b/src/main/java/de/unirostock/sems/bives/ds/rn/ReactionNetworkReaction.java index c83e3be..0937909 100644 --- a/src/main/java/de/unirostock/sems/bives/ds/rn/ReactionNetworkReaction.java +++ b/src/main/java/de/unirostock/sems/bives/ds/rn/ReactionNetworkReaction.java @@ -51,7 +51,7 @@ public class ReactionNetworkReaction */ public ReactionNetworkReaction (ReactionNetwork rn, String labelA, String labelB, DocumentNode docA, DocumentNode docB, ReactionNetworkCompartment compartmentA, ReactionNetworkCompartment compartmentB, boolean reversible) { - super ("r" + rn.getNextReactionID (), labelA, labelB, docA, docB); + super ("r" + rn.getNextReactionID (), labelA, labelB, docA, docB, compartmentA, compartmentB); in = new HashMap (); out = new HashMap (); mod = new Vector (); diff --git a/src/main/java/de/unirostock/sems/bives/ds/rn/ReactionNetworkSubstance.java b/src/main/java/de/unirostock/sems/bives/ds/rn/ReactionNetworkSubstance.java index 84a61a4..86bbcaf 100644 --- a/src/main/java/de/unirostock/sems/bives/ds/rn/ReactionNetworkSubstance.java +++ b/src/main/java/de/unirostock/sems/bives/ds/rn/ReactionNetworkSubstance.java @@ -30,7 +30,7 @@ public class ReactionNetworkSubstance */ public ReactionNetworkSubstance (ReactionNetwork rn, String labelA, String labelB, DocumentNode docA, DocumentNode docB, ReactionNetworkCompartment compartmentA, ReactionNetworkCompartment compartmentB) { - super ("s" + rn.getNextSubstanceID (), labelA, labelB, docA, docB); + super ("s" + rn.getNextSubstanceID (), labelA, labelB, docA, docB, compartmentA, compartmentB); this.compartmentA = compartmentA; this.compartmentB = compartmentB; singleDoc = false; diff --git a/src/test/java/de/unirostock/sems/bives/TestGraphs.java b/src/test/java/de/unirostock/sems/bives/TestGraphs.java index 9c4d5bc..197e864 100644 --- a/src/test/java/de/unirostock/sems/bives/TestGraphs.java +++ b/src/test/java/de/unirostock/sems/bives/TestGraphs.java @@ -75,9 +75,9 @@ public ReactionNetworkCompartment addCompartment (DocumentNode node, String labe { ReactionNetworkCompartment compartment = null; if (a) - compartment = new ReactionNetworkCompartment (crn, label, null, node, null); + compartment = new ReactionNetworkCompartment (crn, label, null, node, null, null, null); else - compartment = new ReactionNetworkCompartment (crn, null, label, null, node); + compartment = new ReactionNetworkCompartment (crn, null, label, null, node, null, null); crn.setCompartment (node, compartment); return compartment; From 2ab4bd3d9e2ce471c70cc2a8328593d451283c05 Mon Sep 17 00:00:00 2001 From: Tom Gebhardt Date: Fri, 3 Dec 2021 15:47:18 +0100 Subject: [PATCH 3/5] update for compartment-ception --- pom.xml | 2 +- .../ds/graph/GraphTranslatorSbgnJson.java | 2 +- .../ds/rn/ReactionNetworkCompartment.java | 2 ++ .../bives/ds/rn/ReactionNetworkEntity.java | 34 ++++++++++++++++--- 4 files changed, 33 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index d257285..ccfd60a 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ de.uni-rostock.sbi BiVeS-Core jar - 1.9.5 + 1.9.6 BiVeS-Core 1.6 diff --git a/src/main/java/de/unirostock/sems/bives/ds/graph/GraphTranslatorSbgnJson.java b/src/main/java/de/unirostock/sems/bives/ds/graph/GraphTranslatorSbgnJson.java index 0e42ada..45ed113 100644 --- a/src/main/java/de/unirostock/sems/bives/ds/graph/GraphTranslatorSbgnJson.java +++ b/src/main/java/de/unirostock/sems/bives/ds/graph/GraphTranslatorSbgnJson.java @@ -208,7 +208,7 @@ public String translate (ReactionNetwork rn) //add compartments for (ReactionNetworkCompartment c : rn.getCompartments ()){ String path = getPath(c.getA(), c.getB(), c.getModification()); - addCompartment(c.getId(), "null", c.getLabel(), c.getModification(), "SBO:0000290", path); + addCompartment(c.getId(), c.getOutsideCompartment(), c.getLabel(), c.getModification(), "SBO:0000290", path); } //add species diff --git a/src/main/java/de/unirostock/sems/bives/ds/rn/ReactionNetworkCompartment.java b/src/main/java/de/unirostock/sems/bives/ds/rn/ReactionNetworkCompartment.java index 16fb4af..6a5680d 100644 --- a/src/main/java/de/unirostock/sems/bives/ds/rn/ReactionNetworkCompartment.java +++ b/src/main/java/de/unirostock/sems/bives/ds/rn/ReactionNetworkCompartment.java @@ -23,6 +23,8 @@ public class ReactionNetworkCompartment * @param labelB the label of that compartment in the modified document * @param docA the original document * @param docB the modified document + * @param outisdeA the compartment id of the containing compartment in the original document + * @param outisdeB the compartment id of the containing compartment in the modified document */ public ReactionNetworkCompartment (ReactionNetwork rn, String labelA, String labelB, DocumentNode docA, DocumentNode docB, ReactionNetworkCompartment outsideA, ReactionNetworkCompartment outsideB) { diff --git a/src/main/java/de/unirostock/sems/bives/ds/rn/ReactionNetworkEntity.java b/src/main/java/de/unirostock/sems/bives/ds/rn/ReactionNetworkEntity.java index 6c96cec..52aec80 100644 --- a/src/main/java/de/unirostock/sems/bives/ds/rn/ReactionNetworkEntity.java +++ b/src/main/java/de/unirostock/sems/bives/ds/rn/ReactionNetworkEntity.java @@ -46,10 +46,10 @@ public abstract class ReactionNetworkEntity * @param labelB the label of that entity in the modified document * @param docA the original document * @param docB the modified document - * @param outsideB - * @param outsideA + * @param compartmentB + * @param compartmentA */ - public ReactionNetworkEntity (String entityId, String labelA, String labelB, DocumentNode docA, DocumentNode docB, ReactionNetworkCompartment outsideA, ReactionNetworkCompartment outsideB) + public ReactionNetworkEntity (String entityId, String labelA, String labelB, DocumentNode docA, DocumentNode docB, ReactionNetworkCompartment compartmentA, ReactionNetworkCompartment compartmentB) { this.id = entityId; this.labelA = labelA; @@ -57,8 +57,8 @@ public ReactionNetworkEntity (String entityId, String labelA, String labelB, Doc this.docA = docA; this.docB = docB; singleDoc = false; - this.outsideA = outsideA; - this.outsideB = outsideB; + this.outsideA = compartmentA; + this.outsideB = compartmentB; } /** @@ -101,6 +101,16 @@ public void setLabelB (String labelB) this.labelB = labelB; } + public void setOutsideA(ReactionNetworkCompartment compartmentA) { + this.outsideA = compartmentA; + + } + + public void setOutsideB(ReactionNetworkCompartment compartmentB) { + this.outsideB = compartmentB; + } + + /** * Gets the original document node. * @@ -167,6 +177,20 @@ public int getModification () return MODIFIED; return UNMODIFIED; } + + public String getOutsideCompartment() { + if(outsideA == outsideB) { + if(outsideA == null) return null; + return outsideB.getId(); + } + if(outsideA != null && outsideB != null) + return outsideB.getId(); + if(outsideA == null && outsideB != null) + return outsideB.getId(); + if(outsideA != null) + return outsideA.getId(); + return null; + } /** * Sets the single document flag. From 562ebfbc6187633d0c2bb3a76754659306218068 Mon Sep 17 00:00:00 2001 From: Tom Gebhardt Date: Thu, 9 Dec 2021 15:51:09 +0100 Subject: [PATCH 4/5] update version due to missing pull req before martin uploaded it --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ccfd60a..f8883f6 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ de.uni-rostock.sbi BiVeS-Core jar - 1.9.6 + 1.9.7 BiVeS-Core 1.6 From b8c261659bddbb458dcccc284635a18705a5ecf7 Mon Sep 17 00:00:00 2001 From: tgeb Date: Tue, 5 Apr 2022 12:01:08 +0200 Subject: [PATCH 5/5] bug fix sbo term of reactants and products were only added for --- ....eclipse.wst.common.project.facet.core.xml | 1 + pom.xml | 2 +- .../bives/ds/rn/ReactionNetworkReaction.java | 10 ++- .../de/unirostock/sems/bives/TestGraphs.java | 62 ++++++++++++++++--- 4 files changed, 62 insertions(+), 13 deletions(-) diff --git a/.settings/org.eclipse.wst.common.project.facet.core.xml b/.settings/org.eclipse.wst.common.project.facet.core.xml index 1b22d70..f4acf42 100644 --- a/.settings/org.eclipse.wst.common.project.facet.core.xml +++ b/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -1,5 +1,6 @@ + diff --git a/pom.xml b/pom.xml index f8883f6..dcd3ec2 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ de.uni-rostock.sbi BiVeS-Core jar - 1.9.7 + 1.9.8 BiVeS-Core 1.6 diff --git a/src/main/java/de/unirostock/sems/bives/ds/rn/ReactionNetworkReaction.java b/src/main/java/de/unirostock/sems/bives/ds/rn/ReactionNetworkReaction.java index 0937909..3bc61bb 100644 --- a/src/main/java/de/unirostock/sems/bives/ds/rn/ReactionNetworkReaction.java +++ b/src/main/java/de/unirostock/sems/bives/ds/rn/ReactionNetworkReaction.java @@ -213,17 +213,19 @@ public void addModA (ReactionNetworkSubstance subst, SBOTerm sbo, String xPath) * * @param subst the substance * @param sbo the SBOTerm describing the interaction + * @throws BivesUnsupportedException when SBO terms don't match */ - public void addInputB (ReactionNetworkSubstance subst, SBOTerm sbo, String xPath) + public void addInputB (ReactionNetworkSubstance subst, SBOTerm sbo, String xPath) throws BivesUnsupportedException { ReactionNetworkSubstanceRef r = in.get (subst); if (r == null) try{ - in.put (subst, new ReactionNetworkSubstanceRef (subst, false, true, null, sbo, xPath)); //checken + in.put (subst, new ReactionNetworkSubstanceRef (subst, false, true, null, sbo, xPath)); }catch (BivesUnsupportedException e){} else { r.setFlagB (true); + r.setSboB(sbo); } } @@ -232,8 +234,9 @@ public void addInputB (ReactionNetworkSubstance subst, SBOTerm sbo, String xPath * * @param subst the substance * @param sbo the SBOTerm describing the interaction + * @throws BivesUnsupportedException when sbo terms don't match */ - public void addOutputB (ReactionNetworkSubstance subst, SBOTerm sbo, String xPath) + public void addOutputB (ReactionNetworkSubstance subst, SBOTerm sbo, String xPath) throws BivesUnsupportedException { ReactionNetworkSubstanceRef r = out.get (subst); if (r == null) @@ -243,6 +246,7 @@ public void addOutputB (ReactionNetworkSubstance subst, SBOTerm sbo, String xPat else { r.setFlagB (true); + r.setSboB(sbo); } } diff --git a/src/test/java/de/unirostock/sems/bives/TestGraphs.java b/src/test/java/de/unirostock/sems/bives/TestGraphs.java index 197e864..54e7c9f 100644 --- a/src/test/java/de/unirostock/sems/bives/TestGraphs.java +++ b/src/test/java/de/unirostock/sems/bives/TestGraphs.java @@ -183,8 +183,16 @@ public void testCrn () reaction1.setCompartmentB (compartment1); reaction1.setLabelB ("reaction in A"); reaction1.setDocB (dummy); - reaction1.addInputB (substrate1, null, null); - reaction1.addOutputB (substrate1, null, null); + try { + reaction1.addInputB (substrate1, null, null); + reaction1.addOutputB (substrate1, null, null); + } + catch (BivesUnsupportedException e) + { + LOGGER.error (e, "this error wasn't expected!?"); + fail ("this error wasn't expected!?"); + } + assertEquals ("unexpected label in compartment", "compartment in A", compartment1.getLabel ()); assertEquals ("expected no modification", GraphEntity.UNMODIFIED, compartment1.getModification ()); @@ -209,8 +217,17 @@ public void testCrn () reaction1.setCompartmentB (compartment1); reaction1.setLabelB ("reaction in N"); reaction1.setDocB (dummy); - reaction1.addInputB (substrate1, null, null); - reaction1.addOutputB (substrate1, null, null); + + try + { + reaction1.addInputB (substrate1, null, null); + reaction1.addOutputB (substrate1, null, null); + } + catch (BivesUnsupportedException e) + { + LOGGER.error (e, "this error wasn't expected!?"); + fail ("this error wasn't expected!?"); + } assertFalse ("unexpected label in compartment", "compartment in A".equals (compartment1.getLabel ())); @@ -233,8 +250,17 @@ public void testCrn () reaction1.setCompartmentB (compartment2); reaction1.setLabelB ("reaction in N"); reaction1.setDocB (dummy); - reaction1.addInputB (substrate1, null, null); - reaction1.addOutputB (substrate1, null, null); + + try + { + reaction1.addInputB (substrate1, null, null); + reaction1.addOutputB (substrate1, null, null); + } + catch (BivesUnsupportedException e) + { + LOGGER.error (e, "this error wasn't expected!?"); + fail ("this error wasn't expected!?"); + } assertFalse ("unexpected label in substrate", "substrate in A".equals (substrate1.getLabel ())); @@ -263,8 +289,17 @@ public void testCrn () reaction1.setCompartmentB (compartment1); reaction1.setLabelB ("reaction in A"); reaction1.setDocB (dummy); - reaction1.addInputB (substrate1, null, null); - reaction1.addOutputB (substrate1, null, null); + + try + { + reaction1.addInputB (substrate1, null, null); + reaction1.addOutputB (substrate1, null, null); + } + catch (BivesUnsupportedException e) + { + LOGGER.error (e, "this error wasn't expected!?"); + fail ("this error wasn't expected!?"); + } assertEquals ("unexpected label in compartment", "compartment in A", compartment1.getLabel ()); assertEquals ("expected no modification", GraphEntity.UNMODIFIED, compartment1.getModification ()); @@ -280,7 +315,16 @@ public void testCrn () // different i/o? - reaction1.addInputB (substrate2, null, null); + try + { + reaction1.addInputB (substrate2, null, null); + } + catch (BivesUnsupportedException e) + { + LOGGER.error (e, "this error wasn't expected!?"); + fail ("this error wasn't expected!?"); + } + reaction1.addOutputA (substrate2, null, null); assertEquals ("unexpected label in compartment", "compartment in A", compartment1.getLabel ()); assertEquals ("expected no modification", GraphEntity.UNMODIFIED, compartment1.getModification ());