The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.

Overview
The diegr package enables researchers to visualize
high-density electroencephalography (HD-EEG) data with animated and
interactive graphics, supporting both exploratory and confirmatory
analyses of sensor-level brain signals.
The package diegr includes:
boxplot_epoch(),
boxplot_subject(), boxplot_rt())interactive_waveforms()) and
surface plots (interactive_surfaceplot(),
interactive_surfaceplot_curves())topo_plot())scalp_plot())summary_stats_rt(),
baseline_correction(), compute_mean())pick_data(), pick_region())plot_time_mean(), plot_topo_mean())animate_topo(), animate_topo_mean(),
animate_scalp())You can install the current version of diegr from CRAN
with:
install.packages("diegr")or the latest development version from GitHub with:
# install.packages("pak")
pak::pak("gerslovaz/diegr") Due to the large volumes of data obtained from HD-EEG measurements, the package allows users to work directly with database tables (in addition to common formats such as data frames or tibbles). This approach is much more memory-efficient.
The database you want to use as input to diegr functions
must contain columns with the following structure:
group - group IDs,subject - subject IDs,sensor - sensor labels,epoch - epoch numbers,condition - experimental condition labels,time - time-point indices (as sampling indices, not in
ms),signal - the EEG signal amplitude in microvolts (in
most functions, the name of the column containing the amplitude can be
customized arbitrarily).Note: It is not necessary for the data to contain all variables, but
if it does, they must be named according to the structure presented
above. You can use the check_structure() function, which
checks the data structure and prints the inferred hierarchy.
The package includes several example datasets:
epochdata: epoched HD-EEG data (anonymized small subset
of a large HD-EEG study presented in Madetko-Alster et al., 2025) for
two subjects and 204 selected sensors at 50 time points (measured using
the EGI HCGSN256 system),rtdata: response times (time between stimulus
presentation and a button press) from the experiment involving a simple
visual motor task (anonymized small subset of a large HD-EEG study
presented in Madetko-Alster et al., 2025)as well as datasets containing sensor position coordinates:
HCGSN256: a list with Cartesian coordinates of HD-EEG
sensor positions in 3D space on the scalp surface and their projection
into 2D space according to the EGI HCGSN256 template,biosemi128 and biosemi256: lists with
Cartesian coordinates of HD-EEG sensor positions in 3D space on the
scalp surface and their projection into 2D space according to the
BioSemi system with 128 and 256 electrodes,system1005: a list with Cartesian coordinates of HD-EEG
sensor positions in 3D space on the scalp surface and their projection
into 2D space according to the standard 10-05 system.For more information about the structure of the built-in data, see
the package vignette
vignette("diegr", package = "diegr").
This basic example shows how to plot interactive epoch boxplots from a chosen electrode at different time points for one subject:
library(diegr)
data("epochdata")epochdata |>
pick_data(subject_rg = 1, sensor_rg = "E65") |>
boxplot_epoch(amplitude = "signal", time_lim = 10:20)
Note: The README format does not support interactive
plotly elements, therefore, only a static preview of the
result is shown.
data("HCGSN256")
# creating a mesh
M1 <- point_mesh(dimension = 2, n = 30000, type = "polygon",
template = "HCGSN256",
sensor_select = unique(epochdata$sensor))
# filtering a subset of data to display
data_short <- epochdata |>
pick_data(subject_rg = 1, time_rg = 15, epoch_rg = 10)
# or you can use dplyr::filter()
# dplyr::filter(subject == 1 & epoch == 10 & time == 15)
# function for displaying a topographic map of the chosen signal on the created mesh M1
topo_plot(data_short, amplitude = "signal", mesh = M1)
Compute the average signal for subject 2 from channels E65 and E34
(excluding the outlier epochs 14 and 15) and then display it along with
confidence interval (CI) bounds (using plot_time_mean()
conditioned by sensor).
# extract required data
edata <- epochdata |>
pick_data(subject_rg = 2, sensor_rg = c("E34", "E65"), epoch_rg = 1:13)
# baseline correction
data_base <- baseline_correction(edata, baseline_range = 1:9)
# compute average
data_mean <- data_base |>
compute_mean(amplitude = "signal_base", type = "point", domain = "time")
# plot the average line with CI
plot_time_mean(data = data_mean, t0 = 10, condition_column = "sensor", legend_title = "Sensor")
For detailed examples, usage instructions, and troubleshooting
information, including system requirements, see the package vignette:
vignette("diegr", package = "diegr").
References Madetko-Alster N., Alster P., Lamoš M., Šmahovská L., Boušek T., Rektor I. and Bočková M. The role of the somatosensory cortex in self-paced movement impairment in Parkinson’s disease. Clinical Neurophysiology. 2025, vol. 171, 11-17. https://doi.org/10.1016/j.clinph.2025.01.001
License This package is distributed under the MIT license. See the LICENSE file for details.
Citation Use citation("diegr") to cite
this package.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.