relaxedFBA

relaxFBA_cappedL1(model, param)

Finds the mimimal set of relaxations on bounds and steady state constraints to make the FBA problem feasible. The zero-norm is appproximated by capped-L1 norm

USAGE:

[solution] = relaxFBA_cappedL1(model, param)

INPUTS:

model: COBRA model structure param: Structure containing the relaxation options:

  • excludedReactions - bool vector of size n indicating the reactions to be excluded from relaxation * excludedReactions(i) = false : allow to relax bounds on reaction i * excludedReactions(i) = true : do not allow to relax bounds on reaction i

  • excludedReactionLB - n x 1 bool vector indicating the reactions with lower bounds to be excluded from relaxation

    • excludedReactionLB(i) = false : allow to relax lower bounds on reaction i (default)

    • excludedReactionLB(i) = true : do not allow to relax lower bounds on reaction i

  • excludedReactionUB - n x 1 bool vector indicating the reactions with upper bounds to be excluded from relaxation

    • excludedReactionUB(i) = false : allow to relax upper bounds on reaction i (default)

    • excludedReactionUB(i) = true : do not allow to relax upper bounds on reaction i

  • excludedMetabolites - bool vector of size m indicating the metabolites to be excluded from relaxation * excludedMetabolites(i) = false : allow to relax steady state constraint on metabolite i * excludedMetabolites(i) = true : do not allow to relax steady state constraint on metabolite i

  • gamma - weight on zero norm of fluxes

  • lamda - weight on relaxation on steady state constraint (overridden by excludedMetabolites)

  • alpha - weight on relaxation on bounds (overridden by excludedReactions)

OUTPUT:

solution: Structure containing the following fields:

  • stat - status

    • 1 = Solution found

    • 0 = Infeasible

    • -1 = Invalid input

  • r - relaxation on steady state constraints \(S*v = b\)

  • p - relaxation on lower bound of reactions

  • q - relaxation on upper bound of reactions

  • v - reaction rate

\[\begin{split}min ~&~ c^T v + \gamma_1 ||v||_1 + \gamma_0 ||v||_0 + \lambda_1 ||r||_1 + \lambda_0 ||r||_0 \\ ~&~ + \alpha_1 (||p||_1 + ||q||_1) + \alpha_0 (||p||_0 + ||q||_0) \\ s.t. ~&~ S v + r = b \\ ~&~ l - p \leq v \leq u + q \\ ~&~ r \in R^m \\ ~&~ p,q \in R_+^n\end{split}\]

m - number of metabolites, n - number of reactions

relaxedFBA(model, param)

Finds the mimimal set of relaxations on bounds and steady state constraints to make the FBA problem feasible. The optional parameters, excludedReactions and excludedMetabolites override all other relaxation options.

\[\begin{split}min ~&~ c^T v + \gamma ||v||_0 + \lambda ||r||_0 + \alpha (||p||_0 + ||q||_0) \\ s.t ~&~ S v + r \leq, =, \geq b \\ ~&~ l - p \leq v \leq u + q \\ ~&~ r \in R^nMets \\ ~&~ p,q \in R_+^nRxns\end{split}\]

nMets - number of metabolites, nRxns - number of reactions

USAGE:

[solution] = relaxedFBA(model, param)

INPUTS:
model: COBRA model structure with the fields:
  • .S

  • .b

  • .ub

  • .ub

  • .mets (required if model.SIntRxnBool absent)

  • .rxns (required if model.SIntRxnBool absent)

OPTIONAL INPUTS:
model: COBRA model structure with the fields
  • .csense

  • .C

  • .d

  • .dsense

  • .SIntRxnBool

param: Structure optionally containing the relaxation parameters:

  • .internalRelax: * 0 = do not allow to relax bounds on internal reactions * 1 = do not allow to relax bounds on internal reactions with finite bounds * {2} = allow to relax bounds on all internal reactions

  • .exchangeRelax: * 0 = do not allow to relax bounds on exchange reactions * 1 = do not allow to relax bounds on exchange reactions of the type [0,0] * {2} = allow to relax bounds on all exchange reactions

  • .steadyStateRelax: * 0 = do not allow to relax the steady state constraint S*v = b * {1} = allow to relax the steady state constraint S*v = b

  • .toBeUnblockedReactions - nRxns x 1 vector indicating the reactions to be unblocked * toBeUnblockedReactions(i) = 1 : impose v(i) to be positive * toBeUnblockedReactions(i) = -1 : impose v(i) to be negative * toBeUnblockedReactions(i) = 0 : do not add any constraint (default)

  • .excludedReactions - nRxns x 1 bool vector indicating the reactions to be excluded from relaxation * excludedReactions(i) = false : allow to relax bounds on reaction i (default) * excludedReactions(i) = true : do not allow to relax bounds on reaction i

  • .excludedReactionLB - nRxns x 1 bool vector indicating

the reactions with lower bounds to be excluded from relaxation (overridden by excludedReactions)

  • excludedReactionLB(i) = false : allow to relax lower bounds on reaction i (default)

  • excludedReactionLB(i) = true : do not allow to relax lower bounds on reaction i

  • .excludedReactionUB - nRxns x 1 bool vector indicating

the reactions with upper bounds to be excluded from relaxation (overridden by excludedReactions)
  • excludedReactionUB(i) = false : allow to relax upper bounds on reaction i (default)

  • excludedReactionUB(i) = true : do not allow to relax upper bounds on reaction i

  • .excludedMetabolites - nMets x 1 bool vector indicating the metabolites to be excluded from relaxation * excludedMetabolites(i) = false : allow to relax steady state constraint on metabolite i (default) * excludedMetabolites(i) = true : do not allow to relax steady state constraint on metabolite i

  • .lamda - weighting on relaxation of relaxation on steady state constraints S*v = b

  • .alpha - weighting on relaxation of reaction bounds

  • .gamma - weighting on zero norm of fluxes

  • .nbMaxIteration - stopping criteria - number maximal of iteration (Default value = 100)

  • .epsilon - stopping criteria - (Default value = 1e-6)

  • .theta - initial parameter of the approximation (Default value = 0.5)

    Theoretically, the greater the value of step parameter, the better the approximation of a step function. However, practically, a greater inital value, will tend to optimise toward a local minima of the approximate cardinality optimisation problem.

  • .printLevel (Default = 0) Printing the progress of

the algorithm is useful when trying different values of theta to start with the appropriate parameter giving the lowest cardinality solution. * .relaxedPrintLevel (Default = 0) Printing information on relaxed reaction bounds and steady state constraints * .maxRelaxR (Default = 1e4), maximum relaxation of any bound or equality constraint permitted

OUTPUT:

solution: Structure containing the following fields:

  • stat - status

    • 1 = Solution found

    • 0 = Infeasible

    • -1 = Invalid input

  • r - relaxation on steady state constraints S*v = b

  • p - relaxation on lower bound of reactions

  • q - relaxation on upper bound of reactions

  • v - reaction rate

relaxedModel model structure that admits a flux balance solution

Authors: - Hoai Minh Le, Ronan Fleming .. Please cite: Fleming RMT, Haraldsdottir HS, Le HM, Vuong PT, Hankemeier T, Thiele I. Cardinality optimisation in constraint-based modelling: Application to human metabolism, 2022 (submitted).