'Interpolate.'

def interpolate(self, key, data, out, picks=None, data_idx=None):

    picks = (slice(None) if (picks is None) else picks)
    for (start, stop) in zip(self._chunks[:(-1)], self._chunks[1:]):
        time_sl = slice(start, stop)
        if (data_idx is not None):
            data_sl = data[:, data_idx[time_sl]]
        else:
            data_sl = data[:, time_sl]
        this_data = np.dot(self._last[key], data_sl)
        if (self._interpolators is not None):
            this_data *= self._interpolators[0][time_sl]
        out[(picks, time_sl)] += this_data
        if (self._interpolators is not None):
            this_data = np.dot(self._current[key], data_sl)
            this_data *= self._interpolators[1][time_sl]
            out[(picks, time_sl)] += this_data
        del this_data
