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 identifiercpd00020_c0
NamePyruvate_c0
Memory address 0x07f75fa6e0250
FormulaC3H3O3
Compartmentc0
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 identifierrxn00148_c0
NameATP: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 bound0
Upper bound1000
[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
[ ]: