Overview: Basis function (component) types
There are several basis types directly implemented. They can be easily used for the components.
You can use any arbitrary shape defined by yourself! We often make use of hanning(50) from the DSP.jl package.
Setup
Click to expand
# Load required packages
using UnfoldSim
using CairoMakie
using DSP
using StableRNGsEEG
By default, the EEG bases assume a sampling rate of 100, which can easily be changed by e.g. p100(; sfreq=300)
f = Figure()
ax = f[1, 1] = Axis(f)
for b in [p100, n170, p300, n400]
lines!(ax, b(), label = string(b))
scatter!(ax, b(), label = string(b))
end
axislegend(ax, merge = true)
f
fMRI
default hrf TR is 1. Get to know all your favourite shapes!
##--
f = Figure()
plotConfig = (
:peak => 1:3:10,
:post_undershoot => 10:5:30,
:amplitude => 2:5,
:shift => 0:3:10,
:peak_width => 0.1:0.5:1.5,
:post_undershoot_width => 0.1:0.5:1.5,
)
for (ix, pl) in enumerate(plotConfig)
col = (ix - 1) % 3 + 1
row = Int(ceil(ix / 3))
ax = f[row, col] = Axis(f)
cfg = collect(pl)
for k in cfg[2]
lines!(ax, UnfoldSim.hrf(; TR = 0.1, (cfg[1] => k,)...), label = string(k))
end
axislegend(string(cfg[1]); merge = true)
end
f
Pupil
We use the simplified PuRF from Hoeks & Levelt, 1993. Note that https://www.science.org/doi/10.1126/sciadv.abi9979 show some evidence in their supplementary material, that the convolution model is not fully applicable.
f = Figure()
plotConfig = (:n => 5:3:15, :tmax => 0.5:0.2:1.1)
for (ix, pl) in enumerate(plotConfig)
ax = f[1, ix] = Axis(f)
cfg = collect(pl)
for k in cfg[2]
lines!(ax, UnfoldSim.PuRF(; (cfg[1] => k,)...), label = string(k))
end
axislegend(string(cfg[1]); merge = true)
end
f
This page was generated using Literate.jl.