Loading Genome, Media, and Model Builder classes¶
[1]:
from modelseedpy import MSGenome, MSMedia, MSBuilder
Read faa genome file¶
split= defineds header splitter for gene_id and remainder of the header
[2]:
genome = MSGenome.from_fasta(
'../Model Reconstruction/GCF_000005845.2_ASM584v2_protein.faa',
split=' ')
[3]:
print('Number of features:', len(genome.features))
Number of features: 4285
Define glucose defined medium¶
[4]:
media = MSMedia.from_dict({
'cpd00027': 5, # Glucose uptake
'cpd00007': 10, # Oxygen uptake
'cpd00149': 1000,
'cpd00099': 1000,
'cpd00067': 1000,
'cpd00063': 1000,
'cpd00058': 1000,
'cpd00048': 1000,
'cpd00034': 1000,
'cpd00030': 1000,
'cpd00013': 1000,
'cpd00009': 1000,
'cpd00001': 1000,
'cpd00205': 1000,
'cpd00254': 1000,
'cpd00971': 1000,
'cpd10515': 1000,
'cpd10516': 1000,
'cpd00244': 1000,
})
Build model withe genome and media¶
media is optional, if not provided genome is gapfilled with complete medium
[5]:
model = MSBuilder.build_metabolic_model('SEED_model', genome, media)
model
[5]:
| Name | SEED_model |
| Memory address | 0x07f75fa6a2910 |
| Number of metabolites | 1460 |
| Number of reactions | 1781 |
| Number of groups | 0 |
| Objective expression | 1.0*bio1 - 1.0*bio1_reverse_b18f7 |
| Compartments | c0, e0 |
[16]:
cobra_model.metabolites.cpd00020_c0
[16]:
| Metabolite identifier | cpd00020_c0 |
| Name | Pyruvate_c0 |
| Memory address | 0x07f75fa6e0250 |
| Formula | C3H3O3 |
| Compartment | c0 |
| In 70 reaction(s) | rxn03909_c0, rxn00145_c0, rxn03884_c0, rxn08792_c0, rxn16114_c0, rxn01354_c0, rxn11274_c0, rxn00540_c0, rxn00473_c0, rxn05617_c0, rxn03841_c0, rxn05569_c0, rxn05655_c0, rxn00289_c0, rxn08043_c0,... |
[15]:
cobra_model.reactions.rxn00148_c0
[15]:
| Reaction identifier | rxn00148_c0 |
| Name | ATP:pyruvate 2-O-phosphotransferase_c0 |
| Memory address | 0x07f75fa8e1940 |
| Stoichiometry |
cpd00002_c0 + cpd00020_c0 --> cpd00008_c0 + cpd00061_c0 + cpd00067_c0 ATP_c0 + Pyruvate_c0 --> ADP_c0 + Phosphoenolpyruvate_c0 + H+_c0 |
| GPR | (NP_416191.1) or (NP_416368.1) |
| Lower bound | 0 |
| Upper bound | 1000 |
[6]:
print('medium size:', len(model.medium))
medium size: 170
Perform flux analysis¶
modelseedpy returns cobrapy model object any flux analysis method of cobrapy or compatible with cobrapy can be performed over a modelseedpy model
[7]:
growth = model.optimize()
print('complete medium growth', growth)
complete medium growth <Solution 140.651 at 0x7f764817fb20>
KBaseMediaPkg¶
Helper function to assign media object to model, alternative cobrapy model.medium can also be used
[8]:
from modelseedpy import KBaseMediaPkg
pkg = KBaseMediaPkg(model)
pkg.build_package(media)
[9]:
model.summary()
[9]:
Objective
1.0 bio1 = 0.7615585525394607
Uptake
| Metabolite | Reaction | Flux | C-Number | C-Flux |
|---|---|---|---|---|
| cpd00007_e0 | EX_cpd00007_e0 | 0.01603 | 0 | 0.00% |
| cpd00009_e0 | EX_cpd00009_e0 | 0.6188 | 0 | 0.00% |
| cpd00013_e0 | EX_cpd00013_e0 | 7.227 | 0 | 0.00% |
| cpd00027_e0 | EX_cpd00027_e0 | 5 | 6 | 100.00% |
| cpd00030_e0 | EX_cpd00030_e0 | 0.002137 | 0 | 0.00% |
| cpd00034_e0 | EX_cpd00034_e0 | 0.002137 | 0 | 0.00% |
| cpd00048_e0 | EX_cpd00048_e0 | 0.1724 | 0 | 0.00% |
| cpd00058_e0 | EX_cpd00058_e0 | 0.002137 | 0 | 0.00% |
| cpd00063_e0 | EX_cpd00063_e0 | 0.002137 | 0 | 0.00% |
| cpd00099_e0 | EX_cpd00099_e0 | 0.002137 | 0 | 0.00% |
| cpd00149_e0 | EX_cpd00149_e0 | 0.002137 | 0 | 0.00% |
| cpd00205_e0 | EX_cpd00205_e0 | 0.002137 | 0 | 0.00% |
| cpd00254_e0 | EX_cpd00254_e0 | 0.002137 | 0 | 0.00% |
| cpd10515_e0 | EX_cpd10515_e0 | 0.006411 | 0 | 0.00% |
| cpd10516_e0 | EX_cpd10516_e0 | 0.002137 | 0 | 0.00% |
| cpd17041_c0 | rxn13782_c0 | 0.7616 | 0 | 0.00% |
| cpd17042_c0 | rxn13783_c0 | 0.7616 | 0 | 0.00% |
| cpd17043_c0 | rxn13784_c0 | 0.7616 | 0 | 0.00% |
Secretion
| Metabolite | Reaction | Flux | C-Number | C-Flux |
|---|---|---|---|---|
| cpd00001_e0 | EX_cpd00001_e0 | -20.69 | 0 | 0.00% |
| cpd00075_e0 | EX_cpd00075_e0 | -0.6905 | 0 | 0.00% |
| cpd00116_e0 | EX_cpd00116_e0 | -0.002137 | 1 | 4.35% |
| cpd15378_e0 | EX_cpd15378_e0 | -0.002137 | 7 | 30.43% |
| cpd02701_c0 | SK_cpd02701_c0 | -0.002137 | 15 | 65.22% |
| cpd11416_c0 | SK_cpd11416_c0 | -0.7616 | 0 | 0.00% |
Save model to KBase¶
ModelSEEDpy-KBase (currently cobrakbase) allows KBase workspace interaction. The KBaseAPI allows fetch and save data from narrative.
kbase = KBaseAPI(TOKEN) requires a token that can be obtained from a login session of KBase. Token can be saved to ~/.kbase/token to avoid sharing token to python script.
[10]:
from cobrakbase import KBaseAPI
kbase = KBaseAPI()
cobrakbase 0.2.8
Save model to workspace 96314 this is the workspace id that can be found in the url example: https://narrative.kbase.us/narrative/96314
[11]:
kbase.save_object('SEED_model', 96314, 'KBaseFBA.FBAModel', model)
[11]:
[[2,
'SEED_model',
'KBaseFBA.FBAModel-14.0',
'2021-08-02T04:04:48+0000',
2,
'filipeliu',
96314,
'filipeliu:narrative_1627876602308',
'2216489998bda8f0eba69540db9648bf',
1610666,
{'Number gapgens': '0',
'Type': 'GenomeScale',
'Number gapfills': '0',
'Source ID': 'SEED_model',
'Number biomasses': '1',
'Number compartments': '2',
'Source': 'ModelSEEDpy',
'Number compounds': '1460',
'Number reactions': '1606',
'Name': 'SEED_model'}]]
[12]:
for o in kbase.list_objects(96314):
print(o[1], o[2])
Narrative.1627876602308 KBaseNarrative.Narrative-4.0
SEED_model KBaseFBA.FBAModel-14.0
[ ]: