|
From: <tra...@us...> - 2016-07-29 06:43:53
|
Revision: 685
http://sourceforge.net/p/sbfc/code/685
Author: tramy-nguyen
Date: 2016-07-29 06:43:50 +0000 (Fri, 29 Jul 2016)
Log Message:
-----------
- implemented KineticLaw with LocalParameters on Biochemical and TransportWithBiochemical Reactions.
- Started implementation for catalysisDirection
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-07-27 06:36:54 UTC (rev 684)
+++ trunk/src/org/sbfc/converter/biopax2sbml/BioPAX2SBML.java 2016-07-29 06:43:50 UTC (rev 685)
@@ -39,6 +39,7 @@
import org.biopax.paxtools.model.Model;
import org.biopax.paxtools.model.level3.BiochemicalReaction;
import org.biopax.paxtools.model.level3.Catalysis;
+import org.biopax.paxtools.model.level3.CatalysisDirectionType;
import org.biopax.paxtools.model.level3.CellularLocationVocabulary;
import org.biopax.paxtools.model.level3.Complex;
import org.biopax.paxtools.model.level3.ComplexAssembly;
@@ -48,6 +49,7 @@
import org.biopax.paxtools.model.level3.Conversion;
import org.biopax.paxtools.model.level3.ConversionDirectionType;
import org.biopax.paxtools.model.level3.Degradation;
+import org.biopax.paxtools.model.level3.DeltaG;
import org.biopax.paxtools.model.level3.Dna;
import org.biopax.paxtools.model.level3.DnaRegion;
import org.biopax.paxtools.model.level3.Entity;
@@ -59,6 +61,7 @@
import org.biopax.paxtools.model.level3.Gene;
import org.biopax.paxtools.model.level3.GeneticInteraction;
import org.biopax.paxtools.model.level3.Interaction;
+import org.biopax.paxtools.model.level3.KPrime;
import org.biopax.paxtools.model.level3.Modulation;
import org.biopax.paxtools.model.level3.MolecularInteraction;
import org.biopax.paxtools.model.level3.Pathway;
@@ -90,10 +93,13 @@
import org.sbfc.ontology.OboOntology;
import org.sbml.jsbml.CVTerm;
import org.sbml.jsbml.CVTerm.Qualifier;
+import org.sbml.jsbml.ASTNode;
import org.sbml.jsbml.Compartment;
import org.sbml.jsbml.Creator;
import org.sbml.jsbml.History;
+import org.sbml.jsbml.KineticLaw;
import org.sbml.jsbml.ListOf;
+import org.sbml.jsbml.LocalParameter;
import org.sbml.jsbml.ModifierSpeciesReference;
import org.sbml.jsbml.Reaction;
import org.sbml.jsbml.SBMLDocument;
@@ -326,10 +332,10 @@
}
org.sbml.jsbml.Model topModel = sbmlDoc.createModel("topLevel_sbmlModel");
-
+
//Create a comp model to attach all sbml submodel to the sbml document
CompModelPlugin compModel= (CompModelPlugin) sbmlDoc.getModel().getPlugin(CompConstants.shortLabel);
-
+
for(Pathway pathway : pathways)
{
org.sbml.jsbml.Model subModel = parsePathway(pathway, sbmlDoc);
@@ -410,7 +416,7 @@
* Add this converted reaction to the top level sbml model
*/
topModel.addReaction(reaction);
-
+
}
else if(count == 1)
{
@@ -438,7 +444,7 @@
}
}
}
-
+
return sbmlDoc.getModel();
}
@@ -495,7 +501,7 @@
return sbmlModel;
}
-
+
private void parsePathwayComponent(Set<org.biopax.paxtools.model.level3.Process> entityList, org.sbml.jsbml.Model sbmlModel) throws ConversionException
{
for(Entity entity : entityList)
@@ -515,7 +521,7 @@
if(mappedEntities.get(entity.getRDFId()) != null)
{
Reaction pathwayComponent = (Reaction) mappedEntities.get(entity.getRDFId());
-
+
for(ModifierSpeciesReference modifier : pathwayComponent.getListOfModifiers())
{
Species species = (Species) getSBaseFromSBMLId(modifier.getSpecies());
@@ -578,7 +584,7 @@
{
parsePathwayComponent(pathwayStep.getStepProcess(), sbmlModel);
}
-
+
if(pathwayStep.getNextStep() != null && pathwayStep.getNextStep().size() > 0)
{
parsePathwayStep(pathwayStep.getNextStep(), sbmlModel);
@@ -1403,8 +1409,8 @@
private void parseConversionInteraction(Conversion conversion) throws ConversionException
{
- Reaction reaction = createReaction(conversion);
- reaction.setFast(false);
+ Reaction reaction = createReaction(conversion);
+ reaction.setFast(conversion.getSpontaneous());
if( conversion.getConversionDirection() != null && (conversion.getConversionDirection().equals(ConversionDirectionType.LEFT_TO_RIGHT) ||
conversion.getConversionDirection().equals(ConversionDirectionType.REVERSIBLE)))
@@ -1485,11 +1491,49 @@
}
modifierSpecies.setId(getValidSBMLId(control));
String modifierSpeciesName = getValidSBMLName(control);
- if(modifierSpecies != null)
+ if(modifierSpeciesName != null)
{
modifierSpecies.setName(modifierSpeciesName);
}
+
+ if(control instanceof TransportWithBiochemicalReaction || control instanceof BiochemicalReaction)
+ {
+ parseBiochemicalReaction((BiochemicalReaction) control, controlledReaction);
+ }
+ else if (control instanceof Catalysis)
+ {
+ Catalysis catalysis = (Catalysis) control;
+ for(PhysicalEntity participant : catalysis.getCofactor())
+ {
+ ModifierSpeciesReference catalysisCofactor = createModifierSpeciesReference(participant);
+ catalysisCofactor.setSBOTerm(SBO.getCatalyticActivator());
+ controlledReaction.addModifier(catalysisCofactor);
+ }
+ for(org.biopax.paxtools.model.level3.Process catalysisControlled : catalysis.getControlled())
+ {
+ Conversion controlled = (Conversion) catalysisControlled;
+ if(controlled.getConversionDirection() == ConversionDirectionType.LEFT_TO_RIGHT &&
+ catalysis.getCatalysisDirection() != CatalysisDirectionType.LEFT_TO_RIGHT)
+ {
+ //TODO:
+ }
+ else if(controlled.getConversionDirection() == ConversionDirectionType.RIGHT_TO_LEFT &&
+ catalysis.getCatalysisDirection() != CatalysisDirectionType.RIGHT_TO_LEFT)
+ {
+ //TODO:
+ }
+ else if(controlled.getConversionDirection() == ConversionDirectionType.REVERSIBLE &&
+ catalysis.getCatalysisDirection() == CatalysisDirectionType.RIGHT_TO_LEFT)
+ {
+ //TODO:
+ }
+ }
+
+ catalysis.getCatalysisDirection();
+ }
+
setControl_SBO(control, modifierSpecies);
+
controlledReaction.addModifier(modifierSpecies);
//Add annotation for ModifierSpeciesReference corresponding to control Interaction
@@ -1506,6 +1550,46 @@
}
}
+ private void parseBiochemicalReaction(BiochemicalReaction biochemReaction, Reaction controlledReaction)
+ {
+ KineticLaw kineticLaw = controlledReaction.createKineticLaw();
+ int count = 0;
+ for(DeltaG deltaG : biochemReaction.getDeltaG())
+ {
+ String prefix = getValidSBMLId(deltaG) + "_";
+ addLocalParameter(prefix + "deltaGPrime0", kineticLaw, deltaG.getDeltaGPrime0());
+ addLocalParameter(prefix + "deltaGIonicStrength", kineticLaw, deltaG.getIonicStrength());
+ addLocalParameter(prefix + "deltaGPh", kineticLaw, deltaG.getPh());
+ addLocalParameter(prefix + "deltaGPMg", kineticLaw, deltaG.getPMg());
+ addLocalParameter(prefix + "deltaGTemperature", kineticLaw, deltaG.getTemperature());
+ }
+ for(Float deltaH : biochemReaction.getDeltaH())
+ {
+ addLocalParameter("deltaH_" + count++, kineticLaw, deltaH);
+ }
+ for(Float deltaS : biochemReaction.getDeltaS())
+ {
+ addLocalParameter("deltaS_" + count++, kineticLaw, deltaS);
+ }
+ for(KPrime kprime : biochemReaction.getKEQ())
+ {
+ String prefix = getValidSBMLId(kprime) + "_";
+ addLocalParameter(prefix + "KPrime", kineticLaw, kprime.getKPrime());
+ addLocalParameter(prefix + "KPrimeIonicStrength", kineticLaw, kprime.getIonicStrength());
+ addLocalParameter(prefix + "KPrimePh", kineticLaw, kprime.getPh());
+ addLocalParameter(prefix + "KPrimeMg", kineticLaw, kprime.getPMg());
+ addLocalParameter(prefix + "KPrimeTemperature", kineticLaw, kprime.getTemperature());
+ }
+ }
+
+ private LocalParameter addLocalParameter(String id, KineticLaw kineticLaw, double value)
+ {
+ LocalParameter localParam = kineticLaw.createLocalParameter(id);
+ localParam.setSBOTerm("SBO:xxxxxxx"); //TODO: TBD
+ localParam.setValue(value);
+ return localParam;
+ }
+
private ModifierSpeciesReference createModifierSpeciesReference(Entity entity) throws ConversionException
{
ModifierSpeciesReference modifierSpecies = new ModifierSpeciesReference(sbmlLevel, sbmlVer);
@@ -1535,8 +1619,9 @@
{
modifierSpecies.setSBOTerm(SBO.getCatalyst()); //"SBO:0000013"
}
- else //This could be Modulation, TemplateReactionRegulation, or any other Control Interaction
+ else
{
+ //This could be Modulation, TemplateReactionRegulation, or any other Control Interaction
if(control.getControlType() != null)
{
setControlType_SBO(control.getControlType(), modifierSpecies);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|