Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Python Suite research packages logo

GazeForge

Auditable AI for eye-tracking research.

Import · QC · eye events · AOIs · scanpaths · validation · provenance · reproducible reporting

CI Documentation PyPI Python License: MIT DOI Status

Website · Start here · Task map · Method chooser · Examples · Learning paths · Evidence status · API


New to GazeForge? Start with the tour

If you are asking “What does GazeForge actually do?”, do not start with the API reference.

Read the GazeForge Tour and run the smallest package-wide example:

python examples/00_gazeforge_tour.py --output-dir gazeforge-tour-demo

The tour shows one gaze table moving through:

source gaze
   ↓
canonical gaze
   ↓
non-destructive QC
   ↓
transparent eye events
   ↓
researcher-defined AOIs
   ↓
semantic scanpaths
   ↓
provenance + reviewable output bundle

It creates ordinary CSV/JSON files you can inspect side-by-side. It also verifies that the source table is unchanged and that sample rows are preserved through non-destructive sample-level stages.

Tour boundary: the tour uses deterministic synthetic/demo data. It is not empirical validation evidence, a tracker-validity result, or a claim that QC flags should automatically become exclusions.

What GazeForge is

GazeForge is a vendor-neutral Python research-software package for integrating auditable AI and reproducible workflows into eye-tracking analysis.

It is not one detector or one classifier. It connects the analysis stages that researchers normally have to manage separately while keeping transformations, uncertainty, model identity, sampling assumptions, human review, and provenance visible.

Scientific contract: AI may propose, score, classify, embed, or flag. It must not silently alter the empirical record.

GazeForge does not infer diagnoses, emotions, personality, protected traits, or unsupported latent mental states from gaze.

Choose the path you need

Your task Start here
I do not yet understand the package GazeForge Tour
I have a tracker export Worked tracker import + QC
QC found problems and I need defensible exclusions QC review + exclusion ledger
I need an inspectable eye-event baseline I-VT tutorial
I want to train or compare learned event models Event-model validation clinic
I need static or moving AOIs Research recipes / Dynamic AOI study
I know the task but need to choose the method Method chooser
I need to understand a CSV/JSON output Artifact & output dictionary
I need to freeze outcomes/estimands before modelling Outcome & estimand preregistration clinic
I need to reconcile denominator/exposure/missingness/censoring Denominator, exposure & censoring clinic
I need to document missing-data assumptions/treatment choices Missing-data assumptions & treatment handoff
I have reviewed gaze outputs and need model-ready statistical tables Analysis handoff
I need to preserve repeated-measures/grouping and avoid pseudoreplication Grouping, repeated measures & pseudoreplication clinic
I need to audit model convergence/diagnostics after fitting Model diagnostics & convergence clinic
I need to audit effect scale/uncertainty/multiplicity before reporting Uncertainty, multiplicity & inferential reporting clinic
I have a gaze metric and need to know what it supports saying Measurement & interpretation clinic
I need to audit sensitivity/robustness without cherry-picking Sensitivity & robustness clinic
I need a study from acquisition to publication Study lifecycle
I need a reviewable manuscript/archive bundle Research evidence bundle
I need claim-safe Methods/Results/archive wording Reporting & interpretation clinic
I need to hand the frozen study to a reviewer/replicator Reviewer & replication handoff
I am preparing a manuscript Publication readiness
I need to know what is empirically supported Evidence status

Browse all exact commands and output inventories in the Runnable examples gallery.

What GazeForge adds to eye-tracking analysis

Layer What it provides What it does not silently do
Import & canonicalisation vendor-neutral schema, Gazepoint adapters, rate/cadence diagnostics guess unknown source semantics
QC anomaly flags, missingness/bounds/gap diagnostics, trial quality delete flagged observations
Review & exclusions explicit sample/trial/participant decision ledgers and denominators convert flags directly into exclusions
Eye events transparent I-VT/angular I-VT, Random Forest, temporal-context models imply one model is universally superior
AOIs researcher-defined and AI-proposed static/dynamic AOIs, review history treat proposals as ground truth
Scanpaths semantic sequences, motifs, embeddings, similarity, clustering infer unsupported mental states
Validation participant-held-out/dataset-held-out workflows, calibration, event metrics hide the split or native/derived distinction
Auditability fingerprints, provenance, manifests, benchmark/evidence records overwrite the empirical record

Installation and immutable release identity

Install the exact public alpha:

python -m pip install "gazeforge==0.1.0a2"

The immutable 0.1.0a1 release is published at PyPI and archived on Zenodo with version DOI 10.5281/zenodo.22650013. The Zenodo concept/latest-release DOI is 10.5281/zenodo.22650012.

The exact GitHub Release distributions are identity-matched to the published alpha:

gazeforge-0.1.0a1-py3-none-any.whl  sha256:3e409fbfc3c194db30ba25fefdf7f6459a3a003aefa0ab4303555d96982fbb46
gazeforge-0.1.0a1.tar.gz            sha256:cee4e061a90d74b3a354a0fb4aa5c7bd00d53577e17167f75342cd476a5c25fa

Optional open-vocabulary semantic AOI detection:

python -m pip install "gazeforge[vision]==0.1.0a2"

For development or commit-pinned research work:

git clone https://github.com/stefanosbalaskas/GazeForge.git
cd GazeForge
python -m pip install -e ".[dev]"
pytest

Release & install guidance →

Minimal Python workflow

from gazeforge import ai_flag_anomalies, canonicalize_gaze, simulate_gaze

raw = simulate_gaze(n_participants=3, n_trials=2, samples_per_trial=180)
gaze = canonicalize_gaze(raw, sampling_rate_hz=60)
flagged = ai_flag_anomalies(gaze.data, sampling_rate_hz=gaze.sampling_rate_hz)

The input rows remain present. QC adds review evidence rather than deleting observations.

For a more informative first run, use examples/00_gazeforge_tour.py instead of stopping at this snippet.

Example progression

The repository now has a task-oriented learning sequence:

00  package-wide GazeForge tour
01  synthetic non-destructive QC
02  transparent I-VT baseline
03  visual diagnostics
04  worked static advertising/interface study
05  worked dynamic-AOI study
06  participant-held-out event-model validation
07  tracker import + QC
08  QC review + exclusion ledger
09  archive-facing research evidence bundle
10  statistical analysis handoff + diagnostic figures
11  manuscript/reporting derivatives + claim boundaries
12  measurement/interpretation claim audit
13  outcome & estimand preregistration registry
14  reviewer/replication handoff
15  sensitivity/robustness audit
16  denominator/exposure/censoring audit
17  model diagnostics/convergence audit
18  missing-data assumptions/treatment audit
19  uncertainty/multiplicity inferential reporting audit
20  grouping/repeated-measures/pseudoreplication audit
+   complete end-to-end research workflow

Every learning example uses deterministic synthetic/demo inputs and carries an explicit evidence boundary.

Validation is visible, not implied

GazeForge separates software capability from empirical support. The canonical public status is generated from versioned evidence policy and integrity-checked artifacts.

Benchmark Reference Native rate Current role and boundary
Lund2013 paired expert manual event labels 500 Hz Frozen empirical evidence: native/derived human agreement and derived-60-Hz modelling; derived results are not native GP3 validation
Hollywood2EM sequential student labels with expert-corrected final labels ≈500 Hz Frozen empirical evidence: aggregate derived-60-Hz source-token-held-out evidence; source-token-disjoint, not participant-disjoint; identity/licence boundaries remain
Gaze-in-the-Wild distributed trained human labellers published 120 Hz acquisition; exact ProcessData nominal 300 Hz Reviewed empirical evidence: exact-distribution participant-disjoint evidence on a derived 60-Hz task-agnostic grid; complete authoritative numeric task mapping and native-60-Hz/GP3 validity remain open
VISUS one published curated dynamic-AOI annotation process involving two contributors 60 Hz Bounded empirical evidence: verified partial public-derivative Tobii 60 Hz observations; the full 25-participant × 11-stimulus benchmark is not recovered, original source licensing remains unresolved, and no full-dataset model-validation, human-human-agreement, Frozen Evidence, or native-GP3 claim is created

GazeForge never silently upgrades derived or partial evidence into a stronger category. For VISUS specifically, the current public derivative supports bounded empirical observations only; it does not recover the original full benchmark or establish model validity, independent human-human agreement, Frozen Evidence, unrestricted source redistribution, or native GP3 validity.

Evidence status → · Frozen evidence → · Validation matrix →

First frozen Lund2013 checkpoint

The first audited external benchmark tranche uses the public Lund2013 expert-labelled corpus with exact source verification and participant-held-out evaluation. The primary RA-labelled derived 60 Hz comparison is intentionally multi-criterion: learned models are stronger on sample-level multiclass classification in this checkpoint, while transparent I-VT is stronger on contiguous event segmentation/boundary fidelity.

Human MN–RA agreement remains strong from native 500 Hz to the derived 60 Hz condition. These results are not native GP3/60 Hz device validation; a genuinely native 60 Hz/GP3-class manually labelled event corpus remains an open evidence requirement.

Inspect the complete frozen reports →

Research workflow

tracker / raw export
        │
        ▼
explicit source contract
        │
        ▼
canonical gaze table
        │
        ├── non-destructive QC ── review/exclusion ledger
        ├── eye-event labels/probabilities ── validation
        ├── static/dynamic AOIs ── human review
        └── semantic scanpaths
                         │
                         ▼
               reviewed analytic derivative
                         │
                         ▼
              statistics / models / report
                         │
                         ▼
          provenance + fingerprints + archive

For a manuscript-facing study, record acquisition hardware, nominal/native rate, observed timestamp cadence, source mapping/units, source fingerprints, QC and exclusion decisions, event/AOI model identity, split design, native/derived status, and the exact GazeForge version/commit. The Research evidence bundle shows how to freeze those layers without collapsing source, QC, review decisions, and analysis derivatives into one table.

Scientific governance

Confirmatory workflows should lock model/version information, sampling rates, exclusions, validation splits, and human review decisions before final inference. External benchmark files remain external unless their reuse terms clearly permit redistribution.

Scientific governance → · Publication readiness →

Documentation

The strict-built MkDocs Material site is the primary long-form documentation surface:

https://stefanosbalaskas.github.io/GazeForge/

Recommended entry points:

Project status

GazeForge is active public-alpha research software. The package has broad implemented workflow coverage and audited external evidence, while important scientific gates remain explicit rather than being hidden behind the software feature set.

Before a stable scientific release, key open requirements include native 60 Hz/GP3-class expert-labelled event validation, resolution of remaining benchmark identity/licensing boundaries, stronger full-source VISUS recovery/authorization, broader cross-dataset validation, validated dynamic-detection/tracking results, and final API stability beyond the alpha series.

The active benchmark plan is tracked in Issue #1.

Citation

For work using the first public alpha:

Balaskas, S. (2026). GazeForge: Auditable AI for Eye-Tracking Analysis (Version 0.1.0a1) [Computer software]. Zenodo. https://doi.org/10.5281/zenodo.22650013

Use the exact GazeForge version or full commit SHA in reproducible methods. Machine-readable citation metadata is available in CITATION.cff.

License

MIT License. External validation datasets retain their own licenses and are not silently redistributed by GazeForge.

Release files for gazeforge 0.1.0a2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gazeforge 0.1.0a2
File Size Uploaded
gazeforge-0.1.0a2.tar.gz 1.8 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for gazeforge 0.1.0a2
File Interpreter ABI Platform
gazeforge-0.1.0a2-py3-none-any.whl Python 3 none any Details

Total release size: 2.5 MB

Release files / gazeforge-0.1.0a2.tar.gz

Download URL gazeforge-0.1.0a2.tar.gz
Size 1.8 MB
Tags Source
SHA-256 checksum
How to use checksums
36f70467422ffd1879500c77415fbb38a95ae481f9f66f305b918ed0b7f425c7
BLAKE2b-256 checksum
How to use checksums
fd3ae64d516db1a16d636488fb224f8abbefff9e8504753cdf00afb44f220ca5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release files / gazeforge-0.1.0a2-py3-none-any.whl

Download URL gazeforge-0.1.0a2-py3-none-any.whl
Size 688.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ff8bee1efacac7b36cccae6ecfed56dfd428d6c85e3b37263673321c1b6e8705
BLAKE2b-256 checksum
How to use checksums
aec60b11aa5b29910600523d30822a43ba21cd36c86cd39882b16dfb2f1b796e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0a2 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page