Source code for rsatoolbox.io.mne

from __future__ import annotations
from typing import Optional, Dict, TYPE_CHECKING
from os.path import basename
from rsatoolbox.data.dataset import TemporalDataset
if TYPE_CHECKING:
    from mne.epochs import EpochsFIF


[docs]def read_epochs(fpath: str) -> TemporalDataset: """Create TemporalDataset from epochs in mne FIF file Args: fpath (str): Full path to epochs file Returns: TemporalDataset: dataset with epochs """ # pylint: disable-next=import-outside-toplevel from mne import read_epochs as mne_read_epochs epo = mne_read_epochs(fpath, preload=True, verbose='error') fname = basename(fpath) descs = dict(filename=fname, **descriptors_from_bids_filename(fname)) return dataset_from_epochs(epo, descs)
[docs]def dataset_from_epochs( epochs: EpochsFIF, descriptors: Optional[Dict] = None ) -> TemporalDataset: """Create TemporalDataset from MNE epochs object Args: fpath (str): Full path to epochs file Returns: TemporalDataset: dataset with epochs """ descriptors = descriptors or dict() return TemporalDataset( measurements=epochs.get_data(), descriptors=descriptors, obs_descriptors=dict(event=epochs.events[:, 2]), channel_descriptors=dict(name=epochs.ch_names), time_descriptors=dict(time=epochs.times) )
[docs]def descriptors_from_bids_filename(fname: str) -> Dict[str, str]: """parse a filename for BIDS-style entities Args: fname (str): filename Returns: Dict[str, str]: sub, run or task descriptors """ descs = dict() for dname in ['sub', 'run', 'task']: for segment in fname.split('_'): if segment.startswith(dname + '-'): descs[dname] = segment[len(dname)+1:] return descs