{"id":50707292,"url":"https://github.com/remontsuri/EV-QA-Framework","last_synced_at":"2026-06-26T13:00:51.042Z","repository":{"id":332857148,"uuid":"1135255991","full_name":"remontsuri/EV-QA-Framework","owner":"remontsuri","description":"ML-powered QA framework for EV battery systems — telemetry validation, anomaly detection, SOH prediction, CAN bus (2.0B + J1939) emulation, DBC parser, Prometheus metrics, Grafana dashboard","archived":false,"fork":false,"pushed_at":"2026-06-12T23:07:22.000Z","size":1096,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-13T00:24:29.052Z","etag":null,"topics":["anomaly-detection","battery","bms","can-bus","dbc","electric-vehicle","ev","grafana","j1939","lstm","machine-learning","prometheus","python","quality-assurance","soh-prediction"],"latest_commit_sha":null,"homepage":"https://remontsuri.github.io/EV-QA-Framework/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/remontsuri.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":"AUDIT_REPORT.md","citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["remontsuri"]}},"created_at":"2026-01-15T21:14:42.000Z","updated_at":"2026-06-12T23:07:25.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/remontsuri/EV-QA-Framework","commit_stats":null,"previous_names":["remontsuri/ev-qa-framework"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/remontsuri/EV-QA-Framework","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remontsuri%2FEV-QA-Framework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remontsuri%2FEV-QA-Framework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remontsuri%2FEV-QA-Framework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remontsuri%2FEV-QA-Framework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/remontsuri","download_url":"https://codeload.github.com/remontsuri/EV-QA-Framework/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remontsuri%2FEV-QA-Framework/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34817641,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-26T02:00:06.560Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anomaly-detection","battery","bms","can-bus","dbc","electric-vehicle","ev","grafana","j1939","lstm","machine-learning","prometheus","python","quality-assurance","soh-prediction"],"created_at":"2026-06-09T13:00:22.219Z","updated_at":"2026-06-26T13:00:51.035Z","avatar_url":"https://github.com/remontsuri.png","language":"Python","funding_links":["https://github.com/sponsors/remontsuri"],"categories":["Tools and Resources"],"sub_categories":["Battery"],"readme":"# EV-QA-Framework\n\n![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)\n![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)\n![Tests](https://img.shields.io/badge/tests-980%20passed-brightgreen.svg)\n![Coverage](https://img.shields.io/badge/coverage-93%25-brightgreen.svg)\n![Version](https://img.shields.io/badge/version-2.5.0-blue.svg)\n[![PyPI](https://img.shields.io/pypi/v/ev-qa-framework.svg)](https://pypi.org/project/ev-qa-framework/)\n[![GitHub Release](https://img.shields.io/github/v/release/remontsuri/EV-QA-Framework)](https://github.com/remontsuri/EV-QA-Framework/releases)\n\n\n**EV Battery QA Framework — detect thermal runaway, validate BMS telemetry, comply with UN 38.3 / IEC 62660 / GB 38031, and ship with 980 passing tests and a Docker-ready pipeline.**\n\n22 modules. MIT licensed. Python 3.10+.\n\n---\n\n## Installation\n\n```bash\n# Core (anomaly detection, validation, scoring)\npip install ev-qa-framework\n\n# With web dashboard\npip install ev-qa-framework[web]\n\n# With CAN bus support\npip install ev-qa-framework[can]\n\n# With ML and monitoring\npip install ev-qa-framework[ml,monitoring]\n\n# Everything\npip install ev-qa-framework[all]\n```\n\n---\n\n## 30-second value\n\n```bash\ngit clone https://github.com/remontsuri/EV-QA-Framework.git\ncd EV-QA-Framework\ndocker compose up -d\nopen http://localhost:8081\n```\n\nDone. You have a running battery QA workstation:\n- telemetry validation\n- ML anomaly detection\n- thermal runaway early warning\n- cell imbalance analysis\n- SOH prediction\n- compliance testing against 6 international standards\n- live dashboard with Prometheus metrics\n\nNo cloud account required. No external dependencies. Just a CSV and a terminal.\n\n---\n\n## What you get\n\n**Input safety layer.** Pydantic schemas for voltage, current, temperature, SOC, SOH. Bad VINs, out-of-range values, and malformed rows are rejected before they reach your models.\n\n**Anomaly detection.** Isolation Forest on voltage/current/temperature streams. Configurable contamination, severity thresholds, estimator count.\n\n**Thermal runaway prediction.** Rule-based heuristics (temperature, delta-temp, anomaly score, chemistry runaway point). CRITICAL trigger defaults at \u003e=130 C, rapid-rise trigger at \u003e10 C/min. Catches overheating before cascade onset. Confidence score clamped to [0, 1].\n\n**SOH prediction.** LSTM-based State of Health forecasting from historical telemetry. Transformer-based prediction via soh_transformer for longer sequences.\n\n**Cell imbalance analysis.** Statistical analysis of cell group voltages with configurable thresholds, outlier detection, linear regression trend.\n\n**Battery scoring.** Composite health score (0-100) with letter grades (A+ through F). Combines SOH, internal resistance, cell balance, and thermal history.\n\n**CAN bus and DBC.** CAN 2.0B and J1939 simulation and reception. DBC parser supports Vector CANdb, SavvyCAN exports, Intel/Motorola byte order.\n\n**Fleet analytics.** Aggregate analysis across vehicle fleets: degradation curves, anomaly distribution, SOH histograms.\n\n**Digital twin.** Real-time battery simulation mirroring physical pack behavior. Charge/discharge what-if scenarios and aging projections.\n\n**V2G scenarios.** Vehicle-to-Grid simulation: bidirectional energy flow, grid demand response, cycling impact on battery health, revenue estimation.\n\n**AutoML.** Automated model selection and hyperparameter optimization for SOH prediction and anomaly detection (RandomForest + GradientBoosting).\n\n**Streaming anomaly detection.** Real-time sliding-window detector for live telemetry feeds with configurable retrain frequency.\n\n**Uncertainty quantification.** Bootstrap confidence intervals on thermal runaway risk scores for safety-critical decision making.\n\n**HIL integration.** Hardware-in-the-Loop interface for physical BMS hardware and test stands via TCP/Serial.\n\n**Compliance testing.** UN 38.3, IEC 62660, SAE J2464, ISO 12405, GB/T 31484, GB/T 31486, GB 38031.\n\n**Observability.** Prometheus /metrics endpoint, Grafana dashboard, HTML coverage reports, JUnit XML.\n\n---\n\n## Quick start\n\n```bash\n# Python CLI (direct)\nuv run pytest -v\nuv run python run_factory_inspection.py\n\n# Docker Compose (recommended for fresh environments)\ndocker compose up --build\n```\n\n- Tests + HTML coverage: http://localhost:8081/coverage/\n- Prometheus metrics: http://localhost:8081/metrics\n\n---\n\n## One-liners\n\nAnalyze a CSV:\n\n```bash\nuv run python -m ev_qa_framework.cli analyze -i examples/tesla_model_s_defective.csv -o report.json\n```\n\nEmulate CAN traffic:\n\n```bash\nuv run python -m ev_qa_framework.cli emulate --dbc my_battery.dbc --duration 60\n```\n\nTrain SOH model:\n\n```bash\nuv run python -m ev_qa_framework.cli train-soh -d examples/tesla_battery_qa_test.py\n```\n\n---\n\n## Project structure\n\n`\nev_qa_framework/\n  framework.py         # core QA engine\n  models.py            # Pydantic models + telemetry validation\n  config.py            # thresholds and ML config\n  analysis.py          # Isolation Forest, EVBatteryAnalyzer\n  soh_predictor.py     # LSTM for SOH (TensorFlow optional)\n  soh_transformer.py   # Transformer SOH predictor\n  can_bus.py           # CAN 2.0B + J1939 simulation\n  dbc_parser.py        # .dbc file parser (Vector CANdb + SavvyCAN)\n  cell_balance.py      # cell voltage imbalance analysis\n  thermal_runaway.py   # thermal runaway prediction (rule + ML)\n  battery_scoring.py   # composite battery health scoring\n  physics_features.py  # electrochemical/thermal feature extraction\n  fleet_analytics.py   # fleet-wide analytics and benchmarking\n  digital_twin.py      # real-time battery digital twin\n  v2g_scenarios.py     # Vehicle-to-Grid simulation\n  automl.py            # automated model selection and HPO\n  hil.py               # Hardware-in-the-Loop interface\n  metrics.py           # Prometheus metrics\n  cli.py               # CLI entry point\n  chemistries.py       # battery chemistry definitions (LFP, NMC, NCA)\ntests/                  # 980 tests\nexamples/               # sample telemetry and demos\nrun_factory_inspection.py  # end-to-end factory QA demo\n`\n\n---\n\n## Status\n\n| Artifact | Value |\n|---|---|\n| Tests | 980 passing |\n| Coverage | 93% |\n| CI | Lint + Test + Coverage |\n| License | MIT |\n| Python | 3.10+ |\n| PyPI | ev-qa-framework 2.5.0 |\n\nRegression risk is tracked in tests/. Coverage artifacts (coverage/, junit.xml) are present in the release pipeline.\n\n---\n\n## Roadmap\n\n- [x] GitHub Actions CI badge + nightly coverage job\n- [x] Grafana dashboard import JSON + provisioning\n- [x] public PyPI release\n- [ ] real BMS telemetry adapters (Tesla, BYD, Nio)\n- [ ] V2S + charging-station scenarios\n- [ ] integration with Vector CANoe / CANalyzer\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fremontsuri%2FEV-QA-Framework","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fremontsuri%2FEV-QA-Framework","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fremontsuri%2FEV-QA-Framework/lists"}