Discretized Growth

This module implements discretized growth for optimization across the full solution space. With this, linearizing the model with fixed abundance or growth rate is no longer necessary. However, this approach ustilizes binary variable, using a MILP to solve. This is faster than non-linear solvers, but slower than LPs.

The implementation is based on an idea by Salvy and Hatzimanikatis: Salvy, P., Hatzimanikatis, V. The ETFL formulation allows multi-omics integration in thermodynamics-compliant metabolism and expression models. Nat Commun 11, 30 (2020). https://doi.org/10.1038/s41467-019-13818-7

pycomo.helper.discretized_growth.discretize_growth(model, r_bio, f_var, k_vars, mu_ub, mu_lb, n_mu_bins, queue=False, constraint_limits=0.0)

Performs Petersen linearization on μ*G to keep a MILP problem

Returns:

pycomo.helper.discretized_growth.get_ordered_k_vars(k_vars)

Returns in order the variables that discretize growth :return:

pycomo.helper.discretized_growth.init_mu_variables(model, r_bio, mu_lb, mu_ub, n_mu_bins)

approximate growth with binary variables.

Returns:

pycomo.helper.discretized_growth.petersen_linearization(b, x, z=None, M=1000)

PETERSEN, C,, “A Note on Transforming the Product of Variables to Linear Form in Linear CLIFFORD Programs,” Working Paper, Purdue University, 1971.

Performs Petersen Linearization of a product z = b*x <=> z - b*x = 0 <=> { x + M*b - M <= z <= M*b { z <= x

where : * b is a binary variable * f a linear combination of continuous or integer variables y

Parameters:
  • x – Must be an expression or variable

  • b – Must be a binary optlang variable

  • z – Must be an optlang variable. Will be mapped to the product so that z = b*f(y)

  • M – bigM constraint

Returns: