Runnable examples¶
The repository contains twenty-two deterministic examples that move from a small installation check to complete reviewable workflows, tracker import/QC, human-reviewed exclusion decisions, domain-shaped studies, leakage-safe event-model validation, and an explicit statistical-analysis handoff. Use this page to choose a script, inspect its exact artifacts, and continue to the corresponding research guide.
Demo output is not empirical validation evidence
Every example on this page uses synthetic/demo inputs. The scripts demonstrate software behaviour, composition, plotting, provenance, reporting, and audit structure. They are not empirical validation evidence and do not establish native-device, native 60 Hz, Gazepoint, GP3, event-model, calibration, or measurement validity.
Already have a tracker export?
Start with Worked tracker import and QC, use the Real-data import clinic for source variants and troubleshooting, then continue to QC review and exclusion ledger before applying exclusions. These routes keep source identity, units, cadence, QC evidence, human review, denominators, and analysis derivatives separate.
At a glance¶
| Example | Install | Run | Main output |
|---|---|---|---|
| GazeForge tour | base | python examples/00_gazeforge_tour.py --output-dir gazeforge-tour-demo |
ten core CSVs + provenance/manifest |
| Synthetic QC | base | python examples/01_synthetic_qc.py |
printed trial QC |
| Transparent I-VT | base | python examples/02_ivt_baseline.py |
event counts/transitions |
| Visual diagnostics | .[plot] |
python examples/03_visual_diagnostics.py --output-dir visual-demo |
six PNG diagnostics |
| End-to-end workflow | base with --no-figures |
python examples/end_to_end_research_workflow.py --output-dir end-to-end-research-demo |
ten CSVs + provenance |
| Worked advertising/interface study | base | python examples/04_worked_advertising_study.py --output-dir worked-advertising-demo |
study-shaped bundle |
| Worked dynamic-AOI study | base with --no-figures |
python examples/05_worked_dynamic_aoi_study.py --output-dir worked-dynamic-aoi-demo |
dynamic-AOI audit bundle |
| Worked event-model validation | base with --no-figures |
python examples/06_worked_event_model_validation.py --output-dir worked-event-model-validation-demo |
held-out validation bundle |
| Worked tracker import + QC | base | python examples/07_worked_tracker_import_qc.py --output-dir worked-tracker-import-qc-demo |
import/QC evidence bundle |
| QC review + exclusion ledger | base | python examples/08_worked_qc_review_ledger.py --output-dir worked-qc-review-ledger-demo |
criteria + review/exclusion ledgers |
| Research evidence bundle | base | python examples/09_worked_research_evidence_bundle.py --output-dir worked-research-evidence-bundle |
archive-shaped source/QC/review/analysis/provenance bundle |
| Statistical analysis handoff | base with --no-figures |
python examples/10_worked_analysis_handoff.py --output-dir worked-analysis-handoff-demo |
trial × AOI/event tables + handoff metadata + optional diagnostics |
| Manuscript/reporting bundle | base | python examples/11_worked_manuscript_reporting_bundle.py --output-dir worked-manuscript-reporting-bundle |
reporting-only Methods/Results/boundary/citation derivatives |
| Measurement/interpretation audit | base | python examples/12_worked_measurement_interpretation_audit.py --output-dir worked-measurement-interpretation-audit |
claim registry + measure/validity/sensitivity/reporting audit |
| Outcome/estimand preregistration | base | python examples/13_worked_estimand_preregistration.py --output-dir worked-estimand-preregistration |
outcome + estimand + contrast + sensitivity + deviation registries |
| Reviewer/replication handoff | base | python examples/14_worked_reviewer_replication_bundle.py --output-dir worked-reviewer-replication-bundle |
claim-artifact + rerun + limitations + API + hash audit bundle |
| Sensitivity/robustness audit | base | python examples/15_worked_sensitivity_robustness_audit.py --output-dir worked-sensitivity-robustness-audit |
registered/executed variants + denominator/result comparison + deviations + reporting guidance |
| Denominator/exposure audit | base | python examples/16_worked_denominator_exposure_audit.py --output-dir worked-denominator-exposure-audit |
observation-status + exposure/rate/proportion/censoring reconciliation bundle |
| Model diagnostics audit | base | python examples/17_worked_model_diagnostics_audit.py --output-dir worked-model-diagnostics-audit |
fit registry + diagnostic status + interpretation gate + replacement linkage |
| Missing-data assumptions audit | base | python examples/18_worked_missing_data_assumptions_audit.py --output-dir worked-missing-data-assumptions-audit |
source registry + mechanism questions + non-selecting treatment/sensitivity/reporting handoff |
| Uncertainty/multiplicity audit | base | python examples/19_worked_inferential_reporting_audit.py --output-dir worked-inferential-reporting-audit |
result scale + interval identity + multiplicity family + reporting gate |
| Grouping/pseudoreplication audit | base | python examples/20_worked_grouping_pseudoreplication_audit.py --output-dir worked-grouping-pseudoreplication-audit |
unit registry + nested/crossed grouping + independence/aggregation audit + reporting/API handoff |
0 · GazeForge tour¶
Start here if you are not yet sure what GazeForge does.
python examples/00_gazeforge_tour.py --output-dir gazeforge-tour-demo
This is the shortest package-wide demonstration. It moves one deterministic gaze
table through canonicalisation, non-destructive QC, transparent I-VT events,
researcher-defined AOIs, semantic scanpaths, and provenance. It verifies source
immutability and sample-row preservation and writes ten CSV tables plus
provenance.json and workflow_manifest.json.
The example is synthetic_demo_not_empirical_evidence: a QC flag is not an
automatic exclusion, successful execution is not device or measurement validity,
and the I-VT demonstration is not evidence of general model superiority.
Open the script on GitHub · Read the GazeForge tour
1 · Synthetic QC¶
python examples/01_synthetic_qc.py
The smallest base-install example simulates gaze, canonicalises it, adds non-destructive anomaly flags, and prints trial-level quality summaries. No source rows are automatically deleted.
Open the script on GitHub · Read the QC tutorial
2 · Transparent I-VT baseline¶
python examples/02_ivt_baseline.py
The script applies an inspectable pixel-velocity I-VT baseline with an explicit threshold and prints event-class counts plus first-trial transitions. The threshold is an example setting, not a universal physiological cutoff.
Open the script on GitHub · Read the I-VT tutorial
3 · Visual diagnostics¶
python -m pip install -e ".[plot]"
python examples/03_visual_diagnostics.py --output-dir visual-demo
The script writes exactly six synthetic/demo figures:
01_qc_timeline.png
02_event_probabilities.png
03_calibration.png
04_aoi_overlay.png
05_scanpath.png
06_dynamic_aoi.png
Open the script on GitHub · Read the visual diagnostics guide
4 · Complete end-to-end research workflow¶
python examples/end_to_end_research_workflow.py \
--output-dir end-to-end-research-demo
Without figures:
python examples/end_to_end_research_workflow.py \
--output-dir end-to-end-research-demo \
--no-figures
The workflow writes:
01_source_gaze.csv
02_canonical_gaze.csv
03_qc_samples.csv
04_trial_quality.csv
05_event_samples.csv
06_event_intervals.csv
07_fixation_centroids.csv
08_aoi_definitions.csv
09_fixation_aoi_assignments.csv
10_semantic_scanpaths.csv
provenance.json
workflow_manifest.json
figures/03_scanpath.png
The script verifies that the source table remains unchanged, that sample row count is preserved through non-destructive stages, and records synthetic_demo_not_empirical_evidence.
Open the script on GitHub · Read the practical workflow
5 · Worked advertising / interface study¶
python examples/04_worked_advertising_study.py \
--output-dir worked-advertising-demo
The demonstration predeclares brand, claim, disclosure, and product
AOIs and writes the same ten study-shaped tables plus analysis_plan.json,
provenance.json, and workflow_manifest.json. Its outputs are software-demo
artifacts, not estimates of real consumer effects.
Open the script on GitHub · Read the worked-study guide
6 · Worked dynamic-AOI study¶
python examples/05_worked_dynamic_aoi_study.py \
--output-dir worked-dynamic-aoi-demo \
--no-figures
The deterministic moving-stimulus example writes:
01_source_fixations.csv
02_dynamic_aoi_keyframes.csv
03_fixation_dynamic_aoi_assignments.csv
04_semantic_scanpaths.csv
05_interpolation_audit.csv
06_assignment_summary.csv
analysis_plan.json
provenance.json
workflow_manifest.json
The probes before and after the reviewed keyframe range verify no extrapolation outside the observed track. With plotting enabled the example also emits dynamic-AOI and scanpath figures.
Open the script on GitHub · Read the dynamic-AOI guide
7 · Worked event-model validation study¶
python examples/06_worked_event_model_validation.py \
--output-dir worked-event-model-validation-demo \
--no-figures
The script constructs participant-disjoint folds, verifies zero participant overlap, and compares models on matched held-out rows. It writes:
01_source_event_samples.csv
02_participant_split_ledger.csv
03_matched_heldout_predictions.csv
04_sample_level_metrics.csv
05_event_level_metrics.csv
06_model_summary.csv
07_calibration_bins.csv
08_confidence_coverage.csv
09_illustrative_abstention_policy.csv
analysis_plan.json
provenance.json
workflow_manifest.json
figures/01_calibration.png
figures/02_confidence_coverage.png
The illustrative abstention policy is not a universal cutoff, and synthetic model ordering is not evidence of general superiority.
Open the script on GitHub · Open the validation clinic · Use the reporting cookbook
8 · Worked tracker import + QC¶
python examples/07_worked_tracker_import_qc.py \
--output-dir worked-tracker-import-qc-demo
The Gazepoint-shaped teaching source uses explicit USER_FILE, MEDIA_ID,
TIME, BPOGX, and BPOGY mappings. It declares seconds→milliseconds and
normalized→pixel conversion, then keeps duplicate keys, missing gaze, bounds,
nominal rate, and observed cadence visible.
It writes:
01_source_tracker_export.csv
02_canonical_gaze.csv
03_import_preflight.csv
04_qc_samples.csv
05_trial_quality.csv
import_contract.json
analysis_plan.json
provenance.json
workflow_manifest.json
The script verifies that the source table remains unchanged and that row count is preserved. Matching nominal/observed cadence is not proof of native hardware rate.
Open the script on GitHub · Read the import/QC guide · Use the real-data import clinic
9 · QC review + exclusion ledger¶
Use this example after non-destructive QC when the scientific task is deciding what to retain or exclude without turning software flags into automatic truth.
python examples/08_worked_qc_review_ledger.py \
--output-dir worked-qc-review-ledger-demo
The deterministic source contains 270 canonical rows: three participants × three trials × 30 samples. Two prespecified trial-level criteria are reviewed, while one sample-level anomaly flag is explicitly retained and one post-hoc rule is isolated as exploratory sensitivity only.
The command writes:
01_canonical_source.csv
02_pre_review_qc_samples.csv
03_trial_quality.csv
04_decision_criteria.csv
05_sample_review_ledger.csv
06_trial_review_ledger.csv
07_participant_review_ledger.csv
08_exclusion_flow.csv
09_reviewed_sample_status.csv
10_primary_analysis_rows.csv
11_exploratory_sensitivity.csv
analysis_plan.json
provenance.json
workflow_manifest.json
The primary reconciliation is deliberately inspectable:
pre-review QC rows = 270
trial denominator = 9
excluded trials = 2
retained trials = 7
participant denominator = 3
retained participants = 3
primary-analysis rows = 210
The pre-review QC table remains unchanged. qc_flag=True is demonstrated as a
review trigger, not an exclusion rule. The exploratory criterion is tagged
sensitivity_only and is never applied to the primary-analysis table.
The thresholds are teaching values, not universal recommendations. The bundle
is synthetic_demo_not_empirical_evidence; reproducible decisions do not
establish tracker, event-model, calibration, or measurement validity.
Open the script on GitHub · Read the QC review/exclusion clinic
10 · Worked research evidence bundle¶
Use this example when you understand the individual workflow stages and need to see what a reviewable manuscript/archive directory should actually look like.
python examples/09_worked_research_evidence_bundle.py \
--output-dir worked-research-evidence-bundle
The script composes existing public APIs into one archive-facing route:
tracker-shaped source
→ canonical gaze
→ immutable pre-review QC
→ explicit decision criteria
→ reviewed trial ledger
→ separate primary-analysis derivative
→ transparent I-VT events
→ researcher-defined AOIs
→ fixation assignments
→ semantic scanpaths
→ artifact index + analysis plan + provenance + manifest + README
The output directory contains 01_source_tracker_export.csv through
13_semantic_scanpaths.csv, plus source_contract.json,
artifact_index.csv, analysis_plan.json, provenance.json,
workflow_manifest.json, and a reviewer-facing README.md.
The example verifies that the source, canonical pre-review table, and pre-review
QC table remain unchanged while reviewed exclusions create a new
07_primary_analysis_rows.csv. Its thresholds are teaching values only.
Open the script on GitHub · Read the evidence-bundle guide · Use the artifact dictionary
11 · Statistical analysis handoff¶
Use this example after event/AOI outputs have been reviewed and you need an explicit handoff to specialist statistical software without losing repeated-measures identity, exposure denominators, missing-versus-zero semantics, or latency censoring.
python examples/10_worked_analysis_handoff.py \
--output-dir worked-analysis-handoff-demo
Without the optional diagnostic figures:
python examples/10_worked_analysis_handoff.py \
--output-dir worked-analysis-handoff-demo \
--no-figures
The deterministic teaching design contains 20 participant × trial rows and produces 80 participant × trial × AOI rows plus 40 participant × trial × event-type rows. It contains all three cases researchers must keep distinct: an AOI absent by design, a present/observed AOI with a true zero fixation count, and a completely missing trial. No-fixation latency remains explicitly right-censored rather than receiving an invented latency value.
The bundle writes:
01_reviewed_fixation_assignments.csv
02_reviewed_event_intervals.csv
03_trial_design_and_coverage.csv
04_trial_aoi_metrics.csv
05_trial_event_metrics.csv
06_descriptive_participant_condition_summary.csv
07_model_handoff_dictionary.csv
08_aoi_definitions.csv
upstream_reference.json
analysis_handoff_plan.json
provenance.json
workflow_manifest.json
figures/01_aoi_dwell_by_condition.png
figures/02_trial_coverage_status.png
The participant × condition summary is explicitly marked descriptive-only; it does not silently replace the trial-level model inputs. GazeForge does not fit or choose an inferential estimator in this example, and a failed-convergence model in downstream software would remain a stop condition rather than a valid result.
The complete bundle is synthetic_demo_not_empirical_evidence; it creates no device,
native-rate, event-model, AOI-construct, causal, or psychological-state validity claim.
Open the script on GitHub · Read the analysis-handoff guide · Use the artifact dictionary
12 · Manuscript/reporting bundle¶
Use this after the evidence bundle is frozen and you need reporting derivatives without rewriting upstream source/QC/review/analysis artifacts.
python examples/11_worked_manuscript_reporting_bundle.py \
--output-dir worked-manuscript-reporting-bundle
The script reuses 09_worked_research_evidence_bundle.py in a temporary directory, hashes every upstream file before and after reporting extraction, and fails if any upstream byte changes. It writes only:
methods_record.json
denominator_flow.csv
artifact_citation_table.csv
reporting_boundaries.json
software_identity.json
methods_example.md
results_example.md
archive_readme.md
reporting_manifest.json
No p-values, effect sizes, inferential statistics, device-validity claims, or psychological-state claims are invented. The entire worked route remains synthetic_demo_not_empirical_evidence.
Open the script on GitHub · Read the reporting clinic · Run publication readiness
13 · Measurement/interpretation audit¶
Use this after gaze-derived measures exist but before treating them as trust, persuasion, interest, comprehension, emotion, intent, diagnosis, preference, cognitive effort, prediction correctness, or scientific invalidity.
python examples/12_worked_measurement_interpretation_audit.py \
--output-dir worked-measurement-interpretation-audit
The deterministic teaching bundle writes:
01_claim_registry.csv
02_measurement_interpretation_matrix.csv
03_validity_threats.csv
04_sensitivity_plan.csv
05_reporting_language.csv
interpretation_audit.json
README.md
It preserves no-fixation latency as right-censored rather than zero, never assigns
valid/invalid truth-label statuses, performs no inferential statistics, and never
infers a latent state from gaze alone.
Open the script on GitHub · Read the measurement & interpretation clinic · Continue to reporting
14 · Outcome & estimand preregistration¶
Use this before model fitting to freeze primary/secondary/exploratory outcomes, exact observable definitions, inferential units, exposure/denominator rules, missing/zero/censoring semantics, contrasts, multiplicity families, and prespecified sensitivity checks.
python examples/13_worked_estimand_preregistration.py \\
--output-dir worked-estimand-preregistration
The worked bundle writes 01_outcome_registry.csv, 02_estimand_registry.csv, 03_contrast_registry.csv, 04_sensitivity_registry.csv, an initially empty but schema-valid 05_deviation_registry.csv, 06_reporting_plan.csv, preregistration_manifest.json, and README.md.
It fits no model, selects no estimator/model family, creates no p-values/effect sizes/results, never converts missing/no-fixation to zero, and does not claim construct or causal validity.
Open the script on GitHub · Read the preregistration clinic · Continue to the analysis handoff
15 · Reviewer/replication handoff¶
Use this after preregistration/estimand records, evidence, analysis handoff, measurement interpretation, and manuscript-facing reporting are frozen and an external reviewer or replicator needs to know what can actually be rerun.
python examples/14_worked_reviewer_replication_bundle.py \
--output-dir worked-reviewer-replication-bundle
The deterministic base-install example writes:
01_claim_artifact_matrix.csv
02_rerun_plan.csv
03_reproducibility_checklist.csv
04_limitations_register.csv
05_api_route_map.csv
software_environment.json
reviewer_start_here.md
artifact_hash_ledger.csv
replication_manifest.json
It distinguishes fully_rerunnable_demo,
rerunnable_with_private_input, and inspectable_only. Private/restricted
source files are not bundled. Matching hashes establish file identity only; they do
not create device, model, measurement/construct, causal, external, or
psychological validity.
Open the script on GitHub · Read the reviewer & replication handoff · Inspect the API reference · Run publication readiness
16 · Sensitivity/robustness audit¶
Use this after the primary outcome/estimand and sensitivity registry are frozen and the relevant analysis variants have been executed.
python examples/15_worked_sensitivity_robustness_audit.py \
--output-dir worked-sensitivity-robustness-audit
The deterministic teaching bundle writes:
01_sensitivity_registry.csv
02_executed_conditions.csv
03_result_comparison.csv
04_deviation_ledger.csv
05_interpretation_matrix.csv
06_reporting_language.csv
README.md
sensitivity_manifest.json
The example preserves the primary estimand as the reference, reports all registered
variants, retains one non_converged and one not_evaluable condition, separates
an exploratory AOI variant from a post-registration changed-estimand deviation, and
never creates a p-value, significance decision, or automatic robustness verdict.
Open the script on GitHub · Read the sensitivity & robustness clinic · Continue to reporting
17 · Denominator/exposure audit¶
Use this before specialist modelling when counts, rates, proportions, dwell, or latency depend on unequal exposure, missing trials, absent-by-design AOIs, or no-fixation censoring.
python examples/16_worked_denominator_exposure_audit.py \
--output-dir worked-denominator-exposure-audit
The deterministic teaching bundle writes an observation-status registry, exposure ledger, count/rate audit, dwell/proportion audit, latency-censoring audit, reconciliation flow, reporting-language table, API map, README, and manifest.
Open the script on GitHub · Read the denominator/exposure clinic · Continue to analysis handoff
18 · Model diagnostics/convergence audit¶
Use this after specialist statistical software returns fitted model objects and before you interpret coefficients, sensitivity variants, or manuscript results.
python examples/17_worked_model_diagnostics_audit.py \
--output-dir worked-model-diagnostics-audit
The deterministic teaching bundle includes a clean diagnostics-complete fit, a non-converged fit, a singular/boundary fit, a missing-diagnostics fit, a separation/invalid-covariance case, and a diagnostically clean replacement candidate that changes the estimand/population and therefore remains exploratory.
Open the script on GitHub · Read the model diagnostics clinic · Continue to sensitivity/robustness
19 · Missing-data assumptions/treatment audit¶
Use this after denominator/exposure/censoring states are reconciled and before a specialist statistical analysis selects how unavailable measurements will be treated.
python examples/18_worked_missing_data_assumptions_audit.py \
--output-dir worked-missing-data-assumptions-audit
The deterministic bundle writes:
01_missing_data_source_registry.csv
02_mechanism_assumption_questions.csv
03_analysis_treatment_registry.csv
04_exclusion_missingness_separation.csv
05_sensitivity_handoff.csv
06_reporting_language.csv
README.md
missing_data_assumptions_manifest.json
It never infers MCAR/MAR/MNAR, never performs automatic complete-case filtering, never selects imputation, weighting, joint-model, survival, GLM/GLMM, SEM, Bayesian, or another inferential treatment, and keeps censoring, design absence, and undefined derived metrics distinct from ordinary unavailable measurement.
Open the script on GitHub · Read the missing-data assumptions handoff · Continue to analysis handoff
20 · Uncertainty/multiplicity & inferential reporting audit¶
Use this after the specialist model has passed the diagnostics gate and before confirmatory/exploratory results are translated into manuscript language.
python examples/19_worked_inferential_reporting_audit.py \
--output-dir worked-inferential-reporting-audit
The deterministic teaching bundle preserves effect scale/unit, interval method/level, raw versus adjusted p-value identity, multiplicity-family membership, diagnostic eligibility, and confirmatory versus exploratory status. It includes complete confirmatory and exploratory examples plus blocked cases for missing uncertainty identity, incomplete multiplicity, scale/unit mismatch, and failed diagnostics.
Open the script on GitHub · Read the uncertainty/multiplicity clinic · Continue to reporting
21 · Grouping/repeated-measures & pseudoreplication audit¶
Use this after model-ready rows exist and before specialist model structure is selected.
python examples/20_worked_grouping_pseudoreplication_audit.py \
--output-dir worked-grouping-pseudoreplication-audit
The deterministic teaching bundle writes:
01_unit_registry.csv
02_grouping_structure.csv
03_row_independence_audit.csv
04_aggregation_risk_register.csv
05_crossed_nested_handoff.csv
06_reporting_language.csv
07_api_route_map.csv
README.md
grouping_pseudoreplication_manifest.json
It distinguishes observation rows, measurement units, inferential units, and generalisation units; records nested/crossed/repeated identities; flags obvious pseudoreplication and inferential-unit-changing aggregation; and deliberately selects no fixed effects, random intercepts/slopes, covariance structure, cluster-robust standard errors, GEE, LMM/GLMM, Bayesian hierarchical model, or other estimator.
Open the script on GitHub · Read the grouping/repeated-measures clinic · Continue to model diagnostics
Complete deterministic artifact inventory¶
The runnable examples collectively create the following additional audit artifacts. Their presence records workflow evidence and does not itself establish construct, causal, device, model, or external validity.
01_observation_status_registry.csv
02_denominator_exposure_ledger.csv
03_count_rate_audit.csv
04_proportion_dwell_audit.csv
05_latency_censoring_audit.csv
06_reconciliation_flow.csv
08_api_route_map.csv
denominator_exposure_manifest.json
01_model_fit_registry.csv
02_diagnostic_status.csv
03_interpretation_gate.csv
04_sensitivity_linkage.csv
model_diagnostics_manifest.json
Which example should I run first?¶
Not sure what GazeForge does? → 00_gazeforge_tour.py
Have a real tracker export? → 07_worked_tracker_import_qc.py
Have QC evidence; need review/exclusions? → 08_worked_qc_review_ledger.py
Need to verify installation / QC? → 01_synthetic_qc.py
Need an inspectable event baseline? → 02_ivt_baseline.py
Need figure-generation patterns? → 03_visual_diagnostics.py
Need a complete reviewable output bundle? → end_to_end_research_workflow.py
Need a static domain-shaped worked study? → 04_worked_advertising_study.py
Need moving AOIs + interpolation auditing? → 05_worked_dynamic_aoi_study.py
Need participant-held-out event validation? → 06_worked_event_model_validation.py
Need a manuscript/archive evidence bundle? → 09_worked_research_evidence_bundle.py
Need model-ready trial/AOI/event tables? → 10_worked_analysis_handoff.py
Need manuscript/reporting derivatives? → 11_worked_manuscript_reporting_bundle.py
Need to audit what a gaze metric supports? → 12_worked_measurement_interpretation_audit.py
Need to freeze outcomes/estimands first? → 13_worked_estimand_preregistration.py
Need a reviewer/replication handoff? → 14_worked_reviewer_replication_bundle.py
Need to audit sensitivity/robustness? → 15_worked_sensitivity_robustness_audit.py
Need to reconcile denominators/exposure? → 16_worked_denominator_exposure_audit.py
Need to audit model diagnostics/convergence? → 17_worked_model_diagnostics_audit.py
Need to document missing-data assumptions? → 18_worked_missing_data_assumptions_audit.py
Need to audit uncertainty/multiplicity? → 19_worked_inferential_reporting_audit.py
Need to audit grouping/pseudoreplication? → 20_worked_grouping_pseudoreplication_audit.py
Move from demo data to a study¶
A practical research sequence is:
- freeze the intended primary/secondary/exploratory outcomes and estimands with the Outcome & estimand preregistration clinic;
- preserve acquisition/source identity;
- run the Worked tracker import and QC and use the Real-data import clinic when the source contract differs from the worked example;
- freeze the actual source mapping, units, geometry, nominal rate, and observed cadence;
- preserve the pre-review QC derivative;
- use the QC review and exclusion ledger to record criteria, denominators, review status, and retained/excluded units;
- keep exploratory sensitivity decisions separate from the primary table;
- continue to event/AOI/scanpath analysis;
- use the Denominator, exposure & censoring clinic to reconcile observation-state, exposure, rate/proportion, and censoring mechanics;
- use the Missing-data assumptions & treatment handoff when unavailable/partial measurements require explicit assumptions or treatment planning;
- use the Analysis handoff to build model-ready tables while preserving participant/trial grouping and those semantics;
- use the Grouping, repeated measures & pseudoreplication clinic to audit row/inferential/generalisation units and nested/crossed participant-stimulus structure before specialist fitting;
- use participant-disjoint or dataset-held-out validation where the intended claim requires it;
- assemble the Research evidence bundle so source, QC, decisions, derivatives, provenance, and reporting metadata remain distinct;
- use the Measurement & interpretation clinic to audit any observable→construct bridge and justified sensitivity checks;
- use the Sensitivity & robustness clinic to execute/report the complete registered sensitivity set without replacing the primary estimand; and
- freeze software identity, figures, tables, and evidence boundaries before reporting.
Synthetic examples are learning tools. They do not turn a derived lower-rate condition into native-device validation, turn Gazepoint/GP3 compatibility into device validity, or turn an auditable exclusion rule into measurement validity.