def generate_angles()

in datasets/data_utils.py [0:0]


def generate_angles(NT1, NT2, NC):

    # create pairs of shape with all angles
    NT = NT1 * NT2 ** 2
    [ind1, ind2] = np.meshgrid(range(NT), range(NT))
    s1 = ind1.flatten()
    s2 = ind2.flatten()
    alphas = (s1 - s2) % (NT1)

    sangle1 = np.floor(s1 / NT2 ** 2)
    sangle2 = np.floor(s2 / NT2 ** 2)

    strans1 = s1 % NT2 ** 2
    strans2 = s2 % NT2 ** 2

    stransx1 = np.floor(strans1 / NT2)
    stransx2 = np.floor(strans2 / NT2)

    stransy1 = strans1 % NT2
    stransy2 = strans2 % NT2

    alphas1 = (sangle1 - sangle2) % (NT1)
    alphas2 = (stransx1 - stransx2) % (NT2)
    alphas3 = (stransy1 - stransy2) % (NT2)

    s1_all_shapes = (
        np.tile(s1, (int(NC / 2)))
        + NT * np.tile(np.arange(int(NC / 2)).T, (NT * NT, 1)).T.flatten()
    )
    s2_all_shapes = (
        np.tile(s2, (int(NC / 2)))
        + NT * np.tile(np.arange(int(NC / 2)).T, (NT * NT, 1)).T.flatten()
    )

    alphas_all_shapes1 = np.tile(alphas1, int(NC / 2))
    alphas_all_shapes2 = np.tile(alphas2, int(NC / 2))
    alphas_all_shapes3 = np.tile(alphas3, int(NC / 2))

    alphas = (alphas1, alphas2, alphas3)
    alphas_all_shapes = (alphas_all_shapes1, alphas_all_shapes2, alphas_all_shapes3)

    return s1, s2, s1_all_shapes, s2_all_shapes, alphas, alphas_all_shapes