Practical 2
Note
This practical requires a small update to ScrumPy.
Download this file
Unpack it: tar zxf patch.tgz
cd into the newly created directory: cd patch
- Become root.
Execute the "patchit" script: ./patchit
That's it !
Analysing a genome scale model of Salmonella
In this practical we (you !) will be replicating some the analysis that was described in the previous lecture . In order to do this you will need to download the files associated with the model:
Download the file P2.tgz into the area in which you have been using for your other practicals.
- This is a compressed archive file and you will need to extract the files before they can be used:
$ tar -zxf P2.tgz
- This will generate a directory, S.Typhim, containing two sub-directories: Model and Analysis. Model contains the model definition files and an additional python module (in Model/Tools). Analysis contains the python modules you will need for this practical.
- For the sake of the practical we have made a few simplifications and the model and results will not be identical to those in the lecture. The aim of the practical is to illustrate the techniques used.
Part A: Analysing the response to varying ATP demand.
(1. Before starting take a look at this basic tutorial on LP analysis.)
- Change directory to the relevant area:
$ cd S.Typhim/Analysis/ATPScan
Start ScrumPy and load the model:
>>> m = ScrumPy.Model("../../Model/MetaSal.spy")
- (If you wish to avoid a bit of typing, leave the model name blank and use the file selector to find the model file instead.)
- Examine the files that are now presented - how much can you recognise from previous work in this course?
- Now import the module called ATPScan
>>> import ATPScan
The module contains a function, also called ATPScan that will generate a data set (as shown in previous lectures) containing the lp solutions over a range of imposed ATP demand values, e.g.:
>>> results = ATPScan.ATPScan(m, 0, 10, 50)
- This will generate a dataset containing 50 solutions for the model with the imposed ATPase flux varying between 0 and 10 flux units.
- The ATPScan module also contains three functions to aid in the analysis of results:
GetChangers(results, tol=1e-6) A list of reactions whose flux value changes by more than tol (default = 1e-6).
GetSwitchers(results) A list of reactions that carry no flux at some point.
GetRanges(results, tol=1e-6) A dictionary mapping reactions to the amount of change in flux over the range of ATP demand.
- For example, to plot the reactions that at some point carry no flux (after setting the x-axis to the rate of ATPase):
>>> results.SetPlotX("ATPase")
>>> results.AddToPlot(ATPScan.GetSwitchers(results))
- Use these functions to identify which fluxes show the greatest response to changes in ATP demand
Part B: Impact of single and double reaction knockouts
- cd into Analysis/Knockouts
Start ScrumPy and the load the model as before.
Import the KnockOutImpacts module.
This defines a single function also called KnockOutImpacts that returns a dictionary recording the impact of remove each reaction from the model (relative change in objective value) eg:
>>> res = KnockOutImpacts.KnockOutImpacts(m)
- Use this to
- a) Identify the lethal knockouts. b) Identify the non lethal knockouts that have the greatest impact. c) From b investigate the impact of dual knockouts, e.g.:
>>> lp.SetFixedFlux({Reac1:0,Reac2:0})
>>> lp.Solve() etc. Remember to clear the constraint before proceeding:
>>> lp.ClearFluxConstraints([Reac1,Reac2])
(Generate lp by: >>> lp = KnockOutImpacts.BuildLP.BuildLP(m) )
- a) Identify the lethal knockouts. b) Identify the non lethal knockouts that have the greatest impact. c) From b investigate the impact of dual knockouts, e.g.: