Source code for neuroconv.datainterfaces.ecephys.edf.edfdatainterface

from ..baserecordingextractorinterface import BaseRecordingExtractorInterface
from ....tools import get_package
from ....utils.types import FilePathType


[docs]class EDFRecordingInterface(BaseRecordingExtractorInterface): """ Data interface class for converting European Data Format (EDF) data using the :py:class:`~spikeinterface.extractors.EDFRecordingExtractor`. Not supported for Python 3.8 and 3.9 on M1 macs. """ help = "Interface for European Data Format (EDF) recording data." display_name = "EDF Recording" keywords = BaseRecordingExtractorInterface.keywords + [ "European Data Format", ] def __init__(self, file_path: FilePathType, verbose: bool = True, es_key: str = "ElectricalSeries"): """ Load and prepare data for EDF. Currently, only continuous EDF+ files (EDF+C) and original EDF files (EDF) are supported Parameters ---------- file_path : str or Path Path to the edf file verbose : bool, default: True Allows verbose. es_key : str, default: "ElectricalSeries" """ get_package( package_name="pyedflib", excluded_platforms_and_python_versions=dict(darwin=dict(arm=["3.8", "3.9"])), ) super().__init__(file_path=file_path, verbose=verbose, es_key=es_key) self.edf_header = self.recording_extractor.neo_reader.edf_header def extract_nwb_file_metadata(self) -> dict: nwbfile_metadata = dict( session_start_time=self.edf_header["startdate"], experimenter=self.edf_header["technician"], ) # Filter empty values nwbfile_metadata = {property: value for property, value in nwbfile_metadata.items() if value} return nwbfile_metadata def extract_subject_metadata(self) -> dict: subject_metadata = dict( subject_id=self.edf_header["patientcode"], date_of_birth=self.edf_header["birthdate"], ) # Filter empty values subject_metadata = {property: value for property, value in subject_metadata.items() if value} return subject_metadata
[docs] def get_metadata(self) -> dict: metadata = super().get_metadata() nwbfile_metadata = self.extract_nwb_file_metadata() metadata["NWBFile"].update(nwbfile_metadata) subject_metadata = self.extract_subject_metadata() metadata.get("Subject", dict()).update(subject_metadata) return metadata