code: def lin_moma2(self, objective, wt_obj):
          
          reactions = set(self._adjustment_reactions())
  
          z_diff = self._z_diff
          v = self._v
          v_wt = self._v_wt
  
          with self.constraints() as constr:
              for f_reaction in reactions:
                  # Add the constraint that finds the optimal solution, such
                  # that the difference between the wildtype flux
                  # is similar to the knockout flux.
                  constr.add(
                      z_diff[f_reaction] >= v_wt[f_reaction] - v[f_reaction],
                      v_wt[f_reaction] - v[f_reaction] >= -z_diff[f_reaction])
  
              # If we minimize the sum of the z vector then we will minimize
              # the |v_wt - v| from above
              self._prob.set_objective(z_diff.sum(reactions))
  
              constr.add(self._v_wt[objective] >= wt_obj)
  
              self._solve(lp.ObjectiveSense.Minimize)
docs: Find the smallest redistribution vector using a linear objective.
  
          The change in flux distribution is mimimized by minimizing the sum
          of the absolute values of the differences of wild type FBA solution
          and the knockout strain flux solution.
  
          Creates the constraint that the we select the optimal flux vector that
          is closest to the wildtype. This might still return an arbitrary flux
          vector the maximizes the objective function.
  
          Args:
              objective: Objective reaction for the model.
              wt_obj: The flux value for your wild type objective reactions.
                  Can either use an expiremental value or on determined by FBA
                  by using :meth:`.get_fba_obj_flux(objective)`.