Source code for src.utils.cnt_reader.cnt_file_reader

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
CNT file reader
"""

from mne import create_info
from mne.io import RawArray
from mne.channels import make_standard_montage

import numpy as np

from utils.cnt_reader.libeep import cnt_file

__author__ = "Lemahieu Antoine"
__copyright__ = "Copyright 2022"
__credits__ = ["Lemahieu Antoine"]
__license__ = "GNU General Public License v3.0"
__maintainer__ = "Lemahieu Antoine"
__email__ = "Antoine.Lemahieu@ulb.be"
__status__ = "Dev"


[docs]def get_raw_from_cnt(path_to_file): """ Get an MNE.Raw object from a CNT file :param path_to_file: Path to the file. :type path_to_file: str :return: The MNE data of the dataset. :rtype: MNE.Raw """ cnt = cnt_file(path_to_file) sample_count = cnt.get_sample_count() sample_frequency = cnt.get_sample_frequency() channel_names, channel_types = get_all_channels_names(cnt) data = np.transpose(cnt.get_samples(0, sample_count)) cnt_info = create_info(channel_names, sample_frequency, ch_types=channel_types) cnt_raw = RawArray(data, cnt_info) montage = make_standard_montage('standard_1005') cnt_raw.set_montage(montage) return cnt_raw
[docs]def get_all_channels_names(cnt): """ Get all the channels' names based on the CNT data :param cnt: The CNT file read. :type cnt: libeep.cnt_file :return: channel_names: The channels' names. channel_types: The channels' types. :rtype: list of str, list of str """ channel_names = [] channel_types = [] for i in range(cnt.get_channel_count()): channel = cnt.get_channel_info(i)[0] channel_names.append(channel) if channel == 'EOGv' or channel == 'EOGh' or channel == 'Sync' or channel[:3] == 'BIP': channel_types.append('misc') elif channel == 'EOG': channel_types.append('eog') else: channel_types.append('eeg') return channel_names, channel_types