Skip to main content

natMEEG - Naturalistic M/EEG data analysis

PyPI version DOI

Latest released version: v2.0.0 (2026-08-24).

Formerly named pyEEG

natMEEG is a library for processing M/EEG data built mostly on top of MNE-Python and scikit-learn. It is designed for data collected with naturalistic stimuli, so it works with continuous recordings rather than trial-based designs. It supports analysis of continuous M/EEG and generation of temporal response functions from continuous signals or real-valued events (for example, word-level or phoneme-level features).

You can find the documentation here.

⚠️Note:

  • This code repository is actively maintained as part of the natMEEG project. The library provides tools for computing TRFs (Temporal Response Functions) with the TRFEstimator class in pyeeg/models/, which implements memory-efficient and accelerated computation for handling multiple epochs or multiple subjects.
  • The library is suitable for both research and production use.
  • The project was formerly known as pyEEG and has been rebranded to natMEEG to better reflect its focus on naturalistic M/EEG data analysis.

Installation

Dependencies

natMEEG requires:

  • Python (>= 3.10)
  • psutil
  • tqdm
  • NumPy
  • SciPy
  • scikit-learn
  • matplotlib
  • h5py
  • pandas
  • mne (>= 0.16) [optional]

To generate the doc, Python package sphinx (>= 1.1.0), sphinx_rtd_theme and nbsphinx are required.

User Installation

From PyPI

You can install the package from PyPI using pip:

pip install natmeeg

If you want to install docs building dependencies, you can do:

pip install natmeeg[docs]

If you want to install the package with all dependencies (including MNE), you can do:

pip install natmeeg[full]

From Source

If you prefer to install the package from source, you can clone the repository or download release archive or also use the source distribution (.tar.gz file from PyPi) and build it locally. There is a C-extension that needs to compile, so you need to have a C compiler installed on your machine.

From terminal, cd in root directory of the library after cloning this repository (directory containing pyproject.toml file).

To get the package installed only through symbolic links, namely so that you can modify the source code and use modified versions at will when importing the package in your python scripts do:

pip install -e .

Otherwise, for a standard installation, you can run:

pip install .

Windows Users

There are C-extensions in the library, so you need to have a C compiler installed on your machine. If the default compiler does not work, you can try to install Visual Studio Build Tools and try again.

Optionally try with MinGW, making sure after instalation of it to add the path to mingw/bin in your PATH environment variable. You can check if it is correctly installed by running the following command in your terminal:

gcc --version

If this build tool is available it should be detected during build process (running pip install ., pip install -e . or python -m build).

Usage

The most common usage of the library is to compute temporal response functions (TRF) from continuous M/EEG data. The library provides a TRFEstimator class that allows you to fit a TRF model to your data. The TRF model can be used to predict the M/EEG signal from a stimulus signal (e.g. a continuous audio signal or a sequence of word features):

from pyeeg import TRFEstimator

trf = TRFEstimator(tmin=-0.2, tmax=0.5, srate=fs, alpha=100.0) # TRF between -200ms and 500ms, regularization parameter alpha=100.0
trf.fit(X, y) # assuming data loaded: X is the stimulus signal, y is the M/EEG signal, they must have the same number of samples (rows)
print(trf.score(X, y)) # Normally you would use a separate test set for scoring
trf.plot() # plot the TRF

Choosing a Solver

The TRFEstimator auto-selects an appropriate solver by default (SVD-based ridge for regularized fits, ordinary least squares otherwise). For advanced use cases, any Solver subclass can be injected via the solver= parameter:

from pyeeg.solvers import SVDSolver, ConjugateGradientSolver, IRLSSolver

# Fast iterative solver (same results as SVD, often 10-50x faster)
trf = TRFEstimator(tmin=-0.2, tmax=0.5, srate=fs, alpha=100.0,
                   solver=ConjugateGradientSolver())

# Robust fitting with Cauchy loss (downweights outliers)
trf = TRFEstimator(tmin=-0.2, tmax=0.5, srate=fs, alpha=100.0,
                   solver=IRLSSolver(max_iter=50))

See scripts/examples/solver_showcase.py for a full comparison of all solvers.

Examples

See files in examples/.

Computing Envelope TRF and spatial map from CCA

See examples/CCA_envelope.ipynb

Computing Word-feature TRF

See examples/TRF_wordonsets.ipynb

Working with Word vectors

See examples/import_WordVectors.ipynb

Documentation

You can generate an offline HTML version, or a PDF file of all the docs by following the following instructions (HTML pages are easier to navigate in and prettier than the PDF thanks to the nice theme brought by sphinx_rtd_theme).

Generate the documentation

To generate the documentation you will need sphinx to be installed in your Python environment, as well as the extension nbsphinx (for Jupyter Notebook integration) and the theme package sphinx_rtd_theme. Install those with:

pip install natMEEG[docs]

You can access the doc as HTML or PDF format. First get the source documentation files by cloning the repository or downloading the release archive. The documentation is located in the docs folder. To generate the documentation HTML pages, type in a terminal:

For Unix environment (from root directory, as it uses the Makefile):

make doc

For Windows environment (from docs folder, where make.bat is located):

cd docs
make.bat html

Then you can open the docs/build/html/index.html page in your favourite browser.

And for PDF version, simply use docpdf instead of doc above. Then open docs/build/latex/natMEEG.pdf in a PDF viewer.

Note: The PDF documentation can only be generated if latex and latxmk are present on the machine

To clean files created during build process (can be necessary to re-build the documentation):

make clean

License

This project is licensed under the terms of the GPL-3.0 license. See the LICENSE file for details.

Citation

DOI

Weissbart, H. Natmeeg - M/EEG Data Analysis in Naturalistic Context. 1.7.1, Zenodo, 24 Aug. 2026, https://doi.org/10.5281/zenodo.22081524.

Download files

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

Source Distribution

natmeeg-2.0.2.tar.gz (1.2 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

natmeeg-2.0.2-cp313-cp313-win_amd64.whl (893.2 kB view details)

Uploaded CPython 3.13Windows x86-64

natmeeg-2.0.2-cp313-cp313-manylinux1_x86_64.manylinux_2_5_x86_64.whl (912.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.5+ x86-64

natmeeg-2.0.2-cp313-cp313-macosx_10_13_universal2.whl (893.4 kB view details)

Uploaded CPython 3.13macOS 10.13+ universal2 (ARM64, x86-64)

natmeeg-2.0.2-cp312-cp312-win_amd64.whl (893.2 kB view details)

Uploaded CPython 3.12Windows x86-64

natmeeg-2.0.2-cp312-cp312-manylinux1_x86_64.manylinux_2_5_x86_64.whl (912.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.5+ x86-64

natmeeg-2.0.2-cp312-cp312-macosx_10_13_universal2.whl (893.4 kB view details)

Uploaded CPython 3.12macOS 10.13+ universal2 (ARM64, x86-64)

natmeeg-2.0.2-cp310-cp310-win_amd64.whl (893.2 kB view details)

Uploaded CPython 3.10Windows x86-64

natmeeg-2.0.2-cp310-cp310-manylinux1_x86_64.manylinux_2_5_x86_64.whl (911.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.5+ x86-64

natmeeg-2.0.2-cp310-cp310-macosx_10_9_universal2.whl (893.4 kB view details)

Uploaded CPython 3.10macOS 10.9+ universal2 (ARM64, x86-64)

File details

Details for the file natmeeg-2.0.2.tar.gz.

File metadata

  • Download URL: natmeeg-2.0.2.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for natmeeg-2.0.2.tar.gz
Algorithm Hash digest
SHA256 7d491fabd701cb30be34bad963341d907efb5d93775c9103badc84840873bd04
MD5 0bb2c8d75ce9c7501d31138213c30daf
BLAKE2b-256 4c6a81b01bdf55e23954268694ec01bcc449d74067f16649c42f65bc5bec18b3

See more details on using hashes here.

File details

Details for the file natmeeg-2.0.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: natmeeg-2.0.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 893.2 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for natmeeg-2.0.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 42bbb2accf2440dfc9fd0281372a0d68221ef4bdecfb3cd6c825b44f2f1f0a09
MD5 e4f4f87f15f724d80a7ff049e4314729
BLAKE2b-256 fffe14fe40d32058e7b0f1c8b44b56f5fdb930ff6b389d92482cb90eb1585e2e

See more details on using hashes here.

File details

Details for the file natmeeg-2.0.2-cp313-cp313-manylinux1_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for natmeeg-2.0.2-cp313-cp313-manylinux1_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 a3711a83b31d5381de18a30abe3cd14d3c3c4f71e709f62c99a8c1754cca7b5f
MD5 398bd0f9c6ee8ad0494b9226f6ff22b4
BLAKE2b-256 f68090cd277bf03d1a6fabe948ed2c2f4ae13483cd5eca3055e7839d26b8f070

See more details on using hashes here.

File details

Details for the file natmeeg-2.0.2-cp313-cp313-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for natmeeg-2.0.2-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 ac1d9ce7eae234146e57a662697d9426392bd2d8339447ce54dcf3d62239def6
MD5 318cfa13e6b98bf4163e7e8990852c05
BLAKE2b-256 9614c41b1032c807332f56d28680e0f51dfbf25f75a17c014cc36853f21184ac

See more details on using hashes here.

File details

Details for the file natmeeg-2.0.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: natmeeg-2.0.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 893.2 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for natmeeg-2.0.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 62cf57c85e0264e14deaa0e98c2c0c10056dbbb468156f017bfe5530a1aa5c8b
MD5 a20b35e9d11dce8aa6b19ca1f7a147ba
BLAKE2b-256 11676ec95c410a6182c857b43ad6db71148d4090902bc702a16a9965196eb403

See more details on using hashes here.

File details

Details for the file natmeeg-2.0.2-cp312-cp312-manylinux1_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for natmeeg-2.0.2-cp312-cp312-manylinux1_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 a4a7c1579e7d07df1c14a8116206d94493310252352538231b028208d45b2b95
MD5 47f720dbe225b187df63355b2ba440ee
BLAKE2b-256 443f371e5ce4468802b0478ffb1719b06327a63969b49742bffaed1708bb108e

See more details on using hashes here.

File details

Details for the file natmeeg-2.0.2-cp312-cp312-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for natmeeg-2.0.2-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 6f51ff69e6752e0427ab9348106410e7614384c82cb46979d6079e7955e732c8
MD5 fc1a7461cfdf95db1a4f686c8698a208
BLAKE2b-256 7d7b0f55a825249db2065cbd111dfbb244741fa79d0e3c046bbaf9af390ed174

See more details on using hashes here.

File details

Details for the file natmeeg-2.0.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: natmeeg-2.0.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 893.2 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for natmeeg-2.0.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1950e4ee88a979169bdbf3572a4fac3e2948f2f45e88a156a4cdae81dcc5411e
MD5 508371b49ca4202e3ba2ef513b8afd78
BLAKE2b-256 a0e7fd0a7f1dd2bb2365b54ac023090c381d0613da34a1283840fb2a8e662d47

See more details on using hashes here.

File details

Details for the file natmeeg-2.0.2-cp310-cp310-manylinux1_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for natmeeg-2.0.2-cp310-cp310-manylinux1_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 8f7a9133045ad186e03e363410d448e92f27c249df9469c352a4dd9bf4944754
MD5 c39f373a404fc0723b46820bb40a8b9d
BLAKE2b-256 3bdbbe5abd6e0179703585d4d5169980b1ce689b5d23833902b84eb7b940b916

See more details on using hashes here.

File details

Details for the file natmeeg-2.0.2-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for natmeeg-2.0.2-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 0ab4dfaac72973568057a95e27391eb2cc064884ea4641af85795613dd2fd927
MD5 5546a4c19c13bf8e8136881a5fc95e3a
BLAKE2b-256 b081139149f58d505678857cadfe3af5d16a948441af945e906a435594f61191

See more details on using hashes here.

Release history Release notifications | RSS feed

2.2.0

10 files

2.1.3

10 files

2.1.2

10 files

2.1.1

10 files

2.1.0

10 files

This release

2.0.2 This release

10 files

2.0.1

10 files

2.0.0

10 files

1.7.1

10 files

1.7.0

9 files

1.6.10

10 files

1.6.8

10 files

1.6.5

4 files

1.6.4

4 files

1.6.0

3 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page