
Design experiments using PsychoPy — the leading open-source platform for behavioral research. EYNA Helix is designed to seamlessly integrate with PsychoPy providing precise timing synchronization between your PsychoPy experiment design and eye tracking data.
An intuitive, streamlined graphical interface for camera setup, focus optimization, and calibration. Pre-trial gaze verification makes it easy to confirm and maintain accurate gaze estimation during every recording session.

# Import the Eyetracker class
from eyna.eyetracker import Eyetracker
# Start recording when experiment starts
Eyetracker.start()
# Add time-synchronized markers in your trial loop
Eyetracker.add_marker(trial, marker=1) # Stimulus onset
Eyetracker.add_marker(trial, marker=2) # Stimulus offset
# Stop recording when experiment ends
Eyetracker.stop()
A simple Python API to control recording: start, stop, and add time-synchronized markers — all in a few lines of code. Real-time data streaming from the USB3 camera with automatic file creation and buffer management.
Eye tracking studies produce three distinct data streams — experiment, calibration, and recorded gaze data. Helix functions import each stream separately, then automatically integrate and organize them into analysis-ready pandas DataFrames with one-line calls. Bad trials are detected and excluded across all streams simultaneously.
# Import all data streams
E = helix.import_experiment_data(base_dir)
C = helix.import_calibration_data(base_dir)
R = helix.import_recorded_data(base_dir, C)
# Exclude bad trials
R, E, C = helix.exclude_bad_trials(R, E, C, threshold=30)
# Generate fixation DataFrame
F = helix.create_fixation_df(R)

Built-in Bayesian mixed-effects models via the Bambi package. Purpose-built support for area-of-interest analysis, global (e.g., dispersion), fixation metrics, saccade metrics, pupillometry, and scanpath analysis.
Generate publication-ready visualizations with simple function calls. Plot raw gaze data, cleaned fixation traces, heatmaps, and scanpath overlays — or create movies of gaze behavior over time. See your eye movement data clearly at every stage of processing.
project_name/
├── analysis/
│ └── results/
├── config/
│ └── pyproject.toml
├── data/
│ ├── EYNA/
│ │ ├── calibration/
│ │ └── recorded/
│ └── experiment/
├── docs/
│ └── readme.txt
└── experiment/
├── experiment.py
├── experiment_utils.py
├── static/
└── stimuli/
A standardized project structure that works identically across all EYNA studies. Poetry dependency management locks exact package versions for full reproducibility to .toml file. Clean CSV files and Python code throughout — no proprietary formats.