Find issues with TMFA

findIssuesWithTMFA(ensemble, DGr_std_min, DGr_std_max, vmin, vmax, xmin, xmax, ineqConstraints, K, RT, delta, M, tol, gurobiModel, options, params)

Finds out why the TMFA problem is infeasible.

This is done by first trying to find which reactions’ standard Gibbs energies or metabolite concentrations are causing the problem to be infeasible. If no reactions nor metabolites are deemed to be the cause and if the LP solver is set to gurobi, the MILP is written into a text file and the function gurobi_iis is used to find which constraints/variable bounds are causing the issue.

Problematic metabolites and/or reactions can be missed due to a large K value, especially when using intlinprog (same issue as in computeGibbsFreeEnergyRanges). Thus the loop for decreasing K values when the lists of problematic reactions and metabolites are empty.

USAGE:

findIssuesWithTMFA(ensemble,DGr_std_min,DGr_std_max,vmin,vmax,xmin,xmax,ineqConstraints,K,RT,delta,M,tol,gurobiModel,options,params)

INPUT:

ensemble (struct): model ensemble, see buildEnsemble for fields description DGr_std_min (double vector): minimum values for standard reaction Gibbs energies DGr_std_max (double vector): maximum values for standard reaction Gibbs energies vmin (double vector): minimum values for reaction fluxes vmax (double vector): maximum values for reaction fluxes xmin (double vector): minimum values for metabolite concentrations xmax (double vector): maximu values for metabolite concentrations ineqConstraints (double): inequality constraints K (double): large value used in the MILP problem RT (double): value for the gas constant multiplied by the temperature (in Kelvin) delta (double): low value to use in the MILP problem M (double): large value to use in the MILP problem tol (double): tolerance value to use when comparing results to zero. gurobiModel (struct): MILP problem structure for gurobi options (struct): configurations for intlinprog params (struct): configurations for gurobi