Quickstart#

The pipeline provides a single high-level function, group_pipeline(), to carry out a full EEG analysis on a group of participants.

Here is a fairly minimal example for a (fictional) N400/P600 experiment with two experimental factors: semantics (e.g., related versus unrelated words) and emotional context (e.g., emotionally negative versus neutral).

pipeline <- reticulate::import("pipeline")

res <- pipeline$group_pipeline(
    raw_files = "Results/EEG/raw",
    log_files = "Results/RT",
    output_dir = "Results/EEG/export",
    besa_files = "Results/EEG/cali",
    triggers = c(201, 202, 211, 212),
    skip_log_conditions = list("semantics" = "filler"),
    components = list(
        "name" = list("N400", "P600"),
        "tmin" = list(0.3, 0.5),
        "tmax" = list(0.5, 0.9),
        "roi" = list(
            c("C1", "Cz", "C2", "CP1", "CPz", "CP2"),
            c("Fz", "FC1", "FC2", "C1", "Cz", "C2")
        )
    ),
    average_by = list(
        "related_negative" = "semantics == 'related' & context == 'negative'",
        "related_neutral" = "semantics == 'related' & context == 'neutral'",
        "unrelated_negative" = "semantics == 'unrelated' & context == 'negative'",
        "unrelated_neutral" = "semantics == 'unrelated' & context == 'neutral'"
    )
)

trials <- res[[1]]
evokeds <- res[[2]]
config <- res[[3]]

In this example we have specified:

  • raw_files, log_files, output_dir, besa_files: The paths to the raw EEG data, to the behavioral log files, to the desired output directory, and to the BESA files for ocular correction

  • triggers: The four different numerical EEG trigger codes corresponding to each of the four cells in the 2 × 2 design

  • skip_log_conditions: Our log files may contain additional trials from a “filler” condition without corresponding EEG trials/triggers. These filler trials are marked with the condition label 'filler' in the log file column semantics

  • components: The a priori defined time windows and regions of interest for the relevant ERP components (N400 and P600)

  • average_by: The relevant groupings of trials for which by-participant averaged waveforms should be created. The keys (e.g., "related_negative") are custom labels of our choice; the values are the corresponding logical conditions that must be met for a trial to be included in the average.

For (way) more options, see Pipeline inputs.