iEEG electrode localization#

Load electrode coordinates from the MNE epilepsy ECoG dataset and assign each contact to an atlas region. The dataset is used only if it is already available locally.

Data download#

This example requires the MNE epilepsy ECoG dataset. The script avoids downloading automatically. To fetch the dataset beforehand, run in a Python session:

import mne

# Downloads the dataset to the default MNE data folder
mne.datasets.epilepsy_ecog.data_path()

You can control the download location using the MNE_DATA environment variable or by passing path=... to data_path(). The example will then discover the dataset and look for electrodes under the appropriate subject folder.

Load electrode coordinates

from pathlib import Path

import pandas as pd
import mne

from coord2region.fetching import AtlasFetcher
from coord2region.coord2region import AtlasMapper

try:
    data_path = Path(mne.datasets.epilepsy_ecog.data_path(download=False))
except Exception:
    data_path = None
    print("ECoG dataset not available; skipping electrode mapping.")

if data_path is not None:
    electrode_file = data_path / "sub-pt1" / "ses-presurgery" /"ieeg" / "sub-pt1_ses-presurgery_space-fsaverage_electrodes.tsv"
    if electrode_file.is_file():
        contacts = pd.read_table(electrode_file)
        coords = contacts[["x", "y", "z"]].values

        # %%
        # Map contacts to atlas regions
        # For each electrode contact (x, y, z in MNI), find the
        # corresponding anatomical label in the chosen atlas.
        fetcher = AtlasFetcher()
        atlas = fetcher.fetch_atlas("aal")
        mapper = AtlasMapper("aal", atlas["vol"], atlas["hdr"], atlas["labels"])
        labels = [mapper.mni_to_region_name(c) for c in coords]
        print(list(zip(contacts["name"], labels))[:5])
    else:
        print("Electrode file not found; skipping electrode mapping.")

Gallery generated by Sphinx-Gallery