code: def commuting_sets(pauli_terms):
      
  
      m_terms = len(pauli_terms.terms)
      m_s = 1
      groups = []
      groups.append([pauli_terms.terms[0]])
      for j in range(1, m_terms):
          isAssigned_bool = False
          for p in range(m_s):  # check if it commutes with each group
              if isAssigned_bool is False:
  
                  if check_commutation(groups[p], pauli_terms.terms[j]):
                      isAssigned_bool = True
                      groups[p].append(pauli_terms.terms[j])
          if isAssigned_bool is False:
              m_s += 1
              groups.append([pauli_terms.terms[j]])
      return groups
docs: Gather the Pauli terms of pauli_terms variable into commuting sets
  
      Uses algorithm defined in (Raeisi, Wiebe, Sanders, arXiv:1108.4318, 2011)
      to find commuting sets. Except uses commutation check from arXiv:1405.5749v2
  
      :param PauliSum pauli_terms: A PauliSum object
      :returns: List of lists where each list contains a commuting set
      :rtype: list