# group_by_degeneracy¶

tenpy.tools.misc.group_by_degeneracy(E, *args, subset=None, cutoff=1e-12)[source]

Find groups of indices for which (energy) values are degenerate.

Parameters
• values (1D array) – Values (e.g. energies) which need to be close to count as degenerate.

• *args (1D array) – Additional vectors (with same length as values), which also need to be close (up to cutoff) to count as degenerate.

• subset (1D array) – Optionally selects a subset of the indices

• cutoff (float) – Precision up to which values still count as degenerate.

Returns

• idx_groups (list of tuple of int) – Each tuple group contains indices i, j, k, ... for which the values are closer than cutoff, i.e., |E[j, k, ...] - E[i]| <= cutoff. Each index appears exactly once (if it is containted in subset).

• .. testsetup :: – from tenpy.tools.misc import *

• >>> E = [2., 2.4, 1.9999, 1.8, 2.3999, 5, 1.8]

• … # -> 0 1 2 3 4 5 6

• >>> k = [0, 1, 2, 2, 1, 2, 1]

• >>> group_by_degeneracy(E, cutoff=0.001)

• [(0, 2), (1, 4), (3, 6), (5,)]

• >>> group_by_degeneracy(E, k, cutoff=0.001) # k and E need to be close

• [(0,), (1, 4), (2,), (3,), (5,), (6,)]