"""Listed Elo vs PCA / t-SNE projection plots for the web UI.""" from __future__ import annotations from typing import Any, Literal from chess_tutor.inference.pipeline import InferenceResult from chess_tutor.playstyle_coaching.teacher import TeacherCoachingBundle from chess_tutor.web.embedding import build_all_embedding_plots def build_elo_embedding_plot( result: InferenceResult, method: Literal["pca", "tsne"], *, corpus_id: str = "standard_600", teacher_bundle: TeacherCoachingBundle | None = None, max_points: int = 6000, seed: int = 42, ) -> dict[str, Any] | None: """Place cohort snapshots and the analyzed player on listed Elo (x) vs embedding (y).""" key = "elo_pca_plot" if method == "pca" else "elo_tsne_plot" return build_all_embedding_plots( result, corpus_id=corpus_id, teacher_bundle=teacher_bundle, max_points=max_points, seed=seed, )[key]