PhysioEDA PhysioEDA logo

Electrodermal Activity Analysis for PhysioExperiment Objects

PhysioEDA provides electrodermal activity (EDA / skin conductance) analysis functions for the PhysioExperiment ecosystem. With 19 exported functions, it delivers a complete EDA processing pipeline -- from preprocessing (filtering, downsampling, artifact handling) through tonic/phasic decomposition (highpass, median, CDA, cvxEDA), SCR peak detection, feature extraction, event-related SCR analysis, and visualization. All functions operate on PhysioExperiment objects and store results as new assays for seamless integration with downstream analysis.

Installation

You can install PhysioEDA from r-universe:

# the containers build on Bioconductor, so its repositories are needed too
install.packages("BiocManager", repos = "https://cloud.r-project.org")
install.packages("PhysioEDA",
  repos = c("https://x-biosignal.r-universe.dev", BiocManager::repositories()))

Or install the development version from GitHub:

# install.packages("remotes", repos = "https://cloud.r-project.org")
remotes::install_github("x-biosignal/PhysioEDA")

Quick Start

library(PhysioEDA)

# Generate a simulated EDA signal (10 minutes at 10 Hz, 5 embedded SCRs)
pe <- edaSimulate(n_time = 6000, sr = 10, scr_count = 5, seed = 42)

# Lowpass filter to remove high-frequency noise
pe <- edaFilter(pe, type = "lowpass", cutoff = 1.0)

# Decompose into tonic (SCL) and phasic (SCR) components
pe <- edaDecompose(pe, method = "highpass", cutoff = 0.05)

# Detect SCR peaks in the phasic signal
peaks <- edaPeaks(pe, amplitude_min = 0.01)
head(peaks)
#>   channel onset_sample onset_sec peak_sample peak_sec amplitude rise_time recovery_time
#> 1    EDA1          587      58.6         602     60.1     0.482      1.50          3.20
#> ...

# Extract comprehensive features per channel
features <- edaFeatures(pe, peaks)
features
#>   channel scr_count scr_rate_per_min mean_amplitude mean_scl scl_sd auc_phasic ns_scr_freq
#> 1    EDA1         5             0.50          0.453     5.02   0.21       4.32        0.50

# Visualize decomposition
plotDecompose(pe)

Features

Preprocessing

Frequency-domain filtering and downsampling with anti-aliasing:

Artifact Handling

Detection and correction of motion artifacts and signal dropouts:

Tonic/Phasic Decomposition

Separate the slow-varying skin conductance level (SCL) from fast-varying skin conductance responses (SCR) using four methods:

SCR Peak Detection

Detect individual skin conductance responses with configurable criteria:

Feature Extraction

Comprehensive per-channel summary metrics:

Signal Quality Assessment

Data Transformations

Normalize and transform EDA signals for statistical analysis:

Event-Related Analysis

Time-locked SCR analysis for experimental paradigms:

Visualization

Publication-ready plotting functions using base R graphics:

Simulated EDA Data

Synthetic EDA generators with known ground truth for testing and validation:

Dependencies

PhysioExperiment Ecosystem

PhysioEDA is the electrodermal activity analysis module of the PhysioExperiment ecosystem, a suite of R packages for multi-modal physiological signal analysis:

Package Description
PhysioCore Core data structures and accessors
PhysioIO File I/O (EDF, HDF5, BIDS, CSV, MAT)
PhysioPreprocess Preprocessing (filters, ICA, resampling)
PhysioAnalysis Analysis and visualization
PhysioECG ECG analysis and HRV
PhysioEDA Electrodermal activity analysis

Visit the r-universe page to browse all available packages.

References

License

MIT License. See LICENSE for details.

Author

Yusuke Matsui

Governance & support

Part of the Physio ecosystem. Community and policy documents live in the umbrella repository: