Experiment Creation

Experiment Creation

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.

Calibration & Setup GUI

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.

Calibration & Setup GUI
Python
# 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()

Data Recording

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.

Data Processing & Cleaning

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.

Python
# 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)
Statistical Analysis

Statistical Analysis

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.

Easy Data Visualization

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.

visualization
visualization
visualization
visualization
Project Structure
project_name/
├── analysis/
│   └── results/
├── config/
│   └── pyproject.toml
├── data/
│   ├── EYNA/
│   │   ├── calibration/
│   │   └── recorded/
│   └── experiment/
├── docs/
│   └── readme.txt
└── experiment/
    ├── experiment.py
    ├── experiment_utils.py
    ├── static/
    └── stimuli/

Reproducible & Shareable

A standardized project structure that works identically across all EYNA studies. Dependency management uses uv to lock exact package versions in pyproject.toml and uv.lock for full reproducibility. Clean CSV files and pure Python code throughout — no proprietary formats

Ready to Learn More?

Get Early Access