UnfoldMakie.jl
UnfoldMakie.jl copied to clipboard
Plotting and visualization tools for EEG data, with additional Unfold.jl regression ERP methods. Based on the visualization libraries Makie.jl and AlgebraOfGraphics.jl
| rERP | EEG visualisation | EEG Simulations | BIDS pipeline | Decode EEG data | Statistical testing |
|---|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
A toolbox for visualizations of EEG/ERP data and Unfold.jl models.
Based on three libraries
- Unfold - for performing deconvolution regression;
- Makie - very flexible visualisation library (Maki-e means "visualisation" on Japanese);
- Algebra of Graphics - Makie-based visualisation library, allowing flexible mapping.
This grants users high performance, and highly customizable plots.
We currently support 9 general ERP plots:

ERP plots
Butterfly plots
Topography plots
Topography time series
ERP grid
ERP images
Channel images
Parallel coordinates
- Circular topoplots
And 2 Unfold-specific plots:
- Design matrices
- Splines plot
Install
Installing Julia
Click to expand
The recommended way to install julia is juliaup. It allows you to, e.g., easily update Julia at a later point, but also to test out alpha/beta versions etc.
TLDR: If you don't want to read the explicit instructions, just copy the following command
Windows
AppStore -> JuliaUp, or winget install julia -s msstore in CMD
Mac & Linux
curl -fsSL https://install.julialang.org | sh in any shell
Installing Unfold
using Pkg
Pkg.add("UnfoldMakie")
Quickstart
using UnfoldMakie
using CairoMakie # backend
using Unfold, UnfoldSim # Fit / Simulation
data, evts = UnfoldSim.predef_eeg(; noiselevel = 12, return_epoched = true)
data = reshape(data, 1, size(data)...) # simulate a single channel
times = range(0, step = 1 / 100, length = size(data, 2))
m = fit(UnfoldModel, @formula(0 ~ 1 + condition), evts, data, times)
plot_erp(coeftable(m))
Contributions
Contributions are very welcome. These can be typos, bug reports, feature requests, speed improvements, new solvers, better code, better documentation.
How to Contribute
You are very welcome to submit issues and start pull requests!
Adding Documentation
- We recommend to write a Literate.jl document and place it in
docs/literate/FOLDER/FILENAME.jlwithFOLDERbeingHowTo,Explanation,TutorialorReference(recommended reading on the 4 categories). - Literate.jl converts the
.jlfile to a.mdautomatically and places it indocs/src/generated/FOLDER/FILENAME.md. - Edit make.jl with a reference to
docs/src/generated/FOLDER/FILENAME.md.
Citation
If you use these visualizations, please cite:
Contributors
Benedikt Ehinger π π» π π€ π π§ π¬ π β οΈ β |
Vladimir Mikheev π π» π π€ π§ π β οΈ β |
Daniel Baumgartner π» π |
Niklas GΓ€rtner π» π |
Soren Doring π» π |
Fadil Furkan Lokman π» π |
Judith Schepers π π€ π |
RenΓ© Skukies π |
Acknowledgements
Funded by the Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) β Project-ID 251654672 β TRR 161β / βGefΓΆrdert durch die Deutsche Forschungsgemeinschaft (DFG) β Projektnummer 251654672 β TRR 161.
Funded by Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) under GermanyΒ΄s Excellence Strategy β EXC 2075 β 390740016





