Compute a permutation for every space group operation.

    See 'compute_permutation_for_rotation' for more info.

    Output has shape (num_rot, num_pos)

def compute_all_sg_permutations(positions,  # scaled positions
                                rotations,  # scaled
                                translations,  # scaled
                                lattice,  # column vectors
                                symprec):
    """Compute a permutation for every space group operation.

    See 'compute_permutation_for_rotation' for more info.

    Output has shape (num_rot, num_pos)

    """

    out = []  # Finally the shape is fixed as (num_sym, num_pos_of_supercell).
    for (sym, t) in zip(rotations, translations):
        rotated_positions = np.dot(positions, sym.T) + t
        out.append(compute_permutation_for_rotation(positions,
                                                    rotated_positions,
                                                    lattice,
                                                    symprec))
    return np.array(out, dtype='intc', order='C')