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.0.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.0-cp313-cp313-win_amd64.whl (892.7 kB view details)

Uploaded CPython 3.13Windows x86-64

natmeeg-2.0.0-cp313-cp313-manylinux1_x86_64.manylinux_2_5_x86_64.whl (911.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.5+ x86-64

natmeeg-2.0.0-cp313-cp313-macosx_10_13_universal2.whl (893.0 kB view details)

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

natmeeg-2.0.0-cp312-cp312-win_amd64.whl (892.7 kB view details)

Uploaded CPython 3.12Windows x86-64

natmeeg-2.0.0-cp312-cp312-manylinux1_x86_64.manylinux_2_5_x86_64.whl (911.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.5+ x86-64

natmeeg-2.0.0-cp312-cp312-macosx_10_13_universal2.whl (893.0 kB view details)

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

natmeeg-2.0.0-cp310-cp310-win_amd64.whl (892.7 kB view details)

Uploaded CPython 3.10Windows x86-64

natmeeg-2.0.0-cp310-cp310-manylinux1_x86_64.manylinux_2_5_x86_64.whl (911.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.5+ x86-64

natmeeg-2.0.0-cp310-cp310-macosx_10_9_universal2.whl (892.9 kB view details)

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

File details

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

File metadata

  • Download URL: natmeeg-2.0.0.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.0.tar.gz
Algorithm Hash digest
SHA256 d515d0abe88fe6bbaef6c89e5a30517441cd51e737756a5e3b91db1884db3450
MD5 d4d067b97d9f1353d67129b57b11d65a
BLAKE2b-256 49d5840d3b950a7df0ffa53680c364910b3b54ef2a8f991acfd7d6c93e5842c2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: natmeeg-2.0.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 892.7 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.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 93a2ce03bf8882250809790bb7104e6285deee9554e3c90e34fd56f9b3588c78
MD5 4d41dc59f32716790033e6e90bd9dcbc
BLAKE2b-256 15a6ee7b3269b61dacbdd6f4b8c872173f3aa2e00624c817322d47a82c4b5e84

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for natmeeg-2.0.0-cp313-cp313-manylinux1_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 90ab495fa640676b45b1c98eebaaaebde75fb330e72a32a8621af4a44d00aa75
MD5 17976466eb3f89783e50af3ef0e67ab9
BLAKE2b-256 f5ff74d0efa512b82c3fa2fcb7e093634974bf5aea76bca9278fb8865eda1232

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for natmeeg-2.0.0-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 818f95a4105662d7bbffcfec0cf7dc35e4c6339562a6cd338ad62f56f713d7db
MD5 b170ad378e72ee4bcdb53e1fd8230832
BLAKE2b-256 2f235b37e90c5db443cb917625d73949e49fbc6705c896049c4268193d09b4de

See more details on using hashes here.

File details

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

File metadata

  • Download URL: natmeeg-2.0.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 892.7 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.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 55e8e900ee1d8831f060aedff3725b978ca883c9e697e9cca593ea89402012de
MD5 591444135e0f2c562eb6765aeac2a632
BLAKE2b-256 a67491d6a8be1e816ffefe3608e69168745c0b1dc490ff6b0cd5f4f6812e961b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for natmeeg-2.0.0-cp312-cp312-manylinux1_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 769a041a40c8292249295574c3dcc6dec9d419ffb86df83b161379ad583398b2
MD5 502405638ab09b0224d08e6b03baf978
BLAKE2b-256 39e44521c330275701b6875c3f8a42ec7bc9239d3365addd78cdd48bb95fdd71

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for natmeeg-2.0.0-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 951813e805434946abfeeb2fa1751dc820c3e1cb6c222b7d1d5649c755fbe222
MD5 e68434db5658253dbddfe028ce5c90a2
BLAKE2b-256 9bea8546067c64c8803cddb07c520da228e03156336d7a5ca2f87123c97e265c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: natmeeg-2.0.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 892.7 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.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 76fb40bd90cefc1250990a178c193787b141554f33d7191dc057dc4ae9b708ed
MD5 7359af002fc9364be6627bbd4915e6c3
BLAKE2b-256 3aabba633f938ede4b8d5eaad78b21a2ac5b486a17bee3926a93e52411209f10

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for natmeeg-2.0.0-cp310-cp310-manylinux1_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 90274adb69e2c47e2cf04752971495e84100f6200e61c9cdf16a0bc8481903ab
MD5 55de05ef8e8d8a9b40ac9ca49465bb46
BLAKE2b-256 8f1e70e057d4ed98bc361fdf71713e0a6289b34dccb5d31afbb44dfddbc10888

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for natmeeg-2.0.0-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 6d639e4469ab657bd8e5082ef367d4e8eca9dbf1e6daf0d1486bce4cfa5a48cc
MD5 332cefba86722c8f07bf41bc6eb58c12
BLAKE2b-256 25d0a9cb909836f581ca75be665ea3950dbda1efe8a0db80c0df1e5315bc8577

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

2.0.2

10 files

2.0.1

10 files

This release

2.0.0 This release

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