General
Measurement date Unknown
Experimenter Unknown
Participant Unknown
Channels
Digitized points 33 points
Good channels 33 EEG
Bad channels None
EOG channels Not available
ECG channels Not available
Data
Sampling frequency 1024.00 Hz
Highpass 0.00 Hz
Lowpass 512.00 Hz
Filenames sub-018_ses-N170_task-N170_eeg.fdt
Duration 00:10:08 (HH:MM:SS)
PSD
General
Measurement date Unknown
Experimenter Unknown
Participant sub-018
Channels
Digitized points 33 points
Good channels 29 EEG, 1 EOG
Bad channels FP2, VEOG
EOG channels HEOG
ECG channels Not available
Data
Sampling frequency 128.00 Hz
Highpass 0.10 Hz
Lowpass 64.00 Hz
Filenames sub-018_ses-N170_task-N170_eeg.fdt
Duration 00:10:08 (HH:MM:SS)
PSD
Events
Number of events 160
Events stimulus/car/normal: 80
stimulus/face/normal: 80
Time range -0.203 – 0.797 s
Baseline off
Epoch # event_name response/correct response/error stimulus/car/normal stimulus/car/scrambled stimulus/face/normal stimulus/face/scrambled
0 stimulus/car/normal 0.562 0.000
1 stimulus/car/normal 0.438 0.000
2 stimulus/car/normal 0.383 0.000
3 stimulus/face/normal 0.375 0.000
4 stimulus/face/normal 0.375 0.000
5 stimulus/face/normal 0.328 0.000
6 stimulus/face/normal 0.430 0.000
7 stimulus/car/normal 0.531 0.000
8 stimulus/car/normal 0.477 0.000
9 stimulus/car/normal 0.406 0.000
10 stimulus/face/normal 0.570 0.000
11 stimulus/car/normal 0.805 0.000
12 stimulus/face/normal 0.586 0.000
13 stimulus/car/normal 0.555 0.000
14 stimulus/car/normal 0.516 0.000
15 stimulus/face/normal 0.414 0.000
16 stimulus/face/normal 0.297 0.000
17 stimulus/face/normal 0.453 0.000
18 stimulus/face/normal 0.430 0.000
19 stimulus/car/normal 0.586 0.000
20 stimulus/car/normal 0.523 0.000
21 stimulus/car/normal 0.492 0.000
22 stimulus/face/normal 0.422 0.000
23 stimulus/face/normal 0.375 0.000
24 stimulus/face/normal 0.453 0.000
25 stimulus/car/normal 0.484 0.000
26 stimulus/car/normal 0.445 0.000
27 stimulus/face/normal 0.453 0.000
28 stimulus/face/normal 0.469 0.000
29 stimulus/face/normal 0.336 0.000
30 stimulus/face/normal 0.352 0.000
31 stimulus/face/normal 0.352 0.000
32 stimulus/car/normal 0.523 0.000
33 stimulus/face/normal 0.383 0.000
34 stimulus/face/normal 0.328 0.000
35 stimulus/car/normal 0.375 0.000
36 stimulus/face/normal 0.445 0.000
37 stimulus/car/normal 0.438 0.000
38 stimulus/car/normal 0.320 0.000
39 stimulus/car/normal 0.273 0.000
40 stimulus/face/normal 0.375 0.000
41 stimulus/face/normal 0.461 0.000
42 stimulus/face/normal 0.297 0.000
43 stimulus/car/normal 0.531 0.000
44 stimulus/face/normal 0.492 0.000
45 stimulus/car/normal 0.492 0.000
46 stimulus/face/normal 0.453 0.000
47 stimulus/face/normal 0.359 0.000
48 stimulus/car/normal 0.562 0.000
49 stimulus/face/normal 0.531 0.000
50 stimulus/car/normal 0.633 0.000
51 stimulus/face/normal 0.555 0.000
52 stimulus/car/normal 0.555 0.000
53 stimulus/car/normal 0.547 0.000
54 stimulus/face/normal 0.445 0.000
55 stimulus/face/normal 0.383 0.000
56 stimulus/face/normal 0.398 0.000
57 stimulus/car/normal 0.414 0.000
58 stimulus/face/normal 0.398 0.000
59 stimulus/face/normal 0.336 0.000
60 stimulus/face/normal 0.359 0.000
61 stimulus/car/normal 0.391 0.000
62 stimulus/face/normal 0.547 0.000
63 stimulus/car/normal 0.305 0.000
64 stimulus/car/normal 0.281 0.000
65 stimulus/face/normal 0.414 0.000
66 stimulus/car/normal 0.539 0.000
67 stimulus/face/normal 0.352 0.000
68 stimulus/face/normal 0.391 0.000
69 stimulus/car/normal 0.477 0.000
70 stimulus/car/normal 0.602 0.000
71 stimulus/face/normal 0.422 0.000
72 stimulus/car/normal 0.398 0.000
73 stimulus/face/normal 0.445 0.000
74 stimulus/car/normal 0.586 0.000
75 stimulus/car/normal 0.570 0.000
76 stimulus/car/normal 0.438 0.000
77 stimulus/car/normal 0.391 0.000
78 stimulus/car/normal 0.562 0.000
79 stimulus/face/normal 0.438 0.000
80 stimulus/face/normal 0.375 0.000
81 stimulus/car/normal 0.547 0.000
82 stimulus/car/normal 0.461 0.000
83 stimulus/car/normal 0.438 0.000
84 stimulus/car/normal 0.602 0.000
85 stimulus/car/normal 0.430 0.000
86 stimulus/car/normal 0.398 0.000
87 stimulus/face/normal 0.430 0.000
88 stimulus/car/normal 0.406 0.000
89 stimulus/car/normal 0.328 0.000
90 stimulus/car/normal 0.422 0.000
91 stimulus/face/normal 0.383 0.000
92 stimulus/car/normal 0.328 0.000
93 stimulus/face/normal 0.352 0.000
94 stimulus/car/normal 0.391 0.000
95 stimulus/car/normal 0.367 0.000
96 stimulus/face/normal 0.469 0.000
97 stimulus/car/normal 0.398 0.000
98 stimulus/face/normal 0.461 0.000
99 stimulus/car/normal 0.391 0.000
100 stimulus/face/normal 0.289 0.000
101 stimulus/car/normal 0.383 0.000
102 stimulus/face/normal 0.445 0.000
103 stimulus/face/normal 0.492 0.000
104 stimulus/face/normal 0.453 0.000
105 stimulus/car/normal 0.352 0.000
106 stimulus/face/normal 0.602 0.000
107 stimulus/face/normal 0.422 0.000
108 stimulus/face/normal 0.422 0.000
109 stimulus/face/normal 0.383 0.000
110 stimulus/face/normal 0.469 0.000
111 stimulus/face/normal 0.445 0.000
112 stimulus/face/normal 0.469 0.000
113 stimulus/car/normal 0.367 0.000
114 stimulus/face/normal 0.617 0.000
115 stimulus/car/normal 0.531 0.000
116 stimulus/face/normal 0.578 0.000
117 stimulus/face/normal 0.406 0.000
118 stimulus/face/normal 0.250 0.000
119 stimulus/face/normal 0.336 0.000
120 stimulus/car/normal 0.633 0.000
121 stimulus/car/normal 0.281 0.000
122 stimulus/face/normal 0.562 0.000
123 stimulus/car/normal 0.508 0.000
124 stimulus/car/normal 0.500 0.000
125 stimulus/car/normal 0.438 0.000
126 stimulus/car/normal 0.469 0.000
127 stimulus/car/normal 0.422 0.000
128 stimulus/car/normal 0.289 0.000
129 stimulus/face/normal 0.422 0.000
130 stimulus/car/normal 0.500 0.000
131 stimulus/car/normal 0.359 0.000
132 stimulus/car/normal 0.328 0.000
133 stimulus/car/normal 0.555 0.000
134 stimulus/face/normal 0.383 0.000
135 stimulus/face/normal 0.367 0.000
136 stimulus/car/normal 0.375 0.000
137 stimulus/face/normal 0.352 0.000
138 stimulus/car/normal 0.484 0.000
139 stimulus/car/normal 0.414 0.000
140 stimulus/car/normal 0.352 0.000
141 stimulus/face/normal 0.383 0.000
142 stimulus/face/normal 0.641 0.000
143 stimulus/face/normal 0.336 0.000
144 stimulus/car/normal 0.445 0.000
145 stimulus/car/normal 0.586 0.000
146 stimulus/face/normal 0.508 0.000
147 stimulus/face/normal 0.398 0.000
148 stimulus/car/normal 0.414 0.000
149 stimulus/face/normal 0.414 0.000
150 stimulus/car/normal 0.375 0.000
151 stimulus/face/normal 0.406 0.000
152 stimulus/face/normal 0.477 0.000
153 stimulus/car/normal 0.422 0.000
154 stimulus/face/normal 0.414 0.000
155 stimulus/face/normal 0.398 0.000
156 stimulus/face/normal 0.406 0.000
157 stimulus/car/normal 0.352 0.000
158 stimulus/car/normal 0.320 0.000
159 stimulus/car/normal 0.391 0.000

160 rows × 8 columns

No epochs exceeded the rejection thresholds. Nothing was dropped.
PSD
PSD calculated from 30 epochs (30.0 s).
Method picard
Fit parameters fastica_it=5
max_iter=1000
Fit 223 iterations on epochs (5395 samples)
ICA components 29
Available PCA components 29
Channel types eeg
ICA components marked for exclusion ICA000
ICA005
ICA006
ICA019
ICA021
ICA023
General
Measurement date Unknown
Experimenter Unknown
Participant sub-018
Channels
Digitized points 33 points
Good channels 29 EEG, 1 EOG
Bad channels FP2, VEOG
EOG channels HEOG
ECG channels Not available
Data
Sampling frequency 128.00 Hz
Highpass 0.10 Hz
Lowpass 64.00 Hz
Filenames sub-018_ses-N170_task-N170_proc-filt_raw.fif
Duration 00:10:08 (HH:MM:SS)
PSD
{'eeg': 0.00010752362942062301}
Number of events 151
Events stimulus/car/normal: 75
stimulus/face/normal: 76
Time range -0.203 – 0.797 s
Baseline -0.203 – 0.000 s
Epoch # event_name response/correct response/error stimulus/car/normal stimulus/car/scrambled stimulus/face/normal stimulus/face/scrambled
0 stimulus/car/normal 0.562 0.000 None None
1 stimulus/car/normal 0.438 0.000 None None
2 stimulus/car/normal 0.383 0.000 None None
3 stimulus/face/normal 0.375 None 0.000 None
4 stimulus/face/normal 0.375 None 0.000 None
5 stimulus/face/normal 0.328 None 0.000 None
6 stimulus/face/normal 0.430 None 0.000 None
7 stimulus/car/normal 0.531 0.000 None None
8 stimulus/car/normal 0.477 0.000 None None
9 stimulus/car/normal 0.406 0.000 None None
10 stimulus/face/normal 0.570 None 0.000 None
11 stimulus/car/normal 0.805 0.000 None None
12 stimulus/face/normal 0.586 None 0.000 None
13 stimulus/car/normal 0.555 0.000 None None
14 stimulus/car/normal 0.516 0.000 None None
15 stimulus/face/normal 0.414 None 0.000 None
16 stimulus/face/normal 0.297 None 0.000 None
17 stimulus/face/normal 0.453 None 0.000 None
18 stimulus/face/normal 0.430 None 0.000 None
19 stimulus/car/normal 0.586 0.000 None None
20 stimulus/car/normal 0.523 0.000 None None
21 stimulus/car/normal 0.492 0.000 None None
22 stimulus/face/normal 0.422 None 0.000 None
23 stimulus/face/normal 0.375 None 0.000 None
24 stimulus/face/normal 0.453 None 0.000 None
25 stimulus/car/normal 0.484 0.000 None None
26 stimulus/car/normal 0.445 0.000 None None
27 stimulus/face/normal 0.453 None 0.000 None
28 stimulus/face/normal 0.469 None 0.000 None
29 stimulus/face/normal 0.336 None 0.000 None
30 stimulus/face/normal 0.352 None 0.000 None
31 stimulus/face/normal 0.352 None 0.000 None
32 stimulus/car/normal 0.523 0.000 None None
33 stimulus/face/normal 0.383 None 0.000 None
34 stimulus/face/normal 0.328 None 0.000 None
35 stimulus/car/normal 0.375 0.000 None None
36 stimulus/face/normal 0.445 None 0.000 None
37 stimulus/car/normal 0.438 0.000 None None
38 stimulus/car/normal 0.320 0.000 None None
39 stimulus/car/normal 0.273 0.000 None None
40 stimulus/face/normal 0.375 None 0.000 None
41 stimulus/face/normal 0.461 None 0.000 None
42 stimulus/face/normal 0.297 None 0.000 None
43 stimulus/car/normal 0.531 0.000 None None
44 stimulus/face/normal 0.492 None 0.000 None
45 stimulus/car/normal 0.492 0.000 None None
46 stimulus/face/normal 0.453 None 0.000 None
47 stimulus/face/normal 0.359 None 0.000 None
48 stimulus/car/normal 0.562 0.000 None None
49 stimulus/face/normal 0.531 None 0.000 None
50 stimulus/car/normal 0.633 0.000 None None
51 stimulus/face/normal 0.555 None 0.000 None
52 stimulus/car/normal 0.555 0.000 None None
53 stimulus/car/normal 0.547 0.000 None None
54 stimulus/face/normal 0.445 None 0.000 None
55 stimulus/face/normal 0.383 None 0.000 None
56 stimulus/face/normal 0.398 None 0.000 None
57 stimulus/car/normal 0.414 0.000 None None
58 stimulus/face/normal 0.398 None 0.000 None
59 stimulus/face/normal 0.336 None 0.000 None
60 stimulus/face/normal 0.359 None 0.000 None
61 stimulus/car/normal 0.391 0.000 None None
62 stimulus/face/normal 0.547 None 0.000 None
63 stimulus/car/normal 0.305 0.000 None None
64 stimulus/car/normal 0.281 0.000 None None
66 stimulus/car/normal 0.539 0.000 None None
68 stimulus/face/normal 0.391 None 0.000 None
69 stimulus/car/normal 0.477 0.000 None None
70 stimulus/car/normal 0.602 0.000 None None
71 stimulus/face/normal 0.422 None 0.000 None
72 stimulus/car/normal 0.398 0.000 None None
73 stimulus/face/normal 0.445 None 0.000 None
74 stimulus/car/normal 0.586 0.000 None None
75 stimulus/car/normal 0.570 0.000 None None
76 stimulus/car/normal 0.438 0.000 None None
77 stimulus/car/normal 0.391 0.000 None None
78 stimulus/car/normal 0.562 0.000 None None
79 stimulus/face/normal 0.438 None 0.000 None
80 stimulus/face/normal 0.375 None 0.000 None
81 stimulus/car/normal 0.547 0.000 None None
82 stimulus/car/normal 0.461 0.000 None None
88 stimulus/car/normal 0.406 0.000 None None
89 stimulus/car/normal 0.328 0.000 None None
90 stimulus/car/normal 0.422 0.000 None None
91 stimulus/face/normal 0.383 None 0.000 None
92 stimulus/car/normal 0.328 0.000 None None
93 stimulus/face/normal 0.352 None 0.000 None
94 stimulus/car/normal 0.391 0.000 None None
95 stimulus/car/normal 0.367 0.000 None None
96 stimulus/face/normal 0.469 None 0.000 None
97 stimulus/car/normal 0.398 0.000 None None
98 stimulus/face/normal 0.461 None 0.000 None
99 stimulus/car/normal 0.391 0.000 None None
100 stimulus/face/normal 0.289 None 0.000 None
101 stimulus/car/normal 0.383 0.000 None None
102 stimulus/face/normal 0.445 None 0.000 None
103 stimulus/face/normal 0.492 None 0.000 None
104 stimulus/face/normal 0.453 None 0.000 None
105 stimulus/car/normal 0.352 0.000 None None
106 stimulus/face/normal 0.602 None 0.000 None
107 stimulus/face/normal 0.422 None 0.000 None
108 stimulus/face/normal 0.422 None 0.000 None
109 stimulus/face/normal 0.383 None 0.000 None
110 stimulus/face/normal 0.469 None 0.000 None
111 stimulus/face/normal 0.445 None 0.000 None
112 stimulus/face/normal 0.469 None 0.000 None
113 stimulus/car/normal 0.367 0.000 None None
114 stimulus/face/normal 0.617 None 0.000 None
115 stimulus/car/normal 0.531 0.000 None None
116 stimulus/face/normal 0.578 None 0.000 None
117 stimulus/face/normal 0.406 None 0.000 None
118 stimulus/face/normal 0.250 None 0.000 None
119 stimulus/face/normal 0.336 None 0.000 None
120 stimulus/car/normal 0.633 0.000 None None
122 stimulus/face/normal 0.562 None 0.000 None
123 stimulus/car/normal 0.508 0.000 None None
124 stimulus/car/normal 0.500 0.000 None None
125 stimulus/car/normal 0.438 0.000 None None
126 stimulus/car/normal 0.469 0.000 None None
127 stimulus/car/normal 0.422 0.000 None None
128 stimulus/car/normal 0.289 0.000 None None
129 stimulus/face/normal 0.422 None 0.000 None
130 stimulus/car/normal 0.500 0.000 None None
131 stimulus/car/normal 0.359 0.000 None None
132 stimulus/car/normal 0.328 0.000 None None
133 stimulus/car/normal 0.555 0.000 None None
134 stimulus/face/normal 0.383 None 0.000 None
135 stimulus/face/normal 0.367 None 0.000 None
136 stimulus/car/normal 0.375 0.000 None None
137 stimulus/face/normal 0.352 None 0.000 None
138 stimulus/car/normal 0.484 0.000 None None
139 stimulus/car/normal 0.414 0.000 None None
140 stimulus/car/normal 0.352 0.000 None None
141 stimulus/face/normal 0.383 None 0.000 None
142 stimulus/face/normal 0.641 None 0.000 None
143 stimulus/face/normal 0.336 None 0.000 None
144 stimulus/car/normal 0.445 0.000 None None
145 stimulus/car/normal 0.586 0.000 None None
146 stimulus/face/normal 0.508 None 0.000 None
147 stimulus/face/normal 0.398 None 0.000 None
148 stimulus/car/normal 0.414 0.000 None None
150 stimulus/car/normal 0.375 0.000 None None
151 stimulus/face/normal 0.406 None 0.000 None
152 stimulus/face/normal 0.477 None 0.000 None
153 stimulus/car/normal 0.422 0.000 None None
154 stimulus/face/normal 0.414 None 0.000 None
155 stimulus/face/normal 0.398 None 0.000 None
156 stimulus/face/normal 0.406 None 0.000 None
157 stimulus/car/normal 0.352 0.000 None None
158 stimulus/car/normal 0.320 0.000 None None
159 stimulus/car/normal 0.391 0.000 None None

151 rows × 8 columns

ERP image (EEG)
Drop log
PSD
PSD calculated from 30 epochs (30.0 s).
Time course (EEG)
Global field power
Time course (EEG)
Global field power
Time course (EEG)
Global field power
Full-epochs decoding
Each black dot represents the single cross-validation score. The red cross is the mean of all 5 cross-validation scores. The dashed line is expected chance performance.
Decoding over time: stimulus/face/normal vs. stimulus/car/normal
Time-by-time decoding: 76 × stimulus/face/normal vs. 75 × stimulus/car/normal
Time generalization: stimulus/face/normal vs. stimulus/car/normal
Time generalization (generalization across time, GAT): each classifier is trained on each time point, and tested on all other time points.
  """ERP CORE.

This example demonstrate how to process 5 participants from the
[ERP CORE](https://erpinfo.org/erp-core) dataset. It shows how to obtain 7 ERP
components from a total of 6 experimental tasks:

- N170 (face perception)
- MMN (passive auditory oddball)
- N2pc (visual search)
- N400 (word pair judgment)
- P3b (active visual oddball)
- LRP and ERN (flankers task)

## Dataset information

- **Authors:** Emily S. Kappenman, Jaclyn L. Farrens, Wendy Zhang,
                       Andrew X. Stewart, and Steven J. Luck
- **License:** CC-BY-4.0
- **URL:** [https://erpinfo.org/erp-core](https://erpinfo.org/erp-core)
- **Citation:** Kappenman, E., Farrens, J., Zhang, W., Stewart, A. X.,
                & Luck, S. J. (2021). ERP CORE: An open resource for human
                event-related potential research. *NeuroImage* 225: 117465.
                [https://doi.org/10.1016/j.neuroimage.2020.117465](https://doi.org/10.1016/j.neuroimage.2020.117465)
"""

import argparse
import sys

import mne

bids_root = "~/mne_data/ERP_CORE"
deriv_root = "~/mne_data/derivatives/mne-bids-pipeline/ERP_CORE"

# Find the --task option
args = [arg for arg in sys.argv if arg.startswith("--task") or not arg.startswith("-")]
parser = argparse.ArgumentParser()
parser.add_argument("ignored", nargs="*")
parser.add_argument(
    "--task", choices=("N400", "ERN", "LRP", "MMN", "N2pc", "N170", "P3"), required=True
)
task = parser.parse_args(args).task
sessions = [task]

subjects = ["015", "016", "017", "018", "019"]

ch_types = ["eeg"]
interactive = False

raw_resample_sfreq = 128
# Suppress "Data file name in EEG.data (sub-019_task-ERN_eeg.fdt) is incorrect..."
read_raw_bids_verbose = "error"

eeg_template_montage = mne.channels.make_standard_montage("standard_1005")
eeg_bipolar_channels = {
    "HEOG": ("HEOG_left", "HEOG_right"),
    "VEOG": ("VEOG_lower", "FP2"),
}
drop_channels = ["HEOG_left", "HEOG_right", "VEOG_lower"]
eog_channels = ["HEOG", "VEOG"]

l_freq = 0.1
h_freq = None
notch_freq = 60

decode = True
decoding_time_generalization = True
decoding_time_generalization_decim = 2

find_breaks = True
min_break_duration = 10
t_break_annot_start_after_previous_event = 3.0
t_break_annot_stop_before_next_event = 1.5

if task == "N400":  # test autoreject local without ICA
    spatial_filter = None
    reject = "autoreject_local"
    autoreject_n_interpolate = [2, 4]
elif task == "N170":  # test autoreject local before ICA
    spatial_filter = "ica"
    ica_reject = "autoreject_local"
    reject = "autoreject_global"
    autoreject_n_interpolate = [2, 4]
else:
    spatial_filter = "ica"
    ica_reject = dict(eeg=350e-6, eog=500e-6)
    reject = "autoreject_global"

# These settings are only used for the cases where spatial_filter="ica"
ica_max_iterations = 1000
ica_eog_threshold = 2
ica_decim = 2  # speed up ICA fitting

run_source_estimation = False
on_rename_missing_events = "ignore"

parallel_backend = "dask"
dask_worker_memory_limit = "2.5G"
n_jobs = 4

if task == "N400":
    dask_open_dashboard = True

    rename_events = {
        "response/201": "response/correct",
        "response/202": "response/error",
        "stimulus/111": "stimulus/prime/related",
        "stimulus/112": "stimulus/prime/related",
        "stimulus/121": "stimulus/prime/unrelated",
        "stimulus/122": "stimulus/prime/unrelated",
        "stimulus/211": "stimulus/target/related",
        "stimulus/212": "stimulus/target/related",
        "stimulus/221": "stimulus/target/unrelated",
        "stimulus/222": "stimulus/target/unrelated",
    }

    eeg_reference = ["P9", "P10"]
    epochs_tmin = -0.2
    epochs_tmax = 0.8
    epochs_metadata_tmin = 0
    epochs_metadata_tmax = 1.5
    epochs_metadata_keep_first = ["stimulus/target", "response"]
    baseline = (None, 0)

    conditions = {
        "related": '`first_stimulus/target` == "related" and '
        'first_response == "correct"',
        "unrelated": '`first_stimulus/target` == "unrelated" and '
        'first_response == "correct"',
    }
    contrasts = [("unrelated", "related")]
    cluster_forming_t_threshold = 1.5  # Only for testing!
    cluster_permutation_p_threshold = 0.2  # Only for testing!
elif task == "ERN":
    rename_events = {
        "stimulus/11": "compatible/left",
        "stimulus/12": "compatible/right",
        "stimulus/21": "incompatible/left",
        "stimulus/22": "incompatible/right",
        "response/111": "response/correct",
        "response/112": "response/incorrect",
        "response/121": "response/correct",
        "response/122": "response/incorrect",
        "response/211": "response/incorrect",
        "response/212": "response/correct",
        "response/221": "response/incorrect",
        "response/222": "response/correct",
    }

    eeg_reference = ["P9", "P10"]
    epochs_tmin = -0.6
    epochs_tmax = 0.4
    baseline = (-0.4, -0.2)
    conditions = ["response/correct", "response/incorrect"]
    contrasts = [("response/incorrect", "response/correct")]
    cluster_forming_t_threshold = 5  # Only for testing!
    cluster_permutation_p_threshold = 0.2  # Only for testing!
    decoding_csp = True
    decoding_csp_freqs = {
        "theta": [4, 7],
        "alpha": [8, 12],
        "beta": [13, 20, 30],
        "gamma": [50, 63],
    }
    decoding_csp_times = [-0.2, 0.0, 0.2, 0.4]
elif task == "LRP":
    rename_events = {
        "stimulus/11": "compatible/left",
        "stimulus/12": "compatible/right",
        "stimulus/21": "incompatible/left",
        "stimulus/22": "incompatible/right",
        "response/111": "response/left/correct",
        "response/112": "response/left/incorrect",
        "response/121": "response/left/correct",
        "response/122": "response/left/incorrect",
        "response/211": "response/right/incorrect",
        "response/212": "response/right/correct",
        "response/221": "response/right/incorrect",
        "response/222": "response/right/correct",
    }

    eeg_reference = ["P9", "P10"]
    epochs_tmin = -0.8
    epochs_tmax = 0.2
    baseline = (None, -0.6)
    conditions = ["response/left", "response/right"]
    contrasts = [("response/right", "response/left")]  # contralateral vs ipsi
elif task == "MMN":
    rename_events = {
        "stimulus/70": "stimulus/deviant",
        "stimulus/80": "stimulus/standard",
    }

    eeg_reference = ["P9", "P10"]
    epochs_tmin = -0.2
    epochs_tmax = 0.8
    baseline = (None, 0)
    conditions = ["stimulus/standard", "stimulus/deviant"]
    contrasts = [("stimulus/deviant", "stimulus/standard")]
elif task == "N2pc":
    rename_events = {
        "response/201": "response/correct",
        "response/202": "response/error",
        "stimulus/111": "stimulus/blue/left",
        "stimulus/112": "stimulus/blue/left",
        "stimulus/121": "stimulus/blue/right",
        "stimulus/122": "stimulus/blue/right",
        "stimulus/211": "stimulus/pink/left",
        "stimulus/212": "stimulus/pink/left",
        "stimulus/221": "stimulus/pink/right",
        "stimulus/222": "stimulus/pink/right",
    }

    eeg_reference = ["P9", "P10"]
    # Analyze all EEG channels -- we only specify the channels here for the purpose of
    # demonstration
    analyze_channels = [
        "FP1",
        "F3",
        "F7",
        "FC3",
        "C3",
        "C5",
        "P3",
        "P7",
        "P9",
        "PO7",
        "PO3",
        "O1",
        "Oz",
        "Pz",
        "CPz",
        "FP2",
        "Fz",
        "F4",
        "F8",
        "FC4",
        "FCz",
        "Cz",
        "C4",
        "C6",
        "P4",
        "P8",
        "P10",
        "PO8",
        "PO4",
        "O2",
    ]

    epochs_tmin = -0.2
    epochs_tmax = 0.8
    baseline = (None, 0)
    conditions = ["stimulus/right", "stimulus/left"]
    contrasts = [("stimulus/right", "stimulus/left")]  # Contralteral vs ipsi
elif task == "N170":
    rename_events = {
        "response/201": "response/correct",
        "response/202": "response/error",
    }

    eeg_reference = "average"
    # Analyze all EEG channels -- we only specify the channels here for the purpose of
    # demonstration
    analyze_channels = [
        "FP1",
        "F3",
        "F7",
        "FC3",
        "C3",
        "C5",
        "P3",
        "P7",
        "P9",
        "PO7",
        "PO3",
        "O1",
        "Oz",
        "Pz",
        "CPz",
        "FP2",
        "Fz",
        "F4",
        "F8",
        "FC4",
        "FCz",
        "Cz",
        "C4",
        "C6",
        "P4",
        "P8",
        "P10",
        "PO8",
        "PO4",
        "O2",
    ]

    ica_n_components = 30 - 1
    for i in range(1, 180 + 1):
        orig_name = f"stimulus/{i}"

        if 1 <= i <= 40:
            new_name = "stimulus/face/normal"
        elif 41 <= i <= 80:
            new_name = "stimulus/car/normal"
        elif 101 <= i <= 140:
            new_name = "stimulus/face/scrambled"
        elif 141 <= i <= 180:
            new_name = "stimulus/car/scrambled"
        else:
            continue

        rename_events[orig_name] = new_name

    epochs_tmin = -0.2
    epochs_tmax = 0.8
    baseline = (None, 0)
    conditions = ["stimulus/face/normal", "stimulus/car/normal"]
    contrasts = [("stimulus/face/normal", "stimulus/car/normal")]
elif task == "P3":
    rename_events = {
        "response/201": "response/correct",
        "response/202": "response/incorrect",
        "stimulus/11": "stimulus/target/11",
        "stimulus/22": "stimulus/target/22",
        "stimulus/33": "stimulus/target/33",
        "stimulus/44": "stimulus/target/44",
        "stimulus/55": "stimulus/target/55",
        "stimulus/21": "stimulus/non-target/21",
        "stimulus/31": "stimulus/non-target/31",
        "stimulus/41": "stimulus/non-target/41",
        "stimulus/51": "stimulus/non-target/51",
        "stimulus/12": "stimulus/non-target/12",
        "stimulus/32": "stimulus/non-target/32",
        "stimulus/42": "stimulus/non-target/42",
        "stimulus/52": "stimulus/non-target/52",
        "stimulus/13": "stimulus/non-target/13",
        "stimulus/23": "stimulus/non-target/23",
        "stimulus/43": "stimulus/non-target/43",
        "stimulus/53": "stimulus/non-target/53",
        "stimulus/14": "stimulus/non-target/14",
        "stimulus/24": "stimulus/non-target/24",
        "stimulus/34": "stimulus/non-target/34",
        "stimulus/54": "stimulus/non-target/54",
        "stimulus/15": "stimulus/non-target/15",
        "stimulus/25": "stimulus/non-target/25",
        "stimulus/35": "stimulus/non-target/35",
        "stimulus/45": "stimulus/non-target/45",
    }

    eeg_reference = ["P9", "P10"]
    epochs_tmin = -0.2
    epochs_tmax = 0.8
    baseline = (None, 0)
    conditions = ["stimulus/target", "stimulus/non-target"]
    contrasts = [("stimulus/target", "stimulus/non-target")]
    cluster_forming_t_threshold = 0.8  # Only for testing!
    cluster_permutation_p_threshold = 0.2  # Only for testing!
else:
    raise RuntimeError(f"Task {task} not currently supported")

  Platform             Linux-5.15.0-1053-aws-x86_64-with-glibc2.35
Python               3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0]
Executable           /home/circleci/python_env/bin/python3.10
CPU                  x86_64 (36 cores)
Memory               68.6 GB

Core
├☑ mne               1.7.0.dev156+g415e7f68e (devel, latest release is 1.6.1)
├☑ numpy             1.26.4 (OpenBLAS 0.3.23.dev with 2 threads)
├☑ scipy             1.12.0
└☑ matplotlib        3.8.3 (backend=agg)

Numerical (optional)
├☑ sklearn           1.4.1.post1
├☑ numba             0.59.1
├☑ nibabel           5.2.1
├☑ pandas            2.2.1
└☐ unavailable       nilearn, dipy, openmeeg, cupy

Visualization (optional)
├☑ pyvista           0.43.4 (OpenGL 4.5 (Core Profile) Mesa 23.2.1-1ubuntu3.1~22.04.2 via llvmpipe (LLVM 15.0.7, 256 bits))
├☑ pyvistaqt         0.11.0
├☑ vtk               9.3.0
├☑ qtpy              2.4.1 (PyQt6=6.6.0)
└☐ unavailable       ipympl, pyqtgraph, mne-qt-browser, ipywidgets, trame_client, trame_server, trame_vtk, trame_vuetify

Ecosystem (optional)
├☑ mne-bids          0.15.0.dev43+g17d20c132
├☑ mne-bids-pipeline 1.8.0
└☐ unavailable       mne-nirs, mne-features, mne-connectivity, mne-icalabel, neo