| Title: | Interactive Pupil Pre-Processing with 'gazeR' |
|---|---|
| Description: | A 'shiny' app for pre-processing pupillometry data without writing code, built on the 'gazeR' package. Reads EyeLink .asc files, SR Research Data Viewer sample reports, Tobii (Titta) and Pupil Labs Neon exports; removes blinks (tracker events or noise-based detection) and artifacts; interpolates, smooths, baseline-corrects and time-locks trials; reports data quality and behavioural exclusions; and plots time courses with within- or between-subject error, rainclouds and pupil-behaviour relationships. Every setting is exported so the pipeline can be reproduced. |
| Authors: | Jason Geller [aut, cre] |
| Maintainer: | Jason Geller <[email protected]> |
| License: | GPL (>= 3) |
| Version: | 0.3.5 |
| Built: | 2026-10-27 08:21:17 UTC |
| Source: | https://github.com/jgeller112/shiny-gazeR |
Opens an interactive app that runs gazeR's pupil pre-processing pipeline without writing code:
run_app(...)run_app(...)
... |
Arguments passed to |
Load EyeLink .asc files (gazer::read_asc()), SR Research Data Viewer
sample reports, Tobii (Titta) exports (gazer::merge_tobii_titta()),
Pupil Labs Neon exports (gazer::parse_pl()) or any long CSV, and map
the columns.
Clean: plausible-range limits, tracker or noise-based blink
detection (gazer::detect_blinks_noise()), blink padding
(gazer::extend_blinks()) and dilation-speed outliers
(gazer::speed_pupil(), gazer::calc_mad()).
Interpolate and smooth (gazer::smooth_interpolate_pupil()),
optionally low-pass filter (gazer::lowpass_filter()).
Baseline-correct and time-lock
(gazer::baseline_correction_pupil_msg(), gazer::onset_pupil()).
Bin (gazer::downsample_gaze()), optionally join behavioural data
and exclude trials by accuracy or RT.
The app shows raw and processed traces for every trial, missing data and exclusions, and time courses (within- or between-subject error), rainclouds and pupil-behaviour plots. Processed samples, binned data, trial quality and a JSON file of every setting can be downloaded.
Called for its side effect of running the app.
if (interactive()) { run_app() }if (interactive()) { run_app() }