Added metabolic polytope simplification - #499
Open
DimitriosPavlouGR wants to merge 3 commits into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Metabolic polytope simplification
Adds redundancy removal and dimension fixing for metabolic polytopes, with two methods: an exhaustive one that tests every bound against the full constraint set, and a Clarkson like output-sensitive method that keeps each LP as small as the essential set found so far.
Additions
metabolic_polytope.hpp- a representation for{x : A_eq x = b_eq, b_l <= x <= b_u}bigg_parser.hpp- reads BiGG models from JSONexhaustive_simplification.hpp- tests each bound by relaxing it and solving up to four LPsclarkson_simplification.hpp- Clarkson's method, starts with every bound relaxed and iteratively adds constraints to the essential settransformation.hpp- projects onto the affine hull, giving a full dimensional equivalent H-Polytope representationtest/metabolic/*- unit tests and benchmarks for both methodsexamples/metabolic_simplification- example of parsing a BiGG model, simplifying and transforming it to quickly approximate its volumeResults
19 BiGG models, dimension fixing enabled. Compared against PolyRound (Gurobi) with matching settings (1e-7 tolerance)
Bounds relaxed: agree closely across all three implementations - identical on 11 of 19 models.
Dimension fixing: counts differ substantially because the two implementations test different things compared to PolyRound. PolyRound looks for inequality rows of zero width, while these implementations solve a max/min LP pair per variable against the equality system.
Runtime: Clarkson implementation is 2.7x faster than the exhaustive method and 3.1x faster than PolyRound on the set of tested instances.
Bounds relaxed
Dimensions fixed
Runtime (seconds)
Example
examples/metabolic_simplificationruns the full pipeline on a BiGG model:Limitations