Simulation
Simulation runner for batch evaluations.
Pure data generation for eye tracking simulation.
- pyetsimul.simulation.AngleKappaVariation(alpha_range_deg, beta_range_deg, num_steps)[source]
Angle kappa variation affecting both horizontal (alpha) and vertical (beta) components.
- class pyetsimul.simulation.ComposedVariation(variations, param_name='composed')[source]
Bases:
ParameterVariationCombines multiple parameter variations into a single experiment.
- Parameters:
variations (list[ParameterVariation])
param_name (str)
- __init__(variations, param_name='composed')[source]
Initialize composed variation.
- Parameters:
variations (
list[ParameterVariation]) – List of parameter variations to combineparam_name (
str) – Name for the composed parameter
- Return type:
None
- class pyetsimul.simulation.CorneaRadiusVariation(radius_range_mm, num_steps)[source]
Bases:
GenericEyeVariationCorneal anterior radius variation with proper unit display.
- class pyetsimul.simulation.CorneaThicknessVariation(thickness_range_mm, num_steps)[source]
Bases:
GenericEyeVariationCorneal thickness variation that works with both SphericalCornea and ConicCornea.
- class pyetsimul.simulation.DataGenerationStrategy(eyes, cameras, lights, experiment_name, gaze_target=None, output_dir='output', save_to_file=True, use_legacy_look_at=False, use_refraction=True, pupil_center_method='ellipse')[source]
Bases:
VariationStrategyGenerates eye tracking data across parameter variations.
This class encapsulates a complete experimental setup (eyes + hardware) and can generate datasets by applying different parameter variations to the same setup.
Design Philosophy: - Eyes are part of the experimental setup (biological configuration) - Cameras/lights define the hardware configuration - Variations are the experimental parameters to test - The same setup can be reused to test multiple variations efficiently
Example Usage:
# Create strategy with complete setup strategy = DataGenerationStrategy( eyes=[eye], cameras=[camera], lights=[light], gaze_target=Position3D(0, 0, 200) ) # Test multiple parameter variations on same setup pupil_data = strategy.execute(PupilSizeVariation([3, 7], 10)) kappa_data = strategy.execute(AngleKappaVariation([4, 8], [1, 3], 10)) radius_data = strategy.execute(CorneaRadiusVariation([7.5, 8.5], 10))
- Parameters:
- __init__(eyes, cameras, lights, experiment_name, gaze_target=None, output_dir='output', save_to_file=True, use_legacy_look_at=False, use_refraction=True, pupil_center_method='ellipse')[source]
Initialize data generation strategy with complete experimental setup.
- Parameters:
eyes (
list) – List of Eye objects to use in experimentscameras (
list) – List of Camera objects for data capturelights (
list) – List of Light objects for corneal reflectionsgaze_target (
Position3D|None) – Fixed target position (None allows variation-specific targets)output_dir (
str) – Directory to save generated datasetsexperiment_name (
str) – Base name for experiment filessave_to_file (
bool) – Whether to save datasets to diskuse_legacy_look_at (
bool) – Use legacy eye rotation method for compatibilityuse_refraction (
bool) – Enable corneal refraction in image capturepupil_center_method (
str) – Method for pupil center calculation (“ellipse” or “center_of_mass”)
- Return type:
None
- execute(variation)[source]
Generate eye tracking data using the configured setup and given variation.
- Parameters:
variation (
ParameterVariation) – Parameter variation to apply across the experimental setup- Return type:
- Returns:
Dictionary containing generated dataset with measurements and metadata
- generate_single_measurement(eye, camera, param_value, index, gaze_target=None)[source]
Generate measurement data for single camera-eye-parameter combination.
- apply_parameter_variation(eye_copy, variation, value)[source]
Apply parameter variation to eye copy and return gaze target.
- Parameters:
eye_copy (
Eye) – Eye object to modifyvariation (
ParameterVariation) – Parameter variation to applyvalue (
Any) – Variation value to apply
- Return type:
- Returns:
Current gaze target position after applying variation
- class pyetsimul.simulation.ExperimentConfig(experiment_name, eyes, cameras, lights, gaze_target=None, output_dir=<factory>)[source]
Bases:
objectGeneric configuration for any parameter variation experiment.
- Parameters:
- gaze_target: Position3D | None = None
- class pyetsimul.simulation.EyeParameterVariation(param_name)[source]
Bases:
ParameterVariationBase class for variations that modify eye objects.
- Parameters:
param_name (str)
- class pyetsimul.simulation.EyePositionVariation(center, dx, dy, dz, grid_size)[source]
Bases:
EyeParameterVariationVaries eye position in space using grid generation.
- Parameters:
- apply_to_eye(eye, value)[source]
Set eye position to the specified location.
- Return type:
- Parameters:
eye (Eye)
value (Position3D)
- class pyetsimul.simulation.GenericEyeVariation(parameter_name, value_range, num_steps, description=None)[source]
Bases:
EyeParameterVariationGeneric parameter variation for any eye model parameter.
Supports direct property assignment, method calls, and nested object parameters through string-based parameter paths.
- __init__(parameter_name, value_range, num_steps, description=None)[source]
Initialize generic parameter variation.
- class pyetsimul.simulation.GridGenerator[source]
Bases:
ABCAbstract base for 3D grid generation.
- class pyetsimul.simulation.ParameterVariation(param_name)[source]
Bases:
ABCBase class for all parameter variations - pure data generation only.
- Parameters:
param_name (str)
- __init__(param_name)[source]
Initialize parameter variation.
- Parameters:
param_name (
str) – Name of the parameter to vary- Return type:
None
- class pyetsimul.simulation.PupilDecentrationVariation(dx_range=None, dy_range=None, dz_range=None, num_steps=10)[source]
Bases:
GenericEyeVariationPupil decentration variation without changing pupil size.
Uses move_pupil_position to apply offsets in x, y, and/or z directions.
- Parameters:
- class pyetsimul.simulation.PupilSizeVariation(diameter_range, num_steps=10)[source]
Bases:
GenericEyeVariationPupil diameter variation with proper unit display.
- class pyetsimul.simulation.PupilSizeWithDecentrationVariation(diameter_range, decentration_config, num_steps=10)[source]
Bases:
GenericEyeVariationPupil size variation with decentration effects enabled.
- Parameters:
- class pyetsimul.simulation.RandomGrid(center, dx, dy, dz, num_points, seed=None)[source]
Bases:
GridGeneratorRandom 3D positions within bounds.
- Parameters:
- __init__(center, dx, dy, dz, num_points, seed=None)[source]
Initialize random grid.
- Parameters:
center (
Position3D) – Grid center positionnum_points (
int) – Number of random points to generate
- Return type:
None
- class pyetsimul.simulation.RegularGrid(center, dx, dy, dz, grid_size)[source]
Bases:
GridGeneratorRegular 3D grid generation with uniform spacing.
- Parameters:
- __init__(center, dx, dy, dz, grid_size)[source]
Initialize regular grid.
- Parameters:
- Return type:
None
- class pyetsimul.simulation.SequentialVariation(variations, param_name='sequential')[source]
Bases:
ParameterVariationApplies variations sequentially rather than in combination.
- Parameters:
variations (list[ParameterVariation])
param_name (str)
- __init__(variations, param_name='sequential')[source]
Initialize sequential variation.
- Parameters:
variations (
list[ParameterVariation]) – List of parameter variations to apply sequentiallyparam_name (
str) – Name for the sequential parameter
- Return type:
None
- class pyetsimul.simulation.TargetPositionVariation(grid_center, dx, dy, dz, grid_size)[source]
Bases:
TargetVariationVaries gaze target positions in space using grid generation.
- Parameters:
- class pyetsimul.simulation.TargetVariation(param_name)[source]
Bases:
ParameterVariationBase class for variations that provide gaze targets.
- Parameters:
param_name (str)
- class pyetsimul.simulation.VariationStrategy[source]
Bases:
ABCBase strategy for using parameter variations.
- abstractmethod execute(variation)[source]
Execute strategy over all variation values.
- Return type:
- Parameters:
variation (ParameterVariation)
- pyetsimul.simulation.create_experiment_config(experiment_name, eyes, cameras, lights, gaze_target=None, output_dir='outputs')[source]
Create experiment configuration with validation.
- pyetsimul.simulation.validate_config(config)[source]
Validate experiment configuration.
- Return type:
- Parameters:
config (ExperimentConfig)
Core
Core parameter variation architecture for pure data generation.
- class pyetsimul.simulation.core.ParameterVariation(param_name)[source]
Bases:
ABCBase class for all parameter variations - pure data generation only.
- Parameters:
param_name (str)
- __init__(param_name)[source]
Initialize parameter variation.
- Parameters:
param_name (
str) – Name of the parameter to vary- Return type:
None
- class pyetsimul.simulation.core.EyeParameterVariation(param_name)[source]
Bases:
ParameterVariationBase class for variations that modify eye objects.
- Parameters:
param_name (str)
- class pyetsimul.simulation.core.TargetVariation(param_name)[source]
Bases:
ParameterVariationBase class for variations that provide gaze targets.
- Parameters:
param_name (str)
Config
Generic configuration system for parameter variation experiments.
- class pyetsimul.simulation.config.ExperimentConfig(experiment_name, eyes, cameras, lights, gaze_target=None, output_dir=<factory>)[source]
Bases:
objectGeneric configuration for any parameter variation experiment.
- Parameters:
- gaze_target: Position3D | None = None
- pyetsimul.simulation.config.create_experiment_config(experiment_name, eyes, cameras, lights, gaze_target=None, output_dir='outputs')[source]
Create experiment configuration with validation.
- pyetsimul.simulation.config.validate_config(config)[source]
Validate experiment configuration.
- Return type:
- Parameters:
config (ExperimentConfig)
Data Generation
Data generation strategy for parameter variations.
- class pyetsimul.simulation.data_generation.DataGenerationStrategy(eyes, cameras, lights, experiment_name, gaze_target=None, output_dir='output', save_to_file=True, use_legacy_look_at=False, use_refraction=True, pupil_center_method='ellipse')[source]
Bases:
VariationStrategyGenerates eye tracking data across parameter variations.
This class encapsulates a complete experimental setup (eyes + hardware) and can generate datasets by applying different parameter variations to the same setup.
Design Philosophy: - Eyes are part of the experimental setup (biological configuration) - Cameras/lights define the hardware configuration - Variations are the experimental parameters to test - The same setup can be reused to test multiple variations efficiently
Example Usage:
# Create strategy with complete setup strategy = DataGenerationStrategy( eyes=[eye], cameras=[camera], lights=[light], gaze_target=Position3D(0, 0, 200) ) # Test multiple parameter variations on same setup pupil_data = strategy.execute(PupilSizeVariation([3, 7], 10)) kappa_data = strategy.execute(AngleKappaVariation([4, 8], [1, 3], 10)) radius_data = strategy.execute(CorneaRadiusVariation([7.5, 8.5], 10))
- Parameters:
- __init__(eyes, cameras, lights, experiment_name, gaze_target=None, output_dir='output', save_to_file=True, use_legacy_look_at=False, use_refraction=True, pupil_center_method='ellipse')[source]
Initialize data generation strategy with complete experimental setup.
- Parameters:
eyes (
list) – List of Eye objects to use in experimentscameras (
list) – List of Camera objects for data capturelights (
list) – List of Light objects for corneal reflectionsgaze_target (
Position3D|None) – Fixed target position (None allows variation-specific targets)output_dir (
str) – Directory to save generated datasetsexperiment_name (
str) – Base name for experiment filessave_to_file (
bool) – Whether to save datasets to diskuse_legacy_look_at (
bool) – Use legacy eye rotation method for compatibilityuse_refraction (
bool) – Enable corneal refraction in image capturepupil_center_method (
str) – Method for pupil center calculation (“ellipse” or “center_of_mass”)
- Return type:
None
- execute(variation)[source]
Generate eye tracking data using the configured setup and given variation.
- Parameters:
variation (
ParameterVariation) – Parameter variation to apply across the experimental setup- Return type:
- Returns:
Dictionary containing generated dataset with measurements and metadata
- generate_single_measurement(eye, camera, param_value, index, gaze_target=None)[source]
Generate measurement data for single camera-eye-parameter combination.
- apply_parameter_variation(eye_copy, variation, value)[source]
Apply parameter variation to eye copy and return gaze target.
- Parameters:
eye_copy (
Eye) – Eye object to modifyvariation (
ParameterVariation) – Parameter variation to applyvalue (
Any) – Variation value to apply
- Return type:
- Returns:
Current gaze target position after applying variation
Data Loading
Data loading utilities for cached experiment datasets.
- pyetsimul.simulation.data_loading.load_experiment_data(experiment_name, output_dir='outputs')[source]
Load cached experiment dataset by name.
- Parameters:
- Return type:
- Returns:
Dictionary containing the cached dataset
- Raises:
FileNotFoundError – If no cached dataset exists for this experiment name
Variations
Generic parameter variation for any eye model parameter.
- class pyetsimul.simulation.generic.GenericEyeVariation(parameter_name, value_range, num_steps, description=None)[source]
Bases:
EyeParameterVariationGeneric parameter variation for any eye model parameter.
Supports direct property assignment, method calls, and nested object parameters through string-based parameter paths.
- __init__(parameter_name, value_range, num_steps, description=None)[source]
Initialize generic parameter variation.
Anatomical parameter variations for eye tracking simulation.
- class pyetsimul.simulation.anatomy.PupilSizeVariation(diameter_range, num_steps=10)[source]
Bases:
GenericEyeVariationPupil diameter variation with proper unit display.
- class pyetsimul.simulation.anatomy.AngleKappaAlphaVariation(alpha_range_deg, num_steps)[source]
Bases:
GenericEyeVariationAngle kappa alpha (horizontal) variation with proper unit display.
- class pyetsimul.simulation.anatomy.AngleKappaBetaVariation(beta_range_deg, num_steps)[source]
Bases:
GenericEyeVariationAngle kappa beta (vertical) variation with proper unit display.
- pyetsimul.simulation.anatomy.AngleKappaVariation(alpha_range_deg, beta_range_deg, num_steps)[source]
Angle kappa variation affecting both horizontal (alpha) and vertical (beta) components.
- class pyetsimul.simulation.anatomy.CorneaRadiusVariation(radius_range_mm, num_steps)[source]
Bases:
GenericEyeVariationCorneal anterior radius variation with proper unit display.
- class pyetsimul.simulation.anatomy.CorneaThicknessVariation(thickness_range_mm, num_steps)[source]
Bases:
GenericEyeVariationCorneal thickness variation that works with both SphericalCornea and ConicCornea.
- class pyetsimul.simulation.anatomy.PupilSizeWithDecentrationVariation(diameter_range, decentration_config, num_steps=10)[source]
Bases:
GenericEyeVariationPupil size variation with decentration effects enabled.
- Parameters:
- class pyetsimul.simulation.anatomy.PupilDecentrationVariation(dx_range=None, dy_range=None, dz_range=None, num_steps=10)[source]
Bases:
GenericEyeVariationPupil decentration variation without changing pupil size.
Uses move_pupil_position to apply offsets in x, y, and/or z directions.
- Parameters:
Eye 3D position variations.
- class pyetsimul.simulation.eye_position.EyePositionVariation(center, dx, dy, dz, grid_size)[source]
Bases:
EyeParameterVariationVaries eye position in space using grid generation.
- Parameters:
- apply_to_eye(eye, value)[source]
Set eye position to the specified location.
- Return type:
- Parameters:
eye (Eye)
value (Position3D)
Target 3D position variations.
- class pyetsimul.simulation.target_position.TargetPositionVariation(grid_center, dx, dy, dz, grid_size)[source]
Bases:
TargetVariationVaries gaze target positions in space using grid generation.
- Parameters:
Base grid generation system for spatial parameter variations.
- class pyetsimul.simulation.grid_base.GridGenerator[source]
Bases:
ABCAbstract base for 3D grid generation.
- class pyetsimul.simulation.grid_base.RegularGrid(center, dx, dy, dz, grid_size)[source]
Bases:
GridGeneratorRegular 3D grid generation with uniform spacing.
- Parameters:
- __init__(center, dx, dy, dz, grid_size)[source]
Initialize regular grid.
- Parameters:
- Return type:
None
- class pyetsimul.simulation.grid_base.RandomGrid(center, dx, dy, dz, num_points, seed=None)[source]
Bases:
GridGeneratorRandom 3D positions within bounds.
- Parameters:
- __init__(center, dx, dy, dz, num_points, seed=None)[source]
Initialize random grid.
- Parameters:
center (
Position3D) – Grid center positionnum_points (
int) – Number of random points to generate
- Return type:
None
Composed parameter variations for complex experiment designs.
- class pyetsimul.simulation.composed_variation.ComposedVariation(variations, param_name='composed')[source]
Bases:
ParameterVariationCombines multiple parameter variations into a single experiment.
- Parameters:
variations (list[ParameterVariation])
param_name (str)
- __init__(variations, param_name='composed')[source]
Initialize composed variation.
- Parameters:
variations (
list[ParameterVariation]) – List of parameter variations to combineparam_name (
str) – Name for the composed parameter
- Return type:
None
- class pyetsimul.simulation.composed_variation.SequentialVariation(variations, param_name='sequential')[source]
Bases:
ParameterVariationApplies variations sequentially rather than in combination.
- Parameters:
variations (list[ParameterVariation])
param_name (str)
- __init__(variations, param_name='sequential')[source]
Initialize sequential variation.
- Parameters:
variations (
list[ParameterVariation]) – List of parameter variations to apply sequentiallyparam_name (
str) – Name for the sequential parameter
- Return type:
None