def solve(self, reaction_1, reaction_2):
<EOL>self._prob.set_objective(self._vbow(reaction_1))<EOL>if self._reaction_constr is not None:<EOL><INDENT>self._reaction_constr.delete()<EOL><DEDENT>self._reaction_constr, = self._prob.add_linear_constraints(<EOL>self._vbow(reaction_2) == <NUM_LIT:1>)<EOL>results = []<EOL>for sense in (lp.ObjectiveSense.Minimize, lp.ObjectiveSense.Maximize):<EOL><INDENT>try:<EOL><INDENT>result = self._prob.solve(sense)<EOL><DEDENT>except lp.SolverError:<EOL><INDENT>results.append(None)<EOL><DEDENT>else:<EOL><INDENT>results.append(result.get_value(self._vbow(reaction_1)))<EOL><DEDENT><DEDENT>return tuple(results)<EOL>
Return the flux coupling between two reactions

        The flux coupling is returned as a tuple indicating the minimum and
        maximum value of the v1/v2 reaction flux ratio. A value of None as
        either the minimum or maximum indicates that the interval is unbounded
        in that direction.