CobraPy example notebook

Let's start with a small example where we will use cobrapy to analyze the Recon 2 model a bit.

We begin by importing the cobrapy package and checking the version.


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 [ ]: