def METHOD_NAME(self, start_frame=None, end_frame=None, channel_indices=None):
    if isinstance(channel_indices, slice):
        traces = self._stream.get("ChannelData")[channel_indices, start_frame:end_frame].T
    else:
        # channel_indices is np.ndarray
        if np.array(channel_indices).size > 1 and np.any(np.diff(channel_indices) < 0):
            # get around h5py constraint that it does not allow datasets
            # to be indexed out of order
            sorted_channel_indices = np.sort(channel_indices)
            resorted_indices = np.array([list(sorted_channel_indices).index(ch) for ch in channel_indices])
            recordings = self._stream.get("ChannelData")[sorted_channel_indices, start_frame:end_frame].T
            traces = recordings[:, resorted_indices]
        else:
            traces = self._stream.get("ChannelData")[channel_indices, start_frame:end_frame].T
    return traces