--- title: "Cross-Package Interoperability Contracts" description: "Lightweight handoffs from gp3tools, gpbiometrics, and gp3sequences into gp3ml." output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Cross-Package Interoperability Contracts} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include=FALSE} knitr::opts_chunk$set(collapse = TRUE, comment = "#>") options(gp3ml.reproducible_examples = TRUE) library(gp3ml) ``` ## Boundary, not duplication The interoperability layer does not import raw Gazepoint files, process biometric signals, or perform sequence analysis. Those remain upstream responsibilities. ```{r contracts} gp3ml_interop_contracts() ``` ## Prepared handoffs ```{r handoffs} bundle <- simulate_gazepoint_research_handoffs( n_participants = 12L, n_stimuli = 3L, seed = 3201L ) bundle gaze_validation <- validate_gazepoint_handoff(bundle$handoffs$gp3tools) gaze_validation plot(gaze_validation) ``` ## Combine only after validation ```{r combine} combined <- combine_gazepoint_handoffs( bundle$handoffs, keys = bundle$keys ) combined head(as_gp3ml_data(combined)) ``` The resulting table is a modelling handoff. It does not imply that `gp3ml` performed the upstream preprocessing represented by those columns.