def METHOD_NAME(self, indices=None):
    if self._closed:
        raise ValueError('I/O operation on closed file')
    if indices is None:
        indices = np.arange(self._n_csets)
    elif isinstance(indices, int):
        indices = np.array([indices])
    elif isinstance(indices, slice):
        indices = np.arange(*indices.indices(self._n_csets))
        indices.sort()
    elif isinstance(indices, (list, np.ndarray)):
        indices = np.unique(indices)
    else:
        raise TypeError('indices must be an integer or a list of integers')
    nfi = self._nfi
    self.reset()
    n_atoms = self.numSelected()
    coords = np.zeros((len(indices), n_atoms, 3), self._dtype)
    prev = 0
    next = self.nextCoordset
    for i, index in enumerate(indices):
        diff = index - prev
        if diff > 1:
            self.skip(diff-1)
        xyz = next()
        if xyz is None:
            LOGGER.warning('Expected {0} frames, but parsed {1}.'
                           .format(len(indices), i))
            self.goto(nfi)
            return coords[:i]
        coords[i] = xyz
        prev = index
    self.goto(nfi)
    return coords