Skip to content

add support to read continously sampled channel files from the Neuralynx acquisition system #11874

@KristijanArmeni

Description

@KristijanArmeni

Describe the new feature or enhancement

After briefly discussing this with @drammock, opening this to evaluate if there is interest in MNE-community to add support for reading the data from the Neuralynx acquisition systems (https://neuralynx.com/).

These electrophysiology time series are typically recorded from depth electrodes at high sampling rates (32KHz) to detect single-neuron spiking activity in humans. To my familiarity, a researcher typically will not interact with the raw dataset (due to large file sizes), but with a downsampled version of the continuous recording (.ncs) usually in combination with event files (.nev).

Information on the type of data files in a typical Neuralynx dataset:

Example dataset/research paper:

Describe your proposed implementation

In brief, Neuralynx datasets are stored as a single .ncs (continuously sampled) files for each channel. A dataset directory containing only .ncs channel files could like something like this:

>>> ls ./neuralynx_dataset
LACC1.ncs   LAM5.ncs    LPCC1.ncs  LPHG5.ncs
LACC2.ncs   LAM6.ncs    LPCC2.ncs  LPHG6.ncs
LACC3.ncs   LAM7.ncs    LPCC3.ncs  LPHG7.ncs
LACC4.ncs   LAM8.ncs    LPCC4.ncs  LPHG8.ncs

It seems to me that on the user end this could look something like:

raw = mne.io.read_raw_neuralynx("./neuralynx_dataset") # read all channel files and header information

or possibly for individual channel files:

raw_ch1 = mne.io.read_raw_neuralynx_ncs("./neuralynx_dataset/LACC1.ncs") # read single channel file and header information

Describe possible alternatives

The Neo python package has a NeuralynxIO class intended to be used as interface to read Neuralynx files in python, but offers no functionality to analyze and visualize the data.

Additional context

I have not analyzed such data before, so I don't have a sample dataset at hand nor can give examples a typical workflow (but might in the coming months). I've only ever had to read in the header information of a Neuralynx dataset for purposes of documenting it and noticed this was not possible with MNE-Python.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions