docs: def flux_balance(model, reaction, tfba, solver):
      """Run flux balance analysis on the given model.
  
      Yields the reaction id and flux value for each reaction in the model.
  
      This is a convenience function for sertting up and running the
      FluxBalanceProblem. If the FBA is solved for more than one parameter
      it is recommended to setup and reuse the FluxBalanceProblem manually
      for a speed up.
  
      This is an implementation of flux balance analysis (FBA) as described in
      [Orth10]_ and [Fell86]_.
  
      Args:
          model: MetabolicModel to solve.
          reaction: Reaction to maximize. If a dict is given, this instead
              represents the objective function weights on each reaction.
          tfba: If True enable thermodynamic constraints.
          solver: LP solver instance to use.
  
      Returns:
          Iterator over reaction ID and reaction flux pairs.
      """
  
      fba = _get_fba_problem(model, tfba, solver)
      fba.maximize(reaction)
      for reaction in model.reactions:
          yield reaction, fba.get_flux(reaction)