Skip to content

Chapter 7: Bridging Back to MNE-Python

Continuing from Chapter 6 — ERP Analysis with ERPLAB. This is the final chapter of the EEGLAB & ERPLAB track.

You've now seen the same broad arc three times across this repository — import, preprocess, epoch, average — as MNE-Python code, as Brainstorm clicks, and now as EEGLAB and ERPLAB menus. This closing chapter connects EEGLAB/ERPLAB directly back to MNE-Python.

Three paths to the same analysis

Reading EEGLAB files in MNE-Python

The .set/.fdt files saved in Chapter 2 are not a dead end — MNE-Python reads them natively:

raw = mne.io.read_raw_eeglab("recording.set")
epochs = mne.read_epochs_eeglab("epochs.set")

A pipeline cleaned by hand in EEGLAB's GUI (filtering, bad-channel interpolation, ICA) can be loaded straight into MNE-Python for anything the GUI doesn't cover as conveniently — custom statistics, machine learning, or a scripted pipeline across many subjects.

ERPLAB's .erp files: the honest answer

ERPLAB's own averaged-ERP files (.erp) do not have a native MNE-Python reader — this is worth stating plainly rather than glossing over. The practical route is to export epochs (not the final ERPset) as a .set file from EEGLAB, read those into MNE-Python with mne.read_epochs_eeglab(), and average them there with epochs.average() to get an Evoked object equivalent to ERPLAB's ERPset. You lose ERPLAB's Measurement Tool this way, but gain everything MNE-Python offers for the analysis that follows.

Choosing a tool for a given task

  • Reach for EEGLAB + ERPLAB when your study centers on a classic ERP component and you want the Measurement Tool's fast, consistent amplitude/latency extraction across many subjects; when your lab already has a MATLAB license and existing EEGLAB scripts; or when you want access to EEGLAB's especially large plugin ecosystem.
  • Reach for Brainstorm when 3D source localization is the point, or a collaborator needs a no-license, no-code option.
  • Reach for MNE-Python when you need a single pipeline that runs identically and reproducibly across a large dataset, integrates with the rest of the Python data-science stack, or needs to live in version control as reviewable code.

As with Brainstorm, many real projects use more than one of these: measure ERPs quickly in ERPLAB for a first look, then re-implement the finalized pipeline in MNE-Python for the full dataset and any downstream analysis that goes beyond plain amplitude and latency.

Where to go next

If you'd like to see these same concepts written as executable code, the MNE-Python track's EEG Fundamentals and ERP Analysis chapters cover the sensor-level side of this pipeline, and Apply This to Your Own Data is a template for running it on your own recording.

That's the end of the EEGLAB & ERPLAB track — thanks for reading.