code: def build_reaction_string(self, use_metabolite_names=False):
          
  
          def format(number):
              return "" if number == 1 else str(number).rstrip(".") + " "
  
          id_type = 'id'
          if use_metabolite_names:
              id_type = 'name'
          reactant_bits = []
          product_bits = []
          for met in sorted(self._metabolites, key=attrgetter("id")):
              coefficient = self._metabolites[met]
              name = str(getattr(met, id_type))
              if coefficient >= 0:
                  product_bits.append(format(coefficient) + name)
              else:
                  reactant_bits.append(format(abs(coefficient)) + name)
  
          reaction_string = ' + '.join(reactant_bits)
          if not self.reversibility:
              if self.lower_bound < 0 and self.upper_bound <= 0:
                  reaction_string += ' <-- '
              else:
                  reaction_string += ' --> '
          else:
              reaction_string += ' <=> '
          reaction_string += ' + '.join(product_bits)
          return reaction_string
docs: Generate a human readable reaction string