opencobra / cobrapy

COBRApy is a package for constraint-based modeling of metabolic networks.
http://opencobra.github.io/cobrapy/
GNU General Public License v2.0
461 stars 216 forks source link

model.summary() in readthedocs example throws `Infeasible` exception #1184

Closed irahorecka closed 2 years ago

irahorecka commented 2 years ago

Problem description

The model.summary() call example given in cobrapy.readthedocs throws an Infeasible exception.

Code Sample

import cobra.test

model = cobra.test.create_test_model('textbook')
model.summary()
---------------------------------------------------------------------------
Infeasible                                Traceback (most recent call last)
/var/folders/qk/0d5w_j9s6t995z3rw3hfgjmm0000gn/T/ipykernel_71663/2350765316.py in <module>
      7 model = cobra.test.create_test_model('textbook')
      8 model.optimize()
----> 9 model.summary()

~/.virtualenvs/roest-lab/lib/python3.8/site-packages/cobra/core/model.py in summary(self, solution, fva)
   1212         from cobra.summary import ModelSummary
   1213 
-> 1214         return ModelSummary(model=self, solution=solution, fva=fva)
   1215 
   1216     def __enter__(self):

~/.virtualenvs/roest-lab/lib/python3.8/site-packages/cobra/summary/model_summary.py in __init__(self, model, solution, fva, **kwargs)
     83         self.uptake_flux: Optional[pd.DataFrame] = None
     84         self.secretion_flux: Optional[pd.DataFrame] = None
---> 85         self._generate(model, solution, fva)
     86 
     87     def _generate(

~/.virtualenvs/roest-lab/lib/python3.8/site-packages/cobra/summary/model_summary.py in _generate(self, model, solution, fva)
    114         if solution is None:
    115             logger.info("Generating new parsimonious flux distribution.")
--> 116             solution = pfba(model)
    117 
    118         if isinstance(fva, float):

~/.virtualenvs/roest-lab/lib/python3.8/site-packages/cobra/flux_analysis/parsimonious.py in pfba(model, fraction_of_optimum, objective, reactions)
     93     with model as m:
     94         add_pfba(m, objective=objective, fraction_of_optimum=fraction_of_optimum)
---> 95         m.slim_optimize(error_value=None)
     96         solution = get_solution(m, reactions=reactions)
     97     return solution

~/.virtualenvs/roest-lab/lib/python3.8/site-packages/cobra/core/model.py in slim_optimize(self, error_value, message)
   1065             return error_value
   1066         else:
-> 1067             assert_optimal(self, message)
   1068 
   1069     def optimize(self, objective_sense=None, raise_error=False):

~/.virtualenvs/roest-lab/lib/python3.8/site-packages/cobra/util/solver.py in assert_optimal(model, message)
    588     if status != OPTIMAL:
    589         exception_cls = OPTLANG_TO_EXCEPTIONS_DICT.get(status, OptimizationError)
--> 590         raise exception_cls(f"{message} ({status}).")
    591 
    592 

Infeasible: None (infeasible).

Context

``` System Information ================== OS Darwin OS-release 21.2.0 Python 3.8.12 Package Versions ================ appdirs 1.4.4 black 21.12b0 bumpversion ; extra == 'development' not installed cobra 0.23.0 depinfo 1.7.0 diskcache 5.4.0 future 0.18.2 httpx 0.22.0 importlib-resources 5.4.0 isort ; extra == 'development' not installed numpy 1.22.1 optlang 1.5.2 pandas 1.4.1 pip 22.0.4 pydantic 1.9.0 python-libsbml 5.19.2 rich 12.0.0 ruamel.yaml 0.17.21 scipy 1.7.3 setuptools 59.5.0 swiglpk 5.0.4 tox ; extra == 'development' not installed wheel 0.36.2 ```
cdiener commented 2 years ago

Hmm, I can't really reproduce it on my end but often those things are issues with the solver. What does print(model.solver) give you? Do you have CPLEX or Gurobi installed?

irahorecka commented 2 years ago

Hey @cdiener - I was able to troubleshoot this after I declared the solver backend through the model.solver property (e.g., to glpk). And yes, I have Gurobi installed.

The output of print(model.solver) prior to troubleshooting is listed in the details section below. Thank you for your help.

import cobra.test

model = cobra.test.create_test_model("textbook")
model.solver = 'glpk'
model.summary()
Objective
=========
1.0 Biomass_Ecoli_core = 0.8739215069684306

Uptake
------
Metabolite    Reaction  Flux  C-Number  C-Flux
  glc__D_e EX_glc__D_e    10         6 100.00%
     nh4_e    EX_nh4_e 4.765         0   0.00%
      o2_e     EX_o2_e  21.8         0   0.00%
      pi_e     EX_pi_e 3.215         0   0.00%

Secretion
---------
Metabolite Reaction   Flux  C-Number  C-Flux
     co2_e EX_co2_e -22.81         1 100.00%
     h2o_e EX_h2o_e -29.18         0   0.00%
       h_e   EX_h_e -17.53         0   0.00%
``` \* Problem: Unknown *\ Maximize obj: + Biomass_Ecoli_core - Biomass_Ecoli_core_reverse_2cdba Subject To r_1: + GAPD - GAPD_reverse_459c1 + PGK - PGK_reverse_02696 = 0 r_2: - ENO + ENO_reverse_40eea - PGM + PGM_reverse_fc9af = 0 r_3: - 1.496 Biomass_Ecoli_core + 1.496 Biomass_Ecoli_core_reverse_2cdba - PGK + PGK_reverse_02696 + PGM - PGM_reverse_fc9af = 0 r_4: - GND + GND_reverse_eec5c + PGL - PGL_reverse_2bb6b = 0 r_5: + G6PDH2r - G6PDH2r_reverse_19ddf - PGL + PGL_reverse_2bb6b = 0 ac_c: - ACKr + ACKr_reverse_b49c0 + ACt2r - ACt2r_reverse_64e05 = 0 ac_e: - ACt2r + ACt2r_reverse_64e05 - EX_ac_e + EX_ac_e_reverse_0be96 = 0 acald_c: - ACALD + ACALD_reverse_fda2b + ACALDt - ACALDt_reverse_858fa + ALCD2x - ALCD2x_reverse_5d107 = 0 acald_e: - ACALDt + ACALDt_reverse_858fa - EX_acald_e + EX_acald_e_reverse_c096e = 0 accoa_c: + ACALD - ACALD_reverse_fda2b - 3.7478 Biomass_Ecoli_core + 3.7478 Biomass_Ecoli_core_reverse_2cdba - CS + CS_reverse_8d7e9 - MALS + MALS_reverse_d7382 + PDH - PDH_reverse_ca160 + PFL - PFL_reverse_af9ec - PTAr + PTAr_reverse_fce15 = 0 acon_C_c: + ACONTa - ACONTa_reverse_cad6d - ACONTb + ACONTb_reverse_e198a = 0 actp_c: + ACKr - ACKr_reverse_b49c0 + PTAr - PTAr_reverse_fce15 = 0 adp_c: + ACKr - ACKr_reverse_b49c0 + 2 ADK1 - 2 ADK1_reverse_a6f90 + ATPM - ATPM_reverse_5b752 - ATPS4r + ATPS4r_reverse_64306 + 59.81 Biomass_Ecoli_core - 59.81 Biomass_Ecoli_core_reverse_2cdba + GLNS - GLNS_reverse_59581 + GLNabc - GLNabc_reverse_1d82a + PFK - PFK_reverse_d24a6 + PGK - PGK_reverse_02696 + PPCK - PPCK_reverse_2557d - PYK + PYK_reverse_bc8ff + SUCOAS - SUCOAS_reverse_22958 = 0 akg_c: - AKGDH + AKGDH_reverse_08bdc + AKGt2r - AKGt2r_reverse_5d500 + 4.1182 Biomass_Ecoli_core - 4.1182 Biomass_Ecoli_core_reverse_2cdba + GLUDy - GLUDy_reverse_fa4e7 - GLUSy + GLUSy_reverse_6a00f + ICDHyr - ICDHyr_reverse_7f84b = 0 akg_e: - AKGt2r + AKGt2r_reverse_5d500 - EX_akg_e + EX_akg_e_reverse_70d85 = 0 amp_c: - ADK1 + ADK1_reverse_a6f90 + PPS - PPS_reverse_1c319 = 0 atp_c: - ACKr + ACKr_reverse_b49c0 - ADK1 + ADK1_reverse_a6f90 - ATPM + ATPM_reverse_5b752 + ATPS4r - ATPS4r_reverse_64306 - 59.81 Biomass_Ecoli_core + 59.81 Biomass_Ecoli_core_reverse_2cdba - GLNS + GLNS_reverse_59581 - GLNabc + GLNabc_reverse_1d82a - PFK + PFK_reverse_d24a6 - PGK + PGK_reverse_02696 - PPCK + PPCK_reverse_2557d - PPS + PPS_reverse_1c319 + PYK - PYK_reverse_bc8ff - SUCOAS + SUCOAS_reverse_22958 = 0 cit_c: - ACONTa + ACONTa_reverse_cad6d + CS - CS_reverse_8d7e9 = 0 co2_c: + AKGDH - AKGDH_reverse_08bdc + CO2t - CO2t_reverse_7c42f + GND - GND_reverse_eec5c + ICDHyr - ICDHyr_reverse_7f84b + ME1 - ME1_reverse_9736c + ME2 - ME2_reverse_2b0a2 + PDH - PDH_reverse_ca160 - PPC + PPC_reverse_e854a + PPCK - PPCK_reverse_2557d = 0 co2_e: - CO2t + CO2t_reverse_7c42f - EX_co2_e + EX_co2_e_reverse_d0466 = 0 coa_c: - ACALD + ACALD_reverse_fda2b - AKGDH + AKGDH_reverse_08bdc + 3.7478 Biomass_Ecoli_core - 3.7478 Biomass_Ecoli_core_reverse_2cdba + CS - CS_reverse_8d7e9 + MALS - MALS_reverse_d7382 - PDH + PDH_reverse_ca160 - PFL + PFL_reverse_af9ec + PTAr - PTAr_reverse_fce15 - SUCOAS + SUCOAS_reverse_22958 = 0 dhap_c: + FBA - FBA_reverse_84806 - TPI + TPI_reverse_c2c3b = 0 e4p_c: - 0.361 Biomass_Ecoli_core + 0.361 Biomass_Ecoli_core_reverse_2cdba + TALA - TALA_reverse_adfda - TKT2 + TKT2_reverse_7ebc7 = 0 etoh_c: - ALCD2x + ALCD2x_reverse_5d107 + ETOHt2r - ETOHt2r_reverse_b3d52 = 0 etoh_e: - ETOHt2r + ETOHt2r_reverse_b3d52 - EX_etoh_e + EX_etoh_e_reverse_cc64f = 0 f6p_c: - 0.0709 Biomass_Ecoli_core + 0.0709 Biomass_Ecoli_core_reverse_2cdba + FBP - FBP_reverse_bf2c9 + FRUpts2 - FRUpts2_reverse_58d3a - PFK + PFK_reverse_d24a6 + PGI - PGI_reverse_27efc + TALA - TALA_reverse_adfda + TKT2 - TKT2_reverse_7ebc7 = 0 fdp_c: - FBA + FBA_reverse_84806 - FBP + FBP_reverse_bf2c9 + PFK - PFK_reverse_d24a6 = 0 for_c: + FORt2 - FORt2_reverse_89839 - FORti + FORti_reverse_18c06 + PFL - PFL_reverse_af9ec = 0 for_e: - EX_for_e + EX_for_e_reverse_23269 - FORt2 + FORt2_reverse_89839 + FORti - FORti_reverse_18c06 = 0 fru_e: - EX_fru_e + EX_fru_e_reverse_c3828 - FRUpts2 + FRUpts2_reverse_58d3a = 0 fum_c: - FRD7 + FRD7_reverse_e0172 - FUM + FUM_reverse_d3642 + FUMt2_2 - FUMt2_2_reverse_7b4b6 + SUCDi - SUCDi_reverse_480f4 = 0 fum_e: - EX_fum_e + EX_fum_e_reverse_e3432 - FUMt2_2 + FUMt2_2_reverse_7b4b6 = 0 g3p_c: - 0.129 Biomass_Ecoli_core + 0.129 Biomass_Ecoli_core_reverse_2cdba + FBA - FBA_reverse_84806 - GAPD + GAPD_reverse_459c1 - TALA + TALA_reverse_adfda + TKT1 - TKT1_reverse_a1021 + TKT2 - TKT2_reverse_7ebc7 + TPI - TPI_reverse_c2c3b = 0 g6p_c: - 0.205 Biomass_Ecoli_core + 0.205 Biomass_Ecoli_core_reverse_2cdba - G6PDH2r + G6PDH2r_reverse_19ddf + GLCpts - GLCpts_reverse_a52ae - PGI + PGI_reverse_27efc = 0 glc__D_e: - EX_glc__D_e + EX_glc__D_e_reverse_af641 - GLCpts + GLCpts_reverse_a52ae = 0 gln__L_c: - 0.2557 Biomass_Ecoli_core + 0.2557 Biomass_Ecoli_core_reverse_2cdba + GLNS - GLNS_reverse_59581 + GLNabc - GLNabc_reverse_1d82a - GLUN + GLUN_reverse_4ccdb - GLUSy + GLUSy_reverse_6a00f = 0 gln__L_e: - EX_gln__L_e + EX_gln__L_e_reverse_6a1a1 - GLNabc + GLNabc_reverse_1d82a = 0 glu__L_c: - 4.9414 Biomass_Ecoli_core + 4.9414 Biomass_Ecoli_core_reverse_2cdba - GLNS + GLNS_reverse_59581 - GLUDy + GLUDy_reverse_fa4e7 + GLUN - GLUN_reverse_4ccdb + 2 GLUSy - 2 GLUSy_reverse_6a00f + GLUt2r - GLUt2r_reverse_3e88a = 0 glu__L_e: - EX_glu__L_e + EX_glu__L_e_reverse_42f6c - GLUt2r + GLUt2r_reverse_3e88a = 0 glx_c: + ICL - ICL_reverse_2f27e - MALS + MALS_reverse_d7382 = 0 h2o_c: + ACONTa - ACONTa_reverse_cad6d - ACONTb + ACONTb_reverse_e198a - ATPM + ATPM_reverse_5b752 + ATPS4r - ATPS4r_reverse_64306 - 59.81 Biomass_Ecoli_core + 59.81 Biomass_Ecoli_core_reverse_2cdba - CS + CS_reverse_8d7e9 + CYTBD - CYTBD_reverse_611ba + ENO - ENO_reverse_40eea - FBP + FBP_reverse_bf2c9 - FUM + FUM_reverse_d3642 - GLNabc + GLNabc_reverse_1d82a - GLUDy + GLUDy_reverse_fa4e7 - GLUN + GLUN_reverse_4ccdb + H2Ot - H2Ot_reverse_aa560 - MALS + MALS_reverse_d7382 - PGL + PGL_reverse_2bb6b - PPC + PPC_reverse_e854a - PPS + PPS_reverse_1c319 = 0 h2o_e: - EX_h2o_e + EX_h2o_e_reverse_3ced4 - H2Ot + H2Ot_reverse_aa560 = 0 h_c: + ACALD - ACALD_reverse_fda2b + ACt2r - ACt2r_reverse_64e05 + AKGt2r - AKGt2r_reverse_5d500 + ALCD2x - ALCD2x_reverse_5d107 + ATPM - ATPM_reverse_5b752 + 3 ATPS4r - 3 ATPS4r_reverse_64306 + 59.81 Biomass_Ecoli_core - 59.81 Biomass_Ecoli_core_reverse_2cdba + CS - CS_reverse_8d7e9 - 2 CYTBD + 2 CYTBD_reverse_611ba + D_LACt2 - D_LACt2_reverse_d0dc8 + ETOHt2r - ETOHt2r_reverse_b3d52 + FORt2 - FORt2_reverse_89839 + 2 FUMt2_2 - 2 FUMt2_2_reverse_7b4b6 + G6PDH2r - G6PDH2r_reverse_19ddf + GAPD - GAPD_reverse_459c1 + GLNS - GLNS_reverse_59581 + GLNabc - GLNabc_reverse_1d82a + GLUDy - GLUDy_reverse_fa4e7 - GLUSy + GLUSy_reverse_6a00f + GLUt2r - GLUt2r_reverse_3e88a + LDH_D - LDH_D_reverse_f8507 + MALS - MALS_reverse_d7382 + 2 MALt2_2 - 2 MALt2_2_reverse_a635f + MDH - MDH_reverse_ee52c - 4 NADH16 + 4 NADH16_reverse_330a2 + PFK - PFK_reverse_d24a6 + PGL - PGL_reverse_2bb6b + PIt2r - PIt2r_reverse_1cd61 + PPC - PPC_reverse_e854a + 2 PPS - 2 PPS_reverse_1c319 - PYK + PYK_reverse_bc8ff + PYRt2 - PYRt2_reverse_a6e24 + 2 SUCCt2_2 - 2 SUCCt2_2_reverse_206ca + SUCCt3 - SUCCt3_reverse_7d82a + 2 THD2 - 2 THD2_reverse_f65dd = 0 h_e: - ACt2r + ACt2r_reverse_64e05 - AKGt2r + AKGt2r_reverse_5d500 - 4 ATPS4r + 4 ATPS4r_reverse_64306 + 2 CYTBD - 2 CYTBD_reverse_611ba - D_LACt2 + D_LACt2_reverse_d0dc8 - ETOHt2r + ETOHt2r_reverse_b3d52 - EX_h_e + EX_h_e_reverse_3e0c5 - FORt2 + FORt2_reverse_89839 - 2 FUMt2_2 + 2 FUMt2_2_reverse_7b4b6 - GLUt2r + GLUt2r_reverse_3e88a - 2 MALt2_2 + 2 MALt2_2_reverse_a635f + 3 NADH16 - 3 NADH16_reverse_330a2 - PIt2r + PIt2r_reverse_1cd61 - PYRt2 + PYRt2_reverse_a6e24 - 2 SUCCt2_2 + 2 SUCCt2_2_reverse_206ca - SUCCt3 + SUCCt3_reverse_7d82a - 2 THD2 + 2 THD2_reverse_f65dd = 0 icit_c: + ACONTb - ACONTb_reverse_e198a - ICDHyr + ICDHyr_reverse_7f84b - ICL + ICL_reverse_2f27e = 0 lac__D_c: + D_LACt2 - D_LACt2_reverse_d0dc8 - LDH_D + LDH_D_reverse_f8507 = 0 lac__D_e: - D_LACt2 + D_LACt2_reverse_d0dc8 - EX_lac__D_e + EX_lac__D_e_reverse_f95b4 = 0 mal__L_c: + FUM - FUM_reverse_d3642 + MALS - MALS_reverse_d7382 + MALt2_2 - MALt2_2_reverse_a635f - MDH + MDH_reverse_ee52c - ME1 + ME1_reverse_9736c - ME2 + ME2_reverse_2b0a2 = 0 mal__L_e: - EX_mal__L_e + EX_mal__L_e_reverse_af154 - MALt2_2 + MALt2_2_reverse_a635f = 0 nad_c: - ACALD + ACALD_reverse_fda2b - AKGDH + AKGDH_reverse_08bdc - ALCD2x + ALCD2x_reverse_5d107 - 3.547 Biomass_Ecoli_core + 3.547 Biomass_Ecoli_core_reverse_2cdba - GAPD + GAPD_reverse_459c1 - LDH_D + LDH_D_reverse_f8507 - MDH + MDH_reverse_ee52c - ME1 + ME1_reverse_9736c + NADH16 - NADH16_reverse_330a2 - NADTRHD + NADTRHD_reverse_49725 - PDH + PDH_reverse_ca160 + THD2 - THD2_reverse_f65dd = 0 nadh_c: + ACALD - ACALD_reverse_fda2b + AKGDH - AKGDH_reverse_08bdc + ALCD2x - ALCD2x_reverse_5d107 + 3.547 Biomass_Ecoli_core - 3.547 Biomass_Ecoli_core_reverse_2cdba + GAPD - GAPD_reverse_459c1 + LDH_D - LDH_D_reverse_f8507 + MDH - MDH_reverse_ee52c + ME1 - ME1_reverse_9736c - NADH16 + NADH16_reverse_330a2 + NADTRHD - NADTRHD_reverse_49725 + PDH - PDH_reverse_ca160 - THD2 + THD2_reverse_f65dd = 0 nadp_c: + 13.0279 Biomass_Ecoli_core - 13.0279 Biomass_Ecoli_core_reverse_2cdba - G6PDH2r + G6PDH2r_reverse_19ddf - GLUDy + GLUDy_reverse_fa4e7 + GLUSy - GLUSy_reverse_6a00f - GND + GND_reverse_eec5c - ICDHyr + ICDHyr_reverse_7f84b - ME2 + ME2_reverse_2b0a2 + NADTRHD - NADTRHD_reverse_49725 - THD2 + THD2_reverse_f65dd = 0 nadph_c: - 13.0279 Biomass_Ecoli_core + 13.0279 Biomass_Ecoli_core_reverse_2cdba + G6PDH2r - G6PDH2r_reverse_19ddf + GLUDy - GLUDy_reverse_fa4e7 - GLUSy + GLUSy_reverse_6a00f + GND - GND_reverse_eec5c + ICDHyr - ICDHyr_reverse_7f84b + ME2 - ME2_reverse_2b0a2 - NADTRHD + NADTRHD_reverse_49725 + THD2 - THD2_reverse_f65dd = 0 nh4_c: - GLNS + GLNS_reverse_59581 + GLUDy - GLUDy_reverse_fa4e7 + GLUN - GLUN_reverse_4ccdb + NH4t - NH4t_reverse_551ee = 0 nh4_e: - EX_nh4_e + EX_nh4_e_reverse_f9cc6 - NH4t + NH4t_reverse_551ee = 0 o2_c: - 0.5 CYTBD + 0.5 CYTBD_reverse_611ba + O2t - O2t_reverse_4d957 = 0 o2_e: - EX_o2_e + EX_o2_e_reverse_efa94 - O2t + O2t_reverse_4d957 = 0 oaa_c: - 1.7867 Biomass_Ecoli_core + 1.7867 Biomass_Ecoli_core_reverse_2cdba - CS + CS_reverse_8d7e9 + MDH - MDH_reverse_ee52c + PPC - PPC_reverse_e854a - PPCK + PPCK_reverse_2557d = 0 pep_c: - 0.5191 Biomass_Ecoli_core + 0.5191 Biomass_Ecoli_core_reverse_2cdba + ENO - ENO_reverse_40eea - FRUpts2 + FRUpts2_reverse_58d3a - GLCpts + GLCpts_reverse_a52ae - PPC + PPC_reverse_e854a + PPCK - PPCK_reverse_2557d + PPS - PPS_reverse_1c319 - PYK + PYK_reverse_bc8ff = 0 pi_c: + ATPM - ATPM_reverse_5b752 - ATPS4r + ATPS4r_reverse_64306 + 59.81 Biomass_Ecoli_core - 59.81 Biomass_Ecoli_core_reverse_2cdba + FBP - FBP_reverse_bf2c9 - GAPD + GAPD_reverse_459c1 + GLNS - GLNS_reverse_59581 + GLNabc - GLNabc_reverse_1d82a + PIt2r - PIt2r_reverse_1cd61 + PPC - PPC_reverse_e854a + PPS - PPS_reverse_1c319 - PTAr + PTAr_reverse_fce15 + SUCOAS - SUCOAS_reverse_22958 = 0 pi_e: - EX_pi_e + EX_pi_e_reverse_1fb09 - PIt2r + PIt2r_reverse_1cd61 = 0 pyr_c: - 2.8328 Biomass_Ecoli_core + 2.8328 Biomass_Ecoli_core_reverse_2cdba + FRUpts2 - FRUpts2_reverse_58d3a + GLCpts - GLCpts_reverse_a52ae + LDH_D - LDH_D_reverse_f8507 + ME1 - ME1_reverse_9736c + ME2 - ME2_reverse_2b0a2 - PDH + PDH_reverse_ca160 - PFL + PFL_reverse_af9ec - PPS + PPS_reverse_1c319 + PYK - PYK_reverse_bc8ff + PYRt2 - PYRt2_reverse_a6e24 = 0 pyr_e: - EX_pyr_e + EX_pyr_e_reverse_1f6de - PYRt2 + PYRt2_reverse_a6e24 = 0 q8_c: + CYTBD - CYTBD_reverse_611ba + FRD7 - FRD7_reverse_e0172 - NADH16 + NADH16_reverse_330a2 - SUCDi + SUCDi_reverse_480f4 = 0 q8h2_c: - CYTBD + CYTBD_reverse_611ba - FRD7 + FRD7_reverse_e0172 + NADH16 - NADH16_reverse_330a2 + SUCDi - SUCDi_reverse_480f4 = 0 r5p_c: - 0.8977 Biomass_Ecoli_core + 0.8977 Biomass_Ecoli_core_reverse_2cdba - RPI + RPI_reverse_853a1 - TKT1 + TKT1_reverse_a1021 = 0 ru5p__D_c: + GND - GND_reverse_eec5c - RPE + RPE_reverse_a1b04 + RPI - RPI_reverse_853a1 = 0 s7p_c: - TALA + TALA_reverse_adfda + TKT1 - TKT1_reverse_a1021 = 0 succ_c: + FRD7 - FRD7_reverse_e0172 + ICL - ICL_reverse_2f27e + SUCCt2_2 - SUCCt2_2_reverse_206ca - SUCCt3 + SUCCt3_reverse_7d82a - SUCDi + SUCDi_reverse_480f4 - SUCOAS + SUCOAS_reverse_22958 = 0 succ_e: - EX_succ_e + EX_succ_e_reverse_a9039 - SUCCt2_2 + SUCCt2_2_reverse_206ca + SUCCt3 - SUCCt3_reverse_7d82a = 0 succoa_c: + AKGDH - AKGDH_reverse_08bdc + SUCOAS - SUCOAS_reverse_22958 = 0 xu5p__D_c: + RPE - RPE_reverse_a1b04 - TKT1 + TKT1_reverse_a1021 - TKT2 + TKT2_reverse_7ebc7 = 0 Bounds 0 <= ACALD <= 1000 0 <= ACALD_reverse_fda2b <= 1000 0 <= ACALDt <= 1000 0 <= ACALDt_reverse_858fa <= 1000 0 <= ACKr <= 1000 0 <= ACKr_reverse_b49c0 <= 1000 0 <= ACONTa <= 1000 0 <= ACONTa_reverse_cad6d <= 1000 0 <= ACONTb <= 1000 0 <= ACONTb_reverse_e198a <= 1000 0 <= ACt2r <= 1000 0 <= ACt2r_reverse_64e05 <= 1000 0 <= ADK1 <= 1000 0 <= ADK1_reverse_a6f90 <= 1000 0 <= AKGDH <= 1000 AKGDH_reverse_08bdc = 0 0 <= AKGt2r <= 1000 0 <= AKGt2r_reverse_5d500 <= 1000 0 <= ALCD2x <= 1000 0 <= ALCD2x_reverse_5d107 <= 1000 8.39 <= ATPM <= 1000 ATPM_reverse_5b752 = 0 0 <= ATPS4r <= 1000 0 <= ATPS4r_reverse_64306 <= 1000 0 <= Biomass_Ecoli_core <= 1000 Biomass_Ecoli_core_reverse_2cdba = 0 0 <= CO2t <= 1000 0 <= CO2t_reverse_7c42f <= 1000 0 <= CS <= 1000 CS_reverse_8d7e9 = 0 0 <= CYTBD <= 1000 CYTBD_reverse_611ba = 0 0 <= D_LACt2 <= 1000 0 <= D_LACt2_reverse_d0dc8 <= 1000 0 <= ENO <= 1000 0 <= ENO_reverse_40eea <= 1000 0 <= ETOHt2r <= 1000 0 <= ETOHt2r_reverse_b3d52 <= 1000 0 <= EX_ac_e <= 1000 EX_ac_e_reverse_0be96 = 0 0 <= EX_acald_e <= 1000 EX_acald_e_reverse_c096e = 0 0 <= EX_akg_e <= 1000 EX_akg_e_reverse_70d85 = 0 0 <= EX_co2_e <= 1000 0 <= EX_co2_e_reverse_d0466 <= 1000 0 <= EX_etoh_e <= 1000 EX_etoh_e_reverse_cc64f = 0 0 <= EX_for_e <= 1000 EX_for_e_reverse_23269 = 0 0 <= EX_fru_e <= 1000 EX_fru_e_reverse_c3828 = 0 0 <= EX_fum_e <= 1000 EX_fum_e_reverse_e3432 = 0 0 <= EX_glc__D_e <= 1000 0 <= EX_glc__D_e_reverse_af641 <= 10 0 <= EX_gln__L_e <= 1000 EX_gln__L_e_reverse_6a1a1 = 0 0 <= EX_glu__L_e <= 1000 EX_glu__L_e_reverse_42f6c = 0 0 <= EX_h_e <= 1000 0 <= EX_h_e_reverse_3e0c5 <= 1000 0 <= EX_h2o_e <= 1000 0 <= EX_h2o_e_reverse_3ced4 <= 1000 0 <= EX_lac__D_e <= 1000 EX_lac__D_e_reverse_f95b4 = 0 0 <= EX_mal__L_e <= 1000 EX_mal__L_e_reverse_af154 = 0 0 <= EX_nh4_e <= 1000 0 <= EX_nh4_e_reverse_f9cc6 <= 1000 0 <= EX_o2_e <= 1000 0 <= EX_o2_e_reverse_efa94 <= 1000 0 <= EX_pi_e <= 1000 0 <= EX_pi_e_reverse_1fb09 <= 1000 0 <= EX_pyr_e <= 1000 EX_pyr_e_reverse_1f6de = 0 0 <= EX_succ_e <= 1000 EX_succ_e_reverse_a9039 = 0 0 <= FBA <= 1000 0 <= FBA_reverse_84806 <= 1000 0 <= FBP <= 1000 FBP_reverse_bf2c9 = 0 0 <= FORt2 <= 1000 FORt2_reverse_89839 = 0 0 <= FORti <= 1000 FORti_reverse_18c06 = 0 0 <= FRD7 <= 1000 FRD7_reverse_e0172 = 0 0 <= FRUpts2 <= 1000 FRUpts2_reverse_58d3a = 0 0 <= FUM <= 1000 0 <= FUM_reverse_d3642 <= 1000 0 <= FUMt2_2 <= 1000 FUMt2_2_reverse_7b4b6 = 0 0 <= G6PDH2r <= 1000 0 <= G6PDH2r_reverse_19ddf <= 1000 0 <= GAPD <= 1000 0 <= GAPD_reverse_459c1 <= 1000 0 <= GLCpts <= 1000 GLCpts_reverse_a52ae = 0 0 <= GLNS <= 1000 GLNS_reverse_59581 = 0 0 <= GLNabc <= 1000 GLNabc_reverse_1d82a = 0 0 <= GLUDy <= 1000 0 <= GLUDy_reverse_fa4e7 <= 1000 0 <= GLUN <= 1000 GLUN_reverse_4ccdb = 0 0 <= GLUSy <= 1000 GLUSy_reverse_6a00f = 0 0 <= GLUt2r <= 1000 0 <= GLUt2r_reverse_3e88a <= 1000 0 <= GND <= 1000 GND_reverse_eec5c = 0 0 <= H2Ot <= 1000 0 <= H2Ot_reverse_aa560 <= 1000 0 <= ICDHyr <= 1000 0 <= ICDHyr_reverse_7f84b <= 1000 0 <= ICL <= 1000 ICL_reverse_2f27e = 0 0 <= LDH_D <= 1000 0 <= LDH_D_reverse_f8507 <= 1000 0 <= MALS <= 1000 MALS_reverse_d7382 = 0 0 <= MALt2_2 <= 1000 MALt2_2_reverse_a635f = 0 0 <= MDH <= 1000 0 <= MDH_reverse_ee52c <= 1000 0 <= ME1 <= 1000 ME1_reverse_9736c = 0 0 <= ME2 <= 1000 ME2_reverse_2b0a2 = 0 0 <= NADH16 <= 1000 NADH16_reverse_330a2 = 0 0 <= NADTRHD <= 1000 NADTRHD_reverse_49725 = 0 0 <= NH4t <= 1000 0 <= NH4t_reverse_551ee <= 1000 0 <= O2t <= 1000 0 <= O2t_reverse_4d957 <= 1000 0 <= PDH <= 1000 PDH_reverse_ca160 = 0 0 <= PFK <= 1000 PFK_reverse_d24a6 = 0 0 <= PFL <= 1000 PFL_reverse_af9ec = 0 0 <= PGI <= 1000 0 <= PGI_reverse_27efc <= 1000 0 <= PGK <= 1000 0 <= PGK_reverse_02696 <= 1000 0 <= PGL <= 1000 PGL_reverse_2bb6b = 0 0 <= PGM <= 1000 0 <= PGM_reverse_fc9af <= 1000 0 <= PIt2r <= 1000 0 <= PIt2r_reverse_1cd61 <= 1000 0 <= PPC <= 1000 PPC_reverse_e854a = 0 0 <= PPCK <= 1000 PPCK_reverse_2557d = 0 0 <= PPS <= 1000 PPS_reverse_1c319 = 0 0 <= PTAr <= 1000 0 <= PTAr_reverse_fce15 <= 1000 0 <= PYK <= 1000 PYK_reverse_bc8ff = 0 0 <= PYRt2 <= 1000 0 <= PYRt2_reverse_a6e24 <= 1000 0 <= RPE <= 1000 0 <= RPE_reverse_a1b04 <= 1000 0 <= RPI <= 1000 0 <= RPI_reverse_853a1 <= 1000 0 <= SUCCt2_2 <= 1000 SUCCt2_2_reverse_206ca = 0 0 <= SUCCt3 <= 1000 SUCCt3_reverse_7d82a = 0 0 <= SUCDi <= 1000 SUCDi_reverse_480f4 = 0 0 <= SUCOAS <= 1000 0 <= SUCOAS_reverse_22958 <= 1000 0 <= TALA <= 1000 0 <= TALA_reverse_adfda <= 1000 0 <= THD2 <= 1000 THD2_reverse_f65dd = 0 0 <= TKT1 <= 1000 0 <= TKT1_reverse_a1021 <= 1000 0 <= TKT2 <= 1000 0 <= TKT2_reverse_7ebc7 <= 1000 0 <= TPI <= 1000 0 <= TPI_reverse_c2c3b <= 1000 End ```
cdiener commented 2 years ago

Usually it will pick the solver backend for you. But you may see those problems if you have Gurobi installed and your license expired or has not been activated.

irahorecka commented 2 years ago

I see - I believe I may have not fully set up the Gurobi SDK. Is there a significant difference between Gurobi and GLPK in regards to performance / quality of the output model?

cdiener commented 2 years ago

For normal FBA no. Gurobi may be slightly more accurate for very large models but is also much slower in cobrapy. Gurobi can solve quadratic problems which GLPK can't if that is something you need.

irahorecka commented 2 years ago

Great - I'm still in the early stages of model development, so I can't imagine that I'll need to solve quadratic problems anytime soon. I appreciate the insight.

Midnighter commented 2 years ago

Gurobi is also much better at solving MIP problems than GLPK but I don't know how much better than CBC which is the other available open source MIP solver.

cdiener commented 2 years ago

CBC is currently broken in optlang, unfortunately.