Skip to main content

Real-time analysis of intracranial neurophysiology recordings.

Project description


Analyzing neural data can be a troublesome, trial and error prone, and beginner unfriendly process. py_neuromodulation allows using a simple interface for extraction of established neurophysiological features and includes commonly applied pre -and postprocessing methods.

Only time series data with a corresponding sampling frequency are required for feature extraction.

The output will be a pandas.DataFrame including different time-resolved computed features. Internally a stream get’s initialized, which resembles an online data-stream that can in theory also be be used with a hardware acquisition system.

The following features are currently included:

Find here the preprint of py_neuromodulation called “Invasive neurophysiology and whole brain connectomics for neural decoding in patients with brain implants” [1].

The original intention for writing this toolbox was movement decoding from invasive brain signals [2]. The application however could be any neural decoding problem. py_neuromodulation offers wrappers around common practice machine learning methods for efficient analysis.

Find the documentation here for example usage and parametrization.


py_neuromodulation requires at least python 3.10. For installation you can use pip:

pip install py-neuromodulation

We recommend however installing the package using rye:

git clone
rye pin 3.11
rye sync

And then activating the virtual environment e.g. in Windows using:


Alternatively you can also install the package in a conda environment:

conda create -n pynm-test python=3.11 conda activate pynm-test

Then install the packages listed in the pyproject.toml:

pip install .

Optionally the ipython kernel can be specified for the installed pynm-test conda environment:

ipython kernel install --user --name=pynm-test

Then py_neuromodulation can be imported via:

import py_neuromodulation as nm

Basic Usage

import py_neuromodulation as nm
import numpy as np

NUM_DATA = 10000
sfreq = 1000  # Hz
sampling_rate_features_hz = 3  # Hz

data = np.random.random([NUM_CHANNELS, NUM_DATA])

stream = nm.Stream(sfreq=sfreq, data=data, sampling_rate_features_hz=sampling_rate_features_hz)
features =

Check the Usage and First examples for further introduction.

Contact information

For any question or suggestion please find my contact information at my GitHub profile.


Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py_neuromodulation-0.0.3.tar.gz (278.9 kB view hashes)

Uploaded Source

Built Distribution

py_neuromodulation-0.0.3-py3-none-any.whl (388.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page