Skip to content

Commit

Permalink
Weird fix to problem where removing and re-adding the biomass reactio…
Browse files Browse the repository at this point in the history
…n would raise an exception claiming that the reverse variable is already present in the solver variable container.
  • Loading branch information
phantomas1234 committed May 26, 2015
1 parent 74c1544 commit 2d9f06d
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 1 deletion.
4 changes: 3 additions & 1 deletion cameo/core/solver_based_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,7 @@ def _populate_solver(self, reaction_list):
if self.solver.objective is None:
self.solver.objective = self.solver.interface.Objective(objective_expression, name='obj', direction='max')
else:
self.solver.objective.variables # TODO: remove this weird hack. Looks like some weird issue with lazy objective expressions in CPLEX and GLPK interface in optlang.
self.solver.objective += objective_expression

def add_reactions(self, reaction_list):
Expand All @@ -246,7 +247,8 @@ def add_reactions(self, reaction_list):

def remove_reactions(self, the_reactions):
for reaction in the_reactions:
self.solver.remove(reaction.id)
self.solver.remove(reaction.forward_variable)
self.solver.remove(reaction.reverse_variable)
super(SolverBasedModel, self).remove_reactions(the_reactions)

def add_demand(self, metabolite, prefix="DM_"):
Expand Down
4 changes: 4 additions & 0 deletions tests/test_solver_based_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -564,6 +564,10 @@ def test_remove_reactions(self):
for reaction in reactions_to_remove:
self.assertNotIn(reaction.id, list(self.model.solver.variables.keys()))

self.model.add_reactions(reactions_to_remove)
for reaction in reactions_to_remove:
self.assertIn(reaction, self.model.reactions)

def test_add_demand(self):
for metabolite in self.model.metabolites:
demand_reaction = self.model.add_demand(metabolite, prefix="DemandReaction_")
Expand Down

0 comments on commit 2d9f06d

Please sign in to comment.