From a4dd3b3a7ffed7bad79d71ab3c434efb5f11497d Mon Sep 17 00:00:00 2001 From: Mirek Kratochvil Date: Fri, 22 Nov 2024 14:49:15 +0100 Subject: [PATCH 1/2] add an explicit warning about what happens if people gapfill pseudoreactions Thanks to @oxinabox for highlighting the issue Closes https://github.com/COBREXA/COBREXA.jl/issues/78 --- docs/src/examples/05g-gapfilling.jl | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/src/examples/05g-gapfilling.jl b/docs/src/examples/05g-gapfilling.jl index 5189ecf0..f658938c 100644 --- a/docs/src/examples/05g-gapfilling.jl +++ b/docs/src/examples/05g-gapfilling.jl @@ -102,6 +102,11 @@ x2 = gap_filling_analysis( other_filled_reactions = [k for (k, v) in x2.fill_flags if v != 0] +#md # !!! warning "Why is the gapfilling algorithm adding seemingly unneeded reactions?" +#md # By default, COBREXA does not do any "cleaning" on the universal model; all reactions that are present in that model will be potentially utilized in the new model, and all of them will need to respect their original bounds in the universal model. That becomes an issue with **reactions that are bounded to non-zero flux** (such as the `ATPM` reaction in the E. coli "core" model) -- since their flux is marked as necessarily non-zero to make any model feasible; they will need to be in the fill set, because otherwise their flux would be equal zero. +#md # +#md # As the simplest solution, all realistic uses of gapfilling should carefully check the set of universal reactions, and ideally exclude all exchanges and pseudoreactions. + # ## Model debugging: which metabolite is missing? # # Gap-filling is great for detecting various broken links and imbalances in From 89461ba087478160fbb94490f091c3006735b06a Mon Sep 17 00:00:00 2001 From: Mirek Kratochvil Date: Fri, 22 Nov 2024 15:09:45 +0100 Subject: [PATCH 2/2] cleanup wording --- docs/src/examples/05g-gapfilling.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/examples/05g-gapfilling.jl b/docs/src/examples/05g-gapfilling.jl index f658938c..cfa195da 100644 --- a/docs/src/examples/05g-gapfilling.jl +++ b/docs/src/examples/05g-gapfilling.jl @@ -103,7 +103,7 @@ x2 = gap_filling_analysis( other_filled_reactions = [k for (k, v) in x2.fill_flags if v != 0] #md # !!! warning "Why is the gapfilling algorithm adding seemingly unneeded reactions?" -#md # By default, COBREXA does not do any "cleaning" on the universal model; all reactions that are present in that model will be potentially utilized in the new model, and all of them will need to respect their original bounds in the universal model. That becomes an issue with **reactions that are bounded to non-zero flux** (such as the `ATPM` reaction in the E. coli "core" model) -- since their flux is marked as necessarily non-zero to make any model feasible; they will need to be in the fill set, because otherwise their flux would be equal zero. +#md # By default, COBREXA does not do any "cleaning" on the universal model; all reactions that are present in that model will be potentially utilized in the new model, and all of them will need to respect their original bounds in the universal model. That becomes an issue with **reactions that are bounded to non-zero flux** (such as the `ATPM` reaction in the E. coli "core" model) -- since their flux is required to be non-zero in any feasible model solution, they will also need to be in the fill set, because otherwise their flux would be zero. #md # #md # As the simplest solution, all realistic uses of gapfilling should carefully check the set of universal reactions, and ideally exclude all exchanges and pseudoreactions.