Skip to content

THINGS-EEG2 comparison workflow

NeuRepTrace can run its calibration-first decoder comparison on THINGS-EEG2 after the author-preprocessed arrays have been staged locally. The workflow does not download THINGS-EEG2 automatically because the dataset is large; use the THINGS, OpenNeuro/NeMAR, OSF, or local lab mirror route to stage the data first.

Expected staged data

The workflow expects the author-preprocessed THINGS-EEG2 files for each subject, for example one of these layouts:

<data_root>/eeg_dataset/preprocessed_data/sub-01/preprocessed_eeg_test.npy
<data_root>/eeg_dataset/preprocessed_data/sub-01/preprocessed_eeg_training.npy

It also accepts these equivalent subject roots:

<data_root>/preprocessed_data/sub-01/
<data_root>/Preprocessed_data/sub-01/
<data_root>/derivatives/preprocessed_eeg/sub-01/
<data_root>/sub-01/

Each numpy file must contain the original dictionary keys preprocessed_eeg_data, ch_names, and times.

Label map

NeuRepTrace's current benchmark runner evaluates supervised decoding labels. For a NOD-style semantic comparison, provide a CSV mapping THINGS-EEG2 image-condition IDs to the labels you want to decode. For a binary animate/inanimate task:

image_condition,label
1,animate
2,inanimate
3,animate
4,inanimate

The workflow default uses:

label_map_key_column=image_condition
label_map_label_column=label
label_column=condition
group_column=image_condition
chance=0.5

Grouping by image_condition keeps repetitions of the same image out of both train and test folds for semantic labels. Do not use this grouped protocol for exact image-condition classification unless the label definition has more than one image condition per class; otherwise the grouped split holds out entire classes.

Manual workflow run

gh workflow run things-eeg2-comparison.yml \
  --repo IPS-Stuttgart/NeuRepTrace \
  --ref main \
  -f data_root=../data/things_eeg2 \
  -f label_map_csv=../data/things_eeg2/things_eeg2_label_map.csv \
  -f output_dir=results/things_eeg2_animacy \
  -f target_labels=animate,inanimate \
  -f chance=0.5

For a smoke test, cap the number of conditions and repetitions:

gh workflow run things-eeg2-comparison.yml \
  --repo IPS-Stuttgart/NeuRepTrace \
  --ref main \
  -f data_root=../data/things_eeg2 \
  -f label_map_csv=../data/things_eeg2/things_eeg2_label_map.csv \
  -f subjects="1 2" \
  -f max_conditions_per_label=10 \
  -f max_repetitions=10 \
  -f output_dir=results/things_eeg2_smoke

Outputs

The workflow stages each subject into an MNE Epochs FIF file and metadata CSV, writes a NeuRepTrace manifest, then runs the existing benchmark, calibration, paired-statistics, and inference reports. Compact uploaded artifacts include summary.csv, summary.png, reliability outputs, paired statistics, inference CSV files, and the staged metadata CSVs. Large staged FIF files are not uploaded.