ERP is created from epoched NeuroAnalyzer.NEURO
object
via erp()
command. ERP object has
OBJ.header.recording[:data_type]
set to “erp”. First epoch
of the OBJ is ERP, other epochs are the original data.
= import_recording("NEURO-testing-data/Brainvision/s1_faces.vhdr") eeg
Output:
[ Info: Imported: < EEG, 34 × 424488 × 1 (829.078125 s) >
Pre-process:
load_locs!(eeg, file_name="locs/standard-10-20-cap81.locs")
NeuroAnalyzer.filter!(eeg, fprototype=:butterworth, ftype=:hp, cutoff=1, order=8)
NeuroAnalyzer.filter!(eeg, fprototype=:iirnotch, cutoff=50, bw=2)
reference_car!(eeg)
view_marker(eeg)
Output:
n ID start [s] length [s] description channel
1 'New Segment' 0.0 0.0 'marker' 0
2 'Marker' 0.0 0.0 'Impedance' 0
3 'Stimulus' 20.562 0.0 's111' 0
4 'Stimulus' 20.98 0.0 's130' 0
5 'Stimulus' 21.826 0.0 's71' 0
...
400 'Stimulus' 799.207 0.0 's130' 0
401 'Stimulus' 799.986 0.0 's71' 0
402 'Stimulus' 803.119 0.0 's130' 0
403 'Stimulus' 803.65 0.0 's71' 0
404 'Stimulus' 806.529 0.0 's121' 0
405 'Stimulus' 806.574 0.0 's122' 0
406 'Stimulus' 806.619 0.0 's102' 0
Epoch by marker “s71”:
eeg_epoched = epoch(eeg, marker="s71", offset=0.5, ep_len=2.5)
p = plot(eeg_epoched)
Create ERP, set baseline:
erp_s71 = erp(eeg_epoched, bl=0.5)
p = plot_erp(erp_s71, ch=10)
plot_save(p, file_name="images/erp1.png")
Output:
[ Info: Positive peak time: 143.0 ms
[ Info: Positive peak amplitude: 5.15 μV
[ Info: Negative peak time: 234.0 ms
[ Info: Negative peak amplitude: -8.82 μV
Butterfly plot over channels:
= plot_erp(erp_s71, ch=1:4, type=:butterfly, avg=true)
p plot_save(p, file_name="images/erp2.png")
Butterfly plot over epochs:
= plot_erp(erp_s71, ch=1, type=:butterfly, avg=true)
p plot_save(p, file_name="images/erp3.png")
Mean plot over channels:
= plot_erp(erp_s71, ch=1:30, type=:mean, peaks=false)
p plot_save(p, file_name="images/erp4.png")
Mean plot over epochs:
= plot_erp(erp_s71, ch=1, type=:mean, peaks=false)
p plot_save(p, file_name="images/erp5.png")
Topographical plot of ERPs:
= plot_erp(erp_s71, ch=1:30, type=:topo)
p plot_save(p, file_name="images/erp6.png")
Positive peak is at 143 ms, negative peak at 234 ms (see
plot_erp()
output). Draw markers and topoplots at these
time points:
load_locs!(erp_s71, file_name="locs/standard-10-20-cap81.locs")
= plot_erp(erp_s71, ch=signal_channels(erp_s71), type=:butterfly, labels=false, tm=[143, 234], title="", top_margin=-20Plots.px, channel_labels=false)
p1 = plot_topo(erp_s71, ch=signal_channels(erp_s71), seg=(0.143, 0.144), cb=false, title="143 ms", plot_size=600)
p2 = plot_topo(erp_s71, ch=signal_channels(erp_s71), seg=(0.234, 0.235), cb=false, title="234 ms", plot_size=600)
p3 = plot_compose([p2, p3, p1], layout=@layout [_ a b _ _ _; c])
p plot_save(p, file_name=file_name="images/erp7.png")
Plot stacked channels:
= plot_erp(erp_s71, ch=signal_channels(erp_s71), type=:stack)
p plot_save(p, file_name=file_name="images/erp8.png")
Plot stacked epochs:
= plot_erp(erp_s71, ch=10, type=:stack, tm=[143, 234])
p plot_save(p, file_name=file_name="images/erp9.png")
Calculate amplitude at given time point:
amp_at(erp_s71, t=0.250)
Calculate average, minimum and maximum amplitude over a time segment:
avgamp_at(erp_s71, t=(0.150, 0.250))
minamp_at(erp_s71, t=(0.150, 0.250))
maxamp_at(erp_s71, t=(0.150, 0.250))
Calculate non-phase-locked signal (signal - ERP):
= npl(erp_s71) erp_s71_npl
Calculate EROs (Event-Related Oscillations) spectrogram:
= eros(erp_s71, ch=10, frq_lim=(0, 40))
s, f, t = plot_eros(s, f, t, tm=[143, 234])
p plot_save(p, file_name=file_name="images/eros.png")
Calculate EROp (Event-Related Oscillations) power-spectrum:
= erop(erp_s71, ch=10, frq_lim=(0, 40))
p, f = plot_erop(p, f)
p plot_save(p, file_name=file_name="images/erop.png")