Skip to content

Zero out unmeasured isoenzymes with a measured sibling, and report coverage #7

Open

Description

@edkerk

Copied from SysBioChalmers/GECKO#480, opened by edkerk on 2026-09-10.

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.

Activity

  1. edkerk commented on Oct 16, 2026

    @edkerk
    ContributorAuthor

    edkerk commented on 2026-09-10 in SysBioChalmers/GECKO#480:

    @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"

  2. edkerk commented on Oct 16, 2026

    @edkerk
    ContributorAuthor

    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.

  3. edkerk commented on Nov 3, 2026

    @edkerk
    ContributorAuthor

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    fixed in developHas already been addressed in develop branch

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions