# magnitude is taken from params['cond_readme']; in this case it is
        # 1000s: attn, 100s: spatial, 10s: idents, 1s: gap
        event[:, 1] = [ttl_to_id(c) for c in this_cond_mat]
        for e in event[:, 1]:
            assert e in rev_dict
        events.append(event)

    print('\n  Epoching...')
    epochs = Epochs(raws, events, event_dict, t_min, t_max)
    if downsample:
        print('  Downsampling...')
        epochs.resample(fs_out, n_jobs=n_jobs)
    # compute gaze angles (in degrees)
    angles = get_gaze_angle(epochs, screenprops)
    # zscore pupil sizes
    zscore = epochs.pupil_zscores()
    # init some containers
    kernel_fits = list()
    kernel_zscores = list()

    print('  Deconvolving...')
    deconv_kwargs = dict(kernel=kernel, n_jobs=n_jobs, acc=1e-3)
    if deconv_time_pts is not None:
        deconv_kwargs.update(dict(spacing=deconv_time_pts))
    fit, time_pts = epochs.deconvolve(**deconv_kwargs)
    if deconv_time_pts is None:
        deconv_time_pts = time_pts
    assert np.array_equal(deconv_time_pts, time_pts)
    # order sequentially by stimulus ID
    order = np.argsort(stim_nums)
    angles = angles[order]
        gap_num = 10 * small_mat[:, 1]    # cf. line 251 of vocExperiment_v2.m
        attn_num = 100 * small_mat[:, 0]  # cf. line 250 of vocExperiment_v2.m
        event[:, 1] = band_num + gap_num + attn_num
        events.append(event)

    print('\n  Epoching...')
    epochs = Epochs(raws, events, event_dict, t_min, t_max)

    kernel_fits = list()
    kernel_zscores = list()
    kernel_fits_continuous = list()
    for kk, kernel in enumerate(kernels):
        kname = ['LABSN', 'Wierda'][kk]
        print('  Deconvolving ({} kernel)...'.format(kname))
        fit, time_pts = epochs.deconvolve(kernel=kernel, n_jobs=6)
        zscore = epochs.pupil_zscores()
        if deconv_time_pts is None:
            deconv_time_pts = time_pts
        assert np.array_equal(deconv_time_pts, time_pts)

        # reorder fits to match big_mat (stim# in serial order, voc band, time)
        order = np.array(run_inds)
        band_idx = (order[:, :, 1] - 1).ravel()
        stim_idx = (order[:, :, 0] - 1).ravel()  # convert 1-based to 0-based
        fits_ordered = np.inf * np.ones((len(big_mat), 2,
                                         len(deconv_time_pts)))
        zscores_ordered = np.inf * np.ones((len(big_mat), 2, epochs.n_times))
        fits_ordered[stim_idx, band_idx, :] = fit
        zscores_ordered[stim_idx, band_idx, :] = zscore
        assert not np.any(fits_ordered == np.inf)
        assert not np.any(zscores_ordered == np.inf)