In [2]:
# This generates an SBML model for core acetogen metabolism according to Schuchman 2014
import cobra
from cobra import Model, Reaction, Metabolite
# Load the GEMM
M = cobra.io.read_sbml_model("../Data/models/c_ljungdahlii_nagarajan_2013.xml");
# Produce a .json model for use with Escher
cobra.io.save_json_model(M, "../Data/models/c_ljungdahlii_nagarajan_2013.json");
# save the default medium
model = M.copy()
### set the objective to ATPM without a lower bound
model.reactions.ATPM.lower_bound = 0
model.objective = model.reactions.ATPM
### set medium to CO2 + H2 in a 2:4 ratio as in Schuchmann
model.reactions.EX_fru_e.lower_bound = 0
model.reactions.EX_co2_e.lower_bound = -2
model.reactions.EX_h2_e.lower_bound = -4
model.reactions.EX_ac_e.lower_bound = 1
# turning on blocked reactions
model.reactions.ACACT1r.upper_bound = 1000
model.reactions.HACD1.upper_bound = 1000
DM_3hbcoa_c = Reaction('DM_3hbcoa_c')
model.add_reaction(DM_3hbcoa_c)
model.reactions.DM_3hbcoa_c.add_metabolites({'3hbcoa_c':-1,'coa_c':1})
### Adding new reactions according to (Schuchmann, 2014)
# Formate dehydrogenase with H2
FDHH2 = Reaction('FDHH2')
FDHH2.name = 'Formate dehydrogenase with H2 as electron donor'
model.add_reaction(FDHH2)
model.reactions.FDHH2.add_metabolites({'co2_c':-1,'h2_c':-1,'for_c':1,'h_c':1})
model.reactions.FDHH2.lower_bound = 0; model.reactions.FDHH2.upper_bound = 0;
print('New reaction FDHH2:',model.reactions.FDHH2.reaction)
# Formate dehydrogenase with H2
FDHFDNADPH = Reaction('FDHFDNADPH')
FDHFDNADPH.name = 'Formate dehydrogenase with Fd and NADPH as electron donor'
model.add_reaction(FDHFDNADPH)
model.reactions.FDHFDNADPH.add_metabolites({'co2_c':-2,'fdxr_4_2_c':-1,'nadph_c':-1,'h_c':-1,'for_c':2,'fdxo_4_2_c':1,'nadp_c':1})
model.reactions.FDHFDNADPH.lower_bound = 0; model.reactions.FDHFDNADPH.upper_bound = 0;
print('New reaction FDHFDNADPH:',model.reactions.FDHFDNADPH.reaction)
# alternative to MTHFD
MTHFD_alt = Reaction('MTHFD_alt')
MTHFD_alt.name = 'MTHFD with nadh'
model.add_reaction(MTHFD_alt)
model.reactions.MTHFD_alt.add_metabolites({'methf_c':-1,'nadh_c':-1,'mlthf_c':1,'nad_c':1})
model.reactions.MTHFD_alt.lower_bound = 0; model.reactions.MTHFD_alt.upper_bound = 0;
print('New reaction MTHFD_alt:',model.reactions.MTHFD_alt.reaction)
# alternative to MTHFR5
MTHFR5_alt = Reaction('MTHFR5_alt')
MTHFR5_alt.name = 'MTHFR5 with nadh only'
model.add_reaction(MTHFR5_alt)
model.reactions.MTHFR5_alt.add_metabolites({'mlthf_c':-1,'h_c':-2,'nadh_c':-1,'5mthf_c':1,'nad_c':1})
model.reactions.MTHFR5_alt.lower_bound = 0; model.reactions.MTHFR5_alt.upper_bound = 0;
print('New reaction MTHFR5_alt:',model.reactions.MTHFR5_alt.reaction)
# Write to SBML
cobra.io.write_sbml_model(model,'../Data/models/c_ljungdahlii_nagarajan_2013_update.xml')
# Produce a .json model for use with Escher
cobra.io.save_json_model(model, "../Data/models/c_ljungdahlii_nagarajan_2013_update.json");
In [ ]: