opencobra / optlang

optlang - sympy based mathematical programming language
http://optlang.readthedocs.org/
Apache License 2.0
253 stars 52 forks source link

several fixes to support upstream changes #253

Closed cdiener closed 1 year ago

cdiener commented 1 year ago

Some changes in sympy 1.12 broke the previous hack in place to make the optlang Symbol class unique. However, sympy now has the Dummy class for a Symbol where symbols with the same name are unique, so we now derive from that class. Symengine Symbols are unique by default, so no changes here.

Also fixes some warnings due to updates in jsonschema and scipy.

Midnighter commented 1 year ago

These changes seem rather small but potentially quite significant. Did you run the cobrapy test suite with this optlang version, for example?

cdiener commented 1 year ago

Yes of course (see below). I detected the issue in the cobrapy codebase which is currently broken for all new installs since it will pull in sympy 1.12.

For consistency we probably want to derive from the symengine Dummy class as well. Does not work, but symengine Symbols are unique by default anyways.

COBRAPY test output

``` platform linux -- Python 3.11.2, pytest-7.3.0, pluggy-1.0.0 benchmark: 4.0.0 (defaults: timer=time.perf_counter disable_gc=False min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=100000) rootdir: /home/cdiener/code/cobrapy configfile: tox.ini testpaths: tests plugins: cov-4.0.0, mock-3.10.0, anyio-3.6.2, benchmark-4.0.0 collected 639 items tests/test_core/test_configuration.py ...... [ 0%] tests/test_core/test_core_reaction.py ...........s.........................................x....... [ 10%] tests/test_core/test_dictlist.py ...................... [ 13%] tests/test_core/test_formula.py ..... [ 14%] tests/test_core/test_gene.py . [ 14%] tests/test_core/test_gpr.py .....................x..x............................................. [ 25%] tests/test_core/test_group.py .. [ 26%] tests/test_core/test_metabolite.py ....s..s. [ 27%] tests/test_core/test_model.py ...............................................................s. [ 37%] tests/test_core/test_solution.py ..s [ 38%] tests/test_flux_analysis/test_deletion.py ....s..... [ 39%] tests/test_flux_analysis/test_fastcc.py .... [ 40%] tests/test_flux_analysis/test_geometric.py .. [ 40%] tests/test_flux_analysis/test_moma.py . [ 40%] tests/test_flux_analysis/test_parsimonious.py .. [ 41%] tests/test_flux_analysis/test_reaction.py . [ 41%] tests/test_flux_analysis/test_room.py .... [ 41%] tests/test_flux_analysis/test_variability.py ....... [ 43%] tests/test_flux_analysis/test_deletion.py .......... [ 44%] tests/test_flux_analysis/test_fastcc.py .... [ 45%] tests/test_flux_analysis/test_geometric.py .. [ 45%] tests/test_flux_analysis/test_moma.py . [ 45%] tests/test_flux_analysis/test_parsimonious.py .. [ 46%] tests/test_flux_analysis/test_reaction.py . [ 46%] tests/test_flux_analysis/test_room.py .... [ 46%] tests/test_flux_analysis/test_variability.py ....... [ 47%] tests/test_flux_analysis/test_deletion.py ... [ 48%] tests/test_flux_analysis/test_moma.py . [ 48%] tests/test_flux_analysis/test_deletion.py ... [ 48%] tests/test_flux_analysis/test_moma.py . [ 49%] tests/test_flux_analysis/test_deletion.py ...... [ 50%] tests/test_flux_analysis/test_gapfilling.py . [ 50%] tests/test_flux_analysis/test_helpers.py ... [ 50%] tests/test_flux_analysis/test_loopless.py ....... [ 51%] tests/test_flux_analysis/test_phenotype_phase_plane.py ...... [ 52%] tests/test_flux_analysis/test_variability.py ....... [ 53%] tests/test_io/test_annotation.py .. [ 54%] tests/test_io/test_annotation_format.py .. [ 54%] tests/test_io/test_io_order.py ........................... [ 58%] tests/test_io/test_json.py .... [ 59%] tests/test_io/test_mat.py ............... [ 61%] tests/test_io/test_notes.py . [ 61%] tests/test_io/test_pickle.py .. [ 62%] tests/test_io/test_sbml.py .ssss............xxxx.x.x..s............. [ 68%] tests/test_io/test_yaml.py .x [ 68%] tests/test_io/test_web/test_load.py ....... [ 69%] tests/test_manipulation/test_annotate.py . [ 70%] tests/test_manipulation/test_delete.py ....... [ 71%] tests/test_manipulation/test_modify.py ... [ 71%] tests/test_manipulation/test_validate.py .. [ 71%] tests/test_medium/test_boundary_types.py ......... [ 73%] tests/test_medium/test_minimal_medium.py .......... [ 74%] tests/test_sampling/test_achr.py ...... [ 75%] tests/test_sampling/test_optgp.py ...... [ 76%] tests/test_sampling/test_sampling.py .......... [ 78%] tests/test_summary/test_metabolite_summary.py ................. [ 81%] tests/test_summary/test_model_summary.py ............... [ 83%] tests/test_summary/test_reaction_summary.py ........... [ 85%] tests/test_summary/test_metabolite_summary.py ................. [ 87%] tests/test_summary/test_model_summary.py ............... [ 90%] tests/test_summary/test_reaction_summary.py .................... [ 93%] tests/test_util/test_array.py .. [ 93%] tests/test_util/test_context.py ... [ 94%] tests/test_util/test_process_pool.py ............... [ 96%] tests/test_util/test_solver.py ................... [ 99%] tests/test_util/test_util.py .... [100%] ================================================== warnings summary =================================================== tests/test_core/test_gpr.py::test_and_gpr[a AND b-2-gpr_genes2-a and b] tests/test_core/test_gpr.py::test_gpr_equality_with_bolean_logic[a_and_b_strs] tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists0] tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists1] tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists2] tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists3] /home/cdiener/code/cobrapy/src/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule 'a AND b'. warn( tests/test_core/test_gpr.py::test_or_gpr[a OR b-2-gpr_genes2-a or b] tests/test_core/test_gpr.py::test_gpr_as_symbolic_boolean[a OR b-symbolic_gpr2] tests/test_core/test_gpr.py::test_gpr_equality_with_bolean_logic[a_or_b_strs] tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists0] tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists4] tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists5] tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists6] tests/test_core/test_gpr.py::test_gpr_from_symbolic[a OR b-symbolic_gpr5] /home/cdiener/code/cobrapy/src/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule 'a OR b'. warn( tests/test_core/test_gpr.py::test_complicated_gpr[(a OR b) AND c] tests/test_core/test_gpr.py::test_gpr_as_symbolic_boolean[(a OR b) AND c-symbolic_gpr6] tests/test_core/test_gpr.py::test_gpr_equality_with_bolean_logic[a_b_c_or_and_strs] tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists3] tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists6] tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists8] tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists9] tests/test_core/test_gpr.py::test_gpr_from_symbolic[(a OR b) AND c-symbolic_gpr9] /home/cdiener/code/cobrapy/src/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule '(a OR b) AND c'. warn( tests/test_core/test_gpr.py::test_gpr_that_needs_two_replacements /home/cdiener/code/cobrapy/src/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule '(591001.3.peg.1891 AND 591001.3.peg.1892 AND 591001.3.peg.1893)'. warn( tests/test_core/test_gpr.py::test_gpr_equality_with_bolean_logic[a_and_b_strs] tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists0] tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists1] tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists2] tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists3] /home/cdiener/code/cobrapy/src/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule 'b AND a'. warn( tests/test_core/test_gpr.py::test_gpr_equality_with_bolean_logic[a_or_b_strs] tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists0] tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists4] tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists5] tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists6] /home/cdiener/code/cobrapy/src/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule 'b OR a'. warn( tests/test_core/test_gpr.py::test_gpr_equality_with_bolean_logic[a_b_c_or_strs] tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists1] tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists4] tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists7] tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists8] /home/cdiener/code/cobrapy/src/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule 'a OR b or c'. warn( tests/test_core/test_gpr.py::test_gpr_equality_with_bolean_logic[a_b_c_and_strs] tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists2] tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists5] tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists7] tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists9] /home/cdiener/code/cobrapy/src/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule 'a AND b and c'. warn( tests/test_core/test_model.py::test_reaction_delete tests/test_core/test_model.py::test_reaction_delete /home/cdiener/code/cobrapy/src/cobra/core/reaction.py:879: DeprecationWarning: delete is deprecated. Use reaction.remove_from_model instead warn( tests/test_core/test_model.py::test_group_loss_of_elements tests/test_flux_analysis/test_gapfilling.py::test_gapfilling /home/cdiener/code/cobrapy/src/cobra/core/group.py:147: UserWarning: need to pass in a list warn("need to pass in a list") tests/test_core/test_model.py::test_change_objective tests/test_core/test_model.py::test_change_objective tests/test_core/test_model.py::test_change_objective /home/cdiener/code/cobrapy/src/cobra/core/reaction.py:761: DeprecationWarning: Please use reaction.flux instead. warn("Please use reaction.flux instead.", DeprecationWarning) tests/test_flux_analysis/test_variability.py: 4 warnings tests/test_io/test_json.py: 6 warnings tests/test_io/test_mat.py: 14 warnings tests/test_io/test_pickle.py: 2 warnings tests/test_io/test_sbml.py: 18 warnings tests/test_io/test_yaml.py: 2 warnings /home/cdiener/code/cobrapy/src/cobra/util/solver.py:554: UserWarning: Solver status is 'infeasible'. warn(f"Solver status is '{status}'.", UserWarning) tests/test_medium/test_minimal_medium.py: 226 warnings /home/cdiener/code/cobrapy/src/cobra/medium/minimal_medium.py:112: FutureWarning: The default dtype for empty Series will be 'object' instead of 'float64' in a future version. Specify a dtype explicitly to silence this warning. medium = pd.Series() tests/test_util/test_process_pool.py::test_with_context /home/cdiener/code/cobrapy/src/cobra/util/process_pool.py:72: PytestMockWarning: Mocks returned by pytest-mock do not need to be used as context managers. The mocker fixture automatically undoes mocking at the end of a test. This warning can be ignored if it was triggered by mocking a context manager. https://pytest-mock.readthedocs.io/en/latest/remarks.html#usage-as-context-manager self._pool.__enter__() -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html -------------------------------------------------------------------------------------------------------------------------- benchmark: 46 tests -------------------------------------------------------------------------------------------------------------------------- Name (time in us) Min Max Mean StdDev Median IQR Outliers OPS Rounds Iterations ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- test_subtract_metabolite_benchmark[cplex] 2.2730 (1.0) 78.5040 (1.36) 2.9601 (1.0) 2.8491 (1.0) 2.6100 (1.0) 0.3670 (1.22) 63;491 337,829.3664 (1.0) 6871 1 test_subtract_metabolite_benchmark[glpk] 2.2900 (1.01) 57.7050 (1.0) 3.5356 (1.19) 2.8520 (1.00) 2.7390 (1.05) 1.8980 (6.33) 43;43 282,836.9565 (0.84) 5942 1 test_subtract_metabolite_benchmark[gurobi] 2.3290 (1.02) 63.7700 (1.11) 3.1993 (1.08) 3.4458 (1.21) 2.6300 (1.01) 0.3000 (1.0) 144;574 312,568.7619 (0.93) 5648 1 test_change_objective_benchmark[optlang-glpk] 156.5380 (68.87) 664.7540 (11.52) 176.9882 (59.79) 42.5324 (14.93) 159.8280 (61.24) 19.9048 (66.35) 524;635 5,650.0954 (0.02) 5915 1 test_change_objective_benchmark[optlang-cplex] 228.2670 (100.43) 357.6630 (6.20) 250.1128 (84.50) 41.2622 (14.48) 235.3340 (90.17) 14.2127 (47.38) 1;1 3,998.1964 (0.01) 9 1 test_achr_sample_benchmark 228.4730 (100.52) 1,857.7210 (32.19) 316.1245 (106.80) 100.8421 (35.39) 278.2500 (106.61) 125.1970 (417.32) 49;10 3,163.3102 (0.01) 1239 1 test_optgp_sample_benchmark 293.5240 (129.14) 1,156.3150 (20.04) 419.6221 (141.76) 127.7397 (44.84) 361.6650 (138.57) 255.3448 (851.15) 297;2 2,383.0967 (0.01) 1017 1 test_loopless_benchmark_after 895.1920 (393.84) 1,520.0860 (26.34) 979.5924 (330.94) 98.5002 (34.57) 942.7495 (361.21) 89.7175 (299.06) 32;22 1,020.8327 (0.00) 280 1 test_loopless_benchmark_before 4,291.9810 (>1000.0) 5,321.5760 (92.22) 4,775.1390 (>1000.0) 442.6668 (155.37) 4,746.3430 (>1000.0) 788.1070 (>1000.0) 2;0 209.4180 (0.00) 5 1 test_minimal_medium_mip_benchmark 4,779.9750 (>1000.0) 10,265.8640 (177.90) 5,600.8579 (>1000.0) 1,073.3567 (376.74) 5,129.2460 (>1000.0) 1,015.8490 (>1000.0) 19;12 178.5441 (0.00) 117 1 test_minimal_medium_linear_benchmark 4,856.9510 (>1000.0) 9,798.5620 (169.80) 5,267.6977 (>1000.0) 754.0356 (264.66) 5,012.4560 (>1000.0) 245.1690 (817.23) 9;10 189.8363 (0.00) 94 1 test_copy_benchmark[optlang-glpk] 10,949.9240 (>1000.0) 159,706.1910 (>1000.0) 15,328.7527 (>1000.0) 21,577.0079 (>1000.0) 11,933.0110 (>1000.0) 987.9535 (>1000.0) 2;4 65.2369 (0.00) 85 1 test_copy_benchmark[optlang-cplex] 11,867.5710 (>1000.0) 15,700.7830 (272.09) 12,652.8024 (>1000.0) 1,286.9860 (451.72) 12,216.3335 (>1000.0) 809.2270 (>1000.0) 1;1 79.0339 (0.00) 8 1 test_deepcopy_benchmark 17,399.9090 (>1000.0) 274,306.3380 (>1000.0) 28,303.6517 (>1000.0) 47,974.6607 (>1000.0) 18,347.2350 (>1000.0) 1,525.9495 (>1000.0) 2;9 35.3311 (0.00) 55 1 test_gpr_equality_benchmark 18,263.4310 (>1000.0) 22,959.5340 (397.88) 18,971.2169 (>1000.0) 850.8840 (298.66) 18,703.2810 (>1000.0) 611.2717 (>1000.0) 5;3 52.7114 (0.00) 39 1 test_single_reaction_deletion_benchmark[glpk] 19,135.1190 (>1000.0) 27,774.1960 (481.31) 21,055.7574 (>1000.0) 2,234.1324 (784.17) 20,026.1745 (>1000.0) 2,950.9105 (>1000.0) 7;2 47.4929 (0.00) 48 1 test_single_reaction_deletion_benchmark[cplex] 34,613.6610 (>1000.0) 44,777.1210 (775.97) 38,459.8504 (>1000.0) 2,696.9701 (946.62) 38,268.4290 (>1000.0) 4,006.4175 (>1000.0) 9;0 26.0011 (0.00) 27 1 test_fastcc_benchmark[glpk] 45,219.1600 (>1000.0) 184,253.3910 (>1000.0) 56,580.4319 (>1000.0) 31,061.9935 (>1000.0) 48,735.7220 (>1000.0) 3,710.7745 (>1000.0) 1;2 17.6740 (0.00) 19 1 test_add_metabolite_benchmark[gurobi] 45,227.2190 (>1000.0) 51,429.9610 (891.26) 46,651.8999 (>1000.0) 1,638.1660 (574.99) 46,160.8670 (>1000.0) 960.7075 (>1000.0) 3;3 21.4354 (0.00) 21 1 test_add_metabolite_benchmark[cplex] 45,441.8970 (>1000.0) 49,872.7060 (864.27) 46,657.7550 (>1000.0) 1,178.2725 (413.57) 46,155.5875 (>1000.0) 1,178.9170 (>1000.0) 3;2 21.4327 (0.00) 20 1 test_add_metabolite_benchmark[glpk] 45,531.0930 (>1000.0) 54,858.4050 (950.67) 48,436.6013 (>1000.0) 2,459.5272 (863.28) 47,608.3430 (>1000.0) 3,512.1542 (>1000.0) 6;0 20.6455 (0.00) 21 1 test_single_gene_deletion_fba_benchmark[glpk] 57,946.4560 (>1000.0) 65,197.2420 (>1000.0) 59,889.4096 (>1000.0) 1,723.7781 (605.04) 59,696.1610 (>1000.0) 944.9970 (>1000.0) 2;1 16.6974 (0.00) 14 1 test_fastcc_benchmark[cplex] 65,530.3630 (>1000.0) 79,340.1300 (>1000.0) 73,332.5892 (>1000.0) 5,733.3930 (>1000.0) 73,683.8060 (>1000.0) 9,578.3165 (>1000.0) 2;0 13.6365 (0.00) 5 1 test_single_gene_deletion_fba_benchmark[cplex] 74,741.5220 (>1000.0) 93,046.5640 (>1000.0) 80,652.9630 (>1000.0) 4,739.4670 (>1000.0) 79,644.6210 (>1000.0) 4,648.2065 (>1000.0) 5;1 12.3988 (0.00) 15 1 test_achr_init_benchmark 110,320.8050 (>1000.0) 144,835.3610 (>1000.0) 121,839.7591 (>1000.0) 9,810.5249 (>1000.0) 118,704.6685 (>1000.0) 9,672.1800 (>1000.0) 2;1 8.2075 (0.00) 10 1 test_single_gene_deletion_moma_benchmark[cplex] 139,440.7460 (>1000.0) 447,979.2560 (>1000.0) 195,053.8755 (>1000.0) 123,973.1178 (>1000.0) 145,174.3130 (>1000.0) 9,707.1010 (>1000.0) 1;1 5.1268 (0.00) 6 1 test_single_gene_deletion_linear_moma_benchmark[glpk] 141,958.6740 (>1000.0) 169,195.0460 (>1000.0) 150,135.4051 (>1000.0) 10,827.3642 (>1000.0) 143,809.8690 (>1000.0) 15,813.8713 (>1000.0) 1;0 6.6607 (0.00) 7 1 test_single_gene_deletion_linear_moma_benchmark[cplex] 148,408.4610 (>1000.0) 164,559.8960 (>1000.0) 156,106.7182 (>1000.0) 7,563.8421 (>1000.0) 156,119.8770 (>1000.0) 13,315.1460 (>1000.0) 2;0 6.4059 (0.00) 6 1 test_gpr_symbolism_benchmark 152,300.7510 (>1000.0) 283,989.6670 (>1000.0) 181,985.6136 (>1000.0) 45,812.3176 (>1000.0) 164,943.4270 (>1000.0) 17,312.2725 (>1000.0) 1;1 5.4949 (0.00) 7 1 test_optgp_init_benchmark 188,859.6280 (>1000.0) 239,205.0660 (>1000.0) 200,036.0473 (>1000.0) 19,398.2937 (>1000.0) 191,769.0315 (>1000.0) 6,226.7590 (>1000.0) 1;1 4.9991 (0.00) 6 1 test_pfba_benchmark[glpk] 192,301.5410 (>1000.0) 346,215.5360 (>1000.0) 232,594.1148 (>1000.0) 64,610.9460 (>1000.0) 201,482.6410 (>1000.0) 57,029.4848 (>1000.0) 1;1 4.2993 (0.00) 5 1 test_copy_benchmark_large_model[optlang-cplex] 199,325.9760 (>1000.0) 481,313.4240 (>1000.0) 347,846.3858 (>1000.0) 133,316.6030 (>1000.0) 416,888.3970 (>1000.0) 238,192.9650 (>1000.0) 3;0 2.8748 (0.00) 5 1 test_single_gene_deletion_linear_room_benchmark[glpk] 212,526.9610 (>1000.0) 242,436.8690 (>1000.0) 232,605.3556 (>1000.0) 11,774.2793 (>1000.0) 236,425.7380 (>1000.0) 12,159.8755 (>1000.0) 1;0 4.2991 (0.00) 5 1 test_copy_benchmark_large_model[optlang-glpk] 221,316.5470 (>1000.0) 410,428.5500 (>1000.0) 296,692.6168 (>1000.0) 99,036.8010 (>1000.0) 227,196.8270 (>1000.0) 178,480.2047 (>1000.0) 2;0 3.3705 (0.00) 5 1 test_single_gene_deletion_linear_room_benchmark[cplex] 241,443.7780 (>1000.0) 303,652.6740 (>1000.0) 268,281.5998 (>1000.0) 30,429.6780 (>1000.0) 251,006.5000 (>1000.0) 55,179.4962 (>1000.0) 2;0 3.7274 (0.00) 5 1 test_geometric_fba_benchmark[glpk] 335,901.4150 (>1000.0) 363,279.8590 (>1000.0) 347,990.3104 (>1000.0) 11,252.3504 (>1000.0) 351,214.6080 (>1000.0) 17,210.5650 (>1000.0) 2;0 2.8736 (0.00) 5 1 test_double_gene_deletion_benchmark 339,222.9820 (>1000.0) 457,999.1300 (>1000.0) 379,595.7880 (>1000.0) 53,728.7995 (>1000.0) 343,882.9250 (>1000.0) 82,642.0578 (>1000.0) 1;0 2.6344 (0.00) 5 1 test_geometric_fba_benchmark[cplex] 342,844.6340 (>1000.0) 688,035.2720 (>1000.0) 440,805.6026 (>1000.0) 144,236.0267 (>1000.0) 370,848.7530 (>1000.0) 157,117.0350 (>1000.0) 1;0 2.2686 (0.00) 5 1 test_flux_variability_loopless_benchmark[glpk] 344,163.1660 (>1000.0) 396,309.4820 (>1000.0) 375,467.8506 (>1000.0) 19,790.1752 (>1000.0) 379,199.7740 (>1000.0) 24,443.7783 (>1000.0) 2;0 2.6633 (0.00) 5 1 test_flux_variability_loopless_benchmark[cplex] 473,074.9600 (>1000.0) 521,526.2350 (>1000.0) 497,633.0222 (>1000.0) 20,806.4236 (>1000.0) 500,519.0310 (>1000.0) 36,916.1520 (>1000.0) 2;0 2.0095 (0.00) 5 1 test_single_gene_deletion_moma_benchmark[osqp] 683,412.8690 (>1000.0) 891,914.5970 (>1000.0) 809,499.1592 (>1000.0) 100,910.4199 (>1000.0) 876,773.9510 (>1000.0) 174,157.2488 (>1000.0) 1;0 1.2353 (0.00) 5 1 test_double_reaction_deletion_benchmark 1,215,420.0320 (>1000.0) 1,436,093.9010 (>1000.0) 1,330,921.1834 (>1000.0) 108,647.0363 (>1000.0) 1,364,320.5180 (>1000.0) 210,450.1622 (>1000.0) 2;0 0.7514 (0.00) 5 1 test_pfba_benchmark[cplex] 1,521,148.8860 (>1000.0) 1,975,576.9760 (>1000.0) 1,710,150.0026 (>1000.0) 171,831.0113 (>1000.0) 1,674,953.6600 (>1000.0) 218,831.6033 (>1000.0) 2;0 0.5847 (0.00) 5 1 test_flux_variability_benchmark[cplex] 1,991,750.7220 (>1000.0) 2,532,691.0630 (>1000.0) 2,197,263.4088 (>1000.0) 236,008.8373 (>1000.0) 2,062,334.4650 (>1000.0) 372,014.5388 (>1000.0) 1;0 0.4551 (0.00) 5 1 test_single_gene_deletion_room_benchmark[cplex] 5,938,474.5130 (>1000.0) 7,664,381.2380 (>1000.0) 6,680,669.8866 (>1000.0) 858,117.6366 (>1000.0) 6,279,681.1600 (>1000.0) 1,618,948.9978 (>1000.0) 2;0 0.1497 (0.00) 5 1 test_flux_variability_benchmark[glpk] 6,508,465.9500 (>1000.0) 7,058,706.9020 (>1000.0) 6,677,480.4260 (>1000.0) 217,647.2998 (>1000.0) 6,597,448.4230 (>1000.0) 159,833.3967 (>1000.0) 1;1 0.1498 (0.00) 5 1 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Legend: Outliers: 1 Standard Deviation from Mean; 1.5 IQR (InterQuartile Range) from 1st Quartile and 3rd Quartile. OPS: Operations Per Second, computed as 1 / Mean ======================== 618 passed, 11 skipped, 10 xfailed, 323 warnings in 304.38s (0:05:04) ======================== ```