shiny gazeR shiny gazeR hex logo

Pupil pre-processing for eye-tracking data, without writing code.

shiny gazeR is an interactive Shiny app built on the gazeR package. Load recordings, clean them step by step, inspect every trial, and export analysis-ready data. Every setting is saved with your results, so the same pipeline can be re-run in R with gazeR.

Try it in your browser

https://jgeller112.github.io/shiny-gazeR/

The browser version runs entirely on your own computer through shinylive and WebAssembly: nothing is installed, and your data are never uploaded to a server. The first visit takes a minute or so while R and the packages download; later visits are faster. Large files process more slowly than in desktop R, so for big studies install the package below.

Installation

From r-universe (binaries for Windows and macOS, no build tools needed):

install.packages("shinygazer",
                 repos = c("https://jgeller112.r-universe.dev", "https://cloud.r-project.org"))

Or from GitHub:

# install.packages("remotes")
remotes::install_github("jgeller112/shiny-gazeR")

Either way, gazeR (≥ 0.2.7) is installed too.

Usage

shinygazer::run_app()

Choose Try the example data on the home page to look around before loading your own files.

What it does

Step Options gazeR function(s)
Load EyeLink .asc, SR Data Viewer sample reports, Tobii (Titta), Pupil Labs Neon (.zip of the Pupil Cloud export), or any long CSV; monocular or binocular (left, right, average or both) read_asc(), merge_tobii_titta(), parse_pl()
Behaviour Join a per-trial table (RT, accuracy, …); exclude incorrect trials, RT cutoffs, ± k SD within subject —
Blinks & artifacts Plausible pupil range; tracker or noise-based blinks (Hershman et al., 2018); blink padding; dilation-speed outliers detect_blinks_noise(), extend_blinks(), speed_pupil(), calc_mad()
Missing data Exclude trials and subjects above a threshold, measured inside the analysis window —
Interpolate & smooth Linear or cubic; moving average or Hanning; either order; optional zero-phase Butterworth low-pass smooth_interpolate_pupil(), lowpass_filter()
Baseline & time-lock Subtractive or divisive; from an event or a fixed window; align trials to any message baseline_correction_pupil_msg(), baseline_correction_pupil(), onset_pupil()
Bin Any combination of subject, trial and condition columns downsample_gaze()

Inspect and report

Reading .asc files

gazeR's read_asc() (gazeR ≥ 0.2.5) turns an EyeLink .asc file into gazeR's long format. It runs in seconds and needs no SR Research software; convert .edf files with SR Research's free edf2asc first.

d <- gazer::read_asc("data/sub01.asc", eye = "left")
attr(d, "asc_info")$hz

Citation

If you use shiny gazeR, please cite gazeR:

Geller, J., Winn, M. B., Mahr, T., & Mirman, D. (2020). GazeR: A package for processing gaze position and pupil size data. Behavior Research Methods, 52, 2232–2255.

License

GPL (>= 3), matching gazeR.