In [1]:
import optlang

Cplex interface


In [2]:
from cplex import Cplex
from optlang.cplex_interface import Model

In [3]:
cplex_problem = Cplex()
cplex_problem.read("./tests/data/model.lp")
solver = Model(problem=cplex_problem)
print solver


\ENCODING=ISO-8859-1
\Problem name: ./tests/data/model.lp

Maximize
 obj: R_Biomass_Ecoli_core_w_GAM
Subject To
 M_13dpg_c:  R_PGK + R_GAPD  = 0
 M_2pg_c:    - R_PGM - R_ENO  = 0
 M_3pg_c:    - 1.496 R_Biomass_Ecoli_core_w_GAM - R_PGK + R_PGM  = 0
 M_6pgc_c:   R_PGL - R_GND  = 0
 M_6pgl_c:   - R_PGL + R_G6PDH2r  = 0
 M_ac_c:     R_ACt2r - R_ACKr  = 0
 M_ac_e:     - R_ACt2r - R_EX_ac_e  = 0
 M_acald_c:  R_ALCD2x + R_ACALDt - R_ACALD  = 0
 M_acald_e:  - R_ACALDt - R_EX_acald_e  = 0
 M_accoa_c:  - 3.7478 R_Biomass_Ecoli_core_w_GAM + R_ACALD - R_PTAr + R_PFL
             + R_PDH - R_MALS - R_CS  = 0
 M_acon_C_c: - R_ACONTb + R_ACONTa  = 0
 M_actp_c:   R_ACKr + R_PTAr  = 0
 M_adp_c:    59.81 R_Biomass_Ecoli_core_w_GAM + R_PGK + R_ACKr + R_SUCOAS
             - R_PYK + R_PPCK + R_PFK + R_GLNabc + R_GLNS - R_ATPS4r + R_ATPM
             + 2 R_ADK1  = 0
 M_akg_c:    4.1182 R_Biomass_Ecoli_core_w_GAM + R_ICDHyr - R_GLUSy + R_GLUDy
             + R_AKGt2r - R_AKGDH  = 0
 M_akg_e:    - R_AKGt2r - R_EX_akg_e  = 0
 M_amp_c:    - R_ADK1 + R_PPS  = 0
 M_atp_c:    - 59.81 R_Biomass_Ecoli_core_w_GAM - R_PGK - R_ACKr - R_SUCOAS
             + R_PYK - R_PPCK - R_PFK - R_GLNabc - R_GLNS + R_ATPS4r - R_ATPM
             - R_ADK1 - R_PPS  = 0
 M_cit_c:    R_CS - R_ACONTa  = 0
 M_co2_c:    R_GND + R_PDH + R_PPCK + R_ICDHyr + R_AKGDH - R_PPC + R_ME2
             + R_ME1 + R_CO2t  = 0
 M_co2_e:    - R_CO2t - R_EX_co2_e  = 0
 M_coa_c:    3.7478 R_Biomass_Ecoli_core_w_GAM - R_ACALD + R_PTAr - R_PFL
             - R_PDH + R_MALS + R_CS - R_SUCOAS - R_AKGDH  = 0
 M_dhap_c:   - R_TPI + R_FBA  = 0
 M_e4p_c:    - 0.361 R_Biomass_Ecoli_core_w_GAM - R_TKT2 + R_TALA  = 0
 M_etoh_c:   - R_ALCD2x + R_ETOHt2r  = 0
 M_etoh_e:   - R_ETOHt2r - R_EX_etoh_e  = 0
 M_f6p_c:    - 0.0709 R_Biomass_Ecoli_core_w_GAM - R_PFK + R_TKT2 + R_TALA
             + R_PGI + R_FRUpts2 + R_FBP  = 0
 M_fdp_c:    R_PFK - R_FBA - R_FBP  = 0
 M_for_c:    R_PFL - R_FORti + R_FORt2  = 0
 M_for_e:    R_FORti - R_FORt2 - R_EX_for_e  = 0
 M_fru_e:    - R_FRUpts2 - R_EX_fru_e  = 0
 M_fum_c:    R_SUCDi + R_FUMt2_2 - R_FUM - R_FRD7  = 0
 M_fum_e:    - R_FUMt2_2 - R_EX_fum_e  = 0
 M_g3p_c:    - 0.129 R_Biomass_Ecoli_core_w_GAM - R_GAPD + R_TPI + R_FBA
             + R_TKT2 - R_TALA + R_TKT1  = 0
 M_g6p_c:    - 0.205 R_Biomass_Ecoli_core_w_GAM - R_G6PDH2r - R_PGI + R_GLCpts
              = 0
 M_glc_D_e:  - R_GLCpts - R_EX_glc_e  = 0
 M_gln_L_c:  - 0.2557 R_Biomass_Ecoli_core_w_GAM + R_GLNabc + R_GLNS - R_GLUSy
             - R_GLUN  = 0
 M_gln_L_e:  - R_GLNabc - R_EX_gln_L_e  = 0
 M_glu_L_c:  - 4.9414 R_Biomass_Ecoli_core_w_GAM - R_GLNS + 2 R_GLUSy - R_GLUDy
             + R_GLUN + R_GLUt2r  = 0
 M_glu_L_e:  - R_GLUt2r - R_EX_glu_L_e  = 0
 M_glx_c:    - R_MALS + R_ICL  = 0
 M_h2o_c:    - 59.81 R_Biomass_Ecoli_core_w_GAM + R_ENO - R_PGL - R_MALS - R_CS
             - R_ACONTb + R_ACONTa - R_GLNabc + R_ATPS4r - R_ATPM - R_GLUDy
             - R_PPS - R_PPC - R_FBP - R_FUM - R_GLUN + R_H2Ot + R_CYTBD  = 0
 M_h2o_e:    - R_H2Ot - R_EX_h2o_e  = 0
 M_h_c:      59.81 R_Biomass_Ecoli_core_w_GAM + R_GAPD + R_PGL + R_G6PDH2r
             + R_ACt2r + R_ALCD2x + R_ACALD + R_MALS + R_CS - R_PYK + R_PFK
             + R_GLNabc + R_GLNS + 3 R_ATPS4r + R_ATPM - R_GLUSy + R_GLUDy
             + R_AKGt2r + 2 R_PPS + R_PPC + R_ETOHt2r + R_FORt2 + 2 R_FUMt2_2
             + R_GLUt2r - 2 R_CYTBD + 2 R_THD2 + R_SUCCt3 + 2 R_SUCCt2_2
             + R_PYRt2r + R_PIt2r - 4 R_NADH16 + R_MDH + 2 R_MALt2_2 + R_LDH_D
             + R_D_LACt2  = 0
 M_h_e:      - R_ACt2r - 4 R_ATPS4r - R_AKGt2r - R_ETOHt2r - R_FORt2
             - 2 R_FUMt2_2 - R_GLUt2r + 2 R_CYTBD - 2 R_THD2 - R_SUCCt3
             - 2 R_SUCCt2_2 - R_PYRt2r - R_PIt2r + 3 R_NADH16 - 2 R_MALt2_2
             - R_D_LACt2 - R_EX_h_e  = 0
 M_icit_c:   R_ACONTb - R_ICDHyr - R_ICL  = 0
 M_lac_D_c:  - R_LDH_D + R_D_LACt2  = 0
 M_lac_D_e:  - R_D_LACt2 - R_EX_lac_D_e  = 0
 M_mal_L_c:  R_MALS - R_ME2 - R_ME1 + R_FUM - R_MDH + R_MALt2_2  = 0
 M_mal_L_e:  - R_MALt2_2 - R_EX_mal_L_e  = 0
 M_nad_c:    - 3.547 R_Biomass_Ecoli_core_w_GAM - R_GAPD - R_ALCD2x - R_ACALD
             - R_PDH - R_AKGDH - R_ME1 + R_THD2 + R_NADH16 - R_MDH - R_LDH_D
             - R_NADTRHD  = 0
 M_nadh_c:   3.547 R_Biomass_Ecoli_core_w_GAM + R_GAPD + R_ALCD2x + R_ACALD
             + R_PDH + R_AKGDH + R_ME1 - R_THD2 - R_NADH16 + R_MDH + R_LDH_D
             + R_NADTRHD  = 0
 M_nadp_c:   13.0279 R_Biomass_Ecoli_core_w_GAM - R_GND - R_G6PDH2r - R_ICDHyr
             + R_GLUSy - R_GLUDy - R_ME2 - R_THD2 + R_NADTRHD  = 0
 M_nadph_c:  - 13.0279 R_Biomass_Ecoli_core_w_GAM + R_GND + R_G6PDH2r
             + R_ICDHyr - R_GLUSy + R_GLUDy + R_ME2 + R_THD2 - R_NADTRHD  = 0
 M_nh4_c:    - R_GLNS + R_GLUDy + R_GLUN + R_NH4t  = 0
 M_nh4_e:    - R_NH4t - R_EX_nh4_e  = 0
 M_o2_c:     - 0.5 R_CYTBD + R_O2t  = 0
 M_o2_e:     - R_O2t - R_EX_o2_e  = 0
 M_oaa_c:    - 1.7867 R_Biomass_Ecoli_core_w_GAM - R_CS - R_PPCK + R_PPC
             + R_MDH  = 0
 M_pep_c:    - 0.5191 R_Biomass_Ecoli_core_w_GAM + R_ENO - R_PYK + R_PPCK
             + R_PPS - R_PPC - R_FRUpts2 - R_GLCpts  = 0
 M_pi_c:     59.81 R_Biomass_Ecoli_core_w_GAM - R_GAPD - R_PTAr + R_SUCOAS
             + R_GLNabc + R_GLNS - R_ATPS4r + R_ATPM + R_PPS + R_PPC + R_FBP
             + R_PIt2r  = 0
 M_pi_e:     - R_PIt2r - R_EX_pi_e  = 0
 M_pyr_c:    - 2.8328 R_Biomass_Ecoli_core_w_GAM - R_PFL - R_PDH + R_PYK
             - R_PPS + R_ME2 + R_ME1 + R_FRUpts2 + R_GLCpts + R_PYRt2r
             + R_LDH_D  = 0
 M_pyr_e:    - R_PYRt2r - R_EX_pyr_e  = 0
 M_q8_c:     - R_SUCDi + R_FRD7 + R_CYTBD - R_NADH16  = 0
 M_q8h2_c:   R_SUCDi - R_FRD7 - R_CYTBD + R_NADH16  = 0
 M_r5p_c:    - 0.8977 R_Biomass_Ecoli_core_w_GAM - R_TKT1 - R_RPI  = 0
 M_ru5p_D_c: R_GND + R_RPI - R_RPE  = 0
 M_s7p_c:    - R_TALA + R_TKT1  = 0
 M_succ_c:   - R_SUCOAS - R_SUCDi + R_FRD7 + R_ICL - R_SUCCt3 + R_SUCCt2_2  = 0
 M_succ_e:   R_SUCCt3 - R_SUCCt2_2 - R_EX_succ_e  = 0
 M_succoa_c: R_SUCOAS + R_AKGDH  = 0
 M_xu5p_D_c: - R_TKT2 - R_TKT1 + R_RPE  = 0
Bounds
 0 <= R_Biomass_Ecoli_core_w_GAM <= 10000000
-10000000 <= R_PGK <= 10000000
-10000000 <= R_GAPD <= 10000000
-10000000 <= R_PGM <= 10000000
-10000000 <= R_ENO <= 10000000
 0 <= R_PGL <= 10000000
 0 <= R_GND <= 10000000
-10000000 <= R_G6PDH2r <= 10000000
-10000000 <= R_ACt2r <= 10000000
-10000000 <= R_ACKr <= 10000000
 0 <= R_EX_ac_e <= 10000000
-10000000 <= R_ALCD2x <= 10000000
-10000000 <= R_ACALDt <= 10000000
-10000000 <= R_ACALD <= 10000000
 0 <= R_EX_acald_e <= 10000000
-10000000 <= R_PTAr <= 10000000
 0 <= R_PFL <= 10000000
 0 <= R_PDH <= 10000000
 0 <= R_MALS <= 10000000
 0 <= R_CS <= 10000000
-10000000 <= R_ACONTb <= 10000000
-10000000 <= R_ACONTa <= 10000000
-10000000 <= R_SUCOAS <= 10000000
 0 <= R_PYK <= 10000000
 0 <= R_PPCK <= 10000000
 0 <= R_PFK <= 10000000
 0 <= R_GLNabc <= 10000000
 0 <= R_GLNS <= 10000000
-10000000 <= R_ATPS4r <= 10000000
 8.39 <= R_ATPM <= 10000000
-10000000 <= R_ADK1 <= 10000000
-10000000 <= R_ICDHyr <= 10000000
 0 <= R_GLUSy <= 10000000
-10000000 <= R_GLUDy <= 10000000
-10000000 <= R_AKGt2r <= 10000000
 0 <= R_AKGDH <= 10000000
 0 <= R_EX_akg_e <= 10000000
 0 <= R_PPS <= 10000000
 0 <= R_PPC <= 10000000
 0 <= R_ME2 <= 10000000
 0 <= R_ME1 <= 10000000
-10000000 <= R_CO2t <= 10000000
-10000000 <= R_EX_co2_e <= 10000000
-10000000 <= R_TPI <= 10000000
-10000000 <= R_FBA <= 10000000
-10000000 <= R_TKT2 <= 10000000
-10000000 <= R_TALA <= 10000000
-10000000 <= R_ETOHt2r <= 10000000
 0 <= R_EX_etoh_e <= 10000000
-10000000 <= R_PGI <= 10000000
 0 <= R_FRUpts2 <= 10000000
 0 <= R_FBP <= 10000000
 0 <= R_FORti <= 10000000
 0 <= R_FORt2 <= 10000000
 0 <= R_EX_for_e <= 10000000
 0 <= R_EX_fru_e <= 10000000
 0 <= R_SUCDi <= 10000000
 0 <= R_FUMt2_2 <= 10000000
-10000000 <= R_FUM <= 10000000
 0 <= R_FRD7 <= 10000000
 0 <= R_EX_fum_e <= 10000000
-10000000 <= R_TKT1 <= 10000000
 0 <= R_GLCpts <= 10000000
-10 <= R_EX_glc_e <= 10000000
 0 <= R_GLUN <= 10000000
 0 <= R_EX_gln_L_e <= 10000000
-10000000 <= R_GLUt2r <= 10000000
 0 <= R_EX_glu_L_e <= 10000000
 0 <= R_ICL <= 10000000
-10000000 <= R_H2Ot <= 10000000
 0 <= R_CYTBD <= 10000000
-10000000 <= R_EX_h2o_e <= 10000000
 0 <= R_THD2 <= 10000000
 0 <= R_SUCCt3 <= 10000000
 0 <= R_SUCCt2_2 <= 10000000
-10000000 <= R_PYRt2r <= 10000000
-10000000 <= R_PIt2r <= 10000000
 0 <= R_NADH16 <= 10000000
-10000000 <= R_MDH <= 10000000
 0 <= R_MALt2_2 <= 10000000
-10000000 <= R_LDH_D <= 10000000
-10000000 <= R_D_LACt2 <= 10000000
-10000000 <= R_EX_h_e <= 10000000
 0 <= R_EX_lac_D_e <= 10000000
 0 <= R_EX_mal_L_e <= 10000000
 0 <= R_NADTRHD <= 10000000
-10000000 <= R_NH4t <= 10000000
-10000000 <= R_EX_nh4_e <= 10000000
-10000000 <= R_O2t <= 10000000
-10000000 <= R_EX_o2_e <= 10000000
-10000000 <= R_EX_pi_e <= 10000000
 0 <= R_EX_pyr_e <= 10000000
-10000000 <= R_RPI <= 10000000
-10000000 <= R_RPE <= 10000000
 0 <= R_EX_succ_e <= 10000000
End


In [4]:
solver.optimize()


Tried aggregator 1 time.
LP Presolve eliminated 23 rows and 25 columns.
Aggregator did 17 substitutions.
Reduced LP has 32 rows, 53 columns, and 215 nonzeros.
Presolve time = 0.00 sec. (0.08 ticks)
Initializing dual steep norms . . .

Iteration log . . .
Iteration:     1   Dual objective     =       8250995.276305
Out[4]:
'optimal'

In [6]:
c = solver.constraints.values()[0]

In [12]:
c.expression.as_terms()


Out[12]:
([(1.0*R_PGK, ((1.0, 0.0), (1, 0), ())),
  (1.0*R_Biomass_Ecoli_core_w_GAM, ((1.0, 0.0), (0, 1), ()))],
 [-10000000.0 <= R_PGK <= 10000000.0,
  0.0 <= R_Biomass_Ecoli_core_w_GAM <= 10000000.0])

In [6]:
solver.constraints


Out[6]:
OrderedDict([('M_13dpg_c', M_13dpg_c: x == 0.0), ('M_2pg_c', M_2pg_c: x == 0.0), ('M_3pg_c', M_3pg_c: x == 0.0), ('M_6pgc_c', M_6pgc_c: x == 0.0), ('M_6pgl_c', M_6pgl_c: x == 0.0), ('M_ac_c', M_ac_c: x == 0.0), ('M_ac_e', M_ac_e: x == 0.0), ('M_acald_c', M_acald_c: x == 0.0), ('M_acald_e', M_acald_e: x == 0.0), ('M_accoa_c', M_accoa_c: x == 0.0), ('M_acon_C_c', M_acon_C_c: x == 0.0), ('M_actp_c', M_actp_c: x == 0.0), ('M_adp_c', M_adp_c: x == 0.0), ('M_akg_c', M_akg_c: x == 0.0), ('M_akg_e', M_akg_e: x == 0.0), ('M_amp_c', M_amp_c: x == 0.0), ('M_atp_c', M_atp_c: x == 0.0), ('M_cit_c', M_cit_c: x == 0.0), ('M_co2_c', M_co2_c: x == 0.0), ('M_co2_e', M_co2_e: x == 0.0), ('M_coa_c', M_coa_c: x == 0.0), ('M_dhap_c', M_dhap_c: x == 0.0), ('M_e4p_c', M_e4p_c: x == 0.0), ('M_etoh_c', M_etoh_c: x == 0.0), ('M_etoh_e', M_etoh_e: x == 0.0), ('M_f6p_c', M_f6p_c: x == 0.0), ('M_fdp_c', M_fdp_c: x == 0.0), ('M_for_c', M_for_c: x == 0.0), ('M_for_e', M_for_e: x == 0.0), ('M_fru_e', M_fru_e: x == 0.0), ('M_fum_c', M_fum_c: x == 0.0), ('M_fum_e', M_fum_e: x == 0.0), ('M_g3p_c', M_g3p_c: x == 0.0), ('M_g6p_c', M_g6p_c: x == 0.0), ('M_glc_D_e', M_glc_D_e: x == 0.0), ('M_gln_L_c', M_gln_L_c: x == 0.0), ('M_gln_L_e', M_gln_L_e: x == 0.0), ('M_glu_L_c', M_glu_L_c: x == 0.0), ('M_glu_L_e', M_glu_L_e: x == 0.0), ('M_glx_c', M_glx_c: x == 0.0), ('M_h2o_c', M_h2o_c: x == 0.0), ('M_h2o_e', M_h2o_e: x == 0.0), ('M_h_c', M_h_c: x == 0.0), ('M_h_e', M_h_e: x == 0.0), ('M_icit_c', M_icit_c: x == 0.0), ('M_lac_D_c', M_lac_D_c: x == 0.0), ('M_lac_D_e', M_lac_D_e: x == 0.0), ('M_mal_L_c', M_mal_L_c: x == 0.0), ('M_mal_L_e', M_mal_L_e: x == 0.0), ('M_nad_c', M_nad_c: x == 0.0), ('M_nadh_c', M_nadh_c: x == 0.0), ('M_nadp_c', M_nadp_c: x == 0.0), ('M_nadph_c', M_nadph_c: x == 0.0), ('M_nh4_c', M_nh4_c: x == 0.0), ('M_nh4_e', M_nh4_e: x == 0.0), ('M_o2_c', M_o2_c: x == 0.0), ('M_o2_e', M_o2_e: x == 0.0), ('M_oaa_c', M_oaa_c: x == 0.0), ('M_pep_c', M_pep_c: x == 0.0), ('M_pi_c', M_pi_c: x == 0.0), ('M_pi_e', M_pi_e: x == 0.0), ('M_pyr_c', M_pyr_c: x == 0.0), ('M_pyr_e', M_pyr_e: x == 0.0), ('M_q8_c', M_q8_c: x == 0.0), ('M_q8h2_c', M_q8h2_c: x == 0.0), ('M_r5p_c', M_r5p_c: x == 0.0), ('M_ru5p_D_c', M_ru5p_D_c: x == 0.0), ('M_s7p_c', M_s7p_c: x == 0.0), ('M_succ_c', M_succ_c: x == 0.0), ('M_succ_e', M_succ_e: x == 0.0), ('M_succoa_c', M_succoa_c: x == 0.0), ('M_xu5p_D_c', M_xu5p_D_c: x == 0.0)])

In [12]:
?cplex_problem.quadratic_constraints.add

In [ ]: