You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Zero out unmeasured isoenzymes with a measured sibling, and report coverage #7
Why
An isoenzyme left undetected next to a measured sibling is a different case from an isoenzyme for which no proteomics data exists at all for that reaction. Leaving the undetected one pool-limited lets the model route flux through it as though it were present, and there is no way to see how many isoenzyme groups in a model carry this kind of partial coverage.
Current situation getKcatAcrossIsozymes.m groups model.ec.rxns by base reaction (stripping _EXP_n) to fill in missing kcats from isozymes. No equivalent grouping exists for model.ec.concs. When reaction R has isoenzymes E1 and E2 and only E1 has a proteomics measurement, constrainEnzConcs.m caps E1's usage reaction at its measured value and leaves E2's usage reaction pool-limited.
What should change
Add logic that, for a reaction with a mix of measured and NaN isoenzyme concentrations, sets the unmeasured isoenzymes' usage-reaction bounds to zero instead of leaving them pool-limited. Add a separate model-overview function that reports isoenzyme groups with partial proteomics coverage.
@fma91 Does this address what we discussed this morning? A new function could apply this logic of "disable isoenzyme if ec.concs is NaN, while alternative isozyme has ec.concs >0"
I think that the isoenzymes groups will help to implemet logics to solve this. I was thinking in disabling them or setting a roof with a maximum not higher than the less detected enzymes. It is also artificial, but I have to test them.
Implemented in CompMetEng/GECKO#30 (geckopy: CompMetEng/geckopy#86). getIsozymeCoverage reports the isozyme groups with a measured and an unmeasured entry. zeroUnmeasuredIsozymes is a separate function that is called after constrainEnzConcs: method'zero' sets the usage bound of the unmeasured isozyme to 0, and 'detectionLimit' sets it to the smallest measured concentration or to a given limit, since a protein that was not detected can be below the detection limit and not absent. An enzyme that also catalyses a reaction without a measured sibling is left unchanged. ec.concs is not modified.
Activity
edkerk commentedon Oct 16, 2026
edkerk commented on 2026-09-10 in SysBioChalmers/GECKO#480:
@fma91Does this address what we discussed this morning? A new function could apply this logic of "disable isoenzyme if ec.concs is NaN, while alternative isozyme has ec.concs >0"edkerk commentedon Oct 16, 2026
fma91 commented on 2026-09-11 in SysBioChalmers/GECKO#480:
I think that the isoenzymes groups will help to implemet logics to solve this. I was thinking in disabling them or setting a roof with a maximum not higher than the less detected enzymes. It is also artificial, but I have to test them.
edkerk commentedon Nov 3, 2026
Implemented in CompMetEng/GECKO#30 (geckopy: CompMetEng/geckopy#86).
getIsozymeCoveragereports the isozyme groups with a measured and an unmeasured entry.zeroUnmeasuredIsozymesis a separate function that is called afterconstrainEnzConcs:method'zero'sets the usage bound of the unmeasured isozyme to 0, and'detectionLimit'sets it to the smallest measured concentration or to a given limit, since a protein that was not detected can be below the detection limit and not absent. An enzyme that also catalyses a reaction without a measured sibling is left unchanged.ec.concsis not modified.