# Coupling¶

Constrains one (weighted) sum of fluxes to be above a lower bound. Appends to existing inequality constraints if they are present

USAGE:

modelConstrained = constrainRxnListAboveBound(model, rxnList, c, d, ineqSense)

INPUTS:

model: model structure rxnList: cell array of reaction names

OPTIONAL INPUTS:

c: k x 1 vector $$c*v \geq d$$ d: n x 1 vector $$c*v \geq d$$ ineqSense: k x 1 inequality sense {‘L’,’G’}

OUTPUT:

modelConstrained: constrained model:

• S - Stoichiometric matrix

• b - Right hand side = dx/dt

• C - Inequality constraint matrix

• d - Inequality constraint right hand side $$[S; C] * v {=, \leq, \geq } [dxdt, d]$$

USAGE:

INPUTS:

model: COBRA model structure listOfRxns: List of 2 Reactions ratioCoeff: Array of ratio coefficient between the 2 reactions

OUTPUT:

modelNew: COBRA model structure containing the ratio

Example

%1 v_EX_ac(e) = 2 v_EX_for(e): modelNew = addRatioReaction(model, {‘EX_ac(e)’ ‘EX_for(e)’}, [1 2])

constrainRxnListAboveBound(model, rxnList, c, d, ineqSense)

Constrains one (weighted) sum of fluxes to be above a lower bound. Appends to existing inequality constraints if they are present

USAGE:

modelConstrained = constrainRxnListAboveBound(model, rxnList, c, d, ineqSense)

INPUTS:

model: model structure rxnList: cell array of reaction names

OPTIONAL INPUTS:

c: k x 1 vector $$c*v \geq d$$ d: n x 1 vector $$c*v \geq d$$ ineqSense: k x 1 inequality sense {‘L’,’G’}

OUTPUT:

modelConstrained: constrained model:

• S - Stoichiometric matrix

• b - Right hand side = dx/dt

• C - Inequality constraint matrix

• d - Inequality constraint right hand side $$[S; C] * v {=, \leq, \geq } [dxdt, d]$$

coupleRxnList2Rxn(model, rxnList, rxnC, c, u)

This function adds coupling constraints to the fluxes vi of a given list of reactions (RxnList).The constraints are proportional to the flux v of a specified reaction rxnC, so that for all reactions in RxnList vi ~ vrxnC. For all reactions, a threshold u on flux is set (default value: 0.01).

To add a coupling constraint to a reaction, a coupling vector c is determined (default value 1000). c is multiplied by vrxnC, so that for all irreversible reactions in RxnList vi - c * vrxnC <= u.

For all reversible reactions, the following equation holds true for the reverse direction: vi + c * vrxnC >= u.

The output is a coupled model (modelCoupled), in which for every new entry in modelCoupled.b a “slack” variable has been added to modelCoupled.mets.

USAGE:

[modelCoupled] = coupleRxnList2Rxn(model, rxnList, rxnC, c, u)

INPUTS:

model: model structure rxnList: array of reaction names rxnC: reaction that should be coupled with each reaction in the

reaction list

c: vector of coupling factors for each rxn in rxnList (default c = 1000) u: vector of lower bounds one reaction couples (default u = 0.01)

OUTPUT:

modelCoupled: coupled model