Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gap-filling / knock-in support #73

Closed
oxinabox opened this issue Sep 24, 2024 · 2 comments · Fixed by #74
Closed

Gap-filling / knock-in support #73

oxinabox opened this issue Sep 24, 2024 · 2 comments · Fixed by #74
Assignees

Comments

@oxinabox
Copy link

Target functionality

There is a problem known as gap-filling which is used to consider what new reactions on could add to a model to improve an objective.
This is similar to knock-out which considers what reactions you can remove,
and corresponds to working out what genes we might like to knock-in to an organism during strain design.

Cobrapy has an implementation of it based on Reed 2006

Basically one takes an input 2 models
One is a normal model suitable for (e.g) FBA to model the wildtype organism.
The other is a universal model, this is the set of reactions we are considering adding to our modified organism.

Despite the name, the universal model does not have to model the universe, we could for example use a Yeast model for our wild-type, and a Ecoli model for our universal model. This would correspond to considering what genes we might like to slice into yeast that are originally from ecoli. (idk that this is a particularly good idea but you can).

I think this would go well in cobrexa because with the JuMP ecosystem we have access to way more solvers (and better solvers) than cobrapy supports.

Desired output

A list of all the reactions that were added

@exaexa exaexa self-assigned this Sep 24, 2024
@exaexa
Copy link
Member

exaexa commented Sep 24, 2024

ah true I had this planned for quite some time already. :D

@exaexa
Copy link
Member

exaexa commented Sep 24, 2024

ok so we have a preliminarily useful version. Feedback on that welcome (esp. if it fails on some known usecases), I guess we'll still have to tune it towards the Right Way.

Main differences from Reed&pals and cobrapy:

  • the iteration for the "other solutions" is manual at this point, but the function to build the constraints is there and quite convenient IMO
  • we don't discriminate between exchanges and normal reactions, marked as variable vectors a and b in the paper math, here there's just a single set of boolean flags (Even in the paper they seem to split these off mostly for cosmetic reasons, and I didn't really want to hardcode any of this assumed semantics into the code.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants