Spaces:
Running
Running
File size: 6,114 Bytes
f381be8 | 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 | # Project Structure (v2.0)
## Root Level Organization
```
aiBatteryLifecycle/
βββ π api/ FastAPI backend with model registry
βββ π artifacts/ Versioned model artifacts & results
β βββ v1/ Legacy models (cross-battery train/test)
β βββ v2/ Production models (intra-battery split) β ACTIVE
β βββ models/ Trained models: {classical, deep, ensemble}
β βββ scalers/ Feature scalers (StandardScaler for linear models)
β βββ results/ CSV results, feature matrices, metrics
β βββ figures/ Visualizations: PNG charts, HTML reports
β βββ logs/ Training/inference logs
β βββ features/ Feature engineering artifacts
βββ π cleaned_dataset/ Raw battery test data
β βββ data/ CSV files per battery (00001.csv - 00137.csv)
β βββ extra_infos/ Supplementary metadata
β βββ metadata.csv Battery inventory
βββ π docs/ Documentation markdown files
βββ π frontend/ React SPA (TypeScript, Vite)
βββ π notebooks/ Jupyter analysis & training (01-09)
βββ π reference/ External papers & reference notebooks
βββ π scripts/ Organized utility scripts
β βββ data/ Data processing (write_nb03_v2, patch_dl_notebooks_v2)
β βββ models/ Model training (retrain_classical)
β βββ __init__.py Package marker
β βββ README (in data/models/)
βββ π src/ Core Python library
β βββ data/ Data loading & preprocessing
β βββ evaluation/ Metrics & validation
β βββ models/ Model architectures
β βββ utils/ Config, logging, helpers
β βββ __init__.py
βββ π tests/ β NEW: Test & validation scripts
β βββ test_v2_models.py Comprehensive v2 validation
β βββ test_predictions.py Quick endpoint test
β βββ __init__.py
β βββ README.md
βββ π CHANGELOG.md Version history & updates
βββ π VERSION.md β NEW: Versioning & versioning guide
βββ π README.md Project overview
βββ π requirements.txt Python dependencies
βββ π package.json Node.js dependencies (frontend)
βββ π Dockerfile Docker configuration
βββ π docker-compose.yml Multi-container orchestration
βββ π tsconfig.json TypeScript config (frontend)
βββ π vite.config.ts Vite bundler config (frontend)
```
## Key Changes in V2 Reorganization
### β Completed
1. **Versioned Artifacts**
- Moved `artifacts/models/` β `artifacts/v2/models/`
- Moved `artifacts/scalers/` β `artifacts/v2/scalers/`
- Moved `artifacts/figures/` β `artifacts/v2/figures/`
- All result CSVs β `artifacts/v2/results/`
- Clean `artifacts/` root (only v1 and v2 subdirs)
2. **Organized Scripts**
- Created `scripts/data/` for data processing utilities
- Created `scripts/models/` for model training scripts
- All scripts now using `get_version_paths('v2')`
- Path: `scripts/retrain_classical.py` β `scripts/models/retrain_classical.py`
3. **Centralized Tests**
- Created `tests/` folder at project root
- Moved `test_v2_models.py` β `tests/`
- Moved `test_predictions.py` β `tests/`
- Added `tests/README.md` with usage guide
- All tests now using `artifacts/v2/` paths
4. **Updated Imports & Paths**
- `test_v2_models.py`: Uses `v2['results']` for data loading
- `retrain_classical.py`: Uses `get_version_paths('v2')` for artifact saving
- API: Already defaults to `registry_v2`
- Notebooks NB03-09: Already use `get_version_paths()`
### Code Changes Summary
| File | Change | Result |
|------|--------|--------|
| `tests/test_v2_models.py` | Updated artifact paths to use v2 | Output β `artifacts/v2/{results,figures}` |
| `scripts/models/retrain_classical.py` | Uses `get_version_paths('v2')` | Models saved to `artifacts/v2/models/classical/` |
| `api/model_registry.py` | Already has versioning support | No changes needed |
| `src/utils/config.py` | Already supports versioning | No changes needed |
| Notebooks NB03-09 | Already use `get_version_paths()` | No changes needed |
## Running Tests After Reorganization
```bash
# From project root
python tests/test_v2_models.py # Full v2 validation
python tests/test_predictions.py # Quick endpoint test
python scripts/models/retrain_classical.py # Retrain models
```
## Artifact Access in Code
### Before (V1 - hardcoded paths)
```python
model_path = "artifacts/models/classical/rf.joblib"
results_csv = "artifacts/results.csv"
```
### After (V2 - versioned paths via config)
```python
from src.utils.config import get_version_paths
v2 = get_version_paths('v2')
model_path = v2['models_classical'] / 'rf.joblib'
results_csv = v2['results'] / 'results.csv'
```
## Production Readiness
| Aspect | Status | Notes |
|--------|--------|-------|
| Versioning | β Complete | All artifacts under `v2/` |
| Structure | β Organized | Scripts, tests, notebooks organized |
| Configuration | β Active | `ACTIVE_VERSION = 'v2'` in config |
| API | β Ready | Defaults to `registry_v2` |
| Tests | β Available | `tests/test_v2_models.py` for validation |
| Documentation | β Added | VERSION.md and README files created |
## Forward Compatibility
### For Future Versions (v3, v4, etc.)
Simply copy the v2 folder structure and update:
```python
# In src/utils/config.py
ACTIVE_VERSION: str = "v3"
# In scripts
v3 = get_version_paths('v3')
ensure_version_dirs('v3')
```
The system will automatically create versioned paths and maintain backward compatibility.
|