Size: 2945
Comment: Interim save
|
Size: 4623
Comment: Part completed
|
Deletions are marked like this. | Additions are marked like this. |
Line 23: | Line 23: |
{{{ | {{{ |
Line 26: | Line 26: |
}}} Note that though we've loaded the generic !MetaCyc, we could in principal load any !BioCyc format organism database. 2. Copy this list of EC numbers for the Entner-Doudoroff pathway: {{{ |
}}}Note that though you've loaded the generic !MetaCyc, you could in principal load any !BioCyc format organism database. 1. Copy this list of EC numbers for the Entner-Doudoroff pathway: {{{ |
Line 32: | Line 31: |
1. You can see the set of reactions associated with each EC number with the following code: {{{ for e in ecs: for r in db[e]: print e, "\n", r.AsScrumPy() }}} Here, each EC number in turn is used as a key, ''e'' into the database, which returns a set of reaction records. The method !AsScrumPy formats the record as required for the input file. 1. You need to generate an input file though, so enter the following: {{{ spy=open("ZmED.spy","w") spy.write('# Entner Duodoroff pathway\nStructural()\nInclude(Extras.spy)\n') for e in ecs: str = "# " + e +"\n" for r in db[e]: spy.write(str) spy.write(r.AsScrumPy()) spy.close() }}}After opening the file, ZmED.spy, the first write statement puts the spy file header in, along with the ''Include'' directive that will load Extras.spy. Then for each EC number, a comment is inserted giving the EC number, since this often doesn't appear in the reaction name. == Step 3 == 1. Load the model file and see if there is a potential pathway through it by calculating the null space of the stoichiometry matrix: {{{ m = ScrumPy.Model("ZmED.spy") ns = m.sm.NullSpace() ns }}} Two windows should have opened, one for ZmED.spy and one for Extras.spy. However, you haven't got a null space returned. 1. The common possibilities for the lack of a viable route where there should be one are either missing reactions, or, when all the reactions are present, inconsistencies in metabolite definitions break the connectivity. Looking for dangling ('''orphan''') metabolites can point to both of these issues: {{{ m.sm.OrphanMets() }}} 1. Fix the problems. To be continued ... |
Practical 5
Building a model from !MetaCyc
Our aim is to construct a model of the Entner-Doudoroff pathway of glycolysis in the natural ethanol-fermenting organism Zymomonas mobilis. Later we will use this as a basis to explore whether the substrate range of this organism could be expanded by metabolic engineering. For some background to this, you can find two articles here and here.
For this, we will use the ScrumPy module PyoCyc to extract the required reaction equations from a local copy of the MetaCyc database, starting from a list of the enzyme EC numbers. We will write the reactions into a ScrumPy file, which can then be loaded into ScrumPy and investigated. Of course, this automatically-generated model will not immediately work, for reasons such as different identifiers being used for the same metabolite in different reactions. In addition, the reaction list will contain reactions that will not take place in connection with the Entner-Doudoroff pathway because their substrates are not available in the cell.
Your task is to get the model to work so there is a viable route from glucose to ethanol, and to condense it so that only relevant reactions are present.
Step 1
Download, by right-clicking on its link, the ScrumPy file Extras.spy and save it in the directory you are going to use for this exercise.
- Open the file with a text editor. Note that there are some generic components of the model here that we are giving you as a starting point:
- A statement that WATER and PROTONS are regarded as external, freely-available species. Balancing every last PROTON is hard, so we're not going to struggle with that yet.
- A set of transporter definitions that state that glucose (GLC), ethanol (ETOH) and carbon dioxide can exchange between the metabolism and the environment.
- A generic ATPase reaction to represent the total of the cell's maintenance energy requirement.
Two reaction definitions that cannot be retrieved from their EC numbers in the MetaCyc data files, even though they are present.
Start ScrumPy in the same directory as Extras.spy.
Step 2
Open PyoCyc and load the MetaCyc database by typing the following in your ScrumPy window:
from Bioinf import PyoCyc db = PyoCyc.Organism()
Note that though you've loaded the generic MetaCyc, you could in principal load any BioCyc format organism database.
- Copy this list of EC numbers for the Entner-Doudoroff pathway:
ecs=['EC-2.7.1.2', 'EC-3.1.1.31', 'EC-4.2.1.12', EC-4.1.2.14,'EC-1.1.1.44', 'EC-4.1.2.14', 'EC-1.2.1.12', 'EC-2.7.2.3', 'EC-5.4.2.11', 'EC-4.2.1.11', 'EC-2.7.1.40', 'EC-4.1.1.1', 'EC-1.1.1.1']
- You can see the set of reactions associated with each EC number with the following code:
for e in ecs: for r in db[e]: print e, "\n", r.AsScrumPy()
Here, each EC number in turn is used as a key, e into the database, which returns a set of reaction records. The method AsScrumPy formats the record as required for the input file.
- You need to generate an input file though, so enter the following:
spy=open("ZmED.spy","w") spy.write('# Entner Duodoroff pathway\nStructural()\nInclude(Extras.spy)\n') for e in ecs: str = "# " + e +"\n" for r in db[e]: spy.write(str) spy.write(r.AsScrumPy()) spy.close()
After opening the file, ZmED.spy, the first write statement puts the spy file header in, along with the Include directive that will load Extras.spy. Then for each EC number, a comment is inserted giving the EC number, since this often doesn't appear in the reaction name.
Step 3
- Load the model file and see if there is a potential pathway through it by calculating the null space of the stoichiometry matrix:
m = ScrumPy.Model("ZmED.spy") ns = m.sm.NullSpace() ns
Two windows should have opened, one for ZmED.spy and one for Extras.spy. However, you haven't got a null space returned. The common possibilities for the lack of a viable route where there should be one are either missing reactions, or, when all the reactions are present, inconsistencies in metabolite definitions break the connectivity. Looking for dangling (orphan) metabolites can point to both of these issues:
m.sm.OrphanMets()
- Fix the problems. To be continued ...