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. See Villanova et al (2021). Front. Plant Sci. 12:642199. doi: 10.3389/fpls.2021.642199

1. Download the archive containing the model from here 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 two functions. Following is their code:

a. BuildLP function

   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

b. LipidScan function

   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).

   1 lp = LipidScan.BuildLP(m)

   1 ds = LipidScan.LipidScan(m, lp=lp)

   1 ds.SetPlotX("TAG_synthesis_Cyto")      #setting x-axis
   2 ds.AddToPlot("RIBULOSE-BISPHOSPHATE-CARBOXYLASE-RXN_Plas")

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 too (i.e in the absence of glycerol). You will simulate the model in autotrophic condition. For this, constrain the flux in glycerol transporter to zero.

   1 lp = LipidScan.BuildLP(m)
   2 lp.SetFixedFlux({"GLYCEROL_Cyto_tx":0})
   3 res = LipidScan.LipidScan(m, lp=lp)

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

   1 from ScrumPy.Util import Set
   2 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.