Skip to content
Functional eye-tracking analysis · Python 3.11–3.13

Analyze the trajectory, not just the fixation count.

eyetrajectoriespy models gaze as a time-indexed two-coordinate functional process. Work with dense, sparse, irregular and repeated-trial trajectories while keeping the assumptions behind analysis and uncertainty visible.

Begin your first analysis Find a topic Install stable 1.2.0 Find a Python integration Try method selector Research evidence

Published stable: 1.2.0 · Supported workflows: ten module-scoped W1–W4 routes · Research helpers: E1–E4 remain experimental · Scientific exclusions: #289 / #296

Conceptual illustration of planar gaze samples, time-indexed functional representation and inference

Conceptual synthetic schematic, not measured human gaze or a performance claim.

Full-site usability and migration status

The site-wide quality programme now evaluates rendered internal links and deep anchors, topic search discoverability, simulated mobile Lighthouse performance, browser accessibility and complete Zensical route inventory. The selected Zensical Modern design is evaluated through a strict publication gate, with MkDocs Material retained as an independent compatibility and rollback baseline. Automated checks do not replace the open manual screen-reader and keyboard review.

Site transparency and accessibility

The website quality and discoverability guide explains how documentation pages, canonical URLs, visual assets and browser accessibility are tested. The checks are reproducible but do not certify WCAG compliance or guarantee search visibility.

Cite and reproduce research

Using the software in a paper? Get the exact 1.2.0 citation and research provenance checklist. The website citation reflects CITATION.cff, distinguishes released APIs from repository previews, and does not invent a DOI.

Start with your data and research question

New to functional gaze analysis? Use the data-to-method guide to identify the independent sampling unit, time grid, estimand and uncertainty scope before choosing an estimator. The quick start provides seeded executable examples.

Illustrated methods — see the analysis before the API

Browse a 12-figure scientific storyboard linking deterministic FPCA, sparse, regression and nonlinear plots to reproducible methods and their explicit interpretation limits. Each figure comes from the existing documentation build; no new results are claimed.

Interactive research tools

New: Inspect the structure of a gaze CSV in your browser — read participant/trial support, missing coordinates and timestamps locally without sending data to a server. This is a structural preflight, not an instrument or inference validation.

  • Find a suitable analysis route

Answer four questions about your time grid, estimand, sampling hierarchy and uncertainty. Receive an interpretable, non-prescriptive method starting point.

Interactive selector · Ten-route comparison

  • Explore a synthetic gaze trajectory

Change retained sample support and switch between the spatial path and time-indexed coordinate. Descriptive spread is explicitly not a confidence interval.

Trajectory explorer · Runnable synthetic dataset

  • Search figures and research evidence

Filter existing W3 figures and R76–R95 research records without promoting experimental findings to stable package claims.

Filter figures · Search evidence

  • Check documentation provenance

Use stable 1.2.0 online docs with release-indexed notes and immutable tagged source references.

Documentation versions

Connect your gaze data to the right analysis

Python ecosystem interoperability

Bring preprocessed sample tables from upstream acquisition packages into the existing functional-data contracts without pretending that event detection validates functional inference. A new optional pandas/Polars/Parquet example shows strict source mapping and refuses missing or unequal dense grids.

Python integrations pymovements example BIDS metadata inspector Runnable table handoff

A new SyeLink 2.0.0 EyeLink ASC integration example maps explicitly selected-eye screen gaze samples without losing recording-segment boundaries. Explore the Python EyeLink parser comparison before choosing a source reader. Both are research previews rather than stable vendor-reader APIs.

Begin with your scientific question

  • Explore variation in continuous gaze paths

Use FPCA and planar MFPCA to inspect structured temporal variation.

FPCA workflow

  • Analyze sparse or asynchronous recordings

Respect irregular sampling and coordinate-specific recorded times.

Sparse planar methods · Irregular data

  • Examine changing experimental effects

Fit interpretable functional regression with explicitly declared support and units.

Regression guide

  • Model participants and repeated trials

Keep cluster structure and repeated observations visible.

Mixed-effects workflow

  • Study recurrence and temporal dynamics

Report embedding, threshold and time-delay decisions.

Recurrence workflow

  • Report auditable decisions

Surface preprocessing, model assumptions, scientific contracts and failures.

Scientific contracts · Reporting

Released software is not the same as ongoing research

Available via pip

Stable version 1.2.0

The published package includes qualified 1.1 sparse/irregular methods and ten supported W1–W4 workflow routes under eyetrajectoriespy.workflows.

pip install eyetrajectoriespy==1.2.0

PyPI 1.2.0 · GitHub v1.2.0

Quick start · Stable API

Scientific limitations

Released workflows and experimental research

Ten W1–W4 workflow routes are published stable APIs. Twelve E1–E4 helpers remain experimental, and the W3 whole-function confidence-band and field-MNAR claims are not qualified (issues #289 / #296).

Research library · Release status

Explore scientific evidence

R82 original selective-missing-gaze support and refusal evidence

R95 conditional sharp binary mean sets under different return-direction assumptions

Read each figure in the context of its source. R82 shows that apparently high gaze retention can coexist with inadequate independent-unit support. R95 proves conditional sharp population bounds given externally justified return assumptions; it does not establish the true missing-gaze mechanism or calibrate nominal-90% confidence bands.

Scientific figure atlas Interpret workflow figures Study map R76–R95

Latest news

24 October 2026 · Stable 1.2.0 released

The GitHub release and PyPI distribution passed production publication and exact-version installation checks. Statistical limitations remain explicit.

Release announcement · Release status

23 October 2026 · R93–R95 research evidence

Exact observational equivalence, externally assumed completion floors and monotone-return sensitivity, with independently audited records.

Research update · Study map

Transparent research software

The package starts after gaze has a scientifically interpretable time and coordinate representation. It complements, rather than replaces, fixation/saccade detection, instrument-level QC, AOI/scanpath methods and upstream recording workflows.

Representations · Mathematical reference · Workflow guide · Contribute · GitHub