|
From: <tra...@us...> - 2016-06-21 22:51:22
|
Revision: 653
http://sourceforge.net/p/sbfc/code/653
Author: tramy-nguyen
Date: 2016-06-21 22:51:20 +0000 (Tue, 21 Jun 2016)
Log Message:
-----------
- Finished implementing method to set SBO values for ModifierSpeciesReference for biopax Control Interaction. However, not all SBO values were set correctly. These incorrect SBO values are marked as TODOs and are currently set to SBO:xxxxxxx
Modified Paths:
--------------
trunk/src/org/sbfc/converter/biopax2sbml/BioPAX2SBML.java
Modified: trunk/src/org/sbfc/converter/biopax2sbml/BioPAX2SBML.java
===================================================================
--- trunk/src/org/sbfc/converter/biopax2sbml/BioPAX2SBML.java 2016-06-21 07:13:56 UTC (rev 652)
+++ trunk/src/org/sbfc/converter/biopax2sbml/BioPAX2SBML.java 2016-06-21 22:51:20 UTC (rev 653)
@@ -24,7 +24,9 @@
*/
package org.sbfc.converter.biopax2sbml;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -37,6 +39,7 @@
import org.biopax.paxtools.model.level3.Complex;
import org.biopax.paxtools.model.level3.ComplexAssembly;
import org.biopax.paxtools.model.level3.Control;
+import org.biopax.paxtools.model.level3.ControlType;
import org.biopax.paxtools.model.level3.Controller;
import org.biopax.paxtools.model.level3.Conversion;
import org.biopax.paxtools.model.level3.ConversionDirectionType;
@@ -381,22 +384,18 @@
if (Control.class.isAssignableFrom(entity.getClass()))
{
parseControlInteraction((Control) entity, sbmlModel);
- //TODO: Should I attach sbo term for control level vs. attaching sbo term on controlled level for the sbml modifier reactions?
-// setControlSBO((Control) entity, r);
}
}
private void parseConversionInteraction(Conversion conversion, org.sbml.jsbml.Model sbmlModel)
{
- //TODO: Check biopax interaction for direction and set sbml reaction direction
- // reversible should set reaction.setReversible to true
- // all other should be set to false
Reaction reaction = setReaction(conversion, sbmlModel);
- //TODO: not all conversionInteraction is conversionDirection?
if( conversion.getConversionDirection() != null && (conversion.getConversionDirection().equals(ConversionDirectionType.LEFT_TO_RIGHT) ||
conversion.getConversionDirection().equals(ConversionDirectionType.REVERSIBLE)))
{
+ reaction.setReversible(true);
+
//Parse for reactant/substrate
ListOf<SpeciesReference> reactants = getSpeciesReferences(conversion.getLeft(), conversion.getParticipantStoichiometry(), sbmlModel);
reaction.setListOfReactants(reactants);
@@ -407,6 +406,8 @@
}
else if( conversion.getConversionDirection() != null && (conversion.getConversionDirection().equals(ConversionDirectionType.RIGHT_TO_LEFT)))
{
+ reaction.setReversible(false);
+
//Parse for reactant/substrate
ListOf<SpeciesReference> reactants = getSpeciesReferences(conversion.getRight(), conversion.getParticipantStoichiometry(), sbmlModel);
reaction.setListOfReactants(reactants);
@@ -421,62 +422,89 @@
private void parseControlInteraction(Control control, org.sbml.jsbml.Model sbmlModel)
{
- control.getControlType();
+ //parse controlled
+ List<Reaction> modifierReactionList = parseControlledInteraction(control.getControlled(), sbmlModel);
//parse controller
- ListOf<ModifierSpeciesReference> modifierList = parseControllerInteraction(control.getController());
-
- //parse controlled
- parseControlledInteraction(control.getControlled(), modifierList, sbmlModel);
-
+ parseControllerInteraction(control.getController(), control.getControlType(), modifierReactionList);
}
- private ListOf<ModifierSpeciesReference> parseControllerInteraction(Set<Controller> controllerList)
+ private void parseControllerInteraction(Set<Controller> controllerList, ControlType controlType,
+ List<Reaction> controlledReactionList)
{
ListOf<ModifierSpeciesReference> modifierSpeciesReferencesList = new ListOf<ModifierSpeciesReference>();
- if (controllerList.size() >= 1)
- {
- for (Controller controller : controllerList)
- {
- ModifierSpeciesReference modifierSpecies = new ModifierSpeciesReference();
- if (PhysicalEntity.class.isAssignableFrom(controller.getClass()))
- {
- if(biopax2sbmlId.containsKey(controller.getRDFId()))
- {
- //Get list of modifiers from these controllers that get converted to sbml species
- modifierSpecies.setSpecies(biopax2sbmlId.get(controller.getRDFId()));
- }
- modifierSpeciesReferencesList.add(modifierSpecies);
- }
- }
- }
-
- return modifierSpeciesReferencesList;
+ for(Reaction controlledReaction : controlledReactionList)
+ {
+ if(controllerList.size() >= 1)
+ {
+ for(Controller controller : controllerList)
+ {
+ if(biopax2sbmlId.containsKey(controller.getRDFId()))
+ {
+ ModifierSpeciesReference modifierSpecies = new ModifierSpeciesReference();
+ modifierSpecies.setSpecies(biopax2sbmlId.get(controller.getRDFId()));
+ modifierSpeciesReferencesList.add(modifierSpecies);
+
+ setModifierSpeciesRefSBO(controlType, modifierSpecies);
+ controlledReaction.addModifier(modifierSpecies);
+ }
+ else
+ throw new SBMLException("The species for " + controller.getRDFId() + " must exist in the SBML Document in order to create a ModifierSpeciesReference for the controller interaction.");
+ }
+ }
+ }
}
- private void parseControlledInteraction(Set<org.biopax.paxtools.model.level3.Process> controlledList,
- ListOf<ModifierSpeciesReference> modifierList,
+ private void setModifierSpeciesRefSBO(ControlType controlType, ModifierSpeciesReference modifierSpecies)
+ {
+ if(controlType.equals(ControlType.ACTIVATION))
+ modifierSpecies.setSBOTerm(SBO.getStimulator()); //TODO: verify
+ else if(controlType.equals(ControlType.ACTIVATION_ALLOSTERIC))
+ modifierSpecies.setSBOTerm(SBO.getEssentialActivator()); //TODO: verify
+ else if(controlType.equals(ControlType.ACTIVATION_NONALLOSTERIC))
+ modifierSpecies.setSBOTerm(SBO.getNonEssentialActivator()); //TODO: verify
+ else if(controlType.equals(ControlType.INHIBITION))
+ modifierSpecies.setSBOTerm(SBO.getInhibition());
+ else if(controlType.equals(ControlType.INHIBITION_ALLOSTERIC))
+ modifierSpecies.setSBOTerm("SBO:xxxxxxx"); //TODO: ASK
+ else if(controlType.equals(ControlType.INHIBITION_COMPETITIVE))
+ modifierSpecies.setSBOTerm("SBO:0000206"); //TODO: verify
+ else if(controlType.equals(ControlType.INHIBITION_IRREVERSIBLE))
+ modifierSpecies.setSBOTerm("SBO:xxxxxxx"); //TODO: ASK
+ else if(controlType.equals(ControlType.INHIBITION_NONCOMPETITIVE))
+ modifierSpecies.setSBOTerm("SBO:0000207"); //TODO: verify
+ else if(controlType.equals(ControlType.INHIBITION_OTHER))
+ modifierSpecies.setSBOTerm("SBO:xxxxxxx"); //TODO: ASK
+ else if(controlType.equals(ControlType.INHIBITION_UNCOMPETITIVE))
+ modifierSpecies.setSBOTerm("SBO:0000207"); //TODO: verify
+ }
+
+ private List<Reaction> parseControlledInteraction(Set<org.biopax.paxtools.model.level3.Process> controlledList,
org.sbml.jsbml.Model sbmlModel)
{
+ List<Reaction> modifierReactionList = new ArrayList<Reaction>();
if (controlledList.size() > 0)
{
for (org.biopax.paxtools.model.level3.Process process : controlledList)
{
- //Check if this process rdfId contains in the hashmap table to see if sbml has this reaction id.
- // get that equivalent sbml reaction and add the set modifierSpeciesReference
+ //Check if this process rdfId contains in the hashmap table to see if sbml has this reaction id.
+ // get that equivalent sbml reaction and add the list of modifier reaction
if(biopax2sbmlId.containsKey(process.getRDFId()))
{
Reaction modifierReaction = sbmlModel.getReaction(biopax2sbmlId.get(process.getRDFId()));
- for(ModifierSpeciesReference modifier : modifierList)
- {
- modifierReaction.addModifier(modifier);
- }
- //TODO: add SBO terms for modifier reactions
+ modifierReactionList.add(modifierReaction);
}
-
+ else
+ throw new SBMLException("The reaction for " + process.getRDFId() + " must exist in the SBML Document in order to create a ModifierSpeciesReference for the Controlled interaction.");
+
}
}
+
+ //TODO: check if modifierReaction list is empty. If empty, throw exception?
+
+
+ return modifierReactionList;
}
@@ -496,7 +524,7 @@
speciesRef.setSpecies(biopax2sbmlId.get(p.getRDFId()));
}
else
- throw new SBMLException("Could not get corresponding species for " + p.getRDFId());
+ throw new SBMLException("Could not find corresponding species for " + p.getRDFId() + "to construct reacion reactant or product");
/* Default settings for sbml SpeciesReference required attributes
* setConstant(true) :
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|