In [1]:
import cobra
cobra.version.get_version()
Out[1]:
'0.5.0b2'
Okay, in order to analyze Recon 2 we first have to actually download Recon 2. The notebook allows us to use normal bash command line commands by prefixing them with "!".
In [2]:
!wget http://www.ebi.ac.uk/biomodels-main/download?mid=MODEL1603150001 -O recon2.2.xml
--2016-09-30 18:10:50-- http://www.ebi.ac.uk/biomodels-main/download?mid=MODEL1603150001
Resolving www.ebi.ac.uk (www.ebi.ac.uk)... 193.62.193.80
Connecting to www.ebi.ac.uk (www.ebi.ac.uk)|193.62.193.80|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/sbml+xml]
Saving to: ‘recon2.2.xml’
recon2.2.xml [ <=> ] 22.72M 1.52MB/s in 12s
2016-09-30 18:11:02 (1.86 MB/s) - ‘recon2.2.xml’ saved [23827124]
Reading the model into cobrapy is quite simple. The cobra module contains a submodule io that can read models from several formats such as SBML, JSON, COBRA Matlab, etc.
In [3]:
recon2 = cobra.io.read_sbml_model("recon2.2.xml")
cobra/io/sbml.py:205 UserWarning: M_h_x appears as a reactant and product FAOXC220200x
We get a warning that there is one reaction that declares the same metabolite as product and substrate which is bad practice but not really an error.
recon2 is now a CobraPy model.
In [4]:
recon2
Out[4]:
<Model MODEL1603150001 at 0x7fbbd8263978>
That means it has several associated attributes, the most important ones being reactions and metabolites.
In [5]:
print("Reactions:", len(recon2.reactions))
print("Metabolites:", len(recon2.metabolites))
Reactions: 7785
Metabolites: 5324
Each of those have associated infos. To illustrate that we will select one of the reactions, the biomass reaction of Recon 2.
In [6]:
bm = recon2.reactions.get_by_id("biomass_reaction")
print(bm.build_reaction_string())
print(bm.notes)
0.014 biomass_DNA_c + 0.058 biomass_RNA_c + 0.071 biomass_carbohydrate_c + 0.097 biomass_lipid_c + 0.054 biomass_other_c + 0.706 biomass_protein_c -->
{'GENE ASSOCIATION': ['']}
To get the fluxes from a normal FBA we need to solve
$$\begin{align} &\max v_{bm}\\ s.t. \quad& v^i_{min} \leq v^i \leq v^i_{max}\\ &\mathbf{Sv} = \mathbf{0} \end{align}$$which can be achieved with the method optimize of the model.
In [7]:
recon2.optimize()
Out[7]:
<Solution 555.79 at 0x7fbbd788ebe0>
After running optimize each of the reactions now carries an attribute x containing the flux for that reaction, for instance:
In [8]:
print(bm.x)
555.7858784751152
We can use the (new) summary function to get an overview.
In [9]:
recon2.summary()
IN FLUXES OUT FLUXES OBJECTIVES
------------------------ ------------------------ --------------------
34hpp_e 1e+03 12HPET_e 1e+03 biomass_reac... 556
3mob_e 1e+03 23cump_e 1e+03
3mop_e 1e+03 2hb_e 1e+03
3ump_e 1e+03 3ivcrn_e 1e+03
4nph_e 1e+03 4abut_e 1e+03
5HPET_c 1e+03 5oxpro_e 1e+03
C04849_e 1e+03 CE1950_e 1e+03
CE2838_e 1e+03 CE2839_e 1e+03
CE4881_e 1e+03 CE4633_e 1e+03
CE5560_e 1e+03 CE5797_e 1e+03
CE5798_e 1e+03 HC00229_e 1e+03
HC00250_e 1e+03 HC00955_e 1e+03
HC01440_e 1e+03 HC01104_e 1e+03
HC01700_e 1e+03 HC01361_e 1e+03
HC02204_e 1e+03 HC01441_e 1e+03
ach_e 1e+03 HC01446_e 1e+03
ahdt_e 1e+03 HC02191_e 1e+03
cbasp_e 1e+03 HC02202_e 1e+03
cgly_e 1e+03 HC02203_e 1e+03
citr_L_e 1e+03 abt_e 1e+03
cmp_e 1e+03 ac_e 1e+03
creat_e 1e+03 acald_e 1e+03
crn_e 1e+03 acgam_e 1e+03
cyan_e 1e+03 adn_e 1e+03
cynt_e 1e+03 ala_D_e 1e+03
dad_2_e 1e+03 ala_L_e 1e+03
dcmp_e 1e+03 amp_e 1e+03
dgmp_e 1e+03 chol_e 1e+03
dha_e 1e+03 citr_L_c 1e+03
dpcoa_e 1e+03 co2_e 1e+03
dtmp_e 1e+03 ctp_e 1e+03
fald_e 1e+03 cys_L_e 1e+03
fe2_e 1e+03 dag_hs_e 1e+03
gal_e 1e+03 dgchol_e 1e+03
gln_L_e 1e+03 dgtp_e 1e+03
glu_L_e 1e+03 dhap_e 1e+03
gluala_e 1e+03 din_e 1e+03
glyc_e 1e+03 dttp_e 1e+03
h_e 1e+03 fe3_e 1e+03
hxan_e 1e+03 fum_e 1e+03
idp_e 1e+03 g1p_e 1e+03
lcts_e 1e+03 gchola_e 1e+03
leu_L_e 1e+03 glc_D_e 1e+03
leuktrD4_e 1e+03 gly_e 1e+03
leuktrF4_e 1e+03 gthrd_e 1e+03
mal_L_e 1e+03 gua_e 1e+03
malttr_e 1e+03 hdcea_e 1e+03
o2_e 1e+03 itp_e 1e+03
o2s_e 1e+03 lac_L_e 1e+03
ocdcea_e 1e+03 leuktrA4_e 1e+03
orn_e 1e+03 leuktrC4_e 1e+03
pi_e 1e+03 leuktrE4_e 1e+03
ppi_e 1e+03 lnlc_e 1e+03
prostgd2_e 1e+03 malthp_e 1e+03
prostge2_e 1e+03 meoh_e 1e+03
prostgi2_e 1e+03 mthgxl_e 1e+03
prpp_e 1e+03 nh4_e 1e+03
ps_hs_e 1e+03 no2_e 1e+03
q10_e 1e+03 orot_e 1e+03
retinol_e 1e+03 pan4p_e 1e+03
so3_e 1e+03 prostgf2_e 1e+03
tchola_e 1e+03 q10h2_e 1e+03
tdchola_e 1e+03 succ_e 1e+03
ttdca_e 1e+03 taur_c 1e+03
udpg_e 1e+03 taur_e 1e+03
utp_e 1e+03 tcynt_e 1e+03
xylt_e 1e+03 txa2_e 1e+03
strch1_e 962 ump_e 1e+03
hco3_e 911 ura_e 1e+03
alaala_e 899 strch2_e 962
ins_e 780 retn_e 961
ppa_e 740 duri_e 943
dgsn_e 688 tyr_L_e 911
thr_L_e 679 ile_L_e 841
lac_D_e 532 arg_L_e 800
slfcys_e 531 datp_n 763
thymd_e 512 2mcit_e 740
ade_e 505 so4_e 531
5mthf_e 504 thf_e 504
ahcys_e 495 h2o2_e 500
h2o_e 477 HC01444_e 466
etoh_e 441 cit_e 441
ddca_e 400 val_L_e 414
akg_e 396 biomass_prot... 392
pe_hs_e 368 glyc3p_e 314
asn_L_e 336 bhb_e 260
chtn_e 333 gsn_e 245
lys_L_e 329 datp_m 229
4mop_e 303 aicar_e 197
acac_e 260 pchol_hs_e 180
pro_L_e 229 deoxfvs_e 125
asp_L_e 196 hdca_e 103
phe_L_e 144 pmtcoa_r 103
tlacfvs_e 125 HC02161_e 79.4
thym_e 106 biomass_lipid_c 53.9
octdececoa_c 103 pyr_e 50.1
lgnc_e 97.6 biomass_carb... 39.5
met_L_e 85 lpchol_hs_e 38.9
HC02160_e 79.4 retfa_e 38.9
his_L_e 70.3 atp_e 38.2
adprib_e 68 biomass_RNA_c 32.2
dcsptn1_e 34.9 glyb_e 22.7
biomass_other_c 30 for_e 11.3
ser_L_e 25.8 Rtotal_e 9.72
inost_e 13 mag_hs_e 9.72
pglyc_hs_e 8.1 biomass_DNA_c 7.78
trp_L_e 7.4
That is a pretty long list. Usually we are probably more interested in certain pathway or metabolite. Let's try to find some infos about ATP. IDs of SBML model are often pretty convoluted strings so let us first find all metabolites that contain "atp" in their id.
In [10]:
ATPs = [m for m in recon2.metabolites if "atp" in m.id]
print(ATPs)
[<Metabolite atp_c at 0x7fbbd7822780>, <Metabolite atp_e at 0x7fbbd7822860>, <Metabolite atp_g at 0x7fbbd7822940>, <Metabolite atp_l at 0x7fbbd7822a90>, <Metabolite atp_m at 0x7fbbd7822ba8>, <Metabolite atp_n at 0x7fbbd7822cc0>, <Metabolite atp_r at 0x7fbbd7822dd8>, <Metabolite atp_x at 0x7fbbd7822ef0>, <Metabolite datp_c at 0x7fbbd77f70b8>, <Metabolite datp_m at 0x7fbbd77f7160>, <Metabolite datp_n at 0x7fbbd77f7208>]
Okay atp_c seems interesting so let's see a summary for it.
In [11]:
recon2.metabolites.atp_c.summary() # this is the same as recon2.metbaolites.get_by_id("atp_c").summary()
PRODUCING REACTIONS -- ATP(4-) (atp_c)
--------------------------------------
% FLUX RXN ID REACTION
--- ---------- ---------- --------------------------------------------------
5% 1e+03 ADK1 amp_c + atp_c <=> 2.0 adp_c
5% 1e+03 ATPtm adp_c + atp_m --> adp_m + atp_c
5% 1e+03 CKc atp_c + creat_c <=> adp_c + h_c + pcreat_c
5% 1e+03 DAGK_hs atp_c + dag_hs_c <=> adp_c + h_c + pa_hs_c
5% 1e+03 FACOAL1821 atp_c + coa_c + lnlc_c <=> amp_c + lnlccoa_c + ...
5% 1e+03 NDPK1 atp_c + gdp_c <=> adp_c + gtp_c
5% 1e+03 NDPK2 atp_c + udp_c <=> adp_c + utp_c
5% 1e+03 NDPK3 atp_c + cdp_c <=> adp_c + ctp_c
5% 1e+03 NDPK4 atp_c + dtdp_c <=> adp_c + dttp_c
5% 1e+03 NDPK5 atp_c + dgdp_c <=> adp_c + dgtp_c
5% 1e+03 NDPK6 atp_c + dudp_c <=> adp_c + dutp_c
5% 1e+03 PGK 3pg_c + atp_c <=> 13dpg_c + adp_c
5% 1e+03 RE2638C HC02191_c + atp_c + gly_c <=> CE5560_c + amp_c ...
5% 1e+03 r0345 atp_c + damp_c <=> adp_c + dadp_c
5% 1e+03 r0408 atp_c + s7p_c <=> HC00361_c + adp_c + h_c
5% 1e+03 r0812 amp_x + atp_c <=> amp_c + atp_x
5% 1e+03 r1488 atp_c + coa_c + hdcea_c <=> CE0852_c + amp_c + ...
5% 962 r1116 atp_c <=> atp_e
4% 721 NDPK7 atp_c + dcdp_c <=> adp_c + dctp_c
1% 222 NDPK8 atp_c + dadp_c <=> adp_c + datp_c
1% 197 GK1 atp_c + gmp_c <=> adp_c + gdp_c
CONSUMING REACTIONS -- ATP(4-) (atp_c)
--------------------------------------
% FLUX RXN ID REACTION
--- ---------- ---------- --------------------------------------------------
60% 1.15e+04 biomass... 0.716189801699717 ala_L_c + 0.508866855524079 a...
5% 1e+03 CYTK1 atp_c + cmp_c <=> adp_c + cdp_c
5% 1e+03 NDPK10 atp_c + didp_c <=> adp_c + ditp_c
5% 1e+03 NDPK9 atp_c + idp_c <=> adp_c + itp_c
5% 1e+03 UMPK atp_c + ump_c <=> adp_c + udp_c
5% 1e+03 r0860 adp_c + atp_x <=> adp_x + atp_c
5% 897 ATP2ter amp_r + atp_c <=> amp_c + atp_r
4% 767 CYTDK1 atp_c + cytd_c --> adp_c + cmp_c + h_c
2% 455 GALK atp_c + gal_c --> adp_c + gal1p_c + h_c
1% 204 ATPtx atp_c <=> atp_x
1% 153 HEX1 atp_c + glc_D_c --> adp_c + g6p_c + h_c
0% 34.9 FACOAL2251 atp_c + coa_c + dcsptn1_c <=> amp_c + dcsptn1co...
0% 29.8 biomass... 0.925862068965503 atp_c + 0.673034482758621 ctp...
0% 29.7 URIK1 atp_c + uri_c --> adp_c + h_c + ump_c
0% 26.9 CYTK2 atp_c + dcmp_c <=> adp_c + dcdp_c
0% 26.9 DURIK1 atp_c + duri_c --> adp_c + dump_c + h_c
Much more interesting. So 60% of ATP is consumed for biomass...
However, FBA solutions are not unique :( So let us run a parsimonous FBA now to get the most economic solution. Which means the model hast to be converted to irreversible form in order to solve:
$$\begin{align} &\min \sum_i v^i\\ s.t. \quad& 0 \leq v^i \leq v^i_{max}\\ &\mathbf{Sv} = \mathbf{0} \end{align}$$
In [12]:
from cobra.flux_analysis import optimize_minimal_flux as pFBA
?pFBA
In [13]:
recon2.solution = pFBA(recon2)
recon2.metabolites.atp_c.summary()
PRODUCING REACTIONS -- ATP(4-) (atp_c)
--------------------------------------
% FLUX RXN ID REACTION
--- ---------- ---------- --------------------------------------------------
8% 1e+03 ADK1 amp_c + atp_c <=> 2.0 adp_c
8% 1e+03 ATPtm adp_c + atp_m --> adp_m + atp_c
8% 1e+03 CKc atp_c + creat_c <=> adp_c + h_c + pcreat_c
8% 1e+03 NDPK1 atp_c + gdp_c <=> adp_c + gtp_c
8% 1e+03 NDPK6 atp_c + dudp_c <=> adp_c + dutp_c
8% 1e+03 PGK 3pg_c + atp_c <=> 13dpg_c + adp_c
8% 1e+03 PYK adp_c + h_c + pep_c --> atp_c + pyr_c
8% 1e+03 UMPK atp_c + ump_c <=> adp_c + udp_c
7% 886 DAGK_hs atp_c + dag_hs_c <=> adp_c + h_c + pa_hs_c
6% 735 FACOAL1821 atp_c + coa_c + lnlc_c <=> amp_c + lnlccoa_c + ...
5% 663 RE2637C HC02191_c + atp_c + taur_c <=> HC02192_c + amp_...
4% 552 NDPK5 atp_c + dgdp_c <=> adp_c + dgtp_c
3% 337 RE2638C HC02191_c + atp_c + gly_c <=> CE5560_c + amp_c ...
2% 307 CYTK1 atp_c + cmp_c <=> adp_c + cdp_c
2% 288 r0408 atp_c + s7p_c <=> HC00361_c + adp_c + h_c
2% 265 FACOAL1812 atp_c + coa_c + vacc_c <=> amp_c + octd11ecoa_c...
2% 265 r1488 atp_c + coa_c + hdcea_c <=> CE0852_c + amp_c + ...
1% 109 DNDPt13m atp_m + dadp_c --> atp_c + dadp_m
1% 108 NDPK3 atp_c + cdp_c <=> adp_c + ctp_c
0% 1.99 r1116 atp_c <=> atp_e
CONSUMING REACTIONS -- ATP(4-) (atp_c)
--------------------------------------
% FLUX RXN ID REACTION
--- ---------- ---------- --------------------------------------------------
92% 1.15e+04 biomass... 0.716189801699717 ala_L_c + 0.508866855524079 a...
4% 455 GALK atp_c + gal_c --> adp_c + gal1p_c + h_c
1% 153 HEX1 atp_c + glc_D_c --> adp_c + g6p_c + h_c
1% 124 FACOAL2251 atp_c + coa_c + dcsptn1_c <=> amp_c + dcsptn1co...
1% 73.6 FACOAL161 atp_c + coa_c + hdcea_c --> amp_c + hdcoa_c + p...
1% 68 DPMVDc 5dpmev_c + atp_c --> adp_c + co2_c + ipdp_c + pi_c
1% 68 MEVK1c atp_c + mev_R_c --> 5pmev_c + adp_c + h_c
1% 68 PMEVKc 5pmev_c + atp_c --> 5dpmev_c + adp_c
0% 29.8 biomass... 0.925862068965503 atp_c + 0.673034482758621 ctp...
So now 92% of ATP goes into biomass but that requires the consumption of Galactose.
Alternatively we can also use flux variability analysis to get the same info.
In [14]:
recon2.metabolites.atp_c.summary(fva=True)
PRODUCING REACTIONS -- ATP(4-) (atp_c)
--------------------------------------
% FLUX RANGE RXN ID REACTION
--- ---------- -------------------- ---------- ----------------------------------------
8% 1e+03 [1e+03, 1e+03] PGK 3pg_c + atp_c <=> 13dpg_c + adp_c
8% 1e+03 [268, 1e+03] ADK1 amp_c + atp_c <=> 2.0 adp_c
8% 1e+03 [0, 1e+03] ATPtm adp_c + atp_m --> adp_m + atp_c
8% 1e+03 [0, 1e+03] CKc atp_c + creat_c <=> adp_c + h_c + pcr...
8% 1e+03 [0, 1e+03] PYK adp_c + h_c + pep_c --> atp_c + pyr_c
8% 1e+03 [1e+03, -1e+03] NDPK1 atp_c + gdp_c <=> adp_c + gtp_c
8% 1e+03 [1e+03, -1e+03] NDPK6 atp_c + dudp_c <=> adp_c + dutp_c
8% 1e+03 [1e+03, -1e+03] UMPK atp_c + ump_c <=> adp_c + udp_c
7% 886 [-823, 1e+03] DAGK_hs atp_c + dag_hs_c <=> adp_c + h_c + pa...
6% 735 [1e+03, -1e+03] FACOAL1821 atp_c + coa_c + lnlc_c <=> amp_c + ln...
5% 663 [-828, 1e+03] RE2637C HC02191_c + atp_c + taur_c <=> HC0219...
4% 552 [1e+03, -1e+03] NDPK5 atp_c + dgdp_c <=> adp_c + dgtp_c
3% 337 [-828, 1e+03] RE2638C HC02191_c + atp_c + gly_c <=> CE5560_...
2% 307 [1e+03, -1e+03] CYTK1 atp_c + cmp_c <=> adp_c + cdp_c
2% 288 [1e+03, -1e+03] r0408 atp_c + s7p_c <=> HC00361_c + adp_c +...
2% 265 [1e+03, -1e+03] FACOAL1812 atp_c + coa_c + vacc_c <=> amp_c + oc...
2% 265 [1e+03, -1e+03] r1488 atp_c + coa_c + hdcea_c <=> CE0852_c ...
1% 109 [0, 1e+03] DNDPt13m atp_m + dadp_c --> atp_c + dadp_m
1% 108 [1e+03, -1e+03] NDPK3 atp_c + cdp_c <=> adp_c + ctp_c
0% 1.99 [-873, 1e+03] r1116 atp_c <=> atp_e
0% 0 [0, 1e+03] DNDPt19m atp_m + dudp_c --> atp_c + dudp_m
0% 0 [0, 1e+03] DNDPt20m atp_m + dtdp_c --> atp_c + dtdp_m
0% 0 [0, 1e+03] DNDPt2m atp_m + datp_c --> atp_c + datp_m
0% 0 [0, 1e+03] DNDPt31m atp_m + dcdp_c --> atp_c + dcdp_m
0% 0 [0, 1e+03] DNDPt32m atp_m + dgdp_c --> atp_c + dgdp_m
0% 0 [0, 1e+03] DNDPt43m atp_m + dutp_c --> atp_c + dutp_m
0% 0 [0, 1e+03] DNDPt44m atp_m + dttp_c --> atp_c + dttp_m
0% 0 [0, 1e+03] r0470 datp_c + h2o_c + trdox_c --> atp_c + ...
0% 0 [-353, 1e+03] r0578 atp_c + ptth_c <=> adp_c + h_c + pan4p_c
0% 0 [-1e+03, 1e+03] FACOAL2... atp_c + coa_c + tethex3_c <=> amp_c +...
0% 0 [-1e+03, 1e+03] FACOAL203 atp_c + coa_c + dlnlcg_c <=> amp_c + ...
0% 0 [-1e+03, 1e+03] FACOAL224 adrn_c + atp_c + coa_c <=> adrncoa_c ...
0% 0 [-1e+03, 1e+03] FACOAL2252 atp_c + clpnd_c + coa_c <=> amp_c + c...
0% 0 [-1e+03, 1e+03] FACOAL226 atp_c + coa_c + crvnc_c <=> amp_c + c...
0% 0 [-1e+03, 1e+03] r0860 adp_c + atp_x <=> adp_x + atp_c
0% 0 [-713, 980] GK1 atp_c + gmp_c <=> adp_c + gdp_c
0% 0 [0, 674] DNDPt57m atp_m + dgtp_c --> atp_c + dgtp_m
0% 0 [0, 521] DNDPt56m atp_m + dctp_c --> atp_c + dctp_m
CONSUMING REACTIONS -- ATP(4-) (atp_c)
--------------------------------------
% FLUX RANGE RXN ID REACTION
--- ---------- -------------------- ---------- ----------------------------------------
92% 1.15e+04 [1.15e+04, 1.15e+04] biomass... 0.716189801699717 ala_L_c + 0.5088668...
4% 455 [455, 1e+03] GALK atp_c + gal_c --> adp_c + gal1p_c + h_c
1% 153 [0, 1e+03] HEX1 atp_c + glc_D_c --> adp_c + g6p_c + h_c
1% 124 [-1e+03, 1e+03] FACOAL2251 atp_c + coa_c + dcsptn1_c <=> amp_c +...
1% 73.6 [0, 1e+03] FACOAL161 atp_c + coa_c + hdcea_c --> amp_c + h...
1% 68 [0, 68] DPMVDc 5dpmev_c + atp_c --> adp_c + co2_c + ...
1% 68 [0, 68] MEVK1c atp_c + mev_R_c --> 5pmev_c + adp_c +...
1% 68 [0, 68] PMEVKc 5pmev_c + atp_c --> 5dpmev_c + adp_c
0% 29.8 [29.8, 29.8] biomass... 0.925862068965503 atp_c + 0.673034482...
0% 0 [0, 1e+03] ADNK1 adn_c + atp_c --> adp_c + amp_c + h_c
0% 0 [0, 1e+03] ARACHDF... arachd_e + atp_c + coa_c --> amp_c + ...
0% 0 [0, 1e+03] CYTDK1 atp_c + cytd_c --> adp_c + cmp_c + h_c
0% 0 [0, 1e+03] DGK1 atp_c + dgmp_c <=> adp_c + dgdp_c
0% 0 [0, 1e+03] DTMPK atp_c + dtmp_c --> adp_c + dtdp_c
0% 0 [0, 1e+03] DURIK1 atp_c + duri_c --> adp_c + dump_c + h_c
0% 0 [0, 1e+03] FACOAL140i atp_c + coa_c + ttdca_c --> amp_c + p...
0% 0 [0, 1e+03] FACOAL160i atp_c + coa_c + hdca_c --> amp_c + pm...
0% 0 [0, 1e+03] FACOAL180i atp_c + coa_c + ocdca_c --> amp_c + p...
0% 0 [0, 1e+03] FACOAL1832 atp_c + coa_c + lnlnca_c <=> amp_c + ...
0% 0 [0, 1e+03] FACOAL2... atp_c + coa_c + tetpent3_c <=> amp_c ...
0% 0 [0, 1e+03] FACOAL204 arachd_c + atp_c + coa_c --> amp_c + ...
0% 0 [0, 1e+03] GLYK atp_c + glyc_c --> adp_c + glyc3p_c +...
0% 0 [0, 1e+03] INSK atp_c + ins_c --> adp_c + h_c + imp_c
0% 0 [0, 1e+03] KHK atp_c + fru_c --> adp_c + f1p_c + h_c
0% 0 [0, 1e+03] KHK2 atp_c + xylu_D_c --> adp_c + h_c + xu...
0% 0 [0, 1e+03] KHK3 atp_c + tagat_D_c --> adp_c + h_c + t...
0% 0 [0, 1e+03] LINOFATPtc atp_c + coa_c + lnlc_e --> amp_c + ln...
0% 0 [0, 1e+03] NICRNS atp_c + nicrns_c --> adp_c + h_c + ni...
0% 0 [0, 1e+03] OCDCAFA... atp_c + coa_c + ocdca_e --> amp_c + p...
0% 0 [0, 1e+03] OCT11EFATP atp_c + coa_c + vacc_e --> amp_c + oc...
0% 0 [0, 1e+03] PFK atp_c + f6p_c --> adp_c + fdp_c + h_c
0% 0 [0, 1e+03] PMTFATPtc atp_c + coa_c + hdca_e --> amp_c + pm...
0% 0 [0, 1e+03] PYDAMK atp_c + pydam_c --> adp_c + h_c + pya...
0% 0 [0, 1e+03] PYDXK atp_c + pydx_c --> adp_c + h_c + pydx...
0% 0 [0, 1e+03] PYDXNK atp_c + pydxn_c --> adp_c + h_c + pdx...
0% 0 [0, 1e+03] RBK atp_c + rib_D_c --> adp_c + h_c + r5p_c
0% 0 [0, 1e+03] RE3160C atp_c + coa_c + tetpent3_c <=> amp_c ...
0% 0 [0, 1e+03] RTOTALF... Rtotal_e + atp_c + coa_c + 4.0 h_c --...
0% 0 [0, 1e+03] R_group... Rtotal_c + atp_c + coa_c + 4.0 h_c --...
0% 0 [0, 1e+03] TMDPK atp_c + thm_c --> amp_c + h_c + thmpp_c
0% 0 [0, 1e+03] TMDPPK atp_c + thmpp_c --> adp_c + thmtp_c
0% 0 [0, 1e+03] TRIOK atp_c + glyald_c --> adp_c + g3p_c + h_c
0% 0 [0, 1e+03] TTDCAFA... atp_c + coa_c + ttdca_e --> amp_c + p...
0% 0 [0, 1e+03] URIK1 atp_c + uri_c --> adp_c + h_c + ump_c
0% 0 [0, 1e+03] XYLK atp_c + xylu_D_c --> adp_c + h_c + xu...
0% 0 [0, 1e+03] r0377 atp_c + dcyt_c --> adp_c + dcmp_c + h_c
0% 0 [0, 1e+03] r0456 atp_c + dgsn_c --> adp_c + dgmp_c + h_c
0% 0 [0, 1e+03] r0853 atp_c + pi_m --> atp_m + pi_c
0% 0 [-655, 1e+03] r0679 HC01231_c + atp_c <=> 4ppcys_c + adp_...
0% 0 [-1e+03, 1e+03] ATP2ter amp_r + atp_c <=> amp_c + atp_r
0% 0 [-1e+03, 1e+03] ATPtx atp_c <=> atp_x
0% 0 [-1e+03, 1e+03] CYTK2 atp_c + dcmp_c <=> adp_c + dcdp_c
0% 0 [-1e+03, 1e+03] FACOAL1813 atp_c + coa_c + elaid_c <=> amp_c + o...
0% 0 [-1e+03, 1e+03] FACOAL1831 atp_c + coa_c + lnlncg_c <=> amp_c + ...
0% 0 [-1e+03, 1e+03] FACOAL184 atp_c + coa_c + strdnc_c <=> amp_c + ...
0% 0 [-1e+03, 1e+03] FACOAL2042 atp_c + coa_c + eicostet_c <=> amp_c ...
0% 0 [-1e+03, 1e+03] FACOAL205 atp_c + coa_c + tmndnc_c <=> amp_c + ...
0% 0 [-1e+03, 1e+03] NDPK10 atp_c + didp_c <=> adp_c + ditp_c
0% 0 [-1e+03, 1e+03] NDPK2 atp_c + udp_c <=> adp_c + utp_c
0% 0 [-1e+03, 1e+03] NDPK4 atp_c + dtdp_c <=> adp_c + dttp_c
0% 0 [-1e+03, 1e+03] NDPK7 atp_c + dcdp_c <=> adp_c + dctp_c
0% 0 [-1e+03, 1e+03] NDPK8 atp_c + dadp_c <=> adp_c + datp_c
0% 0 [-1e+03, 1e+03] NDPK9 atp_c + idp_c <=> adp_c + itp_c
0% 0 [-1e+03, 1e+03] r0345 atp_c + damp_c <=> adp_c + dadp_c
0% 0 [-1e+03, 1e+03] r0812 amp_x + atp_c <=> amp_c + atp_x
0% 0 [0, 935] FACOAL120i atp_c + coa_c + ddca_c --> amp_c + dd...
0% 0 [0, 929] HEX4 atp_c + man_c --> adp_c + h_c + man6p_c
0% 0 [0, 929] HEX7 atp_c + fru_c --> adp_c + f6p_c + h_c
0% 0 [0, 919] ARACHFA... arach_e + atp_c + coa_c --> amp_c + a...
0% 0 [0, 919] FACOAL200 arach_c + atp_c + coa_c --> amp_c + a...
0% 0 [0, 918] ACGAMK acgam_c + atp_c --> acgam6p_c + adp_c...
0% 0 [0, 918] HEX10 atp_c + gam_c --> adp_c + gam6p_c + h_c
0% 0 [0, 833] 3HPVSCOAhc 3hpvs_c + atp_c + coa_c --> 3hpvscoa_...
0% 0 [0, 832] r1254 atp_c + coa_c + 4.0 fadh2_c + strdnc_...
0% 0 [0, 828] 2HATVLAChc 2hatvacid_c + atp_c --> 2hatvlac_c + ...
0% 0 [0, 828] 4HATVLAChc 4hatvacid_c + atp_c --> 4hatvlac_c + ...
0% 0 [0, 828] AACOAT acac_c + atp_c + coa_c --> aacoa_c + ...
0% 0 [0, 828] ACS ac_c + atp_c + coa_c --> accoa_c + am...
0% 0 [0, 828] ACS2 atp_c + coa_c + ppa_c --> amp_c + ppc...
0% 0 [0, 828] ADNCYC atp_c --> camp_c + ppi_c
0% 0 [0, 828] ADPACDAc adpac_c + atp_c + coa_c --> adpcoa_c ...
0% 0 [0, 828] ARGSS asp_L_c + atp_c + citr_L_c --> amp_c ...
0% 0 [0, 828] ATVLAChc atp_c + atvacid_c --> amp_c + atvlac_...
0% 0 [0, 828] BACCL atp_c + btn_c + h_c --> btamp_c + ppi_c
0% 0 [0, 828] C12DCACT atp_c + coa_c + dodecanac_c --> amp_c...
0% 0 [0, 828] DOCOSACT atp_c + coa_c + docosac_c --> amp_c +...
0% 0 [0, 828] FACOAL181i atp_c + coa_c + ocdcea_c --> amp_c + ...
0% 0 [0, 828] FACOAL191 atp_c + coa_c + prist_c --> amp_c + p...
0% 0 [0, 828] FACOAL240 atp_c + coa_c + lgnc_c --> amp_c + pp...
0% 0 [0, 828] FACOAL241 atp_c + coa_c + nrvnc_c --> amp_c + n...
0% 0 [0, 828] FMNAT atp_c + fmn_c + h_c --> fad_c + ppi_c
0% 0 [0, 828] LGNCFATPtc atp_c + coa_c + lgnc_e --> amp_c + pp...
0% 0 [0, 828] LVACLAChep atp_c + lvstacid_c --> amp_c + lvst_c...
0% 0 [0, 828] NNATr atp_c + h_c + nicrnt_c --> dnad_c + p...
0% 0 [0, 828] OCDCEAF... atp_c + coa_c + ocdcea_e --> amp_c + ...
0% 0 [0, 828] PRPPS atp_c + r5p_c --> amp_c + h_c + prpp_c
0% 0 [0, 828] PTPAT atp_c + h_c + pan4p_c --> dpcoa_c + p...
0% 0 [0, 828] SEBACACT atp_c + coa_c + sebacid_c --> amp_c +...
0% 0 [0, 828] SMVLAChep atp_c + smvacid_c --> amp_c + ppi_c +...
0% 0 [0, 828] SUBERICACT atp_c + coa_c + subeac_c --> amp_c + ...
0% 0 [0, 828] SUCCACT atp_c + coa_c + succ_c --> amp_c + pp...
0% 0 [0, 828] r0097 ac_c + atp_c + h_c --> HC01672_c + ppi_c
0% 0 [0, 828] r0283 ala_B_c + atp_c + his_L_c --> amp_c +...
0% 0 [0, 828] r0301 atp_c + nh4_c + xmp_c --> amp_c + gmp...
0% 0 [0, 828] r0318 atp_c + 2.0 h_c + ppa_c --> HC01668_c...
0% 0 [0, 828] r0465 4abut_c + atp_c + his_L_c --> HC00576...
0% 0 [0, 828] r0651 C02528_c + atp_c + coa_c --> amp_c + ...
0% 0 [0, 824] FACOAL100i atp_c + coa_c + dca_c --> amp_c + dca...
0% 0 [0, 819] ASNS1 asp_L_c + atp_c + gln_L_c + h2o_c -->...
0% 0 [0, 819] GMPS2 atp_c + gln_L_c + h2o_c + xmp_c --> a...
0% 0 [0, 819] NADS2 atp_c + dnad_c + gln_L_c + h2o_c --> ...
0% 0 [0, 798] FACOAL80i atp_c + coa_c + octa_c --> amp_c + oc...
0% 0 [0, 795] SLCBK1 atp_c + sphgn_c --> adp_c + h_c + sph...
0% 0 [0, 731] FACOAL60i atp_c + coa_c + hx_c --> amp_c + hxco...
0% 0 [0, 731] PACCOAL atp_c + coa_c + pac_c --> amp_c + pha...
0% 0 [0, 692] TMDK1 atp_c + thymd_c --> adp_c + dtmp_c + h_c
0% 0 [0, 655] PNTK atp_c + pnto_R_c --> 4ppan_c + adp_c ...
0% 0 [0, 655] PPNCL3 4ppan_c + atp_c + cys_L_c --> 4ppcys_...
0% 0 [0, 632] RBFK atp_c + ribflv_c --> adp_c + fmn_c + h_c
0% 0 [0, 632] RNMK atp_c + rnam_c --> adp_c + h_c + nmn_c
0% 0 [0, 625] FACOAL260 atp_c + coa_c + hexc_c <=> amp_c + he...
0% 0 [0, 608] DADNK atp_c + dad_2_c --> adp_c + damp_c + h_c
0% 0 [0, 506] FACOAL150 atp_c + coa_c + ptdca_c <=> amp_c + p...
0% 0 [0, 487] ATPtn atp_c <=> atp_n
0% 0 [0, 470] FACOAL170 atp_c + coa_c + hpdca_c <=> amp_c + h...
0% 0 [0, 417] CERK atp_c + crm_hs_c --> adp_c + crmp_hs_...
0% 0 [0, 389] CHOLK atp_c + chol_c --> adp_c + cholp_c + h_c
0% 0 [0, 389] ETHAK atp_c + etha_c --> adp_c + ethamp_c +...
0% 0 [0, 389] SPHK21c atp_c + sphings_c --> adp_c + h_c + s...
0% 0 [0, 353] DPCOAK atp_c + dpcoa_c --> adp_c + coa_c + h_c
0% 0 [632, -1e+03] NMNATr atp_c + h_c + nmn_c <=> nad_c + ppi_c
So there is quite some variation. Finally, let's create a plot of the fluxes in the individual pathways.
In [15]:
import pandas as pd
from numpy import abs, mean
fluxes = pd.DataFrame({"flux": [r.x for r in recon2.reactions],
"pathway": [r.subsystem for r in recon2.reactions]})
print(fluxes.head())
flux pathway
0 0.0 beta-Alanine metabolism
1 0.0 Vitamin D metabolism
2 0.0 Vitamin D metabolism
3 0.0 Vitamin D metabolism
4 0.0 Vitamin D metabolism
And now we use seaborn to plot the result.
In [16]:
%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns
fig = plt.figure(figsize=(5,25))
ax = fig.add_subplot(111)
sns.stripplot(x="flux", y="pathway", data=fluxes, ax=ax)
/opt/conda/lib/python3.4/site-packages/IPython/html.py:14 ShimWarning: The `IPython.html` package has been deprecated. You should import from `notebook` instead. `IPython.html.widgets` has moved to `ipywidgets`.
Out[16]:
<matplotlib.axes._subplots.AxesSubplot at 0x7fbbd8d68c88>
In [ ]:
Content source: cdiener/cobra-docker
Similar notebooks: