from cobra.flux_analysis.double_deletion import double_gene_deletion_fba, double_reaction_deletion_fba
from cobra.io import load_matlab_model, save_matlab_model
import pandas as pd
import os
os.chdir('/media/users/jmonk/helper/models/')
# Load the model
model = load_matlab_model('iJO1366.mat')
# Model is pre-defined with M9 media bounds - check its predicted growth rate:
model.optimize()
<Solution 0.98 at 0x7fbc6b4aa0d0>
LBMEDIA = {}
rxn_exchange_dict = {}
LBMEDIA['EX_glc_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_ala_DASH_L_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_arg_DASH_L_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_asp_DASH_L_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_cys_DASH_L_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_glu_DASH_L_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_gly_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_his_DASH_L_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_ile_DASH_L_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_leu_DASH_L_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_lys_DASH_L_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_met_DASH_L_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_pro_DASH_L_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_thr_DASH_L_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_tyr_DASH_L_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_phe_DASH_L_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_ser_DASH_L_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_trp_DASH_L_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_val_DASH_L_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_pnto_DASH_R_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_nac_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_na1_LPAREN_e_RPAREN_'] = -1000
LBMEDIA['EX_cl_LPAREN_e_RPAREN_'] = -1000
LBMEDIA['EX_so4_LPAREN_e_RPAREN_'] = -1000
LBMEDIA['EX_k_LPAREN_e_RPAREN_'] = -1000
LBMEDIA['EX_pi_LPAREN_e_RPAREN_'] = -1000
LBMEDIA['EX_ca2_LPAREN_e_RPAREN_'] = -1000
LBMEDIA['EX_mg2_LPAREN_e_RPAREN_'] = -1000
LBMEDIA['EX_zn2_LPAREN_e_RPAREN_'] = -1000
LBMEDIA['EX_aso3_LPAREN_e_RPAREN_'] = -1000
LBMEDIA['EX_cd2_LPAREN_e_RPAREN_'] = -1000
LBMEDIA['EX_hg2_LPAREN_e_RPAREN_'] = -1000
LBMEDIA['EX_h_LPAREN_e_RPAREN_'] = -100
LBMEDIA['EX_h2o_LPAREN_e_RPAREN_'] = -100
LBMEDIA['EX_o2_LPAREN_e_RPAREN_'] = -18.5
LBMEDIA['EX_ins_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_hxan_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_dcyt_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_thymd_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_ura_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_uri_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_dad_DASH_2_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_adn_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_co2_LPAREN_e_RPAREN_'] = -1000
LBMEDIA['EX_cobalt2_LPAREN_e_RPAREN_'] = -1000
LBMEDIA['EX_cu2_LPAREN_e_RPAREN_'] = -1000
LBMEDIA['EX_fe2_LPAREN_e_RPAREN_'] = -1000
LBMEDIA['EX_fe3_LPAREN_e_RPAREN_'] = -1000
LBMEDIA['EX_mn2_LPAREN_e_RPAREN_'] = -1000
LBMEDIA['EX_mobd_LPAREN_e_RPAREN_'] = -1000
LBMEDIA['EX_tungs_LPAREN_e_RPAREN_'] = -1000
LBMEDIA['EX_cbl1_LPAREN_e_RPAREN_'] = -0.01
LBMEDIA['EX_fru_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_gal_LPAREN_e_RPAREN_'] = -5
LBMEDIA['EX_ni2_LPAREN_e_RPAREN_'] = -1000.0
LBMEDIA['EX_sel_LPAREN_e_RPAREN_'] = -1000.0
LBMEDIA['EX_slnt_LPAREN_e_RPAREN_'] = -1000.0
for r in model.reactions:
if r.startswith('EX_'):
r.lower_bound = 0
if r.id in LBMEDIA.keys():
r.lower_bound = LBMEDIA[r.id]
# Check model predicted growth rate on LB media
model.optimize()
<Solution 3.50 at 0x7fbc6b504450>
dko_genes = double_gene_deletion_fba(model, return_frame=True)
dko_genes.head()
b0241 | b2215 | b1377 | b0929 | b4034 | b4035 | b4033 | b4032 | b4036 | b4213 | b2835 | b2836 | b3553 | b0446 | b1134 | b1009 | b0954 | b0180 | b0347 | b3580 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
b0241 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.364163 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 0 | 3.50329 | 3.50329 | ... |
b2215 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.364163 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 0 | 3.50329 | 3.50329 | ... |
b1377 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.364163 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 0 | 3.50329 | 3.50329 | ... |
b0929 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.364163 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 0 | 3.50329 | 3.50329 | ... |
b4034 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.364163 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 3.50329 | 0 | 3.50329 | 3.50329 | ... |
5 rows × 1367 columns
# Deleting RXNs (instead of genes)
dko_reactions = double_reaction_deletion_fba(model, return_frame=True)
dko_reactions.head()
DM_4CRSOL | DM_5DRIB | DM_AACALD | DM_AMOB | DM_MTHTHF | DM_OXAM | Ec_biomass_iJO1366_WT_53p95M | Ec_biomass_iJO1366_core_53p95M | EX_12ppd_DASH_R_LPAREN_e_RPAREN_ | EX_12ppd_DASH_S_LPAREN_e_RPAREN_ | EX_14glucan_LPAREN_e_RPAREN_ | EX_15dap_LPAREN_e_RPAREN_ | EX_23camp_LPAREN_e_RPAREN_ | EX_23ccmp_LPAREN_e_RPAREN_ | EX_23cgmp_LPAREN_e_RPAREN_ | EX_23cump_LPAREN_e_RPAREN_ | EX_23dappa_LPAREN_e_RPAREN_ | EX_26dap_DASH_M_LPAREN_e_RPAREN_ | EX_2ddglcn_LPAREN_e_RPAREN_ | EX_34dhpac_LPAREN_e_RPAREN_ | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DM_4CRSOL | 0 | 0 | 0.00000 | 0 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | ... |
DM_5DRIB | 0 | 0 | 0.00000 | 0 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | ... |
DM_AACALD | 0 | 0 | 3.50329 | 0 | 0.000000e+00 | 3.503290e+00 | 3.503290e+00 | 0 | 3.503290e+00 | 3.503290e+00 | 3.503290e+00 | 3.503290e+00 | 3.503290e+00 | 3.503290e+00 | 3.503290e+00 | 3.503290e+00 | 3.503290e+00 | 3.503290e+00 | 3.503290e+00 | 3.503290e+00 | ... |
DM_AMOB | 0 | 0 | 0.00000 | 0 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | ... |
DM_MTHTHF | 0 | 0 | 0.00000 | 0 | -4.510340e-13 | 3.165575e-12 | 3.165575e-12 | 0 | 3.165575e-12 | 3.165575e-12 | 3.165575e-12 | 3.165575e-12 | 3.165575e-12 | 3.165575e-12 | 3.165575e-12 | 3.165575e-12 | 3.165575e-12 | 7.035882e-25 | 3.165575e-12 | 3.165575e-12 | ... |
5 rows × 2583 columns
def run_all(dkos, org):
# get singly essential and synthetic lethal genes:
essential = []
syn_lethal = []
for i in dkos.index:
if sum(dkos.ix[i]) < 0.01:
essential.append(i)
else:
for g in dkos.ix[i].index:
if dkos[g].sum() > 0.01:
if dkos.ix[i][g] < 0.01:
syn_lethal.append(str(i)+','+str(g))
print len(essential), 'essential genes'
print len(syn_lethal), 'syn lethal genes'
return {'syn':syn_lethal,'essential':essential}
eco = run_all(dko_genes, 'eco')
146 essential genes 136 syn lethal genes
#print essential genes
eco['essential']
['b0180', 'b1093', 'b2323', 'b0159', 'b1094', 's0001', 'b2316', 'b3256', 'b0185', 'b3255', 'b1091', 'b3200', 'b3199', 'b3201', 'b4262', 'b4261', 'b3359', 'b1096', 'b3360', 'b1812', 'b3018', 'b0774', 'b3994', 'b0776', 'b0414', 'b3433', 'b0827', 'b3857', 'b0775', 'b3196', 'b3040', 'b1208', 'b2329', 'b4039', 'b0914', 'b0783', 'b0781', 'b2780', 'b3809', 'b0175', 'b3041', 'b0778', 'b3648', 'b0031', 'b2478', 'b2315', 'b3058', 'b3177', 'b3389', 'b1693', 'b0421', 'b0029', 'b0103', 'b1098', 'b0173', 'b0420', 'b1288', 'b0475', 'b0025', 'b3730', 'b0154', 'b3608', 'b1415', 'b3729', 'b2312', 'b3967', 'b1210', 'b2400', 'b2507', 'b2153', 'b1277', 'b4040', 'b3805', 'b2103', 'b0142', 'b2530', 'b3807', 'b0918', 'b3198', 'b1215', 'b0182', 'b0777', 'b1092', 'b2515', 'b2746', 'b2747', 'b2942', 'b0784', 'b3633', 'b0009', 'b1069', 'b0785', 'b0826', 'b3941', 'b2615', 'b1740', 'b0639', 'b3187', 'b0907', 'b3843', 'b2311', 'b0087', 'b0052', 'b2564', 'b2320', 'b3176', 'b3412', 'b3974', 'b0369', 'b3639', 'b3850', 'b4005', 'b2499', 'b2557', 'b0908', 'b4160', 'b2585', 'b3634', 'b1662', 'b0415', 'b2687', 'b2472', 'b3368', 'b0915', 'b0166', 'b3992', 'b0423', 'b4407', 'b3990', 'b0417', 'b3993', 'b3991', 'b0179', 'b0085', 'b0181', 'b3189', 'b0090', 'b0088', 'b0091', 'b3972', 'b0174', 'b0086', 'b0096', 'b3804', 'b3997', 'b0524']
# print synthetic lethal genes
eco['syn']
['b2836,b0954', 'b0954,b2836', 'b0954,b3846', 'b0954,b0452', 'b2708,b3197', 'b3197,b2708', 'b1849,b2500', 'b1090,b4041', 'b0474,b2518', 'b0474,b1207', 'b0474,b4094', 'b0411,b1131', 'b0411,b4177', 'b1131,b0411', 'b4177,b0411', 'b0381,b0092', 'b0092,b0381', 'b1190,b4053', 'b4053,b1190', 'b3059,b4041', 'b0674,b3744', 'b3744,b0674', 'b0131,b3258', 'b2574,b0931', 'b1592,b0155', 'b0155,b1592', 'b2436,b3867', 'b3867,b2436', 'b3846,b0954', 'b0910,b0171', 'b0048,b1606', 'b1606,b0048', 'b1865,b0099', 'b0099,b1865', 'b1238,b2827', 'b2927,b1779', 'b1779,b2927', 'b0452,b0954', 'b0684,b2895', 'b3924,b1378', 'b2895,b0684', 'b4041,b1090', 'b4041,b3059', 'b2500,b1849', 'b1297,b3870', 'b3870,b1297', 'b0238,b2508', 'b0339,b0126', 'b0126,b0339', 'b4013,b0199', 'b4013,b0197', 'b4013,b0198', 'b2868,b2508', 'b2867,b2508', 'b2866,b2508', 'b2529,b1680', 'b2529,b1679', 'b2529,b1681', 'b2529,b1682', 'b2529,b1683', 'b2529,b1684', 'b2528,b1680', 'b2528,b1679', 'b2528,b1681', 'b2528,b1682', 'b2528,b1683', 'b2528,b1684', 'b2508,b0238', 'b2508,b2868', 'b2508,b2867', 'b2508,b2866', 'b0199,b4013', 'b0199,b3939', 'b0197,b4013', 'b0197,b3939', 'b0198,b4013', 'b0198,b3939', 'b4019,b3829', 'b3829,b4019', 'b0765,b2424', 'b0765,b2423', 'b0765,b2422', 'b0763,b2424', 'b0763,b2423', 'b0763,b2422', 'b2424,b0765', 'b2424,b0763', 'b2424,b0764', 'b2423,b0765', 'b2423,b0763', 'b2423,b0764', 'b2422,b0765', 'b2422,b0763', 'b2422,b0764', 'b0764,b2424', 'b0764,b2423', 'b0764,b2422', 'b0134,b3258', 'b0931,b2574', 'b0931,b0109', 'b0931,b0750', 'b2518,b0474', 'b0109,b0931', 'b0133,b3258', 'b3258,b0131', 'b3258,b0134', 'b3258,b0133', 'b1378,b3924', 'b1207,b0474', 'b1207,b4094', 'b1692,b3281', 'b0750,b0931', 'b4094,b0474', 'b4094,b1207', 'b1680,b2529', 'b1680,b2528', 'b1679,b2529', 'b1679,b2528', 'b1681,b2529', 'b1681,b2528', 'b1682,b2529', 'b1682,b2528', 'b1683,b2529', 'b1683,b2528', 'b1684,b2529', 'b1684,b2528', 'b3281,b1692', 'b0388,b3390', 'b3390,b0388', 'b3939,b0199', 'b3939,b0197', 'b3939,b0198', 'b2935,b2465', 'b2465,b2935', 'b2827,b1238', 'b0171,b0910']