Welcome to the NeuroAnalyzer website

This is a home of NeuroAnalyzer.jl documentation and tutorials.

NeuroAnalyzer is a Julia toolbox for analyzing neurophysiological data. Currently it allows importing, processing and analyzing EEG and NIRS data. Future versions will also support MEG, ECoG and depth electrodes recordings. Also, it will use MRI data for source localization techniques. Various methods for modelling non-invasive brain stimulation protocols (tDCS/tACS/tRNS/tPCS/TMS) will also be included.

NeuroAnalyzer contains a set of separate (high-level) functions, it does not have a graphical user interface (although one could built it upon these). NeuroAnalyzer functions can be combined into an analysis pipeline, i.e. a Julia script containing all steps of your analysis. This combined with processing power of Julia language and easiness of distributing calculations across computing cluster, will make NeuroAnalyzer particularly useful for processing large amounts of research data.

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

The program is licensed under GPL-2.0-only.


How to cite

BibTeX Export:

@software{adam_wysokinski_2023_7372648,
  author       = {Adam Wysokiński},
  title        = {NeuroAnalyzer},
  month        = jun,
  year         = 2023,
  publisher    = {Zenodo},
  version      = {0.23.6},
  doi          = {10.5281/zenodo.7372648},
  url          = {https://doi.org/10.5281/zenodo.7372648}
}

What you can do with NeuroAnalyzer

Currently NeuroAnalyzer is focused on resting-state analysis. Some ERP functions are already available, while other type of analyses will be developed in future versions. The goal is to make a powerful, expandable and flexible environment for processing neurophysiological data.

  1. Load neurophysiological recordings:
  2. Edit:
  3. Process:
  4. Analyze:
  5. Plot:

Why Julia?

There are many excellent MATLAB and Python based EEG/MEG/NIRS software (e.g. EEGLAB, Fieldtrip, Brainstorm, MNE). They have been developed for many years and are well established in the scientific community. Many state-of-the-art papers were published using data prepared using these programs.

However, compared with Python and MATLAB, there are many advantages of Julia, which underlie my decision to start developing such a toolbox in Julia.

I believe that Julia is the future of scientific computing and scientific data analysis. Major advantages of Julia are listed in Julia documentation.

  1. Julia is fast. In many situations Julia is considerably faster than Python (without having to use numba/cython) and MATLAB. Moreover, Julia provides unlimited scalability. Julia programs can easily be ran on a large cluster or across distributed computers.
  2. Julia is open-source and free. Increasing MATLAB licensing costs are prohibitive to individual researchers and many research institutions.
  3. From its very beginning Julia is being focused on scientific computations. Currently only Julia, C, C++ and Fortran belong to the HPC (High Performance Computing) Petaflop Club. Julia is designed for distributed and parallel computations, making it great for distributed analyzes of large data sets.
  4. Most of the Julia packages are written in pure Julia. It’s easier to understand and modify their code if you already know Julia.
  5. Julia is beautifully designed, making programming in Julia a pure pleasure. This elegant design makes Julia easy to learn. In my opinion, for non-professional programmers (which most scientists are) Julia, which falls into the functional programming paradigm, is easier to learn, read and write than object-oriented programming with Python.

Benchmarks against MNE and EEGLAB are available here.


What’s new

Changelog and commit details are here.


What’s next

This roadmap of the future developments of NeuroAnalyzer is neither complete, nor in any particular order.


Hardware and software requirements

See https://neuroanalyzer.org/requirements.html for more details.


Documentation

  1. Stable branch:
  2. Devel branch:

Glossary of terms specific for NeuroAnalyzer is here.


Known bugs

List of reported bugs is here.


Tutorials

  1. Using NeuroAnalyzer
    1. Download and installation
    2. Generating and using sysimage
    3. General remarks
    4. Preferences
  2. Load data and electrode positions
    1. Load/save/import/export EEG
    2. Load/edit/preview electrode positions
  3. Edit
    1. Edit (1): copy, view/edit meta-data, view properties/history
    2. Edit (2): edit channels/epochs, using markers
    3. Edit (3): bad channels/epochs: detect/trim signal/remove bad epochs/interpolate channels
    4. Edit (4): resample, virtual channels, band frequencies, picks, clusters, applying formula
  4. Process EEG
    1. Process EEG (1): reference (channel/CAR/A/M/Laplacian)
    2. Process (2): filtering (FIR/IIR/Remez/moving average/median/polynomial/convolution)
    3. Process (3): demean, normalize, taper, convolution, PCA, ICA
  5. Analyze
    1. Analyze (1): components
    2. Analyze (2)
  6. Plot
    1. Plot (1): plot multi-/single-channel signal
    2. Plot (2): plot frequency analysis (PSD: single-/multi-channel, Welch’s periodogram/multi-tapered/Morlet wavelet, 2d/3d)
    3. Plot (3): plot spectrogram (single-/multi-channel, regular/STFT/Morelet wavelet)
    4. Plot (4): complex plots (signal + PSD + spectrogram)
    5. Plot (5): filter response
    6. Plot (6): band powers
    7. Plot (7): auto/cross-correlation/covariance
  7. Misc
    1. Pipelines
    2. Study
    3. Tiled plots
    4. Calculate and plot PSD slope
    5. Stationarity
    6. ERPs
    7. NIRS

Support

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

Bugs, suggestions and questions should be reported using the NeuroAnalyzer.jl issues page.

You may also follow NeuroAnalyzer on Mastodon.

Mailing list

Only people who are subscribed to the discussion list will be able to receive and post messages.

To subscribe to the NeuroAnalyzer mailing list, please send an empty email to neuroanalyzer-list-subscribe@neuroanalyzer.org or register here. To unsubscribe, send an empty email to neuroanalyzer-list-unsubscribe@neuroanalyzer.org or use the form here.

To send a message to the list, send an email to neuroanalyzer-list@neuroanalyzer.org. All messages are moderated for appropriateness. Messages that are not be related to NeuroAnalyzer/EEG/NIRS/NIBS, contain commercial advertisements or personal attacks and messages with attachments will be withhold from the list.

Mailing list archive is located here.


List of publications using NeuroAnalyzer

If you have used NeuroAnalyzer in your research, please add references to your paper below.


This website was created by Adam Wysokiński ORCID iD icon https://orcid.org/0000-0002-6159-6579