ThermOptEnumerator Tutorial
ThermOptEnumerator
ThermOptEnumerator (TOE) is an algorithm designed to efficiently identify all thermodynamically infeasible cycles (TICs) within a metabolic model. By pinpointing these cycles, TOE helps modellers curate and refine models to ensure they accurately reflect the laws of thermodynamics. This is crucial for obtaining biologically meaningful predictions from constraint-based modeling analyses. TOE takes a genome-scale metabolic model (GEM) as input and outputs a list of all TICs present in the model, along with the reactions involved, their respective flux directions and the relative flux coefficients. This information can be used to identify reactions or pathways in TICs and guide model improvement efforts. This tutorial implements both the mixed integer linear programming (MILP) formulation and the linear programming formulation (LP) of TOE.
Reading the COBRA model (The model should have the following fields: S, lb, ub, rxns)
fileName = 'iAF1260.mat';
model = readCbModel(fileName);
Enumerating the TICs in the model using the MILP formulation
[TICs,Direction,TIC_Rxns,modModel] = ThermOptEnumMILP(model);
The TICs identified for the model will be stored in TICs, and the Direction refer to the flux direction of the TICs. TIC_Rxns is the superset of all the reactions in TICs. modModel is same as the input model except that all the reactions irreversible in reverse direction (lb<0 and ub=0) are converted to forward irreversible reactions (lb=0 and ub>0). The TICs defined will be for this modModel
for i=1:numel(TICs)
display(strcat(['TIC: ',num2str(i)]))
display(TICs{i})
display('Direction')
display(Direction{i})
display('----------------------------')
end
The model iAF1260 has 38 TICs in total.
Enumerating the TICs in the model using the LP formulation of ThermOptEnumerator
The linear formulation of the TOE is comparatively slower because of its brute force nature. But can be useful when MILP solvers may be computationally expensive
[TICs,Direction,TIC_Rxns,modModel] = ThermOptEnumLP(model);
All the variables obtained here will have the same meaning as defined in ThermOptEnumMILP
for i=1:numel(TICs)
display(strcat(['TIC: ',num2str(i)]))
display(TICs{i})
display('Direction')
display(Direction{i})
display('----------------------------')
end