
Vendor-neutral infrastructure for reproducible eye-tracking and multimodal process-data research.
eyeprocess transforms heterogeneous eye-tracking, pupillometry, behavioural, and biometric exports into validated, analysis-ready process data. It combines vendor-neutral harmonization with first-class Gazepoint support, explicit quality and provenance controls, gaze/AOI/scanpath analysis, pupillometry and biometric workflows, interoperability, and psychometric/process modelling.
Current formal release: 0.11.1
Website · Reference · Articles · GitHub · Releases
| Area | Capabilities | | --- | --- | | Import and harmonization | Vendor-aware readers, generic mappings, canonical schemas, explicit timebase and coordinate handling | | Validation and provenance | Source inspection, schema coverage, quality audits, source fingerprints, validation corpora, provenance manifests | | Gaze and AOI analysis | Trial construction, AOI registration and assignment, fixation summaries, scanpaths, transitions, visual diagnostics | | Pupil and biometrics | Pupil preprocessing, binocular handling, physiological synchronization, quality-aware feature derivation | | Process and psychometric modelling | IRT, response-time models, multimodal process measurement, validation and sensitivity infrastructure | | Interoperability and storage | Eye-Tracking-BIDS, Arrow/Parquet workflows, conversion bridges, auditable storage contracts |
The current development branch adds three conservative diagnostics that make timing uncertainty and validation scope explicit without changing the package's existing synchronization or modelling engines:
pupil_latency_sensitivity() compares sustained-threshold, maximum-slope-tangent, and piecewise-breakpoint pupil onsets and reports estimator spread, signal diagnostics, and latency resolvability instead of presenting one onset as hardware- or algorithm-independent.event_marker_qc() audits whether independent channel offsets corroborate a nominal event and reports consensus offset and uncertainty. It is event-plausibility QC only: it does not synchronize clocks, correct drift, or modify timestamps.validation_ladder() separates acquisition QC, analytical QC, construct checking, within-person evidence, and held-out-person generalization. A generalization claim cannot be marked supported without held-out-person validation.See the Measurement accountability article and the measurement-accountability reference section.
| Ecosystem | Initial interface | Support level |
| --- | --- | --- |
| Gazepoint Analysis | read_gazepoint(), read_gazepoint_folder() | First class |
| Gazepoint Biometrics | read_gazepoint_biometrics() | First class |
| Generic CSV/TSV | read_eye_generic() | Universal mapping |
| Tobii Pro Lab | read_tobii() | Dedicated |
| Pupil Labs Neon | read_pupil_neon() | Dedicated |
| Pupil Labs Core | read_pupil_core() | Dedicated |
| EyeLink ASC | read_eyelink_asc() | Dedicated |
| EyeLink Data Viewer | read_eyelink_report() | Explicit mapping |
| EyeLink EDF | read_eyelink_edf() | Local EDF2ASC bridge |
| SMI BeGaze ASCII | read_smi() | Legacy dedicated |
| Custom adapters | register_eye_adapter() | Extensible |
Support level and empirical validation are deliberately kept separate. The existence of an adapter is not treated as proof of production compatibility with every exporter or software version.
Install the exact formal GitHub release:
install.packages("remotes")
remotes::install_github("stefanosbalaskas/eyeprocess", ref = "v0.11.1")
For the current development branch:
remotes::install_github("stefanosbalaskas/eyeprocess")
Optional modelling backends are deliberately not mandatory dependencies. Install only the engines required for a specific analysis.
library(eyeprocess)
x <- read_gazepoint_folder(
"data/P001",
include = c("gaze", "fixations", "events", "biometrics")
)
validate_eye_dataset(x)
audit_timebase(x)
audit_signal_quality(x)
x <- build_trials(x, start_events = "TRIAL_START", end_events = "TRIAL_END")
x <- register_aois(
x,
new_aoi("prompt", x = 0, y = 0, width = 0.50, height = 1),
new_aoi("options", x = 0.50, y = 0, width = 0.50, height = 1)
)
x <- assign_aois(x)
x <- derive_all_features(x)
plot_scanpath(x, trial_id = x$intervals$trial_id[1])
plot_pupil_timeseries(x, trial_id = x$intervals$trial_id[1])
For generic exports, Tobii, Pupil Labs, EyeLink, SMI, real-export validation, preprocessing, storage, and complete Gazepoint workflows, see the articles.
eyeprocess connects behavioural responses with process evidence while keeping measurement assumptions explicit. The multimodal measurement ladder is:
M0 response → M1 + RT → M2 + gaze → M3 + pupil → M4 + trait-conditioned latent response-process state
Examples of public interfaces include fit_irt(), fit_explanatory_irt(), fit_accuracy_rt(), fit_process_irt(), multimodal_m3_spec(), fit_multimodal_m3(), multimodal_m4_spec(), and fit_multimodal_m4().
M4 remains REVIEW / evidence-gated. The availability of an estimator or model interface is not treated as evidence of unrestricted confirmatory validity. M4 states are model-based statistical response-process states; state labels do not by themselves establish cognitive strategy, attention, engagement, cognitive load, effort, emotion, guessing, misconduct, comprehension, or another psychological construct.
The 0.11.1 release line preserves an auditable validation contract across data import, transformations, storage, modelling, and reporting. Release validation included the complete test suite and exact source-tarball checking with 0 errors and 0 warnings; the remaining incoming NOTE concerns submission/optional repository metadata rather than a package failure.
The package also provides infrastructure for real-export validation, grouped validation, parameter recovery, simulation-based calibration, leakage checks, sensitivity analysis, model-evidence audits, benchmark generation, and reproducible reporting.
Detailed implementation and validation records are maintained in:
eyeprocess does not equate fixation with attention, dwell time with difficulty, pupil dilation with cognitive load, rapid response with guessing, physiological variation with a named mental state, or a data-derived process factor with a psychological construct.
Useful audit interfaces include:
interpretive_warnings()
analysis_readiness(x)
provenance_manifest(x)
For the citation associated with the installed package, run:
citation("eyeprocess")
packageVersion("eyeprocess")
Studies should report the exact package version and, when relevant, the source commit and modelling backend used.
MIT License.
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.