/naplib-python

Tools and functions for neural data processing and analysis in python

Primary LanguagePythonMIT LicenseMIT

GH Actions Tests codecov PyPI version Open in Code Ocean License

naplib-python

Tools and functions for neural acoustic data processing and analysis in python. The documentation can be acccessed at the link below. It contains the API reference as well as example notebooks.

Installation

naplib-python is available on PyPi. To install or update this package with pip, run the following command:

pip install naplib

To upgrade the version, run:

pip install --upgrade naplib

API

The basic data structure for storing neural recording data is the Data object, which contains neural recordings and other variables associated with different trials such as stimuli and other metadata. Examples of loading and using this data structure can be found in the documentation and the docs/examples/ folder.

Brain Plotting

In addition to analysis and processing tools, naplib-python contains a suite of visualization tools, including brain plotting for ECoG and intracranial EEG electrodes. The backend can use either pure matplotlib for static plots, or plotly for 3D interactive plots.

Data Structure Schematic

Contributions

naplib-python is built by the Neural Acoustic Processing Lab at Columbia University. We primarily use it for processing neural data coming from electrocorticography (ECoG) and electroencephalography (EEG) along with paired audio stimuli in order to study the auditory cortex. You are free to use the software according to its license, and we welcome contributions if you would like to propose changes, additions, or fixes. See our contribution guide for more details.

Citing naplib-python

If you find naplib-python useful for your research, please cite the following paper (link):

Gavin Mischler, Vinay Raghavan, Menoua Keshishian, & Nima Mesgarani (2023). naplib-python: Neural acoustic data processing and analysis tools in python. Software Impacts, 17, 100541.

Backlog

The following items are ToDo items on the backlog:

  • Look into data parallelization methods for the Data object and associated methods
  • Consider making the Data object a dataclass
  • Implement functionality to write Data objects to MATLAB formats (possibly EEGLab formats)