--- title: "gpbiometrics workflow" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{gpbiometrics workflow} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>", eval = FALSE ) ``` # Overview This vignette gives a compact workflow for using `gpbiometrics` with Gazepoint Biometrics or Gazepoint GP3 biometric exports. The package supports importing, schema checks, signal-quality auditing, preprocessing, feature extraction, TTL alignment, model-ready table preparation, visual diagnostics, and reproducible report generation. The examples are not evaluated during vignette build because they require local Gazepoint export files. # Load the package ```{r} library(gpbiometrics) ``` # Built-in synthetic kiosk demo The package includes a public synthetic Gazepoint-like demo dataset. It simulates a public-service touchscreen kiosk usability task with 36 synthetic participants and four tasks per participant. The design crosses interface complexity (`simple` vs. `dense`) with feedback clarity (`clear` vs. `ambiguous`). The files contain gaze, AOI labels, pupil diameter, GSR/EDA, HR, IBI, pulse waveform, engagement dial, TTL markers, and task metadata. ```{r} demo_dir <- system.file( "extdata", "gazepoint_biometrics_kiosk_demo_exports", package = "gpbiometrics" ) workflow <- run_gazepoint_biometrics_workflow( path = demo_dir, include_all_gaze = TRUE, include_fixations = FALSE, include_other_csv = FALSE, expected_sampling_rate_hz = 60 ) summarise_gazepoint_biometrics_workflow(workflow) ``` The dataset is fully artificial and is provided for examples, tests, vignettes, and software demonstration. It is not real participant physiology. # 1. Import Gazepoint biometric exports For a single export file: ```{r} dat <- import_gazepoint_biometrics("path/to/biometric_export.csv") ``` For a folder of exports: ```{r} folder <- "path/to/gazepoint_exports" dat <- import_gazepoint_biometric_folder(folder) ``` For private real data, keep source exports outside the package repository. # 2. Inspect real-data readiness Run a readiness gate before modelling or reporting. ```{r} readiness <- run_gazepoint_biometrics_real_data_readiness(dat) readiness$overview readiness$checks ``` This step makes data-quality issues explicit, including missing channels, inactive signals, time-ordering problems, TTL availability, and signal-level missingness. # 3. Run the full workflow The full workflow can import a folder, create diagnostic outputs, and optionally write plots and reports. ```{r} workflow <- run_gazepoint_biometrics_workflow( path = folder, include_all_gaze = TRUE, include_fixations = FALSE, include_other_csv = FALSE, expected_sampling_rate_hz = 60 ) summary <- summarise_gazepoint_biometrics_workflow(workflow) summary ``` # 4. EDA, GSR, and SCR examples Common EDA and SCR tasks include unit auditing, smoothing, artifact checks, baseline correction, response-window extraction, and recovery-time estimation. ```{r} unit_audit <- audit_gazepoint_gsr_units(dat) smoothed <- standardise_gazepoint_adaptive_ema( dat, signal_col = "GSR_US", time_col = "CNT" ) scr_recovery <- extract_gazepoint_scr_recovery_times( dat, eda_col = "GSR_US", time_col = "CNT", event_onset_col = "event_onset" ) ``` If ambient or body-temperature covariates are available, EDA can be adjusted for temperature: ```{r} temperature_adjusted <- correct_gazepoint_eda_temperature( dat, eda_col = "GSR_US", temperature_cols = c("ambient_temperature", "body_temperature"), group_cols = "participant" ) ``` Temperature-adjusted EDA is not "pure" cognitive or emotional EDA. It is an adjusted physiological signal that still requires conservative interpretation. # 5. Pulse, IBI, HRV, and respiration examples For IBI/HRV workflows: ```{r} hrv <- extract_gazepoint_hrv_features( dat, ibi_col = "IBI", group_cols = "participant" ) hrv_summary <- summarise_gazepoint_hrv_features(hrv) ``` Advanced HRV descriptors are available when signal length and quality are adequate: ```{r} nonlinear_hrv <- extract_gazepoint_hrv_nonlinear( dat, ibi_col = "IBI", group_cols = "participant" ) rcmse <- extract_gazepoint_hrv_rcmse( dat, ibi_col = "IBI", group_cols = "participant" ) fuzzy_csi <- extract_gazepoint_hrv_fuzzy_csi( dat, ibi_col = "IBI", group_cols = "participant" ) ``` For difficult Gazepoint pulse waveforms, k-means beat extraction can be used as a hardware-oriented fallback: ```{r} beats <- extract_gazepoint_beats_kmeans( dat, pulse_col = "HRP", time_col = "CNT", group_cols = "participant" ) ``` These beat candidates should be quality-checked before HRV inference. # 6. TTL alignment and model-ready data TTL markers and event windows can be used to align biometric signals with the experimental design. ```{r} ttl_events <- extract_gazepoint_ttl_events(dat) aligned <- align_gazepoint_biometrics_to_ttl( dat, ttl_col = "TTL0", time_col = "CNT" ) model_data <- prepare_gazepoint_biometrics_lme_data( dat, outcome_cols = c("GSR_US", "HR"), group_cols = c("participant", "condition"), time_col = "CNT" ) ``` # 7. Reporting bundle A report bundle can export tables, plots, and text summaries for reproducible documentation. ```{r} bundle <- export_gazepoint_biometrics_report_bundle( workflow, output_dir = file.path(tempdir(), "gpbiometrics_report_bundle") ) ``` # 8. Feature inventory The package includes a feature inventory for documenting workflow coverage. ```{r} inventory <- create_gazepoint_biometrics_feature_inventory() formatted_inventory <- format_gazepoint_biometrics_feature_inventory( inventory ) inventory_summary <- summarise_gazepoint_biometrics_feature_inventory( formatted_inventory ) inventory$overview inventory_summary$domain_summary head(formatted_inventory) ``` # 9. Interpretation guardrails `gpbiometrics` follows conservative interpretation principles: - EDA/GSR/SCR features describe electrodermal dynamics; they do not directly identify emotion, stress, cognition, health status, or diagnosis. - HR, IBI, HRV, pulse, and respiration-proxy features describe cardiovascular or signal-derived dynamics; they are not clinical labels. - Pupil outputs are affected by luminance and visual context; luminance-adjusted residuals are not proof of cognitive-load-only effects. - Automated statistics and advanced models should be reviewed against the study design before confirmatory use. # 10. Private real-data smoke tests For private smoke tests, keep data and outputs outside the package repository. ```{r, eval=FALSE} private_folder <- "path/to/private_gazepoint_exports" private_output <- file.path(tempdir(), "gpbiometrics_real_check") workflow <- run_gazepoint_biometrics_workflow( path = private_folder, include_all_gaze = TRUE, include_fixations = FALSE, include_other_csv = FALSE, expected_sampling_rate_hz = 60 ) summarise_gazepoint_biometrics_workflow(workflow) export_gazepoint_biometrics_report_bundle( workflow, output_dir = private_output ) summary <- summarise_gazepoint_biometrics_workflow(workflow) summary ``` Do not commit private Gazepoint exports or private smoke-test outputs.