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

Uploaded CPython 3.13Windows x86-64

natmeeg-2.1.2-cp313-cp313-manylinux1_x86_64.manylinux_2_5_x86_64.whl (913.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.5+ x86-64

natmeeg-2.1.2-cp313-cp313-macosx_10_13_universal2.whl (894.8 kB view details)

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

natmeeg-2.1.2-cp312-cp312-win_amd64.whl (894.6 kB view details)

Uploaded CPython 3.12Windows x86-64

natmeeg-2.1.2-cp312-cp312-manylinux1_x86_64.manylinux_2_5_x86_64.whl (913.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.5+ x86-64

natmeeg-2.1.2-cp312-cp312-macosx_10_13_universal2.whl (894.8 kB view details)

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

natmeeg-2.1.2-cp310-cp310-win_amd64.whl (894.6 kB view details)

Uploaded CPython 3.10Windows x86-64

natmeeg-2.1.2-cp310-cp310-manylinux1_x86_64.manylinux_2_5_x86_64.whl (913.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.5+ x86-64

natmeeg-2.1.2-cp310-cp310-macosx_10_9_universal2.whl (894.7 kB view details)

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

File details

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

File metadata

  • Download URL: natmeeg-2.1.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.1.2.tar.gz
Algorithm Hash digest
SHA256 b64831ace9f90f02d4a568d653e38a3596f8bcf50ef6bf12b01047c0574d2205
MD5 f9873e0647a6e5a84e9949ddab3a99cb
BLAKE2b-256 42e0ab6abce40050f9ccb66ed1307b6f20bbe7b1648fbde896ef4e450ec20309

See more details on using hashes here.

File details

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

File metadata

  • Download URL: natmeeg-2.1.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 894.6 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.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c93705e1ae00da3ea176861c1a19b75ef7d5698894ba3d471e8610ea7b564d18
MD5 79d39c0887a62ae2daefcc5c576b69c8
BLAKE2b-256 4689ccc50b40ed5d5ec77457d090542b31d7864fe20deb4acae775c65b1f4437

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for natmeeg-2.1.2-cp313-cp313-manylinux1_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 5b12244c0e854df0fd9e5e070a32f8c878d67a553135a4238f205d9a1537f226
MD5 8bd700fccf79850d7408d179ce68587e
BLAKE2b-256 4b559508633cf31bf48a8468f3c80d524a98ed6eb062e7a0cc7f7d74f478fa55

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for natmeeg-2.1.2-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 d4c4660d94c7ca65141ef056ce7434a9a1d4fef56ab41c79e9c0c75253c968bb
MD5 b0db66ae0f4a323508eea0e79ed7b88b
BLAKE2b-256 a5cd66727aa44844af022b42d3642af0fb478bce31d3d4d8a71f6c8059dedd7b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: natmeeg-2.1.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 894.6 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.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a75d60b0e9cc7a62e93c90637a3a8ca231e5a3994212702876a2f174842e2e77
MD5 85128fcc49e9491984cfd489b3e528eb
BLAKE2b-256 fbcc6fd7278ca887bfc707f7f2ac12fd1c1adc19fc9890b9e6e4b6b81ae81d7d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for natmeeg-2.1.2-cp312-cp312-manylinux1_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 581a7e574076ac0c426db1e215d868e84d904db33f0460b4eda68b0347ee046e
MD5 4b2b75d24e0bebe75d7a269e5b3c4955
BLAKE2b-256 3425093080b8291a994060396fb35a1ec97ea8d2c3b3592eaec74b30ce095efc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for natmeeg-2.1.2-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 2cb0d27599134eea14891e65473d8cd72223f123afaa01440d9bc40df36ee6e3
MD5 32749e98bc66e0fa23d680616a2c532a
BLAKE2b-256 cb389e7efab860546d0bc50e5e323d7afb87fe6d07523c1c9a9a55d2a7f5fb02

See more details on using hashes here.

File details

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

File metadata

  • Download URL: natmeeg-2.1.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 894.6 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.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 2d861374c8f4e5d9e3fdcf52f7bd3cd2c9820aa3c5c8693ba9def6fd677a8daf
MD5 2a46903d09c12eb3f85cbb8e5951285b
BLAKE2b-256 e13d3e25ab3389762ae6613c6392ddea3317c2f65e772d23107cf10c94d38b6f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for natmeeg-2.1.2-cp310-cp310-manylinux1_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 8fe8caa69e835b36a62ae71220c08e85e7002bd550c4d1333a8c7235b6df93b5
MD5 7ddb7dc757061302e1303655e1e7219b
BLAKE2b-256 85316bb07c66e44206a4ce589b6ba4139df92a9c1e46bf0f5fd2b71d067a8c07

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for natmeeg-2.1.2-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 351a6b8ee4b66dd51cdaf13f90f60fa30216357884d2259651944c1c973e091a
MD5 b2a36afda860e4885208c965cb16ba86
BLAKE2b-256 cbe95f6f30d4cf07b8ba704c164e14885cf5e52d1d4478e7588cad36717803d2

See more details on using hashes here.

Release history Release notifications | RSS feed

2.2.0

10 files

2.1.3

10 files

This release

2.1.2 This release

10 files

2.1.1

10 files

2.1.0

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