class eelbrain.pipeline.RawSource(filename='{subject}_{recording}-raw.fif', reader=<function read_raw_fif>, sysname=None, rename_channels=None, montage=None, connectivity=None, **kwargs)

Raw data source

  • filename (str) – Pattern for filenames. The pattern should contain the fields {subject} and {recording} (which internally is expanded to session and, if applicable, visit; default '{subject}_{recording}-raw.fif').

  • reader (callable) – Function for reading data (default is

  • sysname (str) – Used to determine sensor positions (not needed for KIT files, or when a montage is specified).

  • rename_channels (dict) – Rename channels before applying montage, {from: to} dictionary; useful to convert idiosyncratic naming conventions to standard montages.

  • montage (str) – Name of a montage that is applied to raw data to set sensor positions.

  • connectivity (Union[str, List[Tuple[str, str]], Path, None]) –

    Connectivity between sensors. Can be specified as:

    • list of connections (e.g., [('OZ', 'O1'), ('OZ', 'O2'), ...])

    • numpy.ndarray of int, shape (n_edges, 2), to specify connections in terms of indices. Each row should specify one connection [i, j] with i < j. If the array’s dtype is uint32, property checks are disabled to improve efficiency.

    • 'auto' to use mne.channels.find_ch_adjacency()

    • Path object to load connectivity from a file

    • "none" for no connections

    If unspecified, it is inferred from sysname if possible.

  • ... – Additional parameters for the reader function.


If you would load the EEG data like this:

form pathlib import Path

subject = '0001'
raw =
    eog=['EOG horizontal left', 'EOG horizontal right', 'EOG vertical below', 'EOG vertical above'],
raw.rename_channels({'FZ': 'Fz', 'OZ': 'Oz', 'CZ': 'Cz', 'Ref right mastoid': 'A1'})

Then the equivalent RawSource is:

raw = {
    'raw': RawSource(
        rename_channels={'FZ': 'Fz', 'OZ': 'Oz', 'CZ': 'Cz', 'Ref right mastoid': 'A1'},
        eog=['EOG horizontal left', 'EOG horizontal right', 'EOG vertical below', 'EOG vertical above'],



cache(subject, recording)

Make sure the file exists and is up to date

exists(subject, recording)


get_sysname(info, subject, data)

load(subject, recording[, add_bads, ...])

load_bad_channels(subject, recording)

make_bad_channels(subject, recording, ...)

make_bad_channels_auto(subject, recording[, ...])

mtime(subject, recording[, bad_chs])

Modification time of anything influencing the output of load