tobii_pytracker.analyze.ClusterAnalyzer
- class tobii_pytracker.analyze.ClusterAnalyzer(output_folder: Path, columns: List[str] | None = None, clustering_model: object | None = None, eps: float = 0.05, min_samples: int = 5, n_clusters: int | None = None)
Performs clustering on gaze coordinates.
Supports flexible clustering backends (DBSCAN, KMeans, or custom). Results can be visualized by overlaying cluster-colored gaze points on the corresponding screenshot.
Parameters
- output_folderPath
Directory where results or plots can be saved.
- columnslist[str], optional
Columns to use for clustering (default: [‘avg_gaze_x’, ‘avg_gaze_y’]).
- clustering_modelobject, optional
Custom scikit-learn–compatible clustering model. If None, DBSCAN(eps, min_samples) is used.
- epsfloat, optional
DBSCAN epsilon parameter (ignored if using custom model).
- min_samplesint, optional
DBSCAN min_samples parameter (ignored if using custom model).
- n_clustersint, optional
KMeans number of clusters (only used if clustering_model=’kmeans’).
- __init__(output_folder: Path, columns: List[str] | None = None, clustering_model: object | None = None, eps: float = 0.05, min_samples: int = 5, n_clusters: int | None = None)
Methods
__init__(output_folder[, columns, ...])analyze(data[, clustering_model, eps, ...])Perform clustering on gaze coordinates.
plot_analysis(background_data, screenshot_path)Visualize gaze points colored by cluster assignment.
- analyze(data: DataFrame, clustering_model: object | None = None, eps: float | None = None, min_samples: int | None = None, n_clusters: int | None = None) DataFrame
Perform clustering on gaze coordinates.
Parameters
- datapd.DataFrame
Flattened gaze data with columns like [‘avg_gaze_x’, ‘avg_gaze_y’, ‘set_name’, ‘slide_index’].
- clustering_modelobject, optional
Custom clustering model. Must implement .fit(X) and .labels_.
- epsfloat, optional
DBSCAN epsilon parameter.
- min_samplesint, optional
DBSCAN min_samples parameter.
- n_clustersint, optional
KMeans n_clusters parameter.
Returns
- pd.DataFrame
DataFrame with an additional ‘cluster’ column.
- plot_analysis(background_data: DataFrame, screenshot_path: Path, title: str | None = None, set_name: str | None = None, slide_index: int | None = None, flip_y: bool = True, alpha: float = 0.7, point_size: float = 30.0, show_noise: bool = True, show: bool = True, save_path: Path | None = None)
Visualize gaze points colored by cluster assignment.
Parameters
- background_datapd.DataFrame
Data returned by analyze(), with a ‘cluster’ column.
- screenshot_pathPath
Path to the screenshot for this slide.
- titlestr, optional
Plot title.
- set_namestr, optional
Filter to a particular set.
- slide_indexint, optional
Filter to a particular slide.
- flip_ybool, optional
Whether to flip Y-axis (consistent with other analyzers).
- alphafloat, optional
Transparency of points.
- point_sizefloat, optional
Marker size.
- show_noisebool, optional
Whether to show noise points (cluster = -1).
- showbool, optional
Whether to display the figure interactively.
- save_pathPath, optional
If provided, saves the plot to this path.