tobii_pytracker.analyze.FocusMapAnalyzer

class tobii_pytracker.analyze.FocusMapAnalyzer(output_folder: Path)

Focus Map Analyzer — shows areas NOT looked at (inverted heatmap).

API mirrors HeatmapAnalyzer:
  • analyze(background_data: pd.DataFrame, per: str = “global”) -> pd.DataFrame

  • plot_analysis(background_data: pd.DataFrame, screenshot_path: Path, title: Optional[str]=None, …) <- signature matches HeatmapAnalyzer.plot_analysis exactly.

Required columns in background_data:
  • ‘avg_gaze_x’, ‘avg_gaze_y’ (centered coords)

  • ‘set_name’, ‘slide_index’, ‘input_data’ depending on per mode

__init__(output_folder: Path)

Methods

__init__(output_folder)

analyze(background_data[, per])

Compute summary stats similarly to HeatmapAnalyzer but for API consistency.

plot_analysis(background_data, screenshot_path)

Plot focus map (inverted heatmap) overlayed over the screenshot.

analyze(background_data: DataFrame, per: str = 'global') DataFrame

Compute summary stats similarly to HeatmapAnalyzer but for API consistency.

Parameters

background_datapd.DataFrame

Flattened gaze data.

perstr

‘global’ | ‘set’ | ‘slide’ (same semantics as HeatmapAnalyzer)

Returns

pd.DataFrame

Summary with columns [‘avg_gaze_x’,’avg_gaze_y’,’gaze_count’] and grouping keys when appropriate.

plot_analysis(background_data: DataFrame, screenshot_path: Path, title: str | None = None, flip_y: bool = True, blur_sigma: float = 3.0, bins: int = 100, cmap: str = 'hot', alpha: float = 0.6, show: bool = True, save_path: Path | None = None)

Plot focus map (inverted heatmap) overlayed over the screenshot. Only the “hot” parts (unseen areas) are visible — transparent elsewhere. Signature matches HeatmapAnalyzer.plot_analysis.