#!/usr/bin/env python3 """Run HyperView demo with CIFAR-10 dataset.""" import argparse import os import sys from pathlib import Path # Add src to path for development sys.path.insert(0, str(Path(__file__).parent.parent / "src")) def main(): parser = argparse.ArgumentParser(description="Run HyperView demo") parser.add_argument( "--dataset", type=str, default="cifar10_demo", help="Dataset name to use for persistence (default: cifar10_demo)", ) parser.add_argument( "--samples", type=int, default=50000, help="Number of samples to load (default: 50000)" ) parser.add_argument( "--port", type=int, default=6262, help="Port to run server on (default: 6262)" ) parser.add_argument( "--no-browser", action="store_true", help="Don't open browser automatically" ) parser.add_argument( "--no-persist", action="store_true", help="Don't persist to database (use in-memory)" ) parser.add_argument( "--model", type=str, default="openai/clip-vit-base-patch32", help=( "Embedding model_id to use (default: openai/clip-vit-base-patch32). " "This is passed to Dataset.compute_embeddings(model=...)." ), ) parser.add_argument( "--datasets-dir", "--database-dir", type=str, default=None, help="Override persistence directory (sets HYPERVIEW_DATASETS_DIR)", ) parser.add_argument( "--no-server", action="store_true", help="Don't start the web server (useful for CI / DB checks)", ) args = parser.parse_args() if args.datasets_dir: os.environ["HYPERVIEW_DATASETS_DIR"] = args.datasets_dir import hyperview as hv dataset = hv.Dataset(args.dataset, persist=not args.no_persist) dataset.add_from_huggingface( "uoft-cs/cifar10", split="train", image_key="img", label_key="label", max_samples=args.samples, ) dataset.compute_embeddings(model=args.model, show_progress=True) # Compute both euclidean and poincare layouts dataset.compute_visualization(geometry="euclidean") dataset.compute_visualization(geometry="poincare") if args.no_server: return hv.launch(dataset, port=args.port, open_browser=not args.no_browser) if __name__ == "__main__": main()