Spaces:
Runtime error
Runtime error
File size: 5,662 Bytes
dc610d2 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 | # NASA SOH Production Pipeline - Documentation
## Overview
This is the **production-ready** NASA battery State of Health (SOH) prediction pipeline with:
- β
**Causal features only** (no data leakage)
- β
**Transparent methodology** (full audit reports)
- β
**Uncertainty quantification** (95% prediction intervals)
- β
**FastAPI service** (ready for frontend integration)
- β
**Honest metrics** (RΒ² reported accurately, not inflated)
## Quick Start
### 1. Install Dependencies
```bash
pip install -r requirements.txt
```
### 2. Run Feature Audit
```bash
python feature_audit.py
```
This generates `data_leakage_audit.txt` documenting all features and fixing leakage.
### 3. Train Production Model
```bash
python production_pipeline.py
```
This will:
- Load causal features (no leakage)
- Train Random Forest model
- Save `nasa_soh_model.pkl` and `feature_pipeline_causal.pkl`
- Generate `nasa_model_validation.csv`
### 4. Generate Visualizations
```bash
python generate_app_visualizations.py
```
Creates 3 app-ready plots:
- `health_forecast.png` - Past + Future with uncertainty
- `error_growth.png` - Error vs forecast horizon
- `model_simplicity.png` - Performance vs complexity
### 5. Generate Transparency Reports
```bash
python transparency_reports.py
```
Generates:
- `data_leakage_audit.txt` - Feature causality audit
- `uncertainty_methodology.txt` - How intervals are calculated
- `failure_cases.csv` - Where model performs worst
### 6. Start API Service
```bash
python api_service.py
```
Or using uvicorn directly:
```bash
uvicorn api_service:app --host 0.0.0.0 --port 8000 --reload
```
API available at: `http://localhost:8000`
## API Endpoints
### POST `/api/predict`
Predict battery health from BMS data.
**Request:**
```json
{
"data": [
{
"cycle_index": 1,
"voltage": 4.2,
"current": 1.5,
"temperature": 25.0,
"capacity": 2.0
}
],
"initial_capacity": 2.0,
"forecast_horizons": [10, 50, 100]
}
```
**Response:**
```json
{
"current_soh": {
"point_estimate": 0.95,
"lower_95": 0.93,
"upper_95": 0.97
},
"health_score": 95.0,
"remaining_life": {
"cycles": 500,
"years": 1.37
},
"forecasts": {...},
"data_quality": {...},
"model_info": {...}
}
```
### GET `/api/model-info`
Get model information for Trust Engine proof.
### GET `/api/visualizations/{plot_name}`
Get visualization images (base64 encoded) for PDF reports.
## File Structure
```
proofstack/
βββ feature_audit.py # Feature leakage detection
βββ feature_engineering_causal.py # Fixed feature engineering (no leakage)
βββ production_pipeline.py # Train production model
βββ predict_soh.py # Production prediction function
βββ generate_app_visualizations.py # Generate 3 app-ready plots
βββ transparency_reports.py # Generate audit & methodology docs
βββ api_service.py # FastAPI service
βββ health_certificate.html # Certificate template
βββ models/
β βββ nasa_soh_model.pkl # Production model (Random Forest)
β βββ feature_pipeline_causal.pkl # Feature pipeline metadata
βββ plots/
β βββ health_forecast.png # Past + Future forecast
β βββ error_growth.png # Error vs horizon
β βββ model_simplicity.png # Performance vs complexity
βββ data/
βββ nasa_model_validation.csv # Cycle-by-cycle validation
βββ failure_cases.csv # Worst prediction cases
```
## Key Features
### 1. Causal Features Only
All features use only data β€ current cycle:
- β
`cycles_from_start` (past cycles)
- β
`soh_rolling_mean_5` (backward window only)
- β `cycles_to_end` (REMOVED - used future data)
### 2. Transparent Reporting
- Full feature audit report
- Uncertainty methodology documented
- Failure cases identified
- Honest RΒ² scores (even if lower after fixing leakage)
### 3. Production-Ready
- FastAPI service with CORS
- Error handling
- Data validation
- Health checks
- Base64 image serving for PDFs
## Integration with Frontend
### Monitor App (OnboardingFlow.tsx)
```typescript
const response = await fetch('http://localhost:8000/api/predict', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
data: bmsData,
forecast_horizons: [10, 50, 100]
})
});
const predictions = await response.json();
// Use: predictions.health_score, predictions.remaining_life, etc.
```
### PDF Reports (pdfReportGenerator.tsx)
```typescript
// Get visualization images
const vizResponse = await fetch('http://localhost:8000/api/all-visualizations');
const visualizations = await vizResponse.json();
// Embed in PDF
<Image src={visualizations.visualizations.health_forecast} />
```
## Model Performance
After fixing data leakage:
- **Training RΒ²**: ~0.998 (on NASA B0005, B0006)
- **Validation RΒ²**: ~0.95-0.97 (on NASA B0007)
- **Honest Reporting**: Lower than original 0.998, but validated and credible
## Trust Engine Credibility
ZenVolt positions transparency as a differentiator:
- β
NASA-trained model
- β
Full causality audit (no leakage)
- β
Uncertainty quantification
- β
Failure case documentation
- β
Honest metrics reporting
**Credibility > Perfect Numbers**
## Next Steps
1. Train model: `python production_pipeline.py`
2. Generate plots: `python generate_app_visualizations.py`
3. Start API: `python api_service.py`
4. Integrate with frontend apps
5. Embed visualizations in PDF reports
## License
For research and commercial use within ZenVolt platform.
|