def find_special_points(ks, special_points=special_points, special_names=
    special_names):
    """ Look for special points in a list of [kx, ky, kz] k-points and 
    collect them in a list of (index, name) tuples, if they exist.

    Parameters
    ----------
    ks      : list of [kx, ky, kz] lists; k-points representing a path in 
              reciprocal space.
    special_points
            : list of [kx, ky, kz] lists; special points to identify in `ks`. 
              Should have the same units as the points in `ks`.
    special_names
            : list of str; names of the points in `special_points`.

    Returns
    -------
    special_ks : list of (index, name) tuples; indices in `ks` where the 
                 special points with the respective names lie.
    """
    special_ks = []
    for i, k in enumerate(ks):
        K = list(k)
        for j, point in enumerate(special_points):
            for _ in range(4):
                K = [-K[1], K[0], K[2]]
                if K == point:
                    name = special_names[j]
                    special_ks.append((i, name))
                    break
    return special_ks
