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

Uploaded CPython 3.13Windows x86-64

natmeeg-2.0.1-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.1-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.1-cp312-cp312-win_amd64.whl (893.2 kB view details)

Uploaded CPython 3.12Windows x86-64

natmeeg-2.0.1-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.1-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.1-cp310-cp310-win_amd64.whl (893.2 kB view details)

Uploaded CPython 3.10Windows x86-64

natmeeg-2.0.1-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.1-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.1.tar.gz.

File metadata

  • Download URL: natmeeg-2.0.1.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.1.tar.gz
Algorithm Hash digest
SHA256 72dac5be19bcf2b5831507ad552f3f1df2b0329e753b43c5f35aacee57721f75
MD5 a3418ce4817709d547bf3b210bee599a
BLAKE2b-256 c68982fa73a4e7094789edea5a0cd5d1e3b11e63c6f85d5b3321864d01dd6e81

See more details on using hashes here.

File details

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

File metadata

  • Download URL: natmeeg-2.0.1-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.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 61bdedcaff824d9f80ec9d9cfbc169ad659535bea7f32f17aee7d25b371f0f00
MD5 44e5adcced718ab4e2cc1164e87633cf
BLAKE2b-256 6b6b42d30a9b91249ea1b17a5e316ba858a03c1a4838609e92a0d7a653deae3a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for natmeeg-2.0.1-cp313-cp313-manylinux1_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 3671d071b9fe6a7976b976706c0b79d45e325df076a18bfc46cd6d4033c3b046
MD5 41f444b32aebaac459649f61b0e91a23
BLAKE2b-256 4164325d0bdab6ca10a70abf3ce170a6a45a769dafd82b30225ea4c5b00bbb7a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for natmeeg-2.0.1-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 6c68a66726439759448f4a62e219789cccad16248f30cb4722794165c31a8c92
MD5 e15f4859401f017e721b8c2f4874e01f
BLAKE2b-256 358d506f1d7e217aca261be1ebefb753d07de9b83a0007d12c8a79b663511518

See more details on using hashes here.

File details

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

File metadata

  • Download URL: natmeeg-2.0.1-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.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a8d775b07c288230de2895870942c2e55d0fda6a0a8b4e0dd42bc96241351d01
MD5 c51ef89c215feac91ae171a380340d82
BLAKE2b-256 9316a89858f0f650db14a25db136a48fb068e5af62b9e84f8bcfd4b633a54734

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for natmeeg-2.0.1-cp312-cp312-manylinux1_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 872110d0c76e49b3e0bddb428765f823e3df57ae8940909caa7151ef551c11b6
MD5 a503b00d0b039a37d7d01120238b638f
BLAKE2b-256 8a739b31279882627d260e61a4474efff8a68bf565d9259dcba56b5efd80a5c3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for natmeeg-2.0.1-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 c306733262e851b6f3f29e1327e45b6b6a02bb171c7d1aec6872ae0093ba151c
MD5 bc52262057edd7b9d1a42ec5b5ba7062
BLAKE2b-256 1469dd6635139d3671aff82298b7873b458524f89e60d15a5566a6754e6aeaa9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: natmeeg-2.0.1-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.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1a7e4e20df3182b6a6d46e54dba9ccf3b285bc6cd76493c0b0e6a805e8facb98
MD5 e9b43ff9d5b2a7b1c9a687b0dc974c11
BLAKE2b-256 7b2c69acc19faba47715703ccb301e9510ca3087cf98f61ae731ba057f17afb8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for natmeeg-2.0.1-cp310-cp310-manylinux1_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 bd8f0fe7e780b35f4d40492f8a29e2ad694fd124c16ef76ca8fed9488b0b3410
MD5 e3c86c8634f6d9dc79ce21bb6727e77a
BLAKE2b-256 41760760eb19fef31dcdddb5779194f90fa69c7db228ffaa330802d34878116d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for natmeeg-2.0.1-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 70fafdffe03b41392c3426e7dbabd7da53178a6266b33ff0ea4d0fd554903471
MD5 df10e69d158da40c4c0e399a156b4bdf
BLAKE2b-256 63c8d2ad77c67817eafa9e843bf2dd43550a51c33aa0d6bcb26f08eb5a6b9b53

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

This release

2.0.1 This release

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