Skip to content

Commit

Permalink
Add skip channels to EDF interface (#1110)
Browse files Browse the repository at this point in the history
  • Loading branch information
h-mayorquin authored Oct 11, 2024
1 parent bfbbe4b commit 52cd6aa
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 3 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
## Features
* Using in-house `GenericDataChunkIterator` [PR #1068](https://github.com/catalystneuro/neuroconv/pull/1068)
* Data interfaces now perform source (argument inputs) validation with the json schema [PR #1020](https://github.com/catalystneuro/neuroconv/pull/1020)
* Added `channels_to_skip` to `EDFRecordingInterface` so the user can skip non-neural channels [PR #1110](https://github.com/catalystneuro/neuroconv/pull/1110)

## Improvements
* Remove dev test from PR [PR #1092](https://github.com/catalystneuro/neuroconv/pull/1092)
Expand Down
32 changes: 29 additions & 3 deletions src/neuroconv/datainterfaces/ecephys/edf/edfdatainterface.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from typing import Optional

from pydantic import FilePath

from ..baserecordingextractorinterface import BaseRecordingExtractorInterface
Expand All @@ -23,7 +25,22 @@ def get_source_schema(cls) -> dict:
source_schema["properties"]["file_path"]["description"] = "Path to the .edf file."
return source_schema

def __init__(self, file_path: FilePath, verbose: bool = True, es_key: str = "ElectricalSeries"):
def _source_data_to_extractor_kwargs(self, source_data: dict) -> dict:

extractor_kwargs = source_data.copy()
extractor_kwargs.pop("channels_to_skip")
extractor_kwargs["all_annotations"] = True
extractor_kwargs["use_names_as_ids"] = True

return extractor_kwargs

def __init__(
self,
file_path: FilePath,
verbose: bool = True,
es_key: str = "ElectricalSeries",
channels_to_skip: Optional[list] = None,
):
"""
Load and prepare data for EDF.
Currently, only continuous EDF+ files (EDF+C) and original EDF files (EDF) are supported
Expand All @@ -36,15 +53,24 @@ def __init__(self, file_path: FilePath, verbose: bool = True, es_key: str = "Ele
verbose : bool, default: True
Allows verbose.
es_key : str, default: "ElectricalSeries"
Key for the ElectricalSeries metadata
channels_to_skip : list, default: None
Channels to skip when adding the data to the nwbfile. These parameter can be used to skip non-neural
channels that are present in the EDF file.
"""
get_package(
package_name="pyedflib",
excluded_platforms_and_python_versions=dict(darwin=dict(arm=["3.8", "3.9"])),
excluded_platforms_and_python_versions=dict(darwin=dict(arm=["3.9"])),
)

super().__init__(file_path=file_path, verbose=verbose, es_key=es_key)
super().__init__(file_path=file_path, verbose=verbose, es_key=es_key, channels_to_skip=channels_to_skip)
self.edf_header = self.recording_extractor.neo_reader.edf_header

# We remove the channels that are not neural
if channels_to_skip:
self.recording_extractor = self.recording_extractor.remove_channels(remove_channel_ids=channels_to_skip)

def extract_nwb_file_metadata(self) -> dict:
nwbfile_metadata = dict(
session_start_time=self.edf_header["startdate"],
Expand Down

0 comments on commit 52cd6aa

Please sign in to comment.