v2/models.json
19.3 KB · 396 lines · json Raw
1 {
2 "version": "v2",
3 "display": "v2.0",
4 "description": "Deep learning models (LSTM, Transformer, VAE) with intra-battery chronological split on 12 scalar features. Includes classical models retrained with bug fixes.",
5 "split_strategy": "intra-battery chronological split (80/20 per battery)",
6 "features": 12,
7 "feature_set": [
8 "cycle_number",
9 "ambient_temperature",
10 "peak_voltage",
11 "min_voltage",
12 "voltage_range",
13 "avg_current",
14 "avg_temp",
15 "temp_rise",
16 "cycle_duration",
17 "Re",
18 "Rct",
19 "delta_capacity"
20 ],
21 "sequence_length": 32,
22 "dataset": "NASA PCoE Li-ion 18650 (30 batteries, 2678 cycles, 1734 sequences)",
23 "default_model": "best_ensemble",
24 "models": {
25 "extra_trees": {
26 "display_name": "ExtraTrees",
27 "family": "classical",
28 "algorithm": "ExtraTreesRegressor",
29 "version": "2.0",
30 "r2": 0.9673,
31 "mae": 1.17,
32 "within_5pct": 99.1,
33 "requires_scaling": false,
34 "file": "models/classical/extra_trees.joblib",
35 "sha256": "26b9501df3d477d474a88fda3b742142f226b5d43069f2cc2c83f7d971127e48",
36 "bytes": 129434065
37 },
38 "lightgbm": {
39 "display_name": "LightGBM",
40 "family": "classical",
41 "algorithm": "LGBMRegressor",
42 "version": "2.0",
43 "r2": 0.9582,
44 "mae": 1.38,
45 "within_5pct": 98.4,
46 "requires_scaling": false,
47 "file": "models/classical/lightgbm.joblib",
48 "sha256": "51d3cede8af476871036909ca69fed40d91558b25c2f7663386654d999ddb3ca",
49 "bytes": 9016891
50 },
51 "gradient_boosting": {
52 "display_name": "GradientBoosting",
53 "family": "classical",
54 "algorithm": "GradientBoostingRegressor",
55 "version": "2.0",
56 "r2": 0.9342,
57 "mae": 1.46,
58 "within_5pct": 98.4,
59 "requires_scaling": false,
60 "file": "models/classical/gradient_boosting.joblib",
61 "sha256": "492e4b46dd31b485ce157182ecdec038c2c47520466831e8b8b1530d43f9b0cc",
62 "bytes": 5329994
63 },
64 "random_forest": {
65 "display_name": "Random Forest",
66 "family": "classical",
67 "algorithm": "RandomForestRegressor",
68 "version": "2.0",
69 "r2": 0.9417,
70 "mae": 1.89,
71 "within_5pct": 94.0,
72 "requires_scaling": false,
73 "file": "models/classical/random_forest.joblib",
74 "sha256": "863dbf027cb78f88500ac9bd753d4148cba42e9e16b1d546a9c7858834cdfc5f",
75 "bytes": 84496273
76 },
77 "xgboost": {
78 "display_name": "XGBoost",
79 "family": "classical",
80 "algorithm": "XGBRegressor",
81 "version": "2.0",
82 "r2": 0.5674,
83 "mae": 3.59,
84 "within_5pct": 89.6,
85 "requires_scaling": false,
86 "file": "models/classical/xgboost.joblib",
87 "sha256": "415e497fab79dad35648435d5d71b48eb2f0a3892c5ab32b54a33547a640e6de",
88 "bytes": 11282160
89 },
90 "svr": {
91 "display_name": "SVR (RBF)",
92 "family": "classical",
93 "algorithm": "SVR",
94 "version": "2.0",
95 "r2": 0.9474,
96 "mae": 1.67,
97 "within_5pct": 95.1,
98 "requires_scaling": true,
99 "file": "models/classical/svr.joblib",
100 "sha256": "fbeacb67245b695abf56c2f98716d4829018485869823d371bec136a6904f097",
101 "bytes": 133966
102 },
103 "ridge": {
104 "display_name": "Ridge Regression",
105 "family": "classical",
106 "algorithm": "Ridge",
107 "version": "2.0",
108 "r2": 0.5281,
109 "mae": 5.57,
110 "requires_scaling": true,
111 "file": "models/classical/ridge.joblib",
112 "sha256": "3b2afc35f81469da28ec4620092dd955c5925689c865a57e81d2cf00fbf0f60a",
113 "bytes": 348607297
114 },
115 "knn_k5": {
116 "display_name": "KNN (k=5)",
117 "family": "classical",
118 "algorithm": "KNeighborsRegressor",
119 "version": "2.0",
120 "r2": 0.8995,
121 "mae": 2.4,
122 "within_5pct": 89.8,
123 "requires_scaling": true,
124 "file": "models/classical/knn_k5.joblib",
125 "sha256": "c0a40627460b696ae0d8d949fea6fcd20c3bcb3dc1b204b7fa36a6284eab7317",
126 "bytes": 430772
127 },
128 "vanilla_lstm": {
129 "display_name": "Vanilla LSTM",
130 "family": "deep_pytorch",
131 "algorithm": "VanillaLSTM",
132 "version": "2.0",
133 "r2": 0.507,
134 "mae": 11.44,
135 "requires_scaling": true,
136 "file": "models/deep/vanilla_lstm.pt",
137 "sha256": "59fcd7ed8c3d67705e1915e2948c450a6f368fbec078b5c77b06047dc19763f8",
138 "bytes": 822199
139 },
140 "bidirectional_lstm": {
141 "display_name": "Bidirectional LSTM",
142 "family": "deep_pytorch",
143 "algorithm": "BidirectionalLSTM",
144 "version": "2.0",
145 "r2": 0.52,
146 "mae": null,
147 "requires_scaling": true,
148 "file": "models/deep/bidirectional_lstm.pt",
149 "sha256": "3466feebff37d8c671bdeb4d4cf248fdbc04e7a10648f0d847e987ceb459b57a",
150 "bytes": 2167009
151 },
152 "gru": {
153 "display_name": "GRU",
154 "family": "deep_pytorch",
155 "algorithm": "GRUModel",
156 "version": "2.0",
157 "r2": 0.51,
158 "mae": null,
159 "requires_scaling": true,
160 "file": "models/deep/gru.pt",
161 "sha256": "2733aa85767d37fe22eb88989cdddf51de204b131f8b3a7feee5aa7c5af42024",
162 "bytes": 617208
163 },
164 "attention_lstm": {
165 "display_name": "Attention LSTM",
166 "family": "deep_pytorch",
167 "algorithm": "AttentionLSTM",
168 "version": "2.0",
169 "r2": 0.54,
170 "mae": null,
171 "requires_scaling": true,
172 "file": "models/deep/attention_lstm.pt",
173 "sha256": "6f9f6b8e2b9d4794ad1a1452e33c5ec81a917472a6a98cb131d0523c22a82f8a",
174 "bytes": 1451025
175 },
176 "batterygpt": {
177 "display_name": "BatteryGPT",
178 "family": "deep_pytorch",
179 "algorithm": "BatteryGPT",
180 "version": "2.0",
181 "r2": 0.881,
182 "mae": 10.71,
183 "requires_scaling": true,
184 "file": "models/deep/batterygpt.pt",
185 "sha256": "16dd869d04bf7ef126489dfa3dc386b65dcaa0dc7823051139d6df8ed1ca8343",
186 "bytes": 430498
187 },
188 "tft": {
189 "display_name": "Temporal Fusion Transformer",
190 "family": "deep_pytorch",
191 "algorithm": "TemporalFusionTransformer",
192 "version": "2.0",
193 "r2": 0.881,
194 "mae": 3.93,
195 "requires_scaling": true,
196 "file": "models/deep/tft.pt",
197 "sha256": "ba2f16c8096cf19a0b03aec877fa86d8e63d4b47a292cf46dac8427157f3175d",
198 "bytes": 3743692
199 },
200 "vae_lstm": {
201 "display_name": "VAE-LSTM",
202 "family": "deep_pytorch",
203 "algorithm": "VAE_LSTM",
204 "version": "2.0",
205 "r2": 0.73,
206 "mae": 7.82,
207 "requires_scaling": true,
208 "file": "models/deep/vae_lstm.pt",
209 "sha256": "01ca8499d57f012f5c903a52d780afacbe34195141cb752a6b77f64bf6c2dd55",
210 "bytes": 3288250
211 },
212 "itransformer": {
213 "display_name": "iTransformer",
214 "family": "deep_keras",
215 "algorithm": "iTransformer",
216 "version": "2.0",
217 "r2": 0.551,
218 "mae": 11.1,
219 "requires_scaling": true,
220 "file": "models/deep/itransformer.keras",
221 "sha256": "5d47f6d088b4a7f453863188a05d77a8e1cc88326b88180e3f5831ee2da0dee6",
222 "bytes": 1703636
223 },
224 "physics_itransformer": {
225 "display_name": "Physics iTransformer",
226 "family": "deep_keras",
227 "algorithm": "PhysicsITransformer",
228 "version": "2.0",
229 "r2": 0.6,
230 "mae": null,
231 "requires_scaling": true,
232 "file": "models/deep/physics_itransformer.keras",
233 "sha256": "ebbeb7de88cec4bc8080ca03c76b0a0e74b0d9411f908bd58c4d924a044bb05c",
234 "bytes": 1750974
235 },
236 "dynamic_graph_itransformer": {
237 "display_name": "DG-iTransformer",
238 "family": "deep_keras",
239 "algorithm": "DynamicGraphITransformer",
240 "version": "2.0",
241 "r2": 0.595,
242 "mae": 9.38,
243 "requires_scaling": true,
244 "file": "models/deep/dynamic_graph_itransformer.keras",
245 "sha256": "6bbca626faeaa1472966659e9908be1ed4db0889c8668602be1fe2c4b143a338",
246 "bytes": 1716519
247 },
248 "best_ensemble": {
249 "display_name": "Best Ensemble (RF+XGB+LGB)",
250 "family": "ensemble",
251 "algorithm": "WeightedAverage",
252 "version": "2.0",
253 "r2": 0.886,
254 "mae": 3.89,
255 "requires_scaling": false,
256 "components": [
257 "random_forest",
258 "xgboost",
259 "lightgbm"
260 ],
261 "file": null
262 }
263 },
264 "scalers": {
265 "standard_scaler": "scalers/standard_scaler.joblib",
266 "sequence_scaler": "scalers/sequence_scaler.joblib"
267 },
268 "champion": "extra_trees",
269 "training_date": "2026-01-15",
270 "framework": [
271 "scikit-learn",
272 "xgboost",
273 "lightgbm",
274 "pytorch",
275 "tensorflow"
276 ],
277 "scaler_checksums": {
278 "standard_scaler": "f1cf42692e735612a9afe241b2623dd46f28c04fccb3945a6082cae22eb8847c",
279 "sequence_scaler": "1fb23b358b2ee1746ecaca97539be6282dcd9209d0265b886b9fb9a578455c1e"
280 },
281 "checksums": {
282 "models": {
283 "models/classical/best_rul_model.joblib": "12ea21f09889fbdf1638a4eecbb789588cfdc81a4202f24708fa40c9ef90cba9",
284 "models/classical/elasticnet.joblib": "394afde1b6ec00af22c37a917a22fe6a505d290f6a2ef91d35d2bdb8795ea83c",
285 "models/classical/extra_trees.joblib": "26b9501df3d477d474a88fda3b742142f226b5d43069f2cc2c83f7d971127e48",
286 "models/classical/gradient_boosting.joblib": "492e4b46dd31b485ce157182ecdec038c2c47520466831e8b8b1530d43f9b0cc",
287 "models/classical/knn_k10.joblib": "bb5ac2f3e1ab77528731f03e0cb4485906be454d19e8f699090ae2487b37a56c",
288 "models/classical/knn_k20.joblib": "0c89537e6b72b228bf209b299069285f2d784d92554c3016c50075223ab41915",
289 "models/classical/knn_k5.joblib": "c0a40627460b696ae0d8d949fea6fcd20c3bcb3dc1b204b7fa36a6284eab7317",
290 "models/classical/lasso.joblib": "7514dce7a63ac41873fed2e7c09ff5a999845231b9fc354f5c38949cd74f9f38",
291 "models/classical/lightgbm.joblib": "51d3cede8af476871036909ca69fed40d91558b25c2f7663386654d999ddb3ca",
292 "models/classical/lightgbm_best_params.joblib": "95c4ce7b35f4c2e82dfbee7c915334438e7b5a599b301a0e9ce01f234af6a138",
293 "models/classical/random_forest.joblib": "863dbf027cb78f88500ac9bd753d4148cba42e9e16b1d546a9c7858834cdfc5f",
294 "models/classical/rf_classifier.joblib": "576f3e348aba1eeeab545be52cd41a371eb6c99cad2856f180712838557979c3",
295 "models/classical/ridge.joblib": "3b2afc35f81469da28ec4620092dd955c5925689c865a57e81d2cf00fbf0f60a",
296 "models/classical/svr.joblib": "fbeacb67245b695abf56c2f98716d4829018485869823d371bec136a6904f097",
297 "models/classical/xgb_classifier.joblib": "f8a4854d0dc4253490a317cf18f1253ab23111c343d91b7fa6fa2b9683d698dd",
298 "models/classical/xgboost.joblib": "415e497fab79dad35648435d5d71b48eb2f0a3892c5ab32b54a33547a640e6de",
299 "models/classical/xgboost_best_params.joblib": "140456f00362a7b88bb8fd4de8f68f1e5d52b844eb94aae6da13ddae6e38b601",
300 "models/deep/attention_lstm.pt": "6f9f6b8e2b9d4794ad1a1452e33c5ec81a917472a6a98cb131d0523c22a82f8a",
301 "models/deep/batterygpt.pt": "16dd869d04bf7ef126489dfa3dc386b65dcaa0dc7823051139d6df8ed1ca8343",
302 "models/deep/bidirectional_lstm.pt": "3466feebff37d8c671bdeb4d4cf248fdbc04e7a10648f0d847e987ceb459b57a",
303 "models/deep/dynamic_graph_itransformer.keras": "6bbca626faeaa1472966659e9908be1ed4db0889c8668602be1fe2c4b143a338",
304 "models/deep/gru.pt": "2733aa85767d37fe22eb88989cdddf51de204b131f8b3a7feee5aa7c5af42024",
305 "models/deep/itransformer.keras": "5d47f6d088b4a7f453863188a05d77a8e1cc88326b88180e3f5831ee2da0dee6",
306 "models/deep/physics_itransformer.keras": "ebbeb7de88cec4bc8080ca03c76b0a0e74b0d9411f908bd58c4d924a044bb05c",
307 "models/deep/tft.pt": "ba2f16c8096cf19a0b03aec877fa86d8e63d4b47a292cf46dac8427157f3175d",
308 "models/deep/vae_lstm.pt": "01ca8499d57f012f5c903a52d780afacbe34195141cb752a6b77f64bf6c2dd55",
309 "models/deep/vanilla_lstm.pt": "59fcd7ed8c3d67705e1915e2948c450a6f368fbec078b5c77b06047dc19763f8"
310 },
311 "scalers": {
312 "scalers/features_minmax.joblib": "b3f81de4e3f3253eefc5779fbc49f0350f261c303a6a7af68ee3a426199cc406",
313 "scalers/features_standard.joblib": "c150d07ade0a82aa151f906dae135ff7f9d96055667cf471d7f767d17b8d4555",
314 "scalers/linear_scaler.joblib": "f1cf42692e735612a9afe241b2623dd46f28c04fccb3945a6082cae22eb8847c",
315 "scalers/sequence_scaler.joblib": "1fb23b358b2ee1746ecaca97539be6282dcd9209d0265b886b9fb9a578455c1e",
316 "scalers/standard_scaler.joblib": "f1cf42692e735612a9afe241b2623dd46f28c04fccb3945a6082cae22eb8847c"
317 },
318 "results": {
319 "results/battery_features.csv": "5df4aff7d420a05d38215df5d840689bfaca27eea80e337dadf8a6882172e897",
320 "results/battery_sequences.npz": "678993299c19a38ecc682c9d74d35eeae7b8678e6bbe4dad8a831ab160cb3b0b",
321 "results/best_model_analysis.png": "82226ec881c24c7b9a4e203860179adba2e7b1147fd2d111423ac1a26d458146",
322 "results/classical_results.csv": "a5a401c558bb3859386a6d1c7a7db26e60ee724111b32a577b805d165888c217",
323 "results/classical_rul_results.csv": "8648784b058d52f1fc4877a43b4b6b4d0d88f852c2c22d9c83a06aa8e492c23d",
324 "results/classical_soh_results.csv": "1476ab4c0fd5320d54506664286ab7b87bb039bfe4c2ffbe0f86823633ec8041",
325 "results/dg_itransformer_results.json": "ec251c746c58329625ea51a50185ec2470e46476496e2819be55ddfdf0eb3ff2",
326 "results/ensemble_results.csv": "c2dbd24ac5b20b43e03312bef5aecb3efe0f9ef7dc276178ce619b25d6acae89",
327 "results/final_rankings.csv": "4384593f4435a7f99c5e9319fb0b7539f0e9816e83f7d63cb52ef97134ef0dd9",
328 "results/intra_battery.json": "cc1a80b3922532377b72d5d6229f3d154024ccddb8c9984f973f121ba916a880",
329 "results/lstm_soh_results.csv": "bcec1411f1f3e5fe386e786f16cd640b94944f46091b0ca35a930108bb3b7e82",
330 "results/model_validation.csv": "bb55b774a35f81ada3cb1f829bcb765d4b9ad1e2fdfc37cff62c80d253ad83c8",
331 "results/per_battery_accuracy.png": "bdaf8a7e305790081be928da97af30e506aa277a51d8342051d1630c2e20a99d",
332 "results/r2_vs_accuracy.png": "d24044551405226692fe75f7fe2af0daaee9186d42a0a6aa0dbca56af89724b4",
333 "results/training_summary.json": "6b317795c471ff4a5791ff7a26b4ce9f6ab26b77e5128db6ec29fc7ce1e80d6e",
334 "results/transformer_soh_results.csv": "6a203f57e83c4a1ae2086b132104c89b8c268a12ecfe436ea07094aacd9a6c39",
335 "results/unified_results.csv": "4384593f4435a7f99c5e9319fb0b7539f0e9816e83f7d63cb52ef97134ef0dd9",
336 "results/vae_lstm_results.json": "42718f18989aa7ccdee1ce136c3022c69843eed85e5a6265f4161c0995fafc51",
337 "results/validation_accuracy_bars.png": "5ee67a1ed3b8c3a4c6c34a2b035c0c85b1b4802f44910f83841a113a44bcab5e",
338 "results/validation_report.html": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
339 "results/validation_summary.json": "a42fc7d4ad5ac5b388360c70849a3938ee957c78e521928432312ed9e5e5c926"
340 },
341 "features": {},
342 "figures": {
343 "figures/best_actual_vs_pred.png": "532c0c65980696fc47414b6b97417d8ba10ba37ed71f3b115bcaa9076b9926cf",
344 "figures/best_ensemble_prediction.png": "50796de89087cfdce1107659a3a7c2eb0afa64c27360db85954e8aec7cf9d626",
345 "figures/capacity_and_rul.png": "7f959be7175d1ec327791043e21b458e85704efdcd28b4367c85af8189f2464f",
346 "figures/capacity_distribution_by_temp.png": "330cef1f780e60781022b4de5df6c436a00cb273d34f468044d4e25dc0eafa14",
347 "figures/capacity_fade_all_batteries.png": "6648ac3c4fd69c353aff3193b2d033d8f2e4310e0294d373c05bfb887529c77c",
348 "figures/capacity_fade_by_temperature.png": "155954a71d58101924abe2d80bff60a56b4469643db016d0711176209be9b5b2",
349 "figures/capacity_fade_interactive.html": "e2abd1b2d8cf54e171313a5b9a5171024504fda5f3d2e9acf0f7dc51d6945a75",
350 "figures/ced_curves.png": "844eb2bb56fc9ff1cb1f83c16e7b26887b2877a7440ed557c866f6be0ebc2724",
351 "figures/classical_best_actual_vs_pred.png": "0cc3c98e2bdbedc59358f9279bb829e087fe617360c81b0f0bbccfec15372e47",
352 "figures/classical_best_actual_vs_pred_v2.png": "8bdd0a9e70df7997338c86a5ab967b749f4b84df1f4f960726ced07554a33ffe",
353 "figures/classical_best_residuals.png": "c870d1ad4bcb992de61934d6aa13c29a01bc2e878a499b21bf18d3ce73ade1e9",
354 "figures/classical_best_residuals_v2.png": "2af3670aff7df066ba73e92a427165d89b113605fc30083d7858493431bdddf9",
355 "figures/classical_soh_comparison.png": "eb003dcfb2187f2f2b4b27150ec05ee5f5bf6c510c17b452001a2067bf57c8c8",
356 "figures/classical_soh_comparison_v2.png": "1e58922ab4265aa9156e1e7afd5c000a897c1b69d049c058a6d5fb75f54c7790",
357 "figures/classical_top8.png": "9bea4f378061b56f5c3a38ae31d01a66890986a1a80c9b0b68748e9093636b7d",
358 "figures/classification_confusion_matrices.png": "aa273d9a278bdd46776a8198771d089b813e441de0bcae5ca35d413e6cb9bd0b",
359 "figures/classification_confusion_matrices_v2.png": "21e23b236d6875878f1c6be37445c59db196cd45302727537638f00da95edf75",
360 "figures/degradation_state_distribution.png": "cd56c91bee68ac8af3fae38fa3d66191fa1c12c41893792e0c0e7314026d95aa",
361 "figures/dg_itransformer_predictions.png": "2ed3c023d54631f410114715776e2aef1f4ef3596618b78417e24de87bd9314f",
362 "figures/dg_itransformer_training.png": "8493eb29923f7b90fd5e58076b628d53ae2ee97e004888b4bbd91534825c7843",
363 "figures/ensemble_comparison.png": "47848850e19011f3bcfefd812d241ad975da9adb70d920b178321e6eb545c0d4",
364 "figures/ensemble_weights.png": "a1b9e1be1855553f5f20b39ab97e0676859faea32140e8eec40af9346fe28ac1",
365 "figures/feature_correlation_heatmap.png": "4fca110021d7535da1c6d69853f2fd4e9ed3cdcc360cfb60917d28bfd4107fa2",
366 "figures/impedance_evolution.png": "b2589289d921fada36d10532fb1f91d3d1264142af4b21fb948f9823d7a584bf",
367 "figures/lstm_actual_vs_predicted.png": "54734cb01f1bd09160f86b3651b3a6880f5bd1d317baef0ad9301be6912d43fb",
368 "figures/lstm_training_curves.png": "66d0102d02409b59ec2c0bb8b9ad79fadc3860960278b75fa567905e6069ce74",
369 "figures/mc_dropout_uncertainty_lstm.png": "8ead85736e2ea8e8fa30d9463d4afd5c1dfefaa124c03f7e9b1ef603c5563e31",
370 "figures/per_battery_mae_heatmap_v2.png": "77bee8b0a28c97149dec3dfc836d9467163b82320493e5902b9efb72aa962f6d",
371 "figures/radar_top6.png": "773072825ec89a283436abac3d49752702844ecd8c80b054584e74e52175c67f",
372 "figures/re_vs_rct_scatter.png": "3dd5a2c0ef78484a08fcc051236699106c148bdfb6a7d3aa0aac58d2ac3a6839",
373 "figures/shap_rf_soh_v2.png": "504a723d55722fb79f9234e7002cb91823da562ea8996afc24b673f49709d9fa",
374 "figures/shap_xgboost_soh.png": "46df87d18cfc5e95b939b18a779c446dc897a999f8ec58c3eb8b891796e66915",
375 "figures/shap_xgboost_soh_v2.png": "e2135a497b8c16daa6eef84f43ac27c03122cbc55da2c3f3e7810a86541257cc",
376 "figures/soc_coulomb_counting_demo.png": "c63c6baca51effb37a89a7a84bf3faa81f52002ff032d1ec7cf0bcdf45bfd15e",
377 "figures/soh_degradation_trends.png": "56c131fbf98676e8f6611e30bf16a4f6065a311605235c442322a8f71d0fad8e",
378 "figures/soh_distribution.png": "7e3418411e17f22828d23127eb36f40fd19f633d9885950903c006f835db6003",
379 "figures/transformer_pt_training_curves.png": "57428057bf771dc5add14f335a018b206a383da5211a48b7423308c10880cae6",
380 "figures/transformer_tf_training_curves.png": "d210a17b965c2e013ab17dcb735c8ccc81c19db72aff11c2a0bce1189f471a3f",
381 "figures/unified_model_comparison.png": "d0aa5bc15e65da35fbdcc643478c8f3d813752407d77509951ad5a2ba13840e0",
382 "figures/vae_anomaly_detection.png": "7440d1088afd027ef81b7ef73f64b9d878b41a2369224ba27ed636a1906845f8",
383 "figures/vae_latent_umap.png": "5b5a86ba677705ac20aefa665bb78421a8201d8367fe5735946c1d33510a399b",
384 "figures/vae_lstm_prediction.png": "898b57fd9a7c57bd155056c3d6f72cce7a519b2550f8bd5c6e28675d0db36d14",
385 "figures/voltage_surface_3d.png": "2fc0d7449c0ab7dfa5599f96b3106100ef2c32c71230098d3fe101a133be94b3",
386 "figures/voltage_surface_3d_interactive.html": "7b354ed40d5962768dd7a5ba5d8f3453bcc197705bf2b3a4980ef80fa80603c7"
387 },
388 "generated_at_utc": "2026-03-10T18:10:44.185547+00:00"
389 },
390 "verification": {
391 "hash_algorithm": "sha256",
392 "required": true,
393 "last_verified_utc": "2026-03-10T18:10:44.185547+00:00"
394 }
395 }
396