CHRR¶
- chrrExpSampler(model, numSkip, numSamples, lambda, toRound, roundedPolytope, useFastFVA)¶
Generate random flux samples from an exponential distribution with CHRR Coordinate Hit-and-Run with Rounding. chrrExpSampler will generate numSamples samples from model, taking numSkip steps of a random walk between each sample. Rounding the polytope is a potentially expensive step. If you generate multiple rounds of samples from a single model, you can save roundedPolytope from the first round and input it for subsequent rounds. It is allowed to change lambda without recomputing roundedPolytope.
USAGE:
[samples, roundedPolytope, minFlux, maxFlux] = chrrExpSampler(model, numSkip, numSamples, lambda, toRound, roundedPolytope, useFastFVA)
- INPUTS:
model: COBRA model structure with fields:
.S - The m x n stoichiometric matrix
.lb - n x 1 lower bounds on fluxes
.ub - n x 1 upper bounds on fluxes
.c - n x 1 linear objective
numSkip: Number of steps of coordinate hit-and-run between samples numSamples: Number of samples
- OPTIONAL INPUTS:
- lambda: the bias vector, i.e. generate samples from exp(-<lambda, x>)
restricted to the feasible region. OPTIONAL ONLY IF model.c is nonzero, in which case we set lambda=model.c.
toRound: {0, 1} Option to round the polytope before sampling. roundedPolytope: The rounded polytope from a previous round of
sampling the same model.
useFastFVA: Boolean to use fastFVA (default: false)
- OUTPUTS:
samples: n x numSamples matrix of random flux samples roundedPolytope: The rounded polytope. Save for use in subsequent
rounds of sampling.
minFlux, maxFlux: flux minima and maxima
- chrrParseModel(model)¶
Parse a COBRA model into the right format for the CHRR sampler
USAGE:
[P,model] = chrrParseModel(model);
We are trying to sample uniformly at random from the points v that satisfy:
\[\begin{split}Sv = b\\ ~~ l_b \leq v \leq u_b\end{split}\]- INPUTS:
model: COBRA model structure with fields:
.S - The m x n stoichiometric matrix
.lb - n x 1 lower bounds on fluxes
.ub - n x 1 upper bounds on fluxes
- OPTIONAL INPUTS:
.C - ‘k x n’ matrix of additional inequality constraints
.d - ‘k x 1’ rhs of the above constraints
.dsense - ‘k x 1’ the sense of the above constraints (‘L’ or ‘G’)
- OUTPUTS:
P: A structure with fields:
.A_eq - Equality constraint matrix (model.S)
.b_eq - Right hand side of equality constraints (model.b)
.A - Inequality constraint matrix ([I_n 0; 0 -I_n])
.b - Right hand side of inequality constraints ([lb; -ub])
- chrrSampler(model, numSkip, numSamples, toRound, roundedPolytope, useFastFVA, optPercentage)¶
Generate uniform random flux samples with CHRR Coordinate Hit-and-Run with Rounding. chrrSampler will generate numSamples samples from model, taking numSkip steps of a random walk between each sample. Rounding the polytope is a potentially expensive step. If you generate multiple rounds of samples from a single model, you can save roundedPolytope from the first round and input it for subsequent rounds.
USAGE:
[samples, roundedPolytope] = chrrSampler(model, numSkip, numSamples, toRound, roundedPolytope, useFastFVA)
- INPUTS:
model: COBRA model structure with fields:
.S - The m x n stoichiometric matrix
.lb - n x 1 lower bounds on fluxes
.ub - n x 1 upper bounds on fluxes
.c - n x 1 linear objective
numSkip: Number of steps of coordinate hit-and-run between samples numSamples: Number of samples
- OPTIONAL INPUTS:
- toRound: {0,(1)} Option to round the polytope before sampling.
0: no rounding 1 (default): round using max volume ellipsoid 2: round using isotropy (slower, more accurate) 3: Barrier rounding (the fastest among three & as efficient as isotropic rounding)
- roundedPolytope: The rounded polytope from a previous round of
sampling the same model.
useFastFVA: Boolean to use fastFVA (default: false) optPercentage: Only consider solutions that give you at least a certain
percentage of the optimal solution (Default = 100) Can decrease optPercentage slightly if getting errors.
- OUTPUTS:
samples: n x numSamples matrix of random flux samples roundedPolytope: The rounded polytope. Save for use in subsequent
rounds of sampling.
minFlux, maxFlux: flux minima and maxima