Differences between revisions 2 and 9 (spanning 7 versions)
Revision 2 as of 2024-12-05 14:27:11
Size: 5443
Editor: trunil
Comment:
Revision 9 as of 2024-12-05 14:37:37
Size: 5850
Editor: trunil
Comment:
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:
Here, we will investigate the genome-scale metabolic model of ''P. tricornutum'' to identify pathways for TAG synthesis''. For ''''further ''''detail''''s you can ''''refer'''' ''''to Villanova V ''''''et al'''''' ''''(2021) Boosting Biomass Quantity and Quality by Improved Mixotrophic Culture of the Diatom ''''''Phaeodactylum tricornutum''''''. ''''''Front. Plant Sci.'''''' 12:642199. doi: 10.3389/fpls.2021.642199'' Here, we will investigate the genome-scale metabolic model of ''P. tricornutum'' to identify pathways for TAG synthesis''. For 'further 'detail's you can 'refer' 'to Villanova V et al '(2021) Boosting Biomass Quantity and Quality by Improved Mixotrophic Culture of the Diatom Phaeodactylum tricornutum. Front. Plant Sci. 12:642199. doi: 10.3389/fpls.2021.642199''
Line 6: Line 6:
 a. Start ScrumPy in the folder containing the .spy files and  load the top-level model file Phaeo.spy to create a model object.  Note that the model is created in a modular fashion, and the  top-level file will load the different components of the model and  each module will be in a separate tab.
 a. Can you explain why there are more modules in this model  compared to Campylobacter model?
 a. Start ScrumPy in the folder containing the .spy files and   load the top-level model file Phaeo.spy to create a model object.       Note that the model is created in a modular fashion, and the    top-level file will load the different components of the model and      each module will be in a separate tab.
 a. Can you explain why there are more modules in this model    compared to Campylobacter model? 
Line 9: Line 9:
2. Set up and solve an LP problem where the objective is to minimise total flux (see previous practical), while producing 1 unit flux of TAG (Hint: use SetFixedFlux() function on reaction ‘TAG_synthesis_Cyto’). 2. Set up and solve an LP problem where the objective is to minimise total flux (see previous practical), while producing 1 unit flux of TAG (Hint: use SetFixedFlux() function on reaction ‘TAG_synthesis_Cyto’). 
Line 20: Line 20:


a. Changers method
'''a. Changers method '''
Line 26: Line 24:

 
rv = []

 
for cname in ds.cnames:

  
col = ds.GetCol(cname)

  
if abs(max(col)-min(col))>lim:

   
rv.append(cname)

 
return rv
        rv = []
        for cname in ds.cnames:
                col = ds.GetCol(cname)
                if abs(max(col)-min(col))>lim:
                        rv.append(cname)
        return rv
Line 40: Line 31:



b. BuildLP method
'''b. BuildLP method '''
Line 47: Line 35:

 
lp = m.GetLP()

 
lp.SetObjective(m.sm.cnames)

 
lp.SetFluxBounds({"RIBULOSE-BISPHOSPHATE-CARBOXYLASE-RXN_Plas":(0,400.0)})

 
if "GLYCEROL_Cyto_tx" in m.sm.cnames:

  
lp.SetFluxBounds({"GLYCEROL_Cyto_tx":(0,20)})

 
return lp
        lp = m.GetLP()
        lp.SetObjective(m.sm.cnames)
        lp.SetFluxBounds({"RIBULOSE-BISPHOSPHATE-CARBOXYLASE-RXN_Plas":(0,400.0)})
        if "GLYCEROL_Cyto_tx" in m.sm.cnames:
                lp.SetFluxBounds({"GLYCEROL_Cyto_tx":(0,20)})
        return lp
Line 61: Line 42:

c. LipidScan method
'''c. LipidScan method '''
Line 66: Line 46:
        ds = DataSets.DataSet()
        ranges = numpy.arange(lo,hi)
        if lp == None:
                lp = BuildLP(m)
        for t in ranges:
                lp.SetFixedFlux({"TAG_synthesis_Cyto":t})
                lp.Solve()
                if lp.GetStatusMsg() == "optimal":
                        sol = lp.GetPrimSol()
                        ds.UpdateFromDic(sol)
        ds.SetPlotX("TAG_synthesis_Cyto")
        ds.AddToPlot("RIBULOSE-BISPHOSPHATE-CARBOXYLASE-RXN_Plas")
        return ds
}}}
'''To use these methods you need to import the "LipidScan" module. On ScrumPy window execute the following statements. '''
Line 67: Line 62:
 ds = DataSets.DataSet()

 ranges = numpy.arange(lo,hi)

 if lp == None:

  lp = BuildLP(m)

 for t in ranges:

  lp.SetFixedFlux({"TAG_synthesis_Cyto":t})

  lp.Solve()

  if lp.GetStatusMsg() == "optimal":

   sol = lp.GetPrimSol()

   ds.UpdateFromDic(sol)

 ds.SetPlotX("TAG_synthesis_Cyto")

 ds.AddToPlot("RIBULOSE-BISPHOSPHATE-CARBOXYLASE-RXN_Plas")

 return ds
 . {{{#!python
import sys
sys.path.append('../Analysis')
import LipidScan
Line 94: Line 68:
''' '''
Line 95: Line 70:
To use these methods you need to import the "LipidScan" module. On ScrumPy window execute the following statements. Now the methods in the "LipidScan" module can be used. ''' '''
Line 97: Line 72:
 import sys  a. Generate LP problem where the objective is to minimise total flux. Constrain the maximum Rubisco flux and glycerol transporter flux to 400 and 20 respectively (make use of SetFluxBounds() function). ''' '''lp = LipidScan.BuildLP(m) ''' '''
 a. Solve this LP repeatedly (using for loop) while increasing flux in TAG synthesis reaction in range between 1 to 20. Save each of the solution in a dataset. Import numpy from ScrumPy.Data import DataSets
Line 99: Line 75:
 sys.path.append('../Analysis') ''' '''
Line 101: Line 77:
 import LipidScan ds = LipidScan(m, lp=lp) ''' '''
Line 103: Line 79:
Now the methods in the "LipidScan" module can be used.  a. Examine the flux pattern in Rubisco reaction with respect to increasing flux in TAG synthesis. What is the maximum flux in Rubisco reaction? ds.SetPlotX("TAG_synthesis_Cyto") #setting x-axis ds.AddToPlot("RIBULOSE-BISPHOSPHATE-CARBOXYLASE-RXN_Plas")
Line 105: Line 81:
 a. Generate LP problem where the objective is to minimise total flux. Constrain the maximum Rubisco flux and glycerol transporter flux to 400 and 20 respectively (make use of SetFluxBounds() function). ''' '''
Line 107: Line 83:
 lp = LipidScan.BuildLP(m)
 a. Solve this LP repeatedly (using for loop) while increasing flux in TAG synthesis reaction in range between 1 to 20. Save each of the solution in a dataset.
 a. Add inorganic carbon transporters (Hint: “CO2_Cyto_tx” and “HCO3_Cyto_tx”) and organic carbon transporter (“GLYCEROL_Cyto_tx”) to the plot ''' '''
 a. What is the maximum flux in TAG synthesis? ''' '''
Line 110: Line 86:
 Import numpy 4. As you would have noticed TAG synthesis in above example is through mixotrophic mode (I.e model uses light energy and organic carbon, glycerol, for lipid production). As you remember from the lecture, ''P. tricornutum'' can grow under phototrophic condition (i.e in the absence of glycerol). As you have saved the method in ../Analysis/MyLipidScan.py. We will import the module (as shown below) and repeat the above analysis for phototropic condition. For this, constrain the flux in glycerol transporter to zero. ''' '''
Line 112: Line 88:
 from ScrumPy.Data import DataSets lp = LipidScan.BuildLP(m) ''' '''
Line 114: Line 90:
ds = LipidScan(m, lp=lp)  . lp.SetFixedFlux({"GLYCEROL_Cyto_tx":0}) ''' '''res = MyLipidScan.LipidScan(m, lp=lp) ''' '''
Line 116: Line 92:
 a. Examine the flux pattern in Rubisco reaction with respect to increasing flux in TAG synthesis. What is the maximum flux in Rubisco reaction?  * Plot reactions as above. Examine the difference in flux patterns. ''' '''
 * What is the maximum feasible flux in TAG synthesis under phototrophic condition? ''' '''
 * Is is higher or lower than that in mixotrophic condition (in question 3)? ''' '''
Line 118: Line 96:
 ds.SetPlotX("TAG_synthesis_Cyto") #setting x-axis 5. Find the reactions that are active in mixotrophic condition but not in phototrophic condition? ''' '''
Line 120: Line 98:
 ds.AddToPlot("RIBULOSE-BISPHOSPHATE-CARBOXYLASE-RXN_Plas")
 a. Add inorganic carbon transporters (Hint: “CO2_Cyto_tx” and “HCO3_Cyto_tx”) and organic carbon transporter (“GLYCEROL_Cyto_tx”) to the plot
 a. What is the maximum flux in TAG synthesis?
from ScrumPy.Util import Set ''' '''
Line 124: Line 100:
4. As you would have noticed TAG synthesis in above example is through mixotrophic mode (I.e model uses light energy and organic carbon, glycerol, for lipid production). As you remember from the lecture, ''P. tricornutum'' can grow under phototrophic condition (i.e in the absence of glycerol). As you have saved the method in ../Analysis/MyLipidScan.py. We will import the module (as shown below) and repeat the above analysis for phototropic condition. For this, constrain the flux in glycerol transporter to zero.  . Set.Complement(ds.cnames,res.cnames) ''' '''
Line 126: Line 102:
lp = LipidScan.BuildLP(m) Can you identify which pathways these reactions belong to? Refer to network diagram in lecture slides for convenience or visit MetaCyc. Note that `_Cyto suffix` is added to differentiate compartmentalisation in the model and is not part of MetaCyc identifier. ''' '''
Line 128: Line 104:
 lp.SetFixedFlux({"GLYCEROL_Cyto_tx":0})

 res = MyLipidScan.LipidScan(m, lp=lp)

 a. Plot reactions as above. Examine the difference in flux patterns.
 a. What is the maximum feasible flux in TAG synthesis under phototrophic condition?
 a. Is is higher or lower than that in mixotrophic condition (in question 3)?

5. Find the reactions that are active in mixotrophic condition but not in phototrophic condition?

from ScrumPy.Util import Set

 Set.Complement(ds.cnames,res.cnames)

Can you identify which pathways these reactions belong to? Refer to network diagram in lecture slides for convenience or visit MetaCyc. Note that `_Cyto suffix` is added to differentiate compartmentalisation in the model and is not part of MetaCyc identifier.



https://mudsharkstatic.brookes.ac.uk/Nottingham2022/P6/
https://mudsharkstatic.brookes.ac.uk/Nottingham2022/P6/ ''' '''

Practical 5: Identifying pathways for TAG synthesis in Phaeodactylum tricornutum

Here, we will investigate the genome-scale metabolic model of P. tricornutum to identify pathways for TAG synthesis. For 'further 'detail's you can 'refer' 'to Villanova V et al '(2021) Boosting Biomass Quantity and Quality by Improved Mixotrophic Culture of the Diatom Phaeodactylum tricornutum. Front. Plant Sci. 12:642199. doi: 10.3389/fpls.2021.642199

1. Download the archive containing the model and extract the files.

  1. Start ScrumPy in the folder containing the .spy files and load the top-level model file Phaeo.spy to create a model object. Note that the model is created in a modular fashion, and the top-level file will load the different components of the model and each module will be in a separate tab.

  2. Can you explain why there are more modules in this model compared to Campylobacter model?

2. Set up and solve an LP problem where the objective is to minimise total flux (see previous practical), while producing 1 unit flux of TAG (Hint: use SetFixedFlux() function on reaction ‘TAG_synthesis_Cyto’).

  1. What is the source of energy in your LP solution ?
  2. Examine the source of carbons.

3. Now we will perform lipid scan analysis under mixotrophic condition. We will perform this analysis under various growth conditions so better to write the steps into python method, for re-usability.

The code that you will be using is stored in module “LipidScan.py” in the “Analysis” directory. (Note: Model directory contains the model definition files i.e .spy files and analysis contains the python modules, i.e., the  .py files you will need for this practical)

The module "LipidScan.py" contains three methods. Following is their code:

a. Changers method

   1 def Changers(ds,lim=1e-06):
   2         rv = []
   3         for cname in ds.cnames:
   4                 col = ds.GetCol(cname)
   5                 if abs(max(col)-min(col))>lim:
   6                         rv.append(cname)
   7         return rv

b. BuildLP method

   1 def BuildLP(m):
   2         lp = m.GetLP()
   3         lp.SetObjective(m.sm.cnames)
   4         lp.SetFluxBounds({"RIBULOSE-BISPHOSPHATE-CARBOXYLASE-RXN_Plas":(0,400.0)})
   5         if "GLYCEROL_Cyto_tx" in m.sm.cnames:
   6                 lp.SetFluxBounds({"GLYCEROL_Cyto_tx":(0,20)})
   7         return lp

c. LipidScan method

   1 def LipidScan(m,lp=None,lo=1.0,hi=20.0):
   2         ds = DataSets.DataSet()
   3         ranges = numpy.arange(lo,hi)
   4         if lp == None:
   5                 lp = BuildLP(m)
   6         for t in ranges:
   7                 lp.SetFixedFlux({"TAG_synthesis_Cyto":t})
   8                 lp.Solve()
   9                 if lp.GetStatusMsg() == "optimal":
  10                         sol = lp.GetPrimSol()
  11                         ds.UpdateFromDic(sol)
  12         ds.SetPlotX("TAG_synthesis_Cyto")
  13         ds.AddToPlot("RIBULOSE-BISPHOSPHATE-CARBOXYLASE-RXN_Plas")
  14         return ds

To use these methods you need to import the "LipidScan" module. On ScrumPy window execute the following statements.

  •    1 import sys
       2 sys.path.append('../Analysis')
       3 import LipidScan
    

Now the methods in the "LipidScan" module can be used.

  1. Generate LP problem where the objective is to minimise total flux. Constrain the maximum Rubisco flux and glycerol transporter flux to 400 and 20 respectively (make use of SetFluxBounds() function). lp = LipidScan.BuildLP(m)

  2. Solve this LP repeatedly (using for loop) while increasing flux in TAG synthesis reaction in range between 1 to 20. Save each of the solution in a dataset. Import numpy from ScrumPy.Data import DataSets

ds = LipidScan(m, lp=lp)

  1. Examine the flux pattern in Rubisco reaction with respect to increasing flux in TAG synthesis. What is the maximum flux in Rubisco reaction? ds.SetPlotX("TAG_synthesis_Cyto") #setting x-axis ds.AddToPlot("RIBULOSE-BISPHOSPHATE-CARBOXYLASE-RXN_Plas")

  1. Add inorganic carbon transporters (Hint: “CO2_Cyto_tx” and “HCO3_Cyto_tx”) and organic carbon transporter (“GLYCEROL_Cyto_tx”) to the plot

  2. What is the maximum flux in TAG synthesis?

4. As you would have noticed TAG synthesis in above example is through mixotrophic mode (I.e model uses light energy and organic carbon, glycerol, for lipid production). As you remember from the lecture, P. tricornutum can grow under phototrophic condition (i.e in the absence of glycerol). As you have saved the method in ../Analysis/MyLipidScan.py. We will import the module (as shown below) and repeat the above analysis for phototropic condition. For this, constrain the flux in glycerol transporter to zero.

lp = LipidScan.BuildLP(m)

  • lp.SetFixedFlux({"GLYCEROL_Cyto_tx":0}) res = MyLipidScan.LipidScan(m, lp=lp)

  • Plot reactions as above. Examine the difference in flux patterns.

  • What is the maximum feasible flux in TAG synthesis under phototrophic condition?

  • Is is higher or lower than that in mixotrophic condition (in question 3)?

5. Find the reactions that are active in mixotrophic condition but not in phototrophic condition?

from ScrumPy.Util import Set

  • Set.Complement(ds.cnames,res.cnames)

Can you identify which pathways these reactions belong to? Refer to network diagram in lecture slides for convenience or visit MetaCyc. Note that _Cyto suffix is added to differentiate compartmentalisation in the model and is not part of MetaCyc identifier.

https://mudsharkstatic.brookes.ac.uk/Nottingham2022/P6/

None: Meetings/Nottingham2024/Prac5 (last edited 2024-12-12 09:03:16 by mark)