Spaces:
Running
Running
Architecture Overview
System Architecture
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Docker Container (port 7860) β
ββββββββββββββββ¬ββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ€
β React SPA β Gradio UI β FastAPI Backend β
β (static) β /gradio β /api/* /docs /health β
β / β β β
ββββββββββββββββ΄ββββββββββββββββ΄ββββββββββββββββββββββββββββββββββββ€
β Model Registry β
β βββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ β
β βClassical β β LSTMΓ4 β βTransform.β β Ensemble β β
β β models β β GRU β β GPT, TFT β β Stack/WA β β
β βββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Data Pipeline (src/) β
β loader.py β features.py β preprocessing.py β model training β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β NASA PCoE Dataset (cleaned_dataset/) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Data Flow
- Ingestion:
loader.pyreads metadata.csv + per-cycle CSVs - Feature Engineering:
features.pycomputes SOC, SOH, RUL, scalar features per cycle - Preprocessing:
preprocessing.pycreates sliding windows, scales features, splits by battery - Training: Notebooks train each model family, save checkpoints to
artifacts/models/ - Serving:
model_registry.pyloads all models at startup - Prediction: API receives features β registry dispatches to best model β returns SOH/RUL
- Simulation:
POST /api/v2/simulatereceives multi-battery config β vectorized Arrhenius degradation + ML viapredict_array()β returns per-step SOH, RUL, and degradation-state history for each battery - Visualization: Frontend fetches results and renders analytics (fleet overview, compare, temperature analysis, recommendations)
Model Registry
The ModelRegistry singleton:
- Scans
artifacts/models/classical/for.joblibfiles (sklearn/xgb/lgbm) - Scans
artifacts/models/deep/for.pt(PyTorch) and.keras(TF) files - Loads classical models eagerly; deep models registered lazily
- Selects default model by priority: XGBoost > LightGBM > RandomForest > Ridge > deep models
- Provides unified
predict()interface regardless of framework predict_array(X: np.ndarray, model_name: str)batch method enables vectorized simulation: accepts an (N, n_features) array and returns predictions for all N cycles in one call, avoiding Python loops_x_for_model()normalizes input feature extraction for both single-cycle and batch paths_load_scaler()lazily loads per-model scalers fromartifacts/scalers/
Frontend Architecture
- Vite 7 build tool with React 19 + TypeScript 5.9
- lucide-react 0.575 for all icons β no emojis used anywhere in the UI
- Recharts 3 for all 2D charts (BarChart, AreaChart, LineChart, ScatterChart, RadarChart, PieChart)
- TailwindCSS 4 for styling
- Tabs: Simulation | Predict | Metrics | Analytics | Recommendations | Research Paper
- API proxy in dev mode (
/apiβlocalhost:7860) β same-origin in production (served by FastAPI) - Analytics (GraphPanel): 4-section dashboard β Fleet Overview (health kpi, fleet SOH bar, bubble scatter), Single Battery (SOH + RUL projection, capacity fade, degradation rate), Compare (multi-battery overlay), Temperature Analysis
- Metrics (MetricsPanel): 6-section interactive dashboard β Overview KPIs, Models (sort/filter/chart-type controls), Validation, Deep Learning, Dataset stats, Figures searchable gallery
- Recommendations (RecommendationPanel): Slider inputs for SOH/temp, 3 chart tabs (RUL bar, params bar, top-3 radar), expandable table rows with per-recommendation explanation