Energy generating cycles (EGCs)
Energy generating cycles (EGCs) are cycles inside the model that are able to produce energy metabolites even when the model is cut of from any input. Since these cycles create energy basically out of nothing, they are biologically infeasible and are like to distort the simulations, e.g. the growth simulation.
There fore it is vital to identfy and resolve these cycles. The egcs module
provides classes to tackle these issue.
Identify EGCs
If the aim is to simply find the EGCs (e.g. for subsequent manual adjustment),
The EGCSolver provides the function
find_egcs() to automatically find the egcs present in the model.
It implementation is based on Fritzemeier et al.[1]:
Subsequently, a dissipation reaction for each energy metabolite is temporarily added to the model.
The reaction bound are limited to 1.0/-1.0 and all exchange reactions to the cytosol are closed.
The dissipation reaction ist set as the model objective and the model is optimised for.
If the objective value is greater than the minimal growth threshold, at least one EGC for the corresponding energy metabolite is present
This functionality can be accesed via
refinegems refine egcs 'MODELPATH'
or
from refinegems.classes.egcs import EGCSolver
# model: cobra.Model
solver = EGCSolver()
results = solver.find_egcs(model)
By setting with_reacs to True, the reactions that form the problematic cycle(s), meaning the one with non-zero flux values are additionally reported.
Solve EGCs
Solving the EGCs is a challing problem. Possible solution strategies include finding the least number of changes that need to be introduced into the model (purely mathematical approach) to chaning is only according to biological evidence (purely biological approach).
Below is the list of currently available Solvers implemented in the toolbox.
Note
We are working on extending this list to allow for better, faster and/or more fitting solutions for resolving EGCs.
Greedy approach
class GreedyEGCSolver
This approach is loosely based on Fritzemeier et al.[1]. It is a greedy, mathematical approach, that tries to resolve the EGCs by changing the reactions modes of a single reaction each time and finding the smallest set of reactions that can resolve the biggest set of found EGCs. The modifications of the reactions include:
make reaction reversible
delete backward reaction
delete forward reaction
delete complete reaction
The algorithmn runs resonably fast, however since it only consideres single reaction modifications, some EGCs may remain unsolved (these will be reported at the end of the solving process).
This Solver can be accessed via
refinegems refine egcs -s greedy 'MODELPATH'
or
from refinegems.classes.egcs import GreedyEGCSolver
# model: cobra.Model
solver = GreedyEGCSolver()
results = solver.solve_egcs(model)