Practical 6

Linear Programming and Flux Balance Analysis with ScrumPy

In current research into biofuels, there is interest in investigating the feasibility of using microorganisms to produce alkanes for biodiesel from renewable carbon sources. The starting points for alkane formation are fatty acids, which are formed by the fatty acid biosynthesis pathway. Here we will investigate the feasibility and efficiency of making a representative fatty acid - C16 palmitate - in E. coli from various carbon substrates, starting with glucose.

We will use a small model of about 70 reactions that represents the central carbon metabolism of E. coli. It is a derivative of a model developed in Srienc's group (Trinh, C. T., Unrean, P., Srienc, F., 2008. Applied and environmental microbiology.74, 3634-3643) for designing metabolic engineering strategies.

Before you start, read the documentation of the ScrumPy LP module, here. It would be a good idea to open this page in a separate tab so that you can refer to it as you work on the practical.

  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 EcoliCCM.spy to create a model object. Note that the model is created in a modular fashion, and the top-level file will laod the different components of the model and open a window for each.

    2. Examine how the model is created. Note that the reactions that you need to manipulate for this practical are those contained in Transport.spy.
    3. If you want to check the details of any of the reactions or metabolites in the database-derived component of the model - AutoColi.spy - you can paste the reaction or metabolite identifier into the search box at MetaCyc.

  2. Your first task is to set up and solve an LP problem where the objective is to minimise glucose consumption, as sole carbon source, while producing 1 flux unit of palmitate.
    1. Create the LP object with the E coli model as argument as shown in the first steps of the documentation.
    2. Constrain the flux of the palmitate reaction to 1.0 using the SetFixedFlux function of the LP object.

    3. As can be seen from Transport.spy, the model can allow both uptake and production of a number of carbon compounds. To make sure that glucose is used as the only substrate, the import of the other carbon substrates must be constrained to zero, though their export can be allowed so that we can determine whether production of palmitate requires the formation of any co-products. This can be done with the SetFluxBounds function, which constrains fluxes within a specified range. For example, to prevent uptake of ethanol and acetate, whilst allowing their production, we could write the following. Check that you understand how the range specifiers below work :

      •    1 lp = m.GetLP()
           2 
           3 Bounds = {
           4      "eth_tx":(None, 0),
           5      "ACE_tx":(None, 0)
           6 }
           7 
           8 lp.SetFluxBounds(Bounds)
        
    4. Since the optimisation direction is minimisation, and this is set by default, you don't need to change the direction, though the documentation explains how to do this.

    5. Next, identify the name of the glucose uptake reaction that should be minimised and enter this as an argument to the objective function method described in the documentation. (Note that the argument must be a list of reaction(s), i.e. your argument should be a list with one reaction).

    6. Solve the LP. The message 'Optimal solution' should appear. To obtain the solution use the LP method GetPrimSol(). This method returns a dictionary object of reactions in the solution as keys and flux values as values, so for convenience assign a name to this solution, e.g. sol. Examine the solution as follows:

      •    1 for k in sol.keys():
           2     print k, sol[k]
        
    7. What is the objective value, i.e. the flux of the glucose uptake reaction, representing the minimum amount of glucose to make 1 palmitate? What fraction of the glucose carbon is converted to palmitate? What are the relative fluxes of glucose through glycolysis (e.g. 6PFRUCTPHOS-RXN) and the pentose phosphate pathway (e.g. GLU6PDEHYDROG-RXN)?

  3. Now determine which of the other carbon metabolites listed in Transport.spy can function as substrates for fatty acid production. To do this
    1. Remove your existing constraints on the LP object with the ClearFluxConstraint(Bounds.keys()) function;

    2. Reset the flux constraint on palmitate transport, and set appropriate flux bounds on the other carbon metabolites;
    3. Set uptake of your target substrate as the minimisation objective.
    4. For those substrates that can be used, what is the carbon conversion efficiency to palmitate?

  4. The results so far have corresponded to aerobic conditions. Which of the substrates can be utilised in anaerobic conditions?
    1. Represent anaerobic conditons by constraining the oxygen transport flux to zero.
    2. Repeat the analyses above. For those substrates that can be used, determine any change in the carbon conversion efficiency and whether co-products are formed.

None: Meetings/C1netWork3/P6 (last edited 2017-01-23 16:33:23 by david)