Welcome

Welcome to the home of NeuroAnalyzer.jl documentation and tutorials.

NeuroAnalyzer is a high-performance Julia toolbox for exploring, visualizing, and analyzing neurophysiological data - including EEG, MEG, ECoG, SEEG, iEEG, NIRS, MEP, and EDA recordings.

The toolbox provides both high-level and low-level functions, along with interactive GUI components for exploratory work. Individual functions can be chained into reproducible analysis pipelines - Julia scripts that capture every step of your workflow. Combined with Julia’s computational performance and native support for distributed computing, this makes NeuroAnalyzer especially well-suited for processing large neurophysiological datasets across computing clusters.

Three additional submodules extend the core functionality:

  1. NeuroStim - modeling of non-invasive brain stimulation protocols (tDCS, tACS, tRNS, tPCS, TMS, TUS, INS) (in development)
  2. NeuroTester - designing and running psychological experiments (in development)
  3. NeuroRecorder - recording neurophysiological signals directly within Julia

NeuroAnalyzer is a free, non-commercial, collaborative project built for researchers in neuroscience, neurology, and psychiatry.

The repository is hosted on Codeberg AdamWysokinski/NeuroAnalyzer.jl and mirrored on Github JuliaHealth/Neuroanalyzer.jl.


Capabilities

Data Import

Supports a wide range of neurophysiological and sensor data formats:

  • EEG: EDF, EDF+, BDF, BDF+, GDF, Alice4, DigiTrack, BrainVision, CSV, FieldTrip, EEGLAB, NPY, Thymatron, NCS, CNT, XDF
  • MEG: FIFF, FieldTrip
  • NIRS: SNIRF, NIRS, NIRX
  • MEP: DuoMAG
  • Body Sensors: Acceleration, magnetic field, angular velocity, and orientation
  • Electrode Positions: CED, LOCS, ELC, TSV, SFP, CSD, GEO, MAT, TXT, DAT, ASC

Data Editing

  • Edit channel and location metadata
  • Trim, resample, and re-epoch data
  • Auto-detect and remove bad channels and epochs
  • Interpolate channels (planar, linear)
  • Delete channels or epochs

Data Processing

  • Referencing: Common, averaged, auricular, mastoid, planar and spherical Laplacian, custom montage
  • Filtering: FIR, IIR, Remez, moving average, moving median, polynomial filters (HP, LP, BP, BS) with filter response preview
  • Remove power line noise
  • Auto-detect and remove electrode pops
  • Interpolation: Linear regressor, MLJ regressor, planar interpolation
  • Decomposition: Independent Component Analysis (ICA), Principal Component Analysis (PCA), Empirical Mode Decomposition (EMD)
  • Convolution: Time and frequency domain
  • Event-Related Potentials (ERP): Create and analyze ERPs
  • NIRS Processing: Convert raw light intensity to optical density and HbO/HbR/HbT concentrations

Data Analysis

  1. Signal Analysis
  • Stationarity analysis
  1. Frequency and Time-Frequency Analysis
  • Total power, band power (absolute and relative)
  • Methods: Fourier transform, Hilbert transform, Welch’s method, Short-Time Fourier Transform (STFT), Multi-Tapered Periodogram, Hilbert-Huang Transform, Hilbert Marginal Spectrum, Gaussian-Hilbert Transform, Discrete and Continuous Wavelet Transformations
  1. Covariance and Correlation
  • Auto- and cross-covariance and correlation (biased and unbiased)
  1. Functional Connectivity
  • General: Correlation, cosine similarity, mutual information
  • Phase-Based: Inter-Site Phase Clustering (ISPC), Inter-Trial Phase Clustering (ITPC), Phase Lag Index (PLI), Phase Locking Value (PLV), Phase Slope Index (PSI), Phase Spectrum Analysis (PSA)
  • Amplitude-Based: Amplitude Envelope Correlation (AEC), Envelope-Signal Correlation (ESC), envelopes correlation
  • Spectral: Coherence, magnitude-squared coherence, imaginary coherence
  1. Complexity and Entropy Measures
  • Entropy, negentropy, sample entropy, normalized sample entropy
  • Higuchi fractal dimension
  1. Additional Metrics
  • Summed similarity using an exponential decay model
  • Dirichlet energy
  • Lateralization index
  • Envelopes (amplitude, power, spectrogram)
  • Power spectrum slope
  1. Event-Related Analysis
  • ERP/ERF: Detect peaks, analyze amplitude, average amplitude, dissimilarity, Global Field Power, topographic variance
  • EROs (Event-Related Oscillations): Spectrogram, power spectrum
  1. Heart Rate Variability (HRV)
  • Time-domain analysis: MENN, MDNN, VNN, SDNN, RMSSD, SDSD, NN50, pNN50, NN20, pNN20
  1. Motor Evoked Potentials (MEPs)
  • Detect peaks, analyze amplitude and average amplitude

Visualization

  • Signals: Single- and multi-channel
  • Power Spectrum: Single- and multi-channel, 2D/3D
  • Spectrogram: Single- and multi-channel
  • Topographical Maps: Channel weights and locations
  • Connections: Functional connectivity
  • Data Plots: Histogram, bar plot, dot plot, box plot, violin plot, polar plot, paired data, confidence interval
  • ERP/ERF: Amplitude, topographical distribution
  • EROs: Spectrogram, power spectrum
  • MEPs: Amplitude
  • Connectivity Circle: Visualize connectivity patterns
  • IMFs, Phase, Instant Frequency
  • Cross-/Auto-Correlations: Heatmaps, matrices
  • ICA Topographies

NeuroRecorder and NeuroTester Modules

NeuroRecorder

NeuroAnalyzer includes NeuroRecorder, a toolkit for recording a variety of neurophysiological signals using accessible hardware platforms:

  • Electrodermal Activity (EDA) / Galvanic Skin Response (GSR): Recorded via Raspberry Pi or Arduino.
  • Angular Velocity Sensors (AVS): Captured using Raspberry Pi or Arduino.

NeuroTester Modules

NeuroAnalyzer also features NeuroTester, a collection of modules designed to implement neuropsychological tests:

  • Finger Tapping Test (FTT): Conducted using a computer keyboard or an external panel connected to a Raspberry Pi.
  • Two-Point Pinch Test (TPT): Utilizes a finger-worn accelerometer attached to an Arduino.
  • Interactive Auditory Verbal Hallucinations (iAVH): A module for the subjective recreation of auditory hallucinations.

Why Julia?

Established EEG software (EEGLAB, MNE, Fieldtrip) is excellent - but Julia offers capabilities that matter for large-scale neurophysiological research.

⚡ Speed: Julia is among the fastest high-level languages available - often comparable to C for numerical work - without the complexity of numba or Cython. It is one of only four languages in the HPC Petaflop Club.

🆓 Free & Open Source: No licensing costs. MATLAB licenses are increasingly prohibitive for individual researchers and smaller institutions. Julia is MIT-licensed and always will be.

🌐 Scalable: Julia’s distributed computing primitives make it straightforward to scale an analysis pipeline from a laptop to a computing cluster - with minimal code changes.

📖 Readable: Most Julia packages are written in pure Julia. The elegant, math-like syntax means you can understand, inspect, and extend any dependency with the same language you already know.

Benchmarks against MNE and EEGLAB: tutorials/benchmarks.html.


What’s New

Changelog and commit details are here.


What’s Next

This roadmap gives an overview of where NeuroAnalyzer is headed. It is not exhaustive, and the order of items does not reflect implementation priority.

You are encouraged to add new functions required for your study. You may also submit a feature request using Codeberg NeuroAnalyzer.jl repository page.


Requirements

See Requirements for more details.


Documentation

Complete API reference is available.

Description of NeuroAnalyzer objects is here.


Known Bugs

Bugs and Issues should be reported using the project repository.


Quickstart

If you are new to Julia, please take a look at some resources for Getting Started with Julia.

using NeuroAnalyzer

Start with the glossary to understand NeuroAnalyzer-specific terminology and next see the download and installation page.

For advanced users, there is a brief introduction on how to generate and use sysimage.


Tutorials

Step-by-step guides covering every part of the toolbox. Produced using the latest development version.

Introduction to:

  1. Signal Theory
  2. Fourier Transform
  3. Hilbert Transform
  4. Wavelet Transform
  5. EEG
  6. EEG Analysis
  7. ERPs
  8. Neuronal Oscillations
  9. EEG Experiments

Load data and electrode positions:

  1. Load/save/import/export Data
  2. Electrode Positions

Editing:

  1. Basic Operations
  2. Edit Channels
  3. Epoching
  4. Bad Channels/Epochs
  5. Sampling Rate
  6. Virtual Channels and Applying Formula

Processing:

  1. Referencing
  2. Filtering
  3. Demean, Normalize, Remove DC, Detrend
  4. Tapering
  5. Remove Electrode Pops
  6. Interpolate bad channels
  7. Convolution
  8. Independent Component Analysis (ICA)
  9. Primary Component Analysis (PCA)
  10. Empirical Mode Decomposition (EMD)
  11. Remove power line noise

Analysis:

  1. Signal Statistics
  2. Stationarity
  3. Covariance and Correlation
  4. Lateralization and Asymmetry
  5. Signal Complexity and Similarity
  6. Frequency
  7. Frequency Domain: power spectrum
  8. Time-frequency Domain: spectrogram
  9. Calculate and Plot PSD Slope
  10. Segments

Special data types:

  1. Motor Evoked Potentials
  2. ERPs
  3. fNIRS
  4. iEEG
  5. MEG
  6. HRV

Functional connectivity:

  1. ISPC/ITPC
  2. PLI/PLV
  3. Coherence
  4. Other Methods: AEC, ESC, cosine similarity, PSA, correlation, PSI, mutual information, envelopes correlation

Statistical analysis:

  1. Bootstrapping

Visualization:

  1. Plot Signal(s)
  2. Plot Spectrum
  3. Plot Spectrogram
  4. Complex Plots
  5. Plot Band Powers
  6. Plot Topographical Maps
  7. Interactive preview and edit
  8. Plot Grid Locs

Miscellanea:

  1. Preferences
  2. Plugins
  3. Pipelines
  4. Animate
  5. Intrinsic Neural Timescales (INTs)

Using NeuroRecorder:

  1. EDA

Using NeuroTester:

  1. FTT
  2. TPT
  3. iAVH

Plugins

The list of available plugins is here.

Please let us know if you would like to add your plugin(s) to the list.


License

This software is licensed under The 2-Clause BSD License.


How to Cite

If NeuroAnalyzer contributed to your research, please cite the JOSS article →:

@article{Wysokiński_2025,
    doi = {10.21105/joss.07734},
    url = {https://doi.org/10.21105/joss.07734},
    year = {2025},
    publisher = {The Open Journal},
    volume = {10},
    number = {107},
    pages = {7734},
    author = {Adam Wysokiński},
    title = {NeuroAnalyzer: Julia toolbox for analyzing neurophysiological data},
    journal = {Journal of Open Source Software}
}

Version-specific DOIs via Zenodo →. Stable releases follow the scheme 0.yy.m.


Financial Support

If you would like to support the project financially, we have the Liberapay account: Donate using Liberapay


Contributing

Every contribution (bug reports, fixes, new ideas, feature requests or additions, speed optimization, better code, documentation improvements, typos, etc.) to the project is highly welcomed.

You are very welcome to raise issues and start pull requests. Bugs, suggestions and questions should be reported using the Codeberg AdamWysokinski/NeuroAnalyzer.jl (preferred method) or Github JuliaHealth/NeuroAnalyzer.jl issues page.

If you notice any bugs, such as crashing code, incorrect results or speed issues, please raise a Codeberg/GitHub issue. Before filing an issue please:

  • check that there are no similar existing issues already
  • check that your versions are up to date

If you want to report a bug, include your version and system information, and all relevant information. If possible, condense your bug into the shortest example possible that the maintainers can replicate, a so called “minimal working example” or MWE.

If you want to suggest a new feature, for example functionality that other plotting packages offer already, include supplementary material such as example images if possible, so it’s clear what you are asking for.

When opening a pull request, please add a short but meaningful description of the changes/features you implemented. Moreover, please add tests (where appropriate) to ensure that your code is working as expected.

For each feature you want to contribute, please file a separate PR to keep the complexity down and time to merge short. Add PRs in draft mode if you want to discuss your approach first.


Publications

  1. Wysokiński A, Szczepocka E, Szczakowska A. Improved cognitive performance, increased theta, alpha, beta and decreased delta powers after cognitive rehabilitation augmented with tDCS in a patient with post-COVID-19 cognitive impairment (brain-fog). Psychiatry Research Case Reports. 2023 DOI →
  2. Sochal M. et al. The relationship between sleep quality measured by polysomnography and selected neurotrophic factors. Journal of Clinical Medicine. 2024 DOI →
  3. Sochal M. et al. Circadian Rhythm Genes and Their Association with Sleep and Sleep Restriction. International Journal of Molecular Sciences. 2024 DOI →
  4. Datseris G, Zelko J. Physiological signal analysis and open science using the Julia language and associated software. Frontiers in Network Physiology. 2024 DOI →

If you have used NeuroAnalyzer in your research, you are kindly asked to report the bibliographic description of your publication.


This website is maintained by Adam Wysokiński ORCID