| """Shared dependencies for API routes.""" | |
| import pandas as pd | |
| import numpy as np | |
| from typing import Optional, Dict | |
| from utils.data_loader import ModelDataLoader | |
| from utils.embeddings import ModelEmbedder | |
| from utils.dimensionality_reduction import DimensionReducer | |
| from utils.graph_embeddings import GraphEmbedder | |
| # Try to import chunked loader | |
| try: | |
| from utils.chunked_loader import ChunkedEmbeddingLoader | |
| CHUNKED_LOADER_AVAILABLE = True | |
| except ImportError: | |
| CHUNKED_LOADER_AVAILABLE = False | |
| ChunkedEmbeddingLoader = None | |
| # Global state (initialized in startup) - these are module-level variables | |
| # that will be updated by main.py during startup | |
| data_loader = ModelDataLoader() | |
| embedder: Optional[ModelEmbedder] = None | |
| graph_embedder: Optional[GraphEmbedder] = None | |
| reducer: Optional[DimensionReducer] = None | |
| chunked_embedding_loader: Optional[ChunkedEmbeddingLoader] = None # For chunked loading | |
| df: Optional[pd.DataFrame] = None | |
| embeddings: Optional[np.ndarray] = None | |
| graph_embeddings_dict: Optional[Dict[str, np.ndarray]] = None | |
| combined_embeddings: Optional[np.ndarray] = None | |
| reduced_embeddings: Optional[np.ndarray] = None | |
| reduced_embeddings_graph: Optional[np.ndarray] = None | |
| cluster_labels: Optional[np.ndarray] = None | |