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.1.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.1.0-cp313-cp313-win_amd64.whl (893.7 kB view details)

Uploaded CPython 3.13Windows x86-64

natmeeg-2.1.0-cp313-cp313-manylinux1_x86_64.manylinux_2_5_x86_64.whl (912.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.5+ x86-64

natmeeg-2.1.0-cp313-cp313-macosx_10_13_universal2.whl (893.9 kB view details)

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

natmeeg-2.1.0-cp312-cp312-win_amd64.whl (893.7 kB view details)

Uploaded CPython 3.12Windows x86-64

natmeeg-2.1.0-cp312-cp312-manylinux1_x86_64.manylinux_2_5_x86_64.whl (912.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.5+ x86-64

natmeeg-2.1.0-cp312-cp312-macosx_10_13_universal2.whl (893.9 kB view details)

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

natmeeg-2.1.0-cp310-cp310-win_amd64.whl (893.7 kB view details)

Uploaded CPython 3.10Windows x86-64

natmeeg-2.1.0-cp310-cp310-manylinux1_x86_64.manylinux_2_5_x86_64.whl (912.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.5+ x86-64

natmeeg-2.1.0-cp310-cp310-macosx_10_9_universal2.whl (893.9 kB view details)

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

File details

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

File metadata

  • Download URL: natmeeg-2.1.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.1.0.tar.gz
Algorithm Hash digest
SHA256 3744da6e3b178e35999e1fa5d5699869312d402eb16e478aba423f7523eecd39
MD5 9e76478916977459451634d4b8c61bee
BLAKE2b-256 7df3455881cf77ae8c91ab021ea28bfd2089fe8c993951da098e6120b1f5bce1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: natmeeg-2.1.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 893.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.1.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 5d153a46dc6493cd5a9c11e432d141d4bb7eeb0d167c91f48bba77186ae9df87
MD5 205bb03e99f111646262de78e7477546
BLAKE2b-256 6f7daec76fa32ca21d6902da6077bd974c157eb5a09843fa09dcdd922526094a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for natmeeg-2.1.0-cp313-cp313-manylinux1_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 2d6fe20b1442ae61d1ae30d4697d7316a83761193fab8a6532e4f86496474a16
MD5 de41dbeebeb2673f557d73d096d5e2d4
BLAKE2b-256 7baca820c6eb9bda0f0348568000fbbbe67b1b5e804be03597f2cf4349e6f453

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for natmeeg-2.1.0-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 8db1a7042e130711b3b7cf446336e5477a943b7d1685ab8745ed74811f5f5b26
MD5 72bf16a4a0a0b1f7122d52dbd38b37d5
BLAKE2b-256 50604b368c73f5b2430c6c5ac319379e67069e180481768225ed0e56d6b5cbcf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: natmeeg-2.1.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 893.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.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 bfee7a44f66300842481385241c6acaecb9ba5ad0a9c0d28bb42d2cf79dab0bf
MD5 ff26b1d9cedf89588751087f55c520ff
BLAKE2b-256 877464d9451a9e04506490f5dde9c5ceb91aae0b10fa63eca20f791b8598f9f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for natmeeg-2.1.0-cp312-cp312-manylinux1_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 e87eab222f0d9a87b5a706eafb2b6edb7164ebd1e5c13a14040df4bd22df71a5
MD5 7fa089a59b50a4eba6f93fc4822d8dec
BLAKE2b-256 06ab4c992f6612cb75ed281905fe0b19a63a8b8f9e480ab6d0484376e556da27

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for natmeeg-2.1.0-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 1e84924c8f3fb1e488cc1f737ac0a5cfafb39ea745f421e18a0c6be351fed4e3
MD5 30ef7f8eb89084a800861fbae367af09
BLAKE2b-256 b930f34fafe85559f219cdafd7ad5f6485aaa9eab7c321cd10840b786292ee27

See more details on using hashes here.

File details

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

File metadata

  • Download URL: natmeeg-2.1.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 893.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.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 10079a3e8e78b7d85b01bb4efb93c04324669dd6af3df8e68cd59a957e11fd6d
MD5 d1c5c31de031512459f696af141ed1ca
BLAKE2b-256 7cb463f830172d371be204a5a0f8cbc6eab7a4c777943783c2d0a7dc08555be4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for natmeeg-2.1.0-cp310-cp310-manylinux1_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 c0766beb621837c8eb7e4278c9ba668bf50742c2d786237ddba900ddb92169e5
MD5 99ca47063d54b44e6b6959d3da3fade1
BLAKE2b-256 aeaf2efa1fa717a472240180697d958fec647cc70636caa801fde9a3b1732b2c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for natmeeg-2.1.0-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 43f5f8eeb7ae7a6e3a091b6f943eb119a6a660ff0b9d51108969f05d47ceaa52
MD5 366a8648e04e2dd7ff8b355359c59f42
BLAKE2b-256 ff602da00b538d7820de61c2fe58b255255601bcaef66d3692e20db26e6ca359

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

This release

2.1.0 This release

10 files

2.0.2

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