Skip to content

MNE-BIDS-Pipeline overview

MNE-BIDS-Pipeline processes your data in a sequential manner, i.e., one step at a time. The next step is only run after the previous steps have been successfully completed. There are, of course, exceptions; for example, if you chose not to apply ICA or SSP, the spatial filtering steps will simply be omitted and we'll directly move to the subsequent steps. See the flowchart below for a visualization of the steps, or check out the list of processing steps for more information.

All intermediate results are saved to disk for later inspection, and an extensive report is generated. Analyses are conducted on individual (per-subject) as well as group level.

Caching

MNE-BIDS-Pipeline offers automated caching of intermediate results. This means that running mne_bids_pipeline config.py once will generate all outputs, and running it again will only re-run the steps that need rerunning based on:

  1. Changes to files on disk (e.g., updates to bids_root files), and
  2. Changes to config.py

This is particularly useful when you are developing your pipeline, as you can quickly iterate over changes to your pipeline without having to re-run the entire pipeline every time -- only the steps that need to be re-run will be executed.

Flowchart

For more detailed information on each step, please refer to the detailed list of processing steps.

1. ๐Ÿ“‚ Filesystem initialization and dataset inspection

Click to expand
flowchart TD
    A01["Initialize derivatives_dir"] --> A02["Find empty-room data matches"]

2. ๐Ÿงน Preprocessing

Click to expand
flowchart TD
    B01["Assess data quality and find bad (and flat) channels"] --> B02["Estimate head positions"]
    B02 --> B03["Maxwell-filter MEG data"]
    B03 --> B04["Apply low- and high-pass filters"]
    B04 --> B05["Temporal regression for artifact removal"]
    B05 --> B06a1["Fit ICA"]
    B06a1 --> B06a2["Find ICA artifacts"]
    B05 --> B06b["Compute SSP"]
    B05 --> B07["Extract epochs"]
    B06a2 --> B08a["Apply ICA"]
    subgraph Z[" "]
    direction LR
      B06a1
      B07
      B06b
    end
    style Z fill:#0000,stroke-width:0px

    B06b --> B08b["Apply SSP"]
    B07 --> B08a
    B07 --> B08b
    B08a --> B09["Remove epochs based on PTP amplitudes"]
    B08b --> B09

3. ๐Ÿ“ก Sensor-space analysis

Click to expand
flowchart TD
    C01["Extract evoked data for each condition"] --> C02["Decode pairs of conditions based on entire epochs"]
    C02 --> C03["Decode time-by-time using a 'sliding' estimator"]
    C03 --> C04["Time-frequency decomposition"]
    C04 --> C05["Decoding based on common spatial patterns (CSP)"]
    C05 --> C06["Noise covariance estimation"]
    C06 --> C99["Group average at the sensor level"]

4. ๐Ÿง  Source-space analysis

Click to expand
flowchart TD
    D01["Create BEM surfaces"] --> D02["Compute BEM solution"]
    D02 --> D03["Setup source space"]
    D03 --> D04["Forward solution"]
    D04 --> D05["Inverse solution"]
    D05 --> D99["Group average at the source level"]
Click to expand
flowchart TD
    E01["Run FreeSurfer's recon-all"] --> E02["Generate coregistration surfaces"]