Git Commits
v0.26.11 (01/11/2026)
- breaking change: functions operating on arrays that also operate on NEURO are now private (
_*) and available viaNeuroAnalyzer._* - breaking change:
loadandsavewere renamed toload_neuroandsave_neuro - breaking change:
t2snow returnsround(t·fs) + 1, so time 0 is sample 1 andt2s/s2tare exact inverses; results are one sample higher than before (e.g.t2s(1.0, 256)is now 257, was 256).s2tno longer rounds to 4 decimals; for durations use the newt2n/n2t: a 10 s window ist2s(t0, fs):(t2s(t0, fs) + t2n(10, fs) - 1) - breaking change: internally channel positions and time points are stored as exact values; rounding to 2 decimal places is done for presentation only
- analyze:
fooof: parameterize neural power spectra into aperiodic and periodic components - plot:
plot: epochs can be manually selected and deleted - plot:
plot: improved segment deletion for continuous signal - plot:
ch_locsarguments forplot_psd,plot_phs,plot_erp,plot_gfp: if true, draws a head outline with the locations of the plotted channels (position given inch_locs_posargument) - plot: legend in multichannel plots is placed outside the plot
- plot: axis is now properly log10-scaled
- plot: axes are unified across similar plot types
- plot: improved head outlines
- plot: gain can be changed while vieving the signal plot
- plot:
plot_env,plot_ispc,plot_pli,plot_itpc,plot_itpc_spec,plot_itpc_frqmoved from plugins - process:
sphinterpolate_channel: interpolate EEG channel(s) using spherical splines - process:
remove_powerlineis now >50× faster - process:
apply_ssp_projectors,generate_ssp_projectors(): projector built in SI units and converted to data units - process:
maxwell_filter: Maxwell filtering (SSS), temporal SSS (tSSS) and head movement compensation for Neuromag/MEGIN Vectorview/TRIUX data; information-based regularization, fine calibration and cross-talk correction - process:
chpi_head_positions: continuous head position estimation from cHPI signals - process:
read_fine_calibration,read_cross_talk(): readsss_cal.datandct_sparse.fif - process:
reference_custommodifies location of bipolar montage channels - io: better handling of non-integer sampling rates
- io: improved labels cleaning
- io:
import_recording: improved automatic file format detection - io: updated FIFF importer:
import_fiff:allow_maxshield(IAS/MaxShield raw data refused by default) andchannel_locs(:fiff,:layout,:none) argumentsimport_fiff: channel locations taken from the FIFF file by default (fallback: bundled 306-channel layout)import_fiff: channel labels are generated from FIFF channel names (including MNE long names)import_fiff: EEG-only FIFF files are imported as EEG recordingsimport_fiff: calibration raw × range × cal (unit multiplier no longer applied, as in MNE-Python)import_locs_fiff: channel locations are imported from FIFF files
- FFTW now uses single thread, which is vastly faster when processing channels in separate
- new set of complete tests
- code cleanup
- code fixes
v0.26.10 (04/10/2026)
- analyze:
coherence: coherence for multi-epoch objects is calculated properly - process:
filter_createwas rewritten; for FIR filters order is calculated from bw; detailed filter parameters are reported - process:
cpsd: padding length was fixed for:stft - process:
filter_reportwas added - plot:
plot_filterwas upgraded - code cleanup
- code fixes
v0.26.9 (02/09/2026)
- fix: temporary objects are released
- old unused code was removed
- external scripts updated
v0.26.8 (02/08/2026)
- error when saving NA objects on Window system fixed
- external scripts updated
v0.26.7 (13/07/2026)
- markers can have the length of 0
- code cleanup
- code fixes
v0.26.5 (01/05/2026)
- plot:
plot_topoadd channel labels - updated tutorials (still in progress)
- code cleanup
- many minor modifications and fixes
v0.26.4 (01/04/2026)
- plot:
plot_mep: use embedded peaks - analyze:
entropy: differential entropy added - analyze:
negentropy: three different entropy method can be used, optional signal normalization and demeaning - analyze:
psdremoves DC component for each epoch by default (demeanargument) - process:
ica_removeremoves ICA components properly;ica_reconstructremoved since doubled byica_remove - significantly reduced multi-threading overhead
- updated website
- updated tutorials (still in progress)
- entire code has been cleaned up
- almost entire code is nicely commented
- almost all functions have complete docstrings
v0.26.3 (01/03/2026)
- breaking change:
frq_nargument replaced withnfrq - breaking change:
channel_infoaccepts channel by name - breaking change:
channel_clusterreturns list of labels - breaking change:
channel_pickreturns list of labels - fix:
trimremoval of markers - plot: use
exclude_badswhen plotting - plot:
plot_filteris interactive - plot:
plot_gfpGlobal Field Power for ERP/ERF - plot:
plotdelete segments - plot:
plotshow two objects - plot:
plotshow channel info - plot:
plottoggle channel good/bad status - process:
filter_createdefaultrpandrsvalues changed to 0.5 and 20, respectively - analyzer:
erp_aucmeasure area under curve for ERP/ERF/MEP - analyze:
erp_gfpGlobal Field Power - edit:
channel_rejectandepoch_reject - multitaper: default number of tapers is now 16
- code cleanup
- many minor modifications and fixes
v0.26.2 (01/02/2026)
- breaking change: GUI functions (
i*) are disabled and being rewritten - breaking change: transition from Plots.jl to GLMakie.jl
- breaking change:
frq_limargument replaced withflim - breaking change: removed GPU support
- breaking change: removed components
- breaking change: time points are rounded to 4 decimals
- breaking change: list of bad channels is a vector for all epochs, not a matrix for each epoch separately
- breaking change:
trimcan be applied to a continuous signal only - breaking change: default
woverlapisround(Int64, wlen * 0.90) - plot:
plotis completely new - plot:
plot_locsandplot_locs3dare now separate functions - plot:
plot_locsis interactive - plot:
plot_topodoes not use time segment, only time point - plot:
plot_topocan also plot external data (vector or matrix; matrix will be averaged) - plot:
plot_topocan mark significant channels - plot:
plot_topothresholding improved, can now be also applied to locs - plot:
plot_psdhead shape can be added in topographical map - plot:
plot_psdmultichannel plot is removed, butterfly is default - plot:
plot_coherencemultichannel plot is removed, butterfly is default - plot:
plot_phsdmultichannel plot is removed, butterfly is default - plot:
plot_spectrogramthresholding improved - plot:
plot_spectrogramhead shape can be added in topographical map - plot:
plot_spectrogramcan plot topographical map of spectrograms - plot:
plot_spectrogram_topoandplot_psd_topoare interactive - plot: adding plot locs to plots is improved
- edit:
crop - edit:
trimadds “NA/DELETED” marker at deletion point - io: when loading/adding locs, make locs order consistent with labels
- new thresholding methods:
:inand:bin - code cleanup
- many minor modifications and fixes
v0.26.1 (01/01/2026)
- some changes to GUI
- code cleanup
- many minor modifications and fixes
v0.25.12 (01/12/2025)
- Gtk.jl replaced with Gtk4.jl
- code cleanup
- many minor modifications and fixes
v0.25.11 (01/11/2025)
- breaking change:
na_set_use_cudarenamed tona_set_use_gpu - MKL library is not used anymore for FFTW (does not work with Phase Slope Index package)
- analyze:
psi- calculate Phase Slope Index - analyze:
escor- calculate Envelope-to-Signal Correlation - analyze:
aecor- calculate Amplitude Envelope Correlation - analyze:
psa- calculate Phase Synchronization Analysis - analyze:
cosim- calculate Cosine Similarity - analyze:
corr- calculate Pearson Correlation - analyze:
iplv- calculate Imaginary Phase Locking Value - analyze:
plv- calculate Phase Locking Value - analyze:
dpli- calculate Directed Phase Lag Index - analyze:
wpli- calculate weighted Phase Locking Index - analyze:
cpsd- calculate using short time Fourier transform - analyze:
coherence- calculate imaginary part of coherence - changing preferences does not require restarting anymore
- initial support for AMDGPU added
- tested under Julia 1.12
- code cleanup
- many minor modifications and fixes
v0.25.10 (01/10/2025)
- breaking change: process:
filter_create- order is not translated into attenuation, transition band width is required for:firls,:remezand:iirnotchfilters - breaking change: process: new structure of discrete wavelet decomposition coefficients
- updated tutorials
- analyze:
ghexp- calculate Generalised Hurst Exponents (GHEs) - process: many changes in discrete and continuous wavelet decomposition functions
- process:
denoise_dwd- denoise using discrete wavelet decomposition - plot:
plot_dwc- plot discrete wavelet decomposition coefficients - plot:
plot_filter_response- plot group delay for FIR filters - plot:
plot_polezero- plot filter poles and zeros - plot:
plot_locs- plot brain or head mesh together with electrodes - code cleanup
- many minor modifications and fixes
v0.25.9 (01/09/2025)
- breaking change: time points are internally rounded to 3 digits
- updated tutorials
- updated documentation format
- plot:
plot_phase- plot phases - plot:
plot_fi- plot instantaneous frequencies - plot:
plot_hs- plot Hilbert spectrum - plot:
plot_imf- plot IMFs produced by EMD - plot:
plot_gridlocs- plot a simplified plot of 10-20 EEG channels on a grid - plot:
plot_spectrogram- plot Hilbert-Huang spectrogram - analyze:
hmspectrum- calculate Hilbert marginal spectrum - analyze:
hhtspectrogram- calculate Hilbert-Huang spectrogram - analyze:
zipratio- calculate zip ratio of the object data - analyze:
emd- perform Empirical Mode Decomposition (EMD) - analyze:
transform,ftransformandhtransformreplacedspectrum- Fourier and Hilbert transforms - process:
reference_slap- perform spherical Laplacian referencing - new preference:
colors- enable/disable colored output - code cleanup
- many minor modifications and fixes
v0.25.8 (01/08/2025)
- tester:
iavh- interactive module for subjective recreation of auditory hallucinations - analyze:
dirinrg- calculate Dirichlet energy - model:
efield2d- model 2-dimensional electric field - plot:
plot_efield2d- plot 2-dimensional electric field - NeuroStats.jl merged with NeuroAnalyzer.jl
- Markdown documentation is no longer maintained
- code cleanup
- many minor modifications and fixes
v0.25.7 (01/07/2025)
- analyze:
entropy- calculates sample entropy and normalized sample entropy - analyze:
hfd- calculates the Higuchi fractal dimension - analyze:
sumsim- calculates summed similarity using an exponential decay model - code cleanup
- many minor modifications and fixes
v0.25.6 (01/06/2025)
- code cleanup
- many minor modifications and fixes
v0.25.5 (01/05/2025)
- plot:
plot_connectivity_circle - plot:
plot_heatmap,plot_topoandplot_spectrogramnow can also draw thresholded region - analyze:
topo_var,diss,gfpandgfp_normfor ERP/ERF objects - code cleanup
- many minor modifications and fixes
v0.25.4 (01/04/2025)
- breaking change:
channel_clusterreturns channel numbers, not names - breaking change: referencing changes locs labels
- plot: default palette changed to bluesreds for some plots (topomap, heatmap, matrix)
exclude_badspreference was added (default is false) to automatically ignore channels marked as bad from analysis- all tutorials are automatically generated using Quarto-based Markdown notebooks
- code cleanup
- many minor modifications and fixes
v0.25.3 (01/03/2025)
- Julia ≥1.11 is required
- greedy threads scheduler is used: significant speed increase of many functions
- statistical functions moved to (NeuroStats.jl)
- code cleanup
- many minor modifications and fixes
v0.25.2 (01/02/2025)
- gui:
ifilter- interactive filter design - code cleanup
- many minor modifications and fixes
v0.25.1 (01/01/2025)
- io:
import_ftimports EEG channels data for MEG+EEG recordings - analyze:
lat_idx- calculates lateralization index - analyze:
tpt_detectandtpt_analyze- detects and analyzes pinches in TPT recordings - recorder:
tpt- records Two-point Pinch Test - channels list may now be defined using Julia regex, e.g.
plot(eeg, ch=r"Fp.*") - new data types: TPT
- code cleanup
- many minor modifications and fixes
v0.24.12 (01/12/2024)
- io:
import_ft- FieldTrip EEG, MEG, events - io:
import_fiffimports SSP projections - gui:
iedit- move locs origin - process:
generate_ssp_projectorsandapply_ssp_projectors - code cleanup
- many minor modifications and fixes
Breaking changes:
- markers field
descriptionrenamed tovalue - MEG recording header must contain SSP labels, SSP channels and SSP data fields
v0.24.11 (01/11/2024)
- plot:
plot_heatmap - tested against Julia 1.11 release
- code cleanup
- many minor modifications and fixes
v0.24.10 (01/10/2024)
- return types added to all functions for better error handling
- code cleanup
- many minor modifications and fixes
v0.24.9 (01/09/2024)
- gui:
iview:- butterfly / mean mode
- time/epoch slider
- gui:
ipsd:- time/epoch slider
- new channel selector
- gui:
ispectrogram:- time/epoch slider
- new channel selector
- gui:
itopo:- time/epoch entry field
- compatible with EEG/MEG
- gui:
iview_ica:- preview and remove ICA components
- code cleanup
- many minor modifications and fixes
v0.24.8 (01/08/2024)
- breaking change: channels are addressed by their labels, not numbers; to convert numbers to labels, use
get_channel(obj, type="eeg")orget_channel(obj, ch=["Fp1", "Fp2"]) - breaking change: channels are stored as they are in the recording (physical order); list of channels sorted by their type is stored in
OBJ.header.recording[:channel_order](logical order) - breaking change: channels label is stored in
OBJ.header.recording[:label], channel unit is stored inOBJ.header.recording[:unit] - list of bad channels is stored in the
OBJ.header.recording[:bad_channel] - utils:
get_channel- channels may be addressed by name, e.g.
ch="Fp1"orch=["C3", "C4"]or by type, e.g.ch="all",ch="eeg"orch=["mag", "grad"] - supports exclude options (default value is “bad”, so bad channels are excluded from the list)
- channels may be addressed by name, e.g.
- initial support for MEG data
- io:
import_fiff- both MEG and EEG data - gui:
iview- lots of changes:- select time segment
- delete time segment / epoch
- left click channel label to display its properties
- right click channel label to mark it as bad
- zoom in and out
- scroll with mouse wheel
- toggle scale bars, monochromatic mode, snapping
- plot:
plot_signal- lots of changes:- finally displays properly data with > 100 channels
- gets list of bad channels from the header
- channels of different type are not displayed separately, but in logical order
- scale bars and units are drawn for each channel type
- process:
denoise_cwt- denoise using continuous wavelet transformation - process:
remove_cwt- remove artifacts using continuous wavelet transformation - analyze:
cwtspectrogram- improved CWT scaleogram - analyze:
psd- new methods::gh,:cwt - code cleanup
- many minor modifications and fixes
v0.24.7 (01/07/2024)
- stim:
tdcs_dose,tacs_dose,tpcs_dose- calculate effective parameters of tES dosages - process:
filter_create- new filter type: weighted least-squares FIR filter - gui:
iviewcan show bad channels - process:
erp- baseline segment is defined by two time points, may be subtracted before or after averaging - analyze: PSD- and spectrogram-, EROS-, EROP-related functions - log scaling of frequencies removed, moved to plotting functions
- code cleanup
- many minor modifications and fixes
v0.24.6 (01/06/2024)
- recorder:
edaandieda- record electrodermal activity using GSR sensor and Arduino via serial port - recorder:
fttandiftt- can record data from a console attached to Raspberry Pi via GPIO pin or to Raspberry Pi/Arduino via serial port - edit:
add_channelandadd_chanel!- channel(s) may be added to an object already containing channels - analyze:
symmetry- calculate signal symmetry - misc:
iplayandplay- play signal as audio file - code cleanup
- many minor modifications and fixes
v0.24.5 (01/05/2024)
- process:
mlinterpolate_channel- interpolate bad channel using MLJ regressor - process: use reference epochs for
mlinterpolate_channelandlrinterpolate_channel - edit:
subepoch- extract sub-epochs of reduced time range - plugins:
na_plugin_install- plugins can be installed from a local .zip/.tar.gz archive or using Git repository URL - code cleanup
- many minor modifications and fixes
v0.24.4 (01/04/2024)
- NeuroAnalyzer has been added to JuliaHealth
- submodule NeuroTester added - design and run psychological studies
- submodule NeuroStim added - process and model neurostimulation techniques
- recorder:
ftt- Finger Tapping Test (CLI mode) - analyze:
cpsd- cross-power spectral density - analyze:
pacf- partial auto-correlation - analyze:
coherence - plot:
plot_coherence - code cleanup
- many minor modifications and fixes
v0.24.3 (01/03/2024)
- submodule NeuroRecorder added - record neurophysiological data
- recorder:
iftt- Finger Tapping Test - gui:
iselect_seg- select matrix segment - analyze:
hjorth - analyze:
peak_frq - analyze:
sef- spectral edge frequency - analyze:
phsd- phase spectral density - analyze:
axc2frq- detect peaks in auto-/cross- correlation/covariance and transform them into frequencies - plot:
plot_phsd - statistics:
seg_extract- extract rectangular or circular segment from a matrix - code cleanup
- many minor modifications and fixes
v0.24.2 (01/02/2024)
- NeuroAnalyzer is registered in the Julia general registry
- new data types: iEEG, sEEG, ECoG
- new channel types:
ieeg,seeg,ecog - io:
import_ncs - io:
import_xdf - gui:
itopo - gui:
iselect_ts - plots:
plot_ci - analysis:
gradient - analysis: biased or unbiased auto-/cross- correlation/covariance
- edit:
sort_epochs - statistics: many new statistical functions
- code cleanup
- many minor modifications and fixes
v0.24.1 (01/01/2024)
- Julia ≥1.10 is required
- new data type: MEP
- io:
import_cnt - io:
import_duomag - io:
import_thymatron - io:
load_locs_dat - io:
load_locs_asc - io: detect montage when importing EEG files
- plots:
plot_mep - analysis:
mep_peaks - process: improved artifacts detection (using
tkeo) - process: rename channels when referencing
- gui:
iviewuse mouse wheel to scroll channels - code cleanup
- many minor modifications and fixes
v0.23.12 (01/12/2023)
- locs:
locs_generate- generate spherical coordinates according to 10/10 system - io:
import_npy - statistics:
ci_median,ci_r,ci2z,r_test - code cleanup
- many minor modifications and fixes
v0.23.11 (01/11/2023)
- gui:
iplot_icatopo- interactive ICA viewer - gui:
iviewplots components and two NEURO objects - gui:
ieditsnapping to time points - edit:
delete_optode - locs:
load_locsgenerates locs for EMG/EOG/M1/M2/A1/A2 electrodes - new data type: sensors
- code cleanup
- many minor modifications and fixes
v0.23.10 (01/10/2023)
- gui:
iedit_ch- interactive channel and locations editor - gui:
iview_plot- interactive plot viewer - gui:
iplot_locs3d- interactive 3D locs preview - gui: improved
iview,iplot,ipsd,ispectrogram - locs: improved locs architecture and functions
- plot: rewritten
plot_locs,plot_topo,plot_weightsandplot_connectionsfunctions - locs can be projected in 3 planes (XY, XZ and YZ) - plot:
add_locs- locs preview can be placed over another plot - analysis: improved methods of calculating PSD and spectrogram
- fix: FFTW provider on non-Intel/AMD architectures
- plot: GLMakie dependencies removed - significantly reduced startup time
- code cleanup
- many minor modifications and fixes
v0.23.9 (01/09/2023)
- updated interactive editor
- plot:
iplot,ipsd,ispectrogram - plot: plot PSD and spectrograms for a time segment
- initial SEEG support
- IO:
import_montage - IO:
import_nwb(WIP) - created
litebranch (with graphical functions removed) - code cleanup
- many minor modifications and fixes
v0.23.8 (01/08/2023)
- license changed to 2-clause BSD
- analysis: heart rate variability
hrv_detect,hrv_analyze - process:
ica_decompose,ica_reconstruct,ica_remove - plot:
plot_icatopo - plot: plot(obj1, obj2)
- plot: preview(obj1, obj2)
- locs:
locs_rotx,locs_roty,locs_rotz - tested against upcoming Julia 1.10 release
- code cleanup
- many minor modifications and fixes
v0.23.7 (01/07/2023)
- plot:
preview: interactive (Gtk-based) preview and edit epoched/continuous signal - process:
remove_powerline - process:
remove_pops - initial support for ECoG data
- Docker container
- code cleanup
- many minor modifications and fixes
v0.23.6 (01/06/2023)
- edit:
create - edit:
joinandjoin! - analyze:
acor,xcor,acov,xcov - Julia ≥ 1.9.0 is now required
- code cleanup
- many minor modifications and fixes
v0.23.5 (01/05/2023)
- new data type: ERP
- IO: GDF files
- IO: improved
import_set(epochs, locs, markers) - IO: improved
import_bv - IO:
import_edfaccepts multi-sampling rate files - analyze:
amp_atandavgamp_atfor ERPs - edit:
ch2marker - utils:
to_df - time segments are in seconds
- code cleanup
- more tutorials
- many minor modifications and fixes
v0.23.4 (01/04/2023)
- complete rewriting of NeuroAnalyzer functions
- new architecture allows easy expanding with new types of neurophysiological data
- new data types: EEG, NIRS, MEG
- new channel types (csd, nirs, mag, grad, meg)
- IO: NIRS/SNIRF/NIRX files (NIRS)
- IO: MEG FIFF files (very WIP)
- process: convert intensity to optical density (NIRS)
- process: convert optical density to HbO/HbR/HbT concentrations (NIRS)
- plot: new way of plotting channels of different types
- plot: 2D dipole plot (WIP)
- unit tests were completely rewritten
- code cleanup
- more tutorials
- many minor modifications and fixes
v0.23.3 (01/03/2023)
- IO: EEGLAB .set files (WIP)
- IO: CSV files
- IO: GEO electrode locations
- process: transform using surface Laplacian
- process: improved FIR filter (automated filtering window)
- process: improved polynomial filter
- plot: 3D dipole plot (WIP)
v0.23.2 (01/02/2023)
- import Philips Alice4 polysomnography EDF (non-standard, multi-sampling rate)
- user defined number of Slepian tapers for PSD
- processing of electrode locations updated, added rotating and scaling
- code cleanup
- more tutorials
- many minor modifications and fixes
v0.23.1 (01/01/2023)
- automated epoching by event markers
- ERP: create, plot
- interpolate EEG channel using linear regression
- continuous integration (CI): tests, documentation, website
- more tutorials
- many minor modifications and fixes
v0.22.12 (01/12/2022)
- plotting functions were completely rewritten
- new plot types added (multi-channel PSD,
eeg_plot_stats) - import BrainVision
- tutorials at https://neuroanalyzer.org/#tutorials
eeg_*functions now operate on specified channels- improved auto-detection of bad channels/epochs
- many minor modifications and fixes
v0.22.11 (01/11/2022)
- user-managed preferences
- virtual channels
- progress meter
- continuous and discrete wavelet transformations
- Hilbert transformation envelope
- improved connectivity plot
- proper handling of negative frequencies in FFT spectrum
- Jupyter notebook
- many minor modifications and fixes
v0.22.10 (01/10/2022)
- project website: https://neuroanalyzer.org
- IO: Digitrack, CSD
- Pluto notebook
- study object (WIP)
- automatically process only EEG/MEG signals where necessary (WIP)
- new logo
- many minor modifications and fixes
v0.22.9 (01/09/2022)
- name changed to NeuroAnalyzer to comply with Julia package naming policy
- IO: EDF+, BDF and BDF+ with annotations
- view/edit annotations
- interactive 3D preview of electrodes
- PSD topomap
- edit electrode locations
- automated processing of signal channels only (WIP)
- benchmarking module (WIP)
- many minor modifications and fixes
v0.22.8 (01/08/2022)
- initial CUDA support
- new reference mode: simple (planar) Laplacian
- plugins use git
- many minor modifications and fixes
v0.22.7 (01/07/2022)
- first official release