euler314 commited on
Commit
38ac4d6
·
verified ·
1 Parent(s): 70dd255

Publish exact Mini <2024 identity, UTC proportions and total/post-2024 comparison charts

Browse files
.gitattributes CHANGED
@@ -197,3 +197,4 @@ evaluation/release_data/pressure_core/mangkhut/common-pressure.npz filter=lfs di
197
  evaluation/released_daily/pressure_comparison.png filter=lfs diff=lfs merge=lfs -text
198
  evaluation/released_daily/model_1_2_benchmark.png filter=lfs diff=lfs merge=lfs -text
199
  docs/trackformer_1_2_mangkhut.gif filter=lfs diff=lfs merge=lfs -text
 
 
197
  evaluation/released_daily/pressure_comparison.png filter=lfs diff=lfs merge=lfs -text
198
  evaluation/released_daily/model_1_2_benchmark.png filter=lfs diff=lfs merge=lfs -text
199
  docs/trackformer_1_2_mangkhut.gif filter=lfs diff=lfs merge=lfs -text
200
+ evaluation/released_daily/model_1_2_after_2024_benchmark.png filter=lfs diff=lfs merge=lfs -text
docs/deepmind_daily_benchmark.md CHANGED
@@ -41,6 +41,29 @@ Mini has better recent-only track scores even though 1.2 has lower position/head
41
 
42
  [Full results, period breakdowns and per-lead track errors](../evaluation/deepmind_daily/benchmark.json) · [Shared snapshot and existing 1.1/1.2 uncertainty](../evaluation/released_daily/released_daily_benchmark.json) · [Completion receipt](../evaluation/deepmind_daily/verification.json) · [Independent review](../evaluation/deepmind_daily/publication_audit.json)
43
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  ## Like-for-like scoring
45
 
46
  All three models use the frozen starts, exact future label times and original issue-relative kilometre projection. Routes are unshifted. Direction is recomputed on **common moving steps across truth and all three models**, not compared using different masks.
 
41
 
42
  [Full results, period breakdowns and per-lead track errors](../evaluation/deepmind_daily/benchmark.json) · [Shared snapshot and existing 1.1/1.2 uncertainty](../evaluation/released_daily/released_daily_benchmark.json) · [Completion receipt](../evaluation/deepmind_daily/verification.json) · [Independent review](../evaluation/deepmind_daily/publication_audit.json)
43
 
44
+ ### Strict forecast-date partition and separate charts
45
+
46
+ Both README charts use **`WeatherNextCyclones_Mini_<2024`**, the same official checkpoint trained through 2023, software v0.3.0, native 1° and one CUDA member. A post-2024 forecast is not a post-2024-trained model. The following proportions refer to this evaluation cohort, not the model's training dataset.
47
+
48
+ | UTC issue year | Starts / share | Storms / share |
49
+ | --- | --- | --- |
50
+ | `<2024` (1980–1999 here) | 1,336 / 90.7% | 230 / 85.2% |
51
+ | Calendar 2024 | 76 / 5.2% | 22 / 8.1% |
52
+ | `>2024` (2025–2026 here) | 61 / 4.1% | 18 / 6.7% |
53
+
54
+ The original `recent_2024_onward` aggregate includes 2024 and is retained unchanged. The new **strict `after_2024`** derivative excludes 2024: track position MAE is **963.02 / 469.40 / 258.67 km**, direction error **57.88 / 33.81 / 28.73°**, and JMA pressure MAE **12.59 / 11.12 / 9.55 hPa** for 1.1 / 1.2 / Mini. Track uses 61 starts / 18 storms; pressure uses 59 starts / 18 storms / 1,174 exact common leads. The total chart still uses the original scores. Its historical 230 storms contribute 85.2% of equal-storm track weight, not 90.7%.
55
+
56
+ [UTC partitions, exact case IDs, all metrics and source hashes](../evaluation/deepmind_daily/period_comparison.json) · [Total chart](../evaluation/released_daily/model_1_2_benchmark.png) · [Post-2024 chart](../evaluation/released_daily/model_1_2_after_2024_benchmark.png)
57
+
58
+ Reproduce these derivative summaries without inference or raw-weather downloads:
59
+
60
+ ```bash
61
+ python release_tools/build_deepmind_period_comparison.py --archive /path/to/DeepMind_RTX3070_results_20261004_125651_467960.zip
62
+ python release_tools/plot_model_announcement.py
63
+ ```
64
+
65
+ The helper checks the exact archive hash against the existing publication audit and every one of the 1,473 case-score JSON hashes against the frozen manifest. It rechecks identities, causal-time metadata, CUDA completion and common pressure masks, reproduces the original total and period scores, then recomputes only the UTC subsets using the unchanged equal-storm aggregation. It never rewrites the original worker export, changes a forecast array or claims a new raw-input audit. Chart sidecars identify their derivative source hash, checkpoint, period, exact values and missing-data policy.
66
+
67
  ## Like-for-like scoring
68
 
69
  All three models use the frozen starts, exact future label times and original issue-relative kilometre projection. Routes are unshifted. Direction is recomputed on **common moving steps across truth and all three models**, not compared using different masks.
evaluation/deepmind_daily/period_comparison.json ADDED
@@ -0,0 +1,3959 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema": "deepmind-completed-utc-period-comparison-v1",
3
+ "status": "complete_verified",
4
+ "model": {
5
+ "key": "deepmind",
6
+ "label": "Google DeepMind WeatherNext Cyclones Mini (<2024)",
7
+ "model_checkpoint": "WeatherNextCyclones_Mini_<2024",
8
+ "software_version": "0.3.0",
9
+ "software_commit": "89c4b2a77a1c57b328b909c575550fd2e5aadc9c",
10
+ "trained_through": 2023,
11
+ "resolution_degrees": 1,
12
+ "member_count": 1,
13
+ "member_policy": "One official Mini member, seed 0",
14
+ "checkpoint_sha256": "a1bb151457077248d70a458b1a7b19deacd2926fbcb46eee4ff2691444e3596e",
15
+ "method": "Official predictor and initialized-storm tracker; causal ERA5; RTX 3070 CUDA",
16
+ "status": "complete_verified"
17
+ },
18
+ "single_checkpoint_across_all_periods": true,
19
+ "cohort": {
20
+ "storms": 270,
21
+ "daily_issues": 1473,
22
+ "sha256": "965184f1e5ab3fcb52e304f39b38583a14f753870aa2295f2d01942a441dcfd6",
23
+ "leads_hours": [
24
+ 6,
25
+ 12,
26
+ 18,
27
+ 24,
28
+ 30,
29
+ 36,
30
+ 42,
31
+ 48,
32
+ 54,
33
+ 60,
34
+ 66,
35
+ 72,
36
+ 78,
37
+ 84,
38
+ 90,
39
+ 96,
40
+ 102,
41
+ 108,
42
+ 114,
43
+ 120
44
+ ]
45
+ },
46
+ "period_definition": {
47
+ "before_2024": "UTC issue year < 2024",
48
+ "year_2024": "UTC issue year == 2024",
49
+ "after_2024": "UTC issue year > 2024 (2025 onward)",
50
+ "total": "All 1,473 frozen daily starts"
51
+ },
52
+ "periods": {
53
+ "total": {
54
+ "daily_issues": 1473,
55
+ "storms": 270,
56
+ "daily_issue_percentage": 100.0,
57
+ "storm_percentage": 100.0,
58
+ "years": [
59
+ 1980,
60
+ 1981,
61
+ 1982,
62
+ 1983,
63
+ 1984,
64
+ 1985,
65
+ 1986,
66
+ 1987,
67
+ 1988,
68
+ 1989,
69
+ 1990,
70
+ 1991,
71
+ 1992,
72
+ 1993,
73
+ 1994,
74
+ 1995,
75
+ 1996,
76
+ 1997,
77
+ 1998,
78
+ 1999,
79
+ 2024,
80
+ 2025,
81
+ 2026
82
+ ],
83
+ "case_indices": [
84
+ 0,
85
+ 1,
86
+ 2,
87
+ 3,
88
+ 4,
89
+ 5,
90
+ 6,
91
+ 7,
92
+ 8,
93
+ 9,
94
+ 10,
95
+ 11,
96
+ 12,
97
+ 13,
98
+ 14,
99
+ 15,
100
+ 16,
101
+ 17,
102
+ 18,
103
+ 19,
104
+ 20,
105
+ 21,
106
+ 22,
107
+ 23,
108
+ 24,
109
+ 25,
110
+ 26,
111
+ 27,
112
+ 28,
113
+ 29,
114
+ 30,
115
+ 31,
116
+ 32,
117
+ 33,
118
+ 34,
119
+ 35,
120
+ 36,
121
+ 37,
122
+ 38,
123
+ 39,
124
+ 40,
125
+ 41,
126
+ 42,
127
+ 43,
128
+ 44,
129
+ 45,
130
+ 46,
131
+ 47,
132
+ 48,
133
+ 49,
134
+ 50,
135
+ 51,
136
+ 52,
137
+ 53,
138
+ 54,
139
+ 55,
140
+ 56,
141
+ 57,
142
+ 58,
143
+ 59,
144
+ 60,
145
+ 61,
146
+ 62,
147
+ 63,
148
+ 64,
149
+ 65,
150
+ 66,
151
+ 67,
152
+ 68,
153
+ 69,
154
+ 70,
155
+ 71,
156
+ 72,
157
+ 73,
158
+ 74,
159
+ 75,
160
+ 76,
161
+ 77,
162
+ 78,
163
+ 79,
164
+ 80,
165
+ 81,
166
+ 82,
167
+ 83,
168
+ 84,
169
+ 85,
170
+ 86,
171
+ 87,
172
+ 88,
173
+ 89,
174
+ 90,
175
+ 91,
176
+ 92,
177
+ 93,
178
+ 94,
179
+ 95,
180
+ 96,
181
+ 97,
182
+ 98,
183
+ 99,
184
+ 100,
185
+ 101,
186
+ 102,
187
+ 103,
188
+ 104,
189
+ 105,
190
+ 106,
191
+ 107,
192
+ 108,
193
+ 109,
194
+ 110,
195
+ 111,
196
+ 112,
197
+ 113,
198
+ 114,
199
+ 115,
200
+ 116,
201
+ 117,
202
+ 118,
203
+ 119,
204
+ 120,
205
+ 121,
206
+ 122,
207
+ 123,
208
+ 124,
209
+ 125,
210
+ 126,
211
+ 127,
212
+ 128,
213
+ 129,
214
+ 130,
215
+ 131,
216
+ 132,
217
+ 133,
218
+ 134,
219
+ 135,
220
+ 136,
221
+ 137,
222
+ 138,
223
+ 139,
224
+ 140,
225
+ 141,
226
+ 142,
227
+ 143,
228
+ 144,
229
+ 145,
230
+ 146,
231
+ 147,
232
+ 148,
233
+ 149,
234
+ 150,
235
+ 151,
236
+ 152,
237
+ 153,
238
+ 154,
239
+ 155,
240
+ 156,
241
+ 157,
242
+ 158,
243
+ 159,
244
+ 160,
245
+ 161,
246
+ 162,
247
+ 163,
248
+ 164,
249
+ 165,
250
+ 166,
251
+ 167,
252
+ 168,
253
+ 169,
254
+ 170,
255
+ 171,
256
+ 172,
257
+ 173,
258
+ 174,
259
+ 175,
260
+ 176,
261
+ 177,
262
+ 178,
263
+ 179,
264
+ 180,
265
+ 181,
266
+ 182,
267
+ 183,
268
+ 184,
269
+ 185,
270
+ 186,
271
+ 187,
272
+ 188,
273
+ 189,
274
+ 190,
275
+ 191,
276
+ 192,
277
+ 193,
278
+ 194,
279
+ 195,
280
+ 196,
281
+ 197,
282
+ 198,
283
+ 199,
284
+ 200,
285
+ 201,
286
+ 202,
287
+ 203,
288
+ 204,
289
+ 205,
290
+ 206,
291
+ 207,
292
+ 208,
293
+ 209,
294
+ 210,
295
+ 211,
296
+ 212,
297
+ 213,
298
+ 214,
299
+ 215,
300
+ 216,
301
+ 217,
302
+ 218,
303
+ 219,
304
+ 220,
305
+ 221,
306
+ 222,
307
+ 223,
308
+ 224,
309
+ 225,
310
+ 226,
311
+ 227,
312
+ 228,
313
+ 229,
314
+ 230,
315
+ 231,
316
+ 232,
317
+ 233,
318
+ 234,
319
+ 235,
320
+ 236,
321
+ 237,
322
+ 238,
323
+ 239,
324
+ 240,
325
+ 241,
326
+ 242,
327
+ 243,
328
+ 244,
329
+ 245,
330
+ 246,
331
+ 247,
332
+ 248,
333
+ 249,
334
+ 250,
335
+ 251,
336
+ 252,
337
+ 253,
338
+ 254,
339
+ 255,
340
+ 256,
341
+ 257,
342
+ 258,
343
+ 259,
344
+ 260,
345
+ 261,
346
+ 262,
347
+ 263,
348
+ 264,
349
+ 265,
350
+ 266,
351
+ 267,
352
+ 268,
353
+ 269,
354
+ 270,
355
+ 271,
356
+ 272,
357
+ 273,
358
+ 274,
359
+ 275,
360
+ 276,
361
+ 277,
362
+ 278,
363
+ 279,
364
+ 280,
365
+ 281,
366
+ 282,
367
+ 283,
368
+ 284,
369
+ 285,
370
+ 286,
371
+ 287,
372
+ 288,
373
+ 289,
374
+ 290,
375
+ 291,
376
+ 292,
377
+ 293,
378
+ 294,
379
+ 295,
380
+ 296,
381
+ 297,
382
+ 298,
383
+ 299,
384
+ 300,
385
+ 301,
386
+ 302,
387
+ 303,
388
+ 304,
389
+ 305,
390
+ 306,
391
+ 307,
392
+ 308,
393
+ 309,
394
+ 310,
395
+ 311,
396
+ 312,
397
+ 313,
398
+ 314,
399
+ 315,
400
+ 316,
401
+ 317,
402
+ 318,
403
+ 319,
404
+ 320,
405
+ 321,
406
+ 322,
407
+ 323,
408
+ 324,
409
+ 325,
410
+ 326,
411
+ 327,
412
+ 328,
413
+ 329,
414
+ 330,
415
+ 331,
416
+ 332,
417
+ 333,
418
+ 334,
419
+ 335,
420
+ 336,
421
+ 337,
422
+ 338,
423
+ 339,
424
+ 340,
425
+ 341,
426
+ 342,
427
+ 343,
428
+ 344,
429
+ 345,
430
+ 346,
431
+ 347,
432
+ 348,
433
+ 349,
434
+ 350,
435
+ 351,
436
+ 352,
437
+ 353,
438
+ 354,
439
+ 355,
440
+ 356,
441
+ 357,
442
+ 358,
443
+ 359,
444
+ 360,
445
+ 361,
446
+ 362,
447
+ 363,
448
+ 364,
449
+ 365,
450
+ 366,
451
+ 367,
452
+ 368,
453
+ 369,
454
+ 370,
455
+ 371,
456
+ 372,
457
+ 373,
458
+ 374,
459
+ 375,
460
+ 376,
461
+ 377,
462
+ 378,
463
+ 379,
464
+ 380,
465
+ 381,
466
+ 382,
467
+ 383,
468
+ 384,
469
+ 385,
470
+ 386,
471
+ 387,
472
+ 388,
473
+ 389,
474
+ 390,
475
+ 391,
476
+ 392,
477
+ 393,
478
+ 394,
479
+ 395,
480
+ 396,
481
+ 397,
482
+ 398,
483
+ 399,
484
+ 400,
485
+ 401,
486
+ 402,
487
+ 403,
488
+ 404,
489
+ 405,
490
+ 406,
491
+ 407,
492
+ 408,
493
+ 409,
494
+ 410,
495
+ 411,
496
+ 412,
497
+ 413,
498
+ 414,
499
+ 415,
500
+ 416,
501
+ 417,
502
+ 418,
503
+ 419,
504
+ 420,
505
+ 421,
506
+ 422,
507
+ 423,
508
+ 424,
509
+ 425,
510
+ 426,
511
+ 427,
512
+ 428,
513
+ 429,
514
+ 430,
515
+ 431,
516
+ 432,
517
+ 433,
518
+ 434,
519
+ 435,
520
+ 436,
521
+ 437,
522
+ 438,
523
+ 439,
524
+ 440,
525
+ 441,
526
+ 442,
527
+ 443,
528
+ 444,
529
+ 445,
530
+ 446,
531
+ 447,
532
+ 448,
533
+ 449,
534
+ 450,
535
+ 451,
536
+ 452,
537
+ 453,
538
+ 454,
539
+ 455,
540
+ 456,
541
+ 457,
542
+ 458,
543
+ 459,
544
+ 460,
545
+ 461,
546
+ 462,
547
+ 463,
548
+ 464,
549
+ 465,
550
+ 466,
551
+ 467,
552
+ 468,
553
+ 469,
554
+ 470,
555
+ 471,
556
+ 472,
557
+ 473,
558
+ 474,
559
+ 475,
560
+ 476,
561
+ 477,
562
+ 478,
563
+ 479,
564
+ 480,
565
+ 481,
566
+ 482,
567
+ 483,
568
+ 484,
569
+ 485,
570
+ 486,
571
+ 487,
572
+ 488,
573
+ 489,
574
+ 490,
575
+ 491,
576
+ 492,
577
+ 493,
578
+ 494,
579
+ 495,
580
+ 496,
581
+ 497,
582
+ 498,
583
+ 499,
584
+ 500,
585
+ 501,
586
+ 502,
587
+ 503,
588
+ 504,
589
+ 505,
590
+ 506,
591
+ 507,
592
+ 508,
593
+ 509,
594
+ 510,
595
+ 511,
596
+ 512,
597
+ 513,
598
+ 514,
599
+ 515,
600
+ 516,
601
+ 517,
602
+ 518,
603
+ 519,
604
+ 520,
605
+ 521,
606
+ 522,
607
+ 523,
608
+ 524,
609
+ 525,
610
+ 526,
611
+ 527,
612
+ 528,
613
+ 529,
614
+ 530,
615
+ 531,
616
+ 532,
617
+ 533,
618
+ 534,
619
+ 535,
620
+ 536,
621
+ 537,
622
+ 538,
623
+ 539,
624
+ 540,
625
+ 541,
626
+ 542,
627
+ 543,
628
+ 544,
629
+ 545,
630
+ 546,
631
+ 547,
632
+ 548,
633
+ 549,
634
+ 550,
635
+ 551,
636
+ 552,
637
+ 553,
638
+ 554,
639
+ 555,
640
+ 556,
641
+ 557,
642
+ 558,
643
+ 559,
644
+ 560,
645
+ 561,
646
+ 562,
647
+ 563,
648
+ 564,
649
+ 565,
650
+ 566,
651
+ 567,
652
+ 568,
653
+ 569,
654
+ 570,
655
+ 571,
656
+ 572,
657
+ 573,
658
+ 574,
659
+ 575,
660
+ 576,
661
+ 577,
662
+ 578,
663
+ 579,
664
+ 580,
665
+ 581,
666
+ 582,
667
+ 583,
668
+ 584,
669
+ 585,
670
+ 586,
671
+ 587,
672
+ 588,
673
+ 589,
674
+ 590,
675
+ 591,
676
+ 592,
677
+ 593,
678
+ 594,
679
+ 595,
680
+ 596,
681
+ 597,
682
+ 598,
683
+ 599,
684
+ 600,
685
+ 601,
686
+ 602,
687
+ 603,
688
+ 604,
689
+ 605,
690
+ 606,
691
+ 607,
692
+ 608,
693
+ 609,
694
+ 610,
695
+ 611,
696
+ 612,
697
+ 613,
698
+ 614,
699
+ 615,
700
+ 616,
701
+ 617,
702
+ 618,
703
+ 619,
704
+ 620,
705
+ 621,
706
+ 622,
707
+ 623,
708
+ 624,
709
+ 625,
710
+ 626,
711
+ 627,
712
+ 628,
713
+ 629,
714
+ 630,
715
+ 631,
716
+ 632,
717
+ 633,
718
+ 634,
719
+ 635,
720
+ 636,
721
+ 637,
722
+ 638,
723
+ 639,
724
+ 640,
725
+ 641,
726
+ 642,
727
+ 643,
728
+ 644,
729
+ 645,
730
+ 646,
731
+ 647,
732
+ 648,
733
+ 649,
734
+ 650,
735
+ 651,
736
+ 652,
737
+ 653,
738
+ 654,
739
+ 655,
740
+ 656,
741
+ 657,
742
+ 658,
743
+ 659,
744
+ 660,
745
+ 661,
746
+ 662,
747
+ 663,
748
+ 664,
749
+ 665,
750
+ 666,
751
+ 667,
752
+ 668,
753
+ 669,
754
+ 670,
755
+ 671,
756
+ 672,
757
+ 673,
758
+ 674,
759
+ 675,
760
+ 676,
761
+ 677,
762
+ 678,
763
+ 679,
764
+ 680,
765
+ 681,
766
+ 682,
767
+ 683,
768
+ 684,
769
+ 685,
770
+ 686,
771
+ 687,
772
+ 688,
773
+ 689,
774
+ 690,
775
+ 691,
776
+ 692,
777
+ 693,
778
+ 694,
779
+ 695,
780
+ 696,
781
+ 697,
782
+ 698,
783
+ 699,
784
+ 700,
785
+ 701,
786
+ 702,
787
+ 703,
788
+ 704,
789
+ 705,
790
+ 706,
791
+ 707,
792
+ 708,
793
+ 709,
794
+ 710,
795
+ 711,
796
+ 712,
797
+ 713,
798
+ 714,
799
+ 715,
800
+ 716,
801
+ 717,
802
+ 718,
803
+ 719,
804
+ 720,
805
+ 721,
806
+ 722,
807
+ 723,
808
+ 724,
809
+ 725,
810
+ 726,
811
+ 727,
812
+ 728,
813
+ 729,
814
+ 730,
815
+ 731,
816
+ 732,
817
+ 733,
818
+ 734,
819
+ 735,
820
+ 736,
821
+ 737,
822
+ 738,
823
+ 739,
824
+ 740,
825
+ 741,
826
+ 742,
827
+ 743,
828
+ 744,
829
+ 745,
830
+ 746,
831
+ 747,
832
+ 748,
833
+ 749,
834
+ 750,
835
+ 751,
836
+ 752,
837
+ 753,
838
+ 754,
839
+ 755,
840
+ 756,
841
+ 757,
842
+ 758,
843
+ 759,
844
+ 760,
845
+ 761,
846
+ 762,
847
+ 763,
848
+ 764,
849
+ 765,
850
+ 766,
851
+ 767,
852
+ 768,
853
+ 769,
854
+ 770,
855
+ 771,
856
+ 772,
857
+ 773,
858
+ 774,
859
+ 775,
860
+ 776,
861
+ 777,
862
+ 778,
863
+ 779,
864
+ 780,
865
+ 781,
866
+ 782,
867
+ 783,
868
+ 784,
869
+ 785,
870
+ 786,
871
+ 787,
872
+ 788,
873
+ 789,
874
+ 790,
875
+ 791,
876
+ 792,
877
+ 793,
878
+ 794,
879
+ 795,
880
+ 796,
881
+ 797,
882
+ 798,
883
+ 799,
884
+ 800,
885
+ 801,
886
+ 802,
887
+ 803,
888
+ 804,
889
+ 805,
890
+ 806,
891
+ 807,
892
+ 808,
893
+ 809,
894
+ 810,
895
+ 811,
896
+ 812,
897
+ 813,
898
+ 814,
899
+ 815,
900
+ 816,
901
+ 817,
902
+ 818,
903
+ 819,
904
+ 820,
905
+ 821,
906
+ 822,
907
+ 823,
908
+ 824,
909
+ 825,
910
+ 826,
911
+ 827,
912
+ 828,
913
+ 829,
914
+ 830,
915
+ 831,
916
+ 832,
917
+ 833,
918
+ 834,
919
+ 835,
920
+ 836,
921
+ 837,
922
+ 838,
923
+ 839,
924
+ 840,
925
+ 841,
926
+ 842,
927
+ 843,
928
+ 844,
929
+ 845,
930
+ 846,
931
+ 847,
932
+ 848,
933
+ 849,
934
+ 850,
935
+ 851,
936
+ 852,
937
+ 853,
938
+ 854,
939
+ 855,
940
+ 856,
941
+ 857,
942
+ 858,
943
+ 859,
944
+ 860,
945
+ 861,
946
+ 862,
947
+ 863,
948
+ 864,
949
+ 865,
950
+ 866,
951
+ 867,
952
+ 868,
953
+ 869,
954
+ 870,
955
+ 871,
956
+ 872,
957
+ 873,
958
+ 874,
959
+ 875,
960
+ 876,
961
+ 877,
962
+ 878,
963
+ 879,
964
+ 880,
965
+ 881,
966
+ 882,
967
+ 883,
968
+ 884,
969
+ 885,
970
+ 886,
971
+ 887,
972
+ 888,
973
+ 889,
974
+ 890,
975
+ 891,
976
+ 892,
977
+ 893,
978
+ 894,
979
+ 895,
980
+ 896,
981
+ 897,
982
+ 898,
983
+ 899,
984
+ 900,
985
+ 901,
986
+ 902,
987
+ 903,
988
+ 904,
989
+ 905,
990
+ 906,
991
+ 907,
992
+ 908,
993
+ 909,
994
+ 910,
995
+ 911,
996
+ 912,
997
+ 913,
998
+ 914,
999
+ 915,
1000
+ 916,
1001
+ 917,
1002
+ 918,
1003
+ 919,
1004
+ 920,
1005
+ 921,
1006
+ 922,
1007
+ 923,
1008
+ 924,
1009
+ 925,
1010
+ 926,
1011
+ 927,
1012
+ 928,
1013
+ 929,
1014
+ 930,
1015
+ 931,
1016
+ 932,
1017
+ 933,
1018
+ 934,
1019
+ 935,
1020
+ 936,
1021
+ 937,
1022
+ 938,
1023
+ 939,
1024
+ 940,
1025
+ 941,
1026
+ 942,
1027
+ 943,
1028
+ 944,
1029
+ 945,
1030
+ 946,
1031
+ 947,
1032
+ 948,
1033
+ 949,
1034
+ 950,
1035
+ 951,
1036
+ 952,
1037
+ 953,
1038
+ 954,
1039
+ 955,
1040
+ 956,
1041
+ 957,
1042
+ 958,
1043
+ 959,
1044
+ 960,
1045
+ 961,
1046
+ 962,
1047
+ 963,
1048
+ 964,
1049
+ 965,
1050
+ 966,
1051
+ 967,
1052
+ 968,
1053
+ 969,
1054
+ 970,
1055
+ 971,
1056
+ 972,
1057
+ 973,
1058
+ 974,
1059
+ 975,
1060
+ 976,
1061
+ 977,
1062
+ 978,
1063
+ 979,
1064
+ 980,
1065
+ 981,
1066
+ 982,
1067
+ 983,
1068
+ 984,
1069
+ 985,
1070
+ 986,
1071
+ 987,
1072
+ 988,
1073
+ 989,
1074
+ 990,
1075
+ 991,
1076
+ 992,
1077
+ 993,
1078
+ 994,
1079
+ 995,
1080
+ 996,
1081
+ 997,
1082
+ 998,
1083
+ 999,
1084
+ 1000,
1085
+ 1001,
1086
+ 1002,
1087
+ 1003,
1088
+ 1004,
1089
+ 1005,
1090
+ 1006,
1091
+ 1007,
1092
+ 1008,
1093
+ 1009,
1094
+ 1010,
1095
+ 1011,
1096
+ 1012,
1097
+ 1013,
1098
+ 1014,
1099
+ 1015,
1100
+ 1016,
1101
+ 1017,
1102
+ 1018,
1103
+ 1019,
1104
+ 1020,
1105
+ 1021,
1106
+ 1022,
1107
+ 1023,
1108
+ 1024,
1109
+ 1025,
1110
+ 1026,
1111
+ 1027,
1112
+ 1028,
1113
+ 1029,
1114
+ 1030,
1115
+ 1031,
1116
+ 1032,
1117
+ 1033,
1118
+ 1034,
1119
+ 1035,
1120
+ 1036,
1121
+ 1037,
1122
+ 1038,
1123
+ 1039,
1124
+ 1040,
1125
+ 1041,
1126
+ 1042,
1127
+ 1043,
1128
+ 1044,
1129
+ 1045,
1130
+ 1046,
1131
+ 1047,
1132
+ 1048,
1133
+ 1049,
1134
+ 1050,
1135
+ 1051,
1136
+ 1052,
1137
+ 1053,
1138
+ 1054,
1139
+ 1055,
1140
+ 1056,
1141
+ 1057,
1142
+ 1058,
1143
+ 1059,
1144
+ 1060,
1145
+ 1061,
1146
+ 1062,
1147
+ 1063,
1148
+ 1064,
1149
+ 1065,
1150
+ 1066,
1151
+ 1067,
1152
+ 1068,
1153
+ 1069,
1154
+ 1070,
1155
+ 1071,
1156
+ 1072,
1157
+ 1073,
1158
+ 1074,
1159
+ 1075,
1160
+ 1076,
1161
+ 1077,
1162
+ 1078,
1163
+ 1079,
1164
+ 1080,
1165
+ 1081,
1166
+ 1082,
1167
+ 1083,
1168
+ 1084,
1169
+ 1085,
1170
+ 1086,
1171
+ 1087,
1172
+ 1088,
1173
+ 1089,
1174
+ 1090,
1175
+ 1091,
1176
+ 1092,
1177
+ 1093,
1178
+ 1094,
1179
+ 1095,
1180
+ 1096,
1181
+ 1097,
1182
+ 1098,
1183
+ 1099,
1184
+ 1100,
1185
+ 1101,
1186
+ 1102,
1187
+ 1103,
1188
+ 1104,
1189
+ 1105,
1190
+ 1106,
1191
+ 1107,
1192
+ 1108,
1193
+ 1109,
1194
+ 1110,
1195
+ 1111,
1196
+ 1112,
1197
+ 1113,
1198
+ 1114,
1199
+ 1115,
1200
+ 1116,
1201
+ 1117,
1202
+ 1118,
1203
+ 1119,
1204
+ 1120,
1205
+ 1121,
1206
+ 1122,
1207
+ 1123,
1208
+ 1124,
1209
+ 1125,
1210
+ 1126,
1211
+ 1127,
1212
+ 1128,
1213
+ 1129,
1214
+ 1130,
1215
+ 1131,
1216
+ 1132,
1217
+ 1133,
1218
+ 1134,
1219
+ 1135,
1220
+ 1136,
1221
+ 1137,
1222
+ 1138,
1223
+ 1139,
1224
+ 1140,
1225
+ 1141,
1226
+ 1142,
1227
+ 1143,
1228
+ 1144,
1229
+ 1145,
1230
+ 1146,
1231
+ 1147,
1232
+ 1148,
1233
+ 1149,
1234
+ 1150,
1235
+ 1151,
1236
+ 1152,
1237
+ 1153,
1238
+ 1154,
1239
+ 1155,
1240
+ 1156,
1241
+ 1157,
1242
+ 1158,
1243
+ 1159,
1244
+ 1160,
1245
+ 1161,
1246
+ 1162,
1247
+ 1163,
1248
+ 1164,
1249
+ 1165,
1250
+ 1166,
1251
+ 1167,
1252
+ 1168,
1253
+ 1169,
1254
+ 1170,
1255
+ 1171,
1256
+ 1172,
1257
+ 1173,
1258
+ 1174,
1259
+ 1175,
1260
+ 1176,
1261
+ 1177,
1262
+ 1178,
1263
+ 1179,
1264
+ 1180,
1265
+ 1181,
1266
+ 1182,
1267
+ 1183,
1268
+ 1184,
1269
+ 1185,
1270
+ 1186,
1271
+ 1187,
1272
+ 1188,
1273
+ 1189,
1274
+ 1190,
1275
+ 1191,
1276
+ 1192,
1277
+ 1193,
1278
+ 1194,
1279
+ 1195,
1280
+ 1196,
1281
+ 1197,
1282
+ 1198,
1283
+ 1199,
1284
+ 1200,
1285
+ 1201,
1286
+ 1202,
1287
+ 1203,
1288
+ 1204,
1289
+ 1205,
1290
+ 1206,
1291
+ 1207,
1292
+ 1208,
1293
+ 1209,
1294
+ 1210,
1295
+ 1211,
1296
+ 1212,
1297
+ 1213,
1298
+ 1214,
1299
+ 1215,
1300
+ 1216,
1301
+ 1217,
1302
+ 1218,
1303
+ 1219,
1304
+ 1220,
1305
+ 1221,
1306
+ 1222,
1307
+ 1223,
1308
+ 1224,
1309
+ 1225,
1310
+ 1226,
1311
+ 1227,
1312
+ 1228,
1313
+ 1229,
1314
+ 1230,
1315
+ 1231,
1316
+ 1232,
1317
+ 1233,
1318
+ 1234,
1319
+ 1235,
1320
+ 1236,
1321
+ 1237,
1322
+ 1238,
1323
+ 1239,
1324
+ 1240,
1325
+ 1241,
1326
+ 1242,
1327
+ 1243,
1328
+ 1244,
1329
+ 1245,
1330
+ 1246,
1331
+ 1247,
1332
+ 1248,
1333
+ 1249,
1334
+ 1250,
1335
+ 1251,
1336
+ 1252,
1337
+ 1253,
1338
+ 1254,
1339
+ 1255,
1340
+ 1256,
1341
+ 1257,
1342
+ 1258,
1343
+ 1259,
1344
+ 1260,
1345
+ 1261,
1346
+ 1262,
1347
+ 1263,
1348
+ 1264,
1349
+ 1265,
1350
+ 1266,
1351
+ 1267,
1352
+ 1268,
1353
+ 1269,
1354
+ 1270,
1355
+ 1271,
1356
+ 1272,
1357
+ 1273,
1358
+ 1274,
1359
+ 1275,
1360
+ 1276,
1361
+ 1277,
1362
+ 1278,
1363
+ 1279,
1364
+ 1280,
1365
+ 1281,
1366
+ 1282,
1367
+ 1283,
1368
+ 1284,
1369
+ 1285,
1370
+ 1286,
1371
+ 1287,
1372
+ 1288,
1373
+ 1289,
1374
+ 1290,
1375
+ 1291,
1376
+ 1292,
1377
+ 1293,
1378
+ 1294,
1379
+ 1295,
1380
+ 1296,
1381
+ 1297,
1382
+ 1298,
1383
+ 1299,
1384
+ 1300,
1385
+ 1301,
1386
+ 1302,
1387
+ 1303,
1388
+ 1304,
1389
+ 1305,
1390
+ 1306,
1391
+ 1307,
1392
+ 1308,
1393
+ 1309,
1394
+ 1310,
1395
+ 1311,
1396
+ 1312,
1397
+ 1313,
1398
+ 1314,
1399
+ 1315,
1400
+ 1316,
1401
+ 1317,
1402
+ 1318,
1403
+ 1319,
1404
+ 1320,
1405
+ 1321,
1406
+ 1322,
1407
+ 1323,
1408
+ 1324,
1409
+ 1325,
1410
+ 1326,
1411
+ 1327,
1412
+ 1328,
1413
+ 1329,
1414
+ 1330,
1415
+ 1331,
1416
+ 1332,
1417
+ 1333,
1418
+ 1334,
1419
+ 1335,
1420
+ 1336,
1421
+ 1337,
1422
+ 1338,
1423
+ 1339,
1424
+ 1340,
1425
+ 1341,
1426
+ 1342,
1427
+ 1343,
1428
+ 1344,
1429
+ 1345,
1430
+ 1346,
1431
+ 1347,
1432
+ 1348,
1433
+ 1349,
1434
+ 1350,
1435
+ 1351,
1436
+ 1352,
1437
+ 1353,
1438
+ 1354,
1439
+ 1355,
1440
+ 1356,
1441
+ 1357,
1442
+ 1358,
1443
+ 1359,
1444
+ 1360,
1445
+ 1361,
1446
+ 1362,
1447
+ 1363,
1448
+ 1364,
1449
+ 1365,
1450
+ 1366,
1451
+ 1367,
1452
+ 1368,
1453
+ 1369,
1454
+ 1370,
1455
+ 1371,
1456
+ 1372,
1457
+ 1373,
1458
+ 1374,
1459
+ 1375,
1460
+ 1376,
1461
+ 1377,
1462
+ 1378,
1463
+ 1379,
1464
+ 1380,
1465
+ 1381,
1466
+ 1382,
1467
+ 1383,
1468
+ 1384,
1469
+ 1385,
1470
+ 1386,
1471
+ 1387,
1472
+ 1388,
1473
+ 1389,
1474
+ 1390,
1475
+ 1391,
1476
+ 1392,
1477
+ 1393,
1478
+ 1394,
1479
+ 1395,
1480
+ 1396,
1481
+ 1397,
1482
+ 1398,
1483
+ 1399,
1484
+ 1400,
1485
+ 1401,
1486
+ 1402,
1487
+ 1403,
1488
+ 1404,
1489
+ 1405,
1490
+ 1406,
1491
+ 1407,
1492
+ 1408,
1493
+ 1409,
1494
+ 1410,
1495
+ 1411,
1496
+ 1412,
1497
+ 1413,
1498
+ 1414,
1499
+ 1415,
1500
+ 1416,
1501
+ 1417,
1502
+ 1418,
1503
+ 1419,
1504
+ 1420,
1505
+ 1421,
1506
+ 1422,
1507
+ 1423,
1508
+ 1424,
1509
+ 1425,
1510
+ 1426,
1511
+ 1427,
1512
+ 1428,
1513
+ 1429,
1514
+ 1430,
1515
+ 1431,
1516
+ 1432,
1517
+ 1433,
1518
+ 1434,
1519
+ 1435,
1520
+ 1436,
1521
+ 1437,
1522
+ 1438,
1523
+ 1439,
1524
+ 1440,
1525
+ 1441,
1526
+ 1442,
1527
+ 1443,
1528
+ 1444,
1529
+ 1445,
1530
+ 1446,
1531
+ 1447,
1532
+ 1448,
1533
+ 1449,
1534
+ 1450,
1535
+ 1451,
1536
+ 1452,
1537
+ 1453,
1538
+ 1454,
1539
+ 1455,
1540
+ 1456,
1541
+ 1457,
1542
+ 1458,
1543
+ 1459,
1544
+ 1460,
1545
+ 1461,
1546
+ 1462,
1547
+ 1463,
1548
+ 1464,
1549
+ 1465,
1550
+ 1466,
1551
+ 1467,
1552
+ 1468,
1553
+ 1469,
1554
+ 1470,
1555
+ 1471,
1556
+ 1472
1557
+ ],
1558
+ "scores": {
1559
+ "route": {
1560
+ "1.1": {
1561
+ "mean_track_error_km": {
1562
+ "value": 798.4143395733709,
1563
+ "storms": 270
1564
+ },
1565
+ "track_error_120h_km": {
1566
+ "value": 1646.3960476448165,
1567
+ "storms": 270
1568
+ },
1569
+ "direction_error_deg": {
1570
+ "value": 51.58419207122625,
1571
+ "storms": 270
1572
+ },
1573
+ "shape_similarity": {
1574
+ "value": 0.7543824571538857,
1575
+ "storms": 270
1576
+ },
1577
+ "track_error_by_lead_km": [
1578
+ 66.10969036943266,
1579
+ 133.4783672768527,
1580
+ 202.3585175411488,
1581
+ 273.2879621656292,
1582
+ 346.90051929279923,
1583
+ 419.8767857705207,
1584
+ 493.5704476997114,
1585
+ 568.0858703129328,
1586
+ 644.1251568785259,
1587
+ 722.6238658146501,
1588
+ 803.5946300337959,
1589
+ 886.616879788694,
1590
+ 973.2847405022445,
1591
+ 1060.5849499902793,
1592
+ 1151.5785924519794,
1593
+ 1244.9737736697598,
1594
+ 1343.5921960496646,
1595
+ 1443.1911582149028,
1596
+ 1544.0566399990746,
1597
+ 1646.396047644816
1598
+ ]
1599
+ },
1600
+ "1.2": {
1601
+ "mean_track_error_km": {
1602
+ "value": 471.2045276140213,
1603
+ "storms": 270
1604
+ },
1605
+ "track_error_120h_km": {
1606
+ "value": 1031.633570368749,
1607
+ "storms": 270
1608
+ },
1609
+ "direction_error_deg": {
1610
+ "value": 34.959947454592786,
1611
+ "storms": 270
1612
+ },
1613
+ "shape_similarity": {
1614
+ "value": 0.8837028632459877,
1615
+ "storms": 270
1616
+ },
1617
+ "track_error_by_lead_km": [
1618
+ 48.276258844589,
1619
+ 91.12774309041492,
1620
+ 129.1208135780606,
1621
+ 164.481223771445,
1622
+ 199.06958720909273,
1623
+ 234.93256251923398,
1624
+ 272.48049128499,
1625
+ 311.4789218238006,
1626
+ 353.46861840507904,
1627
+ 399.3840596538071,
1628
+ 449.2708765186405,
1629
+ 502.4908306263511,
1630
+ 558.3174531497493,
1631
+ 616.1753924353181,
1632
+ 677.6609275099131,
1633
+ 740.9340851986844,
1634
+ 808.8023210064223,
1635
+ 880.0772095202088,
1636
+ 954.9076057658763,
1637
+ 1031.633570368749
1638
+ ]
1639
+ },
1640
+ "deepmind": {
1641
+ "mean_track_error_km": {
1642
+ "value": 498.3660837262175,
1643
+ "storms": 270
1644
+ },
1645
+ "track_error_120h_km": {
1646
+ "value": 1031.9091421404376,
1647
+ "storms": 270
1648
+ },
1649
+ "direction_error_deg": {
1650
+ "value": 39.76380497312257,
1651
+ "storms": 270
1652
+ },
1653
+ "shape_similarity": {
1654
+ "value": 0.9010381186926554,
1655
+ "storms": 270
1656
+ },
1657
+ "track_error_by_lead_km": [
1658
+ 105.79431937309762,
1659
+ 136.30842390708193,
1660
+ 168.8925890316698,
1661
+ 208.95643055237963,
1662
+ 243.63979975302811,
1663
+ 278.11432944685924,
1664
+ 316.6521861156824,
1665
+ 357.1736913330865,
1666
+ 392.8310729414844,
1667
+ 436.5373191336134,
1668
+ 478.075813984495,
1669
+ 522.4673167277231,
1670
+ 576.9905349536721,
1671
+ 634.2907658367048,
1672
+ 690.6818730442626,
1673
+ 746.7391690084353,
1674
+ 807.6243133903178,
1675
+ 879.0423409543573,
1676
+ 954.6002428959632,
1677
+ 1031.909142140437
1678
+ ]
1679
+ }
1680
+ },
1681
+ "pressure": {
1682
+ "JMA": {
1683
+ "daily_cases": 134,
1684
+ "storms": 40,
1685
+ "common_lead_points": 2637,
1686
+ "models": {
1687
+ "1.1": {
1688
+ "mae_hpa": {
1689
+ "value": 13.53233861138585,
1690
+ "storms": 40,
1691
+ "daily_cases": 134
1692
+ },
1693
+ "curve_similarity": {
1694
+ "value": 0.7074066420243609,
1695
+ "storms": 40,
1696
+ "daily_cases": 134
1697
+ }
1698
+ },
1699
+ "1.2": {
1700
+ "mae_hpa": {
1701
+ "value": 12.837077366789085,
1702
+ "storms": 40,
1703
+ "daily_cases": 134
1704
+ },
1705
+ "curve_similarity": {
1706
+ "value": 0.7118461112422476,
1707
+ "storms": 40,
1708
+ "daily_cases": 134
1709
+ }
1710
+ },
1711
+ "deepmind": {
1712
+ "mae_hpa": {
1713
+ "value": 10.197678417354012,
1714
+ "storms": 40,
1715
+ "daily_cases": 134
1716
+ },
1717
+ "curve_similarity": {
1718
+ "value": 0.8087969164941555,
1719
+ "storms": 40,
1720
+ "daily_cases": 134
1721
+ }
1722
+ }
1723
+ }
1724
+ },
1725
+ "USA": {
1726
+ "daily_cases": 134,
1727
+ "storms": 40,
1728
+ "common_lead_points": 2325,
1729
+ "models": {
1730
+ "1.1": {
1731
+ "mae_hpa": {
1732
+ "value": 12.835629459598886,
1733
+ "storms": 40,
1734
+ "daily_cases": 134
1735
+ },
1736
+ "curve_similarity": {
1737
+ "value": 0.7236794525870405,
1738
+ "storms": 40,
1739
+ "daily_cases": 131
1740
+ }
1741
+ },
1742
+ "1.2": {
1743
+ "mae_hpa": {
1744
+ "value": 12.552942457392373,
1745
+ "storms": 40,
1746
+ "daily_cases": 134
1747
+ },
1748
+ "curve_similarity": {
1749
+ "value": 0.6636769485468179,
1750
+ "storms": 40,
1751
+ "daily_cases": 131
1752
+ }
1753
+ },
1754
+ "deepmind": {
1755
+ "mae_hpa": {
1756
+ "value": 11.546903198440878,
1757
+ "storms": 40,
1758
+ "daily_cases": 134
1759
+ },
1760
+ "curve_similarity": {
1761
+ "value": 0.7445409788756472,
1762
+ "storms": 40,
1763
+ "daily_cases": 131
1764
+ }
1765
+ }
1766
+ }
1767
+ }
1768
+ }
1769
+ }
1770
+ },
1771
+ "before_2024": {
1772
+ "daily_issues": 1336,
1773
+ "storms": 230,
1774
+ "daily_issue_percentage": 90.69925322471147,
1775
+ "storm_percentage": 85.18518518518519,
1776
+ "years": [
1777
+ 1980,
1778
+ 1981,
1779
+ 1982,
1780
+ 1983,
1781
+ 1984,
1782
+ 1985,
1783
+ 1986,
1784
+ 1987,
1785
+ 1988,
1786
+ 1989,
1787
+ 1990,
1788
+ 1991,
1789
+ 1992,
1790
+ 1993,
1791
+ 1994,
1792
+ 1995,
1793
+ 1996,
1794
+ 1997,
1795
+ 1998,
1796
+ 1999
1797
+ ],
1798
+ "case_indices": [
1799
+ 137,
1800
+ 138,
1801
+ 139,
1802
+ 140,
1803
+ 141,
1804
+ 142,
1805
+ 143,
1806
+ 144,
1807
+ 145,
1808
+ 146,
1809
+ 147,
1810
+ 148,
1811
+ 149,
1812
+ 150,
1813
+ 151,
1814
+ 152,
1815
+ 153,
1816
+ 154,
1817
+ 155,
1818
+ 156,
1819
+ 157,
1820
+ 158,
1821
+ 159,
1822
+ 160,
1823
+ 161,
1824
+ 162,
1825
+ 163,
1826
+ 164,
1827
+ 165,
1828
+ 166,
1829
+ 167,
1830
+ 168,
1831
+ 169,
1832
+ 170,
1833
+ 171,
1834
+ 172,
1835
+ 173,
1836
+ 174,
1837
+ 175,
1838
+ 176,
1839
+ 177,
1840
+ 178,
1841
+ 179,
1842
+ 180,
1843
+ 181,
1844
+ 182,
1845
+ 183,
1846
+ 184,
1847
+ 185,
1848
+ 186,
1849
+ 187,
1850
+ 188,
1851
+ 189,
1852
+ 190,
1853
+ 191,
1854
+ 192,
1855
+ 193,
1856
+ 194,
1857
+ 195,
1858
+ 196,
1859
+ 197,
1860
+ 198,
1861
+ 199,
1862
+ 200,
1863
+ 201,
1864
+ 202,
1865
+ 203,
1866
+ 204,
1867
+ 205,
1868
+ 206,
1869
+ 207,
1870
+ 208,
1871
+ 209,
1872
+ 210,
1873
+ 211,
1874
+ 212,
1875
+ 213,
1876
+ 214,
1877
+ 215,
1878
+ 216,
1879
+ 217,
1880
+ 218,
1881
+ 219,
1882
+ 220,
1883
+ 221,
1884
+ 222,
1885
+ 223,
1886
+ 224,
1887
+ 225,
1888
+ 226,
1889
+ 227,
1890
+ 228,
1891
+ 229,
1892
+ 230,
1893
+ 231,
1894
+ 232,
1895
+ 233,
1896
+ 234,
1897
+ 235,
1898
+ 236,
1899
+ 237,
1900
+ 238,
1901
+ 239,
1902
+ 240,
1903
+ 241,
1904
+ 242,
1905
+ 243,
1906
+ 244,
1907
+ 245,
1908
+ 246,
1909
+ 247,
1910
+ 248,
1911
+ 249,
1912
+ 250,
1913
+ 251,
1914
+ 252,
1915
+ 253,
1916
+ 254,
1917
+ 255,
1918
+ 256,
1919
+ 257,
1920
+ 258,
1921
+ 259,
1922
+ 260,
1923
+ 261,
1924
+ 262,
1925
+ 263,
1926
+ 264,
1927
+ 265,
1928
+ 266,
1929
+ 267,
1930
+ 268,
1931
+ 269,
1932
+ 270,
1933
+ 271,
1934
+ 272,
1935
+ 273,
1936
+ 274,
1937
+ 275,
1938
+ 276,
1939
+ 277,
1940
+ 278,
1941
+ 279,
1942
+ 280,
1943
+ 281,
1944
+ 282,
1945
+ 283,
1946
+ 284,
1947
+ 285,
1948
+ 286,
1949
+ 287,
1950
+ 288,
1951
+ 289,
1952
+ 290,
1953
+ 291,
1954
+ 292,
1955
+ 293,
1956
+ 294,
1957
+ 295,
1958
+ 296,
1959
+ 297,
1960
+ 298,
1961
+ 299,
1962
+ 300,
1963
+ 301,
1964
+ 302,
1965
+ 303,
1966
+ 304,
1967
+ 305,
1968
+ 306,
1969
+ 307,
1970
+ 308,
1971
+ 309,
1972
+ 310,
1973
+ 311,
1974
+ 312,
1975
+ 313,
1976
+ 314,
1977
+ 315,
1978
+ 316,
1979
+ 317,
1980
+ 318,
1981
+ 319,
1982
+ 320,
1983
+ 321,
1984
+ 322,
1985
+ 323,
1986
+ 324,
1987
+ 325,
1988
+ 326,
1989
+ 327,
1990
+ 328,
1991
+ 329,
1992
+ 330,
1993
+ 331,
1994
+ 332,
1995
+ 333,
1996
+ 334,
1997
+ 335,
1998
+ 336,
1999
+ 337,
2000
+ 338,
2001
+ 339,
2002
+ 340,
2003
+ 341,
2004
+ 342,
2005
+ 343,
2006
+ 344,
2007
+ 345,
2008
+ 346,
2009
+ 347,
2010
+ 348,
2011
+ 349,
2012
+ 350,
2013
+ 351,
2014
+ 352,
2015
+ 353,
2016
+ 354,
2017
+ 355,
2018
+ 356,
2019
+ 357,
2020
+ 358,
2021
+ 359,
2022
+ 360,
2023
+ 361,
2024
+ 362,
2025
+ 363,
2026
+ 364,
2027
+ 365,
2028
+ 366,
2029
+ 367,
2030
+ 368,
2031
+ 369,
2032
+ 370,
2033
+ 371,
2034
+ 372,
2035
+ 373,
2036
+ 374,
2037
+ 375,
2038
+ 376,
2039
+ 377,
2040
+ 378,
2041
+ 379,
2042
+ 380,
2043
+ 381,
2044
+ 382,
2045
+ 383,
2046
+ 384,
2047
+ 385,
2048
+ 386,
2049
+ 387,
2050
+ 388,
2051
+ 389,
2052
+ 390,
2053
+ 391,
2054
+ 392,
2055
+ 393,
2056
+ 394,
2057
+ 395,
2058
+ 396,
2059
+ 397,
2060
+ 398,
2061
+ 399,
2062
+ 400,
2063
+ 401,
2064
+ 402,
2065
+ 403,
2066
+ 404,
2067
+ 405,
2068
+ 406,
2069
+ 407,
2070
+ 408,
2071
+ 409,
2072
+ 410,
2073
+ 411,
2074
+ 412,
2075
+ 413,
2076
+ 414,
2077
+ 415,
2078
+ 416,
2079
+ 417,
2080
+ 418,
2081
+ 419,
2082
+ 420,
2083
+ 421,
2084
+ 422,
2085
+ 423,
2086
+ 424,
2087
+ 425,
2088
+ 426,
2089
+ 427,
2090
+ 428,
2091
+ 429,
2092
+ 430,
2093
+ 431,
2094
+ 432,
2095
+ 433,
2096
+ 434,
2097
+ 435,
2098
+ 436,
2099
+ 437,
2100
+ 438,
2101
+ 439,
2102
+ 440,
2103
+ 441,
2104
+ 442,
2105
+ 443,
2106
+ 444,
2107
+ 445,
2108
+ 446,
2109
+ 447,
2110
+ 448,
2111
+ 449,
2112
+ 450,
2113
+ 451,
2114
+ 452,
2115
+ 453,
2116
+ 454,
2117
+ 455,
2118
+ 456,
2119
+ 457,
2120
+ 458,
2121
+ 459,
2122
+ 460,
2123
+ 461,
2124
+ 462,
2125
+ 463,
2126
+ 464,
2127
+ 465,
2128
+ 466,
2129
+ 467,
2130
+ 468,
2131
+ 469,
2132
+ 470,
2133
+ 471,
2134
+ 472,
2135
+ 473,
2136
+ 474,
2137
+ 475,
2138
+ 476,
2139
+ 477,
2140
+ 478,
2141
+ 479,
2142
+ 480,
2143
+ 481,
2144
+ 482,
2145
+ 483,
2146
+ 484,
2147
+ 485,
2148
+ 486,
2149
+ 487,
2150
+ 488,
2151
+ 489,
2152
+ 490,
2153
+ 491,
2154
+ 492,
2155
+ 493,
2156
+ 494,
2157
+ 495,
2158
+ 496,
2159
+ 497,
2160
+ 498,
2161
+ 499,
2162
+ 500,
2163
+ 501,
2164
+ 502,
2165
+ 503,
2166
+ 504,
2167
+ 505,
2168
+ 506,
2169
+ 507,
2170
+ 508,
2171
+ 509,
2172
+ 510,
2173
+ 511,
2174
+ 512,
2175
+ 513,
2176
+ 514,
2177
+ 515,
2178
+ 516,
2179
+ 517,
2180
+ 518,
2181
+ 519,
2182
+ 520,
2183
+ 521,
2184
+ 522,
2185
+ 523,
2186
+ 524,
2187
+ 525,
2188
+ 526,
2189
+ 527,
2190
+ 528,
2191
+ 529,
2192
+ 530,
2193
+ 531,
2194
+ 532,
2195
+ 533,
2196
+ 534,
2197
+ 535,
2198
+ 536,
2199
+ 537,
2200
+ 538,
2201
+ 539,
2202
+ 540,
2203
+ 541,
2204
+ 542,
2205
+ 543,
2206
+ 544,
2207
+ 545,
2208
+ 546,
2209
+ 547,
2210
+ 548,
2211
+ 549,
2212
+ 550,
2213
+ 551,
2214
+ 552,
2215
+ 553,
2216
+ 554,
2217
+ 555,
2218
+ 556,
2219
+ 557,
2220
+ 558,
2221
+ 559,
2222
+ 560,
2223
+ 561,
2224
+ 562,
2225
+ 563,
2226
+ 564,
2227
+ 565,
2228
+ 566,
2229
+ 567,
2230
+ 568,
2231
+ 569,
2232
+ 570,
2233
+ 571,
2234
+ 572,
2235
+ 573,
2236
+ 574,
2237
+ 575,
2238
+ 576,
2239
+ 577,
2240
+ 578,
2241
+ 579,
2242
+ 580,
2243
+ 581,
2244
+ 582,
2245
+ 583,
2246
+ 584,
2247
+ 585,
2248
+ 586,
2249
+ 587,
2250
+ 588,
2251
+ 589,
2252
+ 590,
2253
+ 591,
2254
+ 592,
2255
+ 593,
2256
+ 594,
2257
+ 595,
2258
+ 596,
2259
+ 597,
2260
+ 598,
2261
+ 599,
2262
+ 600,
2263
+ 601,
2264
+ 602,
2265
+ 603,
2266
+ 604,
2267
+ 605,
2268
+ 606,
2269
+ 607,
2270
+ 608,
2271
+ 609,
2272
+ 610,
2273
+ 611,
2274
+ 612,
2275
+ 613,
2276
+ 614,
2277
+ 615,
2278
+ 616,
2279
+ 617,
2280
+ 618,
2281
+ 619,
2282
+ 620,
2283
+ 621,
2284
+ 622,
2285
+ 623,
2286
+ 624,
2287
+ 625,
2288
+ 626,
2289
+ 627,
2290
+ 628,
2291
+ 629,
2292
+ 630,
2293
+ 631,
2294
+ 632,
2295
+ 633,
2296
+ 634,
2297
+ 635,
2298
+ 636,
2299
+ 637,
2300
+ 638,
2301
+ 639,
2302
+ 640,
2303
+ 641,
2304
+ 642,
2305
+ 643,
2306
+ 644,
2307
+ 645,
2308
+ 646,
2309
+ 647,
2310
+ 648,
2311
+ 649,
2312
+ 650,
2313
+ 651,
2314
+ 652,
2315
+ 653,
2316
+ 654,
2317
+ 655,
2318
+ 656,
2319
+ 657,
2320
+ 658,
2321
+ 659,
2322
+ 660,
2323
+ 661,
2324
+ 662,
2325
+ 663,
2326
+ 664,
2327
+ 665,
2328
+ 666,
2329
+ 667,
2330
+ 668,
2331
+ 669,
2332
+ 670,
2333
+ 671,
2334
+ 672,
2335
+ 673,
2336
+ 674,
2337
+ 675,
2338
+ 676,
2339
+ 677,
2340
+ 678,
2341
+ 679,
2342
+ 680,
2343
+ 681,
2344
+ 682,
2345
+ 683,
2346
+ 684,
2347
+ 685,
2348
+ 686,
2349
+ 687,
2350
+ 688,
2351
+ 689,
2352
+ 690,
2353
+ 691,
2354
+ 692,
2355
+ 693,
2356
+ 694,
2357
+ 695,
2358
+ 696,
2359
+ 697,
2360
+ 698,
2361
+ 699,
2362
+ 700,
2363
+ 701,
2364
+ 702,
2365
+ 703,
2366
+ 704,
2367
+ 705,
2368
+ 706,
2369
+ 707,
2370
+ 708,
2371
+ 709,
2372
+ 710,
2373
+ 711,
2374
+ 712,
2375
+ 713,
2376
+ 714,
2377
+ 715,
2378
+ 716,
2379
+ 717,
2380
+ 718,
2381
+ 719,
2382
+ 720,
2383
+ 721,
2384
+ 722,
2385
+ 723,
2386
+ 724,
2387
+ 725,
2388
+ 726,
2389
+ 727,
2390
+ 728,
2391
+ 729,
2392
+ 730,
2393
+ 731,
2394
+ 732,
2395
+ 733,
2396
+ 734,
2397
+ 735,
2398
+ 736,
2399
+ 737,
2400
+ 738,
2401
+ 739,
2402
+ 740,
2403
+ 741,
2404
+ 742,
2405
+ 743,
2406
+ 744,
2407
+ 745,
2408
+ 746,
2409
+ 747,
2410
+ 748,
2411
+ 749,
2412
+ 750,
2413
+ 751,
2414
+ 752,
2415
+ 753,
2416
+ 754,
2417
+ 755,
2418
+ 756,
2419
+ 757,
2420
+ 758,
2421
+ 759,
2422
+ 760,
2423
+ 761,
2424
+ 762,
2425
+ 763,
2426
+ 764,
2427
+ 765,
2428
+ 766,
2429
+ 767,
2430
+ 768,
2431
+ 769,
2432
+ 770,
2433
+ 771,
2434
+ 772,
2435
+ 773,
2436
+ 774,
2437
+ 775,
2438
+ 776,
2439
+ 777,
2440
+ 778,
2441
+ 779,
2442
+ 780,
2443
+ 781,
2444
+ 782,
2445
+ 783,
2446
+ 784,
2447
+ 785,
2448
+ 786,
2449
+ 787,
2450
+ 788,
2451
+ 789,
2452
+ 790,
2453
+ 791,
2454
+ 792,
2455
+ 793,
2456
+ 794,
2457
+ 795,
2458
+ 796,
2459
+ 797,
2460
+ 798,
2461
+ 799,
2462
+ 800,
2463
+ 801,
2464
+ 802,
2465
+ 803,
2466
+ 804,
2467
+ 805,
2468
+ 806,
2469
+ 807,
2470
+ 808,
2471
+ 809,
2472
+ 810,
2473
+ 811,
2474
+ 812,
2475
+ 813,
2476
+ 814,
2477
+ 815,
2478
+ 816,
2479
+ 817,
2480
+ 818,
2481
+ 819,
2482
+ 820,
2483
+ 821,
2484
+ 822,
2485
+ 823,
2486
+ 824,
2487
+ 825,
2488
+ 826,
2489
+ 827,
2490
+ 828,
2491
+ 829,
2492
+ 830,
2493
+ 831,
2494
+ 832,
2495
+ 833,
2496
+ 834,
2497
+ 835,
2498
+ 836,
2499
+ 837,
2500
+ 838,
2501
+ 839,
2502
+ 840,
2503
+ 841,
2504
+ 842,
2505
+ 843,
2506
+ 844,
2507
+ 845,
2508
+ 846,
2509
+ 847,
2510
+ 848,
2511
+ 849,
2512
+ 850,
2513
+ 851,
2514
+ 852,
2515
+ 853,
2516
+ 854,
2517
+ 855,
2518
+ 856,
2519
+ 857,
2520
+ 858,
2521
+ 859,
2522
+ 860,
2523
+ 861,
2524
+ 862,
2525
+ 863,
2526
+ 864,
2527
+ 865,
2528
+ 866,
2529
+ 867,
2530
+ 868,
2531
+ 869,
2532
+ 870,
2533
+ 871,
2534
+ 872,
2535
+ 873,
2536
+ 874,
2537
+ 875,
2538
+ 876,
2539
+ 877,
2540
+ 878,
2541
+ 879,
2542
+ 880,
2543
+ 881,
2544
+ 882,
2545
+ 883,
2546
+ 884,
2547
+ 885,
2548
+ 886,
2549
+ 887,
2550
+ 888,
2551
+ 889,
2552
+ 890,
2553
+ 891,
2554
+ 892,
2555
+ 893,
2556
+ 894,
2557
+ 895,
2558
+ 896,
2559
+ 897,
2560
+ 898,
2561
+ 899,
2562
+ 900,
2563
+ 901,
2564
+ 902,
2565
+ 903,
2566
+ 904,
2567
+ 905,
2568
+ 906,
2569
+ 907,
2570
+ 908,
2571
+ 909,
2572
+ 910,
2573
+ 911,
2574
+ 912,
2575
+ 913,
2576
+ 914,
2577
+ 915,
2578
+ 916,
2579
+ 917,
2580
+ 918,
2581
+ 919,
2582
+ 920,
2583
+ 921,
2584
+ 922,
2585
+ 923,
2586
+ 924,
2587
+ 925,
2588
+ 926,
2589
+ 927,
2590
+ 928,
2591
+ 929,
2592
+ 930,
2593
+ 931,
2594
+ 932,
2595
+ 933,
2596
+ 934,
2597
+ 935,
2598
+ 936,
2599
+ 937,
2600
+ 938,
2601
+ 939,
2602
+ 940,
2603
+ 941,
2604
+ 942,
2605
+ 943,
2606
+ 944,
2607
+ 945,
2608
+ 946,
2609
+ 947,
2610
+ 948,
2611
+ 949,
2612
+ 950,
2613
+ 951,
2614
+ 952,
2615
+ 953,
2616
+ 954,
2617
+ 955,
2618
+ 956,
2619
+ 957,
2620
+ 958,
2621
+ 959,
2622
+ 960,
2623
+ 961,
2624
+ 962,
2625
+ 963,
2626
+ 964,
2627
+ 965,
2628
+ 966,
2629
+ 967,
2630
+ 968,
2631
+ 969,
2632
+ 970,
2633
+ 971,
2634
+ 972,
2635
+ 973,
2636
+ 974,
2637
+ 975,
2638
+ 976,
2639
+ 977,
2640
+ 978,
2641
+ 979,
2642
+ 980,
2643
+ 981,
2644
+ 982,
2645
+ 983,
2646
+ 984,
2647
+ 985,
2648
+ 986,
2649
+ 987,
2650
+ 988,
2651
+ 989,
2652
+ 990,
2653
+ 991,
2654
+ 992,
2655
+ 993,
2656
+ 994,
2657
+ 995,
2658
+ 996,
2659
+ 997,
2660
+ 998,
2661
+ 999,
2662
+ 1000,
2663
+ 1001,
2664
+ 1002,
2665
+ 1003,
2666
+ 1004,
2667
+ 1005,
2668
+ 1006,
2669
+ 1007,
2670
+ 1008,
2671
+ 1009,
2672
+ 1010,
2673
+ 1011,
2674
+ 1012,
2675
+ 1013,
2676
+ 1014,
2677
+ 1015,
2678
+ 1016,
2679
+ 1017,
2680
+ 1018,
2681
+ 1019,
2682
+ 1020,
2683
+ 1021,
2684
+ 1022,
2685
+ 1023,
2686
+ 1024,
2687
+ 1025,
2688
+ 1026,
2689
+ 1027,
2690
+ 1028,
2691
+ 1029,
2692
+ 1030,
2693
+ 1031,
2694
+ 1032,
2695
+ 1033,
2696
+ 1034,
2697
+ 1035,
2698
+ 1036,
2699
+ 1037,
2700
+ 1038,
2701
+ 1039,
2702
+ 1040,
2703
+ 1041,
2704
+ 1042,
2705
+ 1043,
2706
+ 1044,
2707
+ 1045,
2708
+ 1046,
2709
+ 1047,
2710
+ 1048,
2711
+ 1049,
2712
+ 1050,
2713
+ 1051,
2714
+ 1052,
2715
+ 1053,
2716
+ 1054,
2717
+ 1055,
2718
+ 1056,
2719
+ 1057,
2720
+ 1058,
2721
+ 1059,
2722
+ 1060,
2723
+ 1061,
2724
+ 1062,
2725
+ 1063,
2726
+ 1064,
2727
+ 1065,
2728
+ 1066,
2729
+ 1067,
2730
+ 1068,
2731
+ 1069,
2732
+ 1070,
2733
+ 1071,
2734
+ 1072,
2735
+ 1073,
2736
+ 1074,
2737
+ 1075,
2738
+ 1076,
2739
+ 1077,
2740
+ 1078,
2741
+ 1079,
2742
+ 1080,
2743
+ 1081,
2744
+ 1082,
2745
+ 1083,
2746
+ 1084,
2747
+ 1085,
2748
+ 1086,
2749
+ 1087,
2750
+ 1088,
2751
+ 1089,
2752
+ 1090,
2753
+ 1091,
2754
+ 1092,
2755
+ 1093,
2756
+ 1094,
2757
+ 1095,
2758
+ 1096,
2759
+ 1097,
2760
+ 1098,
2761
+ 1099,
2762
+ 1100,
2763
+ 1101,
2764
+ 1102,
2765
+ 1103,
2766
+ 1104,
2767
+ 1105,
2768
+ 1106,
2769
+ 1107,
2770
+ 1108,
2771
+ 1109,
2772
+ 1110,
2773
+ 1111,
2774
+ 1112,
2775
+ 1113,
2776
+ 1114,
2777
+ 1115,
2778
+ 1116,
2779
+ 1117,
2780
+ 1118,
2781
+ 1119,
2782
+ 1120,
2783
+ 1121,
2784
+ 1122,
2785
+ 1123,
2786
+ 1124,
2787
+ 1125,
2788
+ 1126,
2789
+ 1127,
2790
+ 1128,
2791
+ 1129,
2792
+ 1130,
2793
+ 1131,
2794
+ 1132,
2795
+ 1133,
2796
+ 1134,
2797
+ 1135,
2798
+ 1136,
2799
+ 1137,
2800
+ 1138,
2801
+ 1139,
2802
+ 1140,
2803
+ 1141,
2804
+ 1142,
2805
+ 1143,
2806
+ 1144,
2807
+ 1145,
2808
+ 1146,
2809
+ 1147,
2810
+ 1148,
2811
+ 1149,
2812
+ 1150,
2813
+ 1151,
2814
+ 1152,
2815
+ 1153,
2816
+ 1154,
2817
+ 1155,
2818
+ 1156,
2819
+ 1157,
2820
+ 1158,
2821
+ 1159,
2822
+ 1160,
2823
+ 1161,
2824
+ 1162,
2825
+ 1163,
2826
+ 1164,
2827
+ 1165,
2828
+ 1166,
2829
+ 1167,
2830
+ 1168,
2831
+ 1169,
2832
+ 1170,
2833
+ 1171,
2834
+ 1172,
2835
+ 1173,
2836
+ 1174,
2837
+ 1175,
2838
+ 1176,
2839
+ 1177,
2840
+ 1178,
2841
+ 1179,
2842
+ 1180,
2843
+ 1181,
2844
+ 1182,
2845
+ 1183,
2846
+ 1184,
2847
+ 1185,
2848
+ 1186,
2849
+ 1187,
2850
+ 1188,
2851
+ 1189,
2852
+ 1190,
2853
+ 1191,
2854
+ 1192,
2855
+ 1193,
2856
+ 1194,
2857
+ 1195,
2858
+ 1196,
2859
+ 1197,
2860
+ 1198,
2861
+ 1199,
2862
+ 1200,
2863
+ 1201,
2864
+ 1202,
2865
+ 1203,
2866
+ 1204,
2867
+ 1205,
2868
+ 1206,
2869
+ 1207,
2870
+ 1208,
2871
+ 1209,
2872
+ 1210,
2873
+ 1211,
2874
+ 1212,
2875
+ 1213,
2876
+ 1214,
2877
+ 1215,
2878
+ 1216,
2879
+ 1217,
2880
+ 1218,
2881
+ 1219,
2882
+ 1220,
2883
+ 1221,
2884
+ 1222,
2885
+ 1223,
2886
+ 1224,
2887
+ 1225,
2888
+ 1226,
2889
+ 1227,
2890
+ 1228,
2891
+ 1229,
2892
+ 1230,
2893
+ 1231,
2894
+ 1232,
2895
+ 1233,
2896
+ 1234,
2897
+ 1235,
2898
+ 1236,
2899
+ 1237,
2900
+ 1238,
2901
+ 1239,
2902
+ 1240,
2903
+ 1241,
2904
+ 1242,
2905
+ 1243,
2906
+ 1244,
2907
+ 1245,
2908
+ 1246,
2909
+ 1247,
2910
+ 1248,
2911
+ 1249,
2912
+ 1250,
2913
+ 1251,
2914
+ 1252,
2915
+ 1253,
2916
+ 1254,
2917
+ 1255,
2918
+ 1256,
2919
+ 1257,
2920
+ 1258,
2921
+ 1259,
2922
+ 1260,
2923
+ 1261,
2924
+ 1262,
2925
+ 1263,
2926
+ 1264,
2927
+ 1265,
2928
+ 1266,
2929
+ 1267,
2930
+ 1268,
2931
+ 1269,
2932
+ 1270,
2933
+ 1271,
2934
+ 1272,
2935
+ 1273,
2936
+ 1274,
2937
+ 1275,
2938
+ 1276,
2939
+ 1277,
2940
+ 1278,
2941
+ 1279,
2942
+ 1280,
2943
+ 1281,
2944
+ 1282,
2945
+ 1283,
2946
+ 1284,
2947
+ 1285,
2948
+ 1286,
2949
+ 1287,
2950
+ 1288,
2951
+ 1289,
2952
+ 1290,
2953
+ 1291,
2954
+ 1292,
2955
+ 1293,
2956
+ 1294,
2957
+ 1295,
2958
+ 1296,
2959
+ 1297,
2960
+ 1298,
2961
+ 1299,
2962
+ 1300,
2963
+ 1301,
2964
+ 1302,
2965
+ 1303,
2966
+ 1304,
2967
+ 1305,
2968
+ 1306,
2969
+ 1307,
2970
+ 1308,
2971
+ 1309,
2972
+ 1310,
2973
+ 1311,
2974
+ 1312,
2975
+ 1313,
2976
+ 1314,
2977
+ 1315,
2978
+ 1316,
2979
+ 1317,
2980
+ 1318,
2981
+ 1319,
2982
+ 1320,
2983
+ 1321,
2984
+ 1322,
2985
+ 1323,
2986
+ 1324,
2987
+ 1325,
2988
+ 1326,
2989
+ 1327,
2990
+ 1328,
2991
+ 1329,
2992
+ 1330,
2993
+ 1331,
2994
+ 1332,
2995
+ 1333,
2996
+ 1334,
2997
+ 1335,
2998
+ 1336,
2999
+ 1337,
3000
+ 1338,
3001
+ 1339,
3002
+ 1340,
3003
+ 1341,
3004
+ 1342,
3005
+ 1343,
3006
+ 1344,
3007
+ 1345,
3008
+ 1346,
3009
+ 1347,
3010
+ 1348,
3011
+ 1349,
3012
+ 1350,
3013
+ 1351,
3014
+ 1352,
3015
+ 1353,
3016
+ 1354,
3017
+ 1355,
3018
+ 1356,
3019
+ 1357,
3020
+ 1358,
3021
+ 1359,
3022
+ 1360,
3023
+ 1361,
3024
+ 1362,
3025
+ 1363,
3026
+ 1364,
3027
+ 1365,
3028
+ 1366,
3029
+ 1367,
3030
+ 1368,
3031
+ 1369,
3032
+ 1370,
3033
+ 1371,
3034
+ 1372,
3035
+ 1373,
3036
+ 1374,
3037
+ 1375,
3038
+ 1376,
3039
+ 1377,
3040
+ 1378,
3041
+ 1379,
3042
+ 1380,
3043
+ 1381,
3044
+ 1382,
3045
+ 1383,
3046
+ 1384,
3047
+ 1385,
3048
+ 1386,
3049
+ 1387,
3050
+ 1388,
3051
+ 1389,
3052
+ 1390,
3053
+ 1391,
3054
+ 1392,
3055
+ 1393,
3056
+ 1394,
3057
+ 1395,
3058
+ 1396,
3059
+ 1397,
3060
+ 1398,
3061
+ 1399,
3062
+ 1400,
3063
+ 1401,
3064
+ 1402,
3065
+ 1403,
3066
+ 1404,
3067
+ 1405,
3068
+ 1406,
3069
+ 1407,
3070
+ 1408,
3071
+ 1409,
3072
+ 1410,
3073
+ 1411,
3074
+ 1412,
3075
+ 1413,
3076
+ 1414,
3077
+ 1415,
3078
+ 1416,
3079
+ 1417,
3080
+ 1418,
3081
+ 1419,
3082
+ 1420,
3083
+ 1421,
3084
+ 1422,
3085
+ 1423,
3086
+ 1424,
3087
+ 1425,
3088
+ 1426,
3089
+ 1427,
3090
+ 1428,
3091
+ 1429,
3092
+ 1430,
3093
+ 1431,
3094
+ 1432,
3095
+ 1433,
3096
+ 1434,
3097
+ 1435,
3098
+ 1436,
3099
+ 1437,
3100
+ 1438,
3101
+ 1439,
3102
+ 1440,
3103
+ 1441,
3104
+ 1442,
3105
+ 1443,
3106
+ 1444,
3107
+ 1445,
3108
+ 1446,
3109
+ 1447,
3110
+ 1448,
3111
+ 1449,
3112
+ 1450,
3113
+ 1451,
3114
+ 1452,
3115
+ 1453,
3116
+ 1454,
3117
+ 1455,
3118
+ 1456,
3119
+ 1457,
3120
+ 1458,
3121
+ 1459,
3122
+ 1460,
3123
+ 1461,
3124
+ 1462,
3125
+ 1463,
3126
+ 1464,
3127
+ 1465,
3128
+ 1466,
3129
+ 1467,
3130
+ 1468,
3131
+ 1469,
3132
+ 1470,
3133
+ 1471,
3134
+ 1472
3135
+ ],
3136
+ "scores": {
3137
+ "route": {
3138
+ "1.1": {
3139
+ "mean_track_error_km": {
3140
+ "value": 780.4956251297209,
3141
+ "storms": 230
3142
+ },
3143
+ "track_error_120h_km": {
3144
+ "value": 1617.68537007603,
3145
+ "storms": 230
3146
+ },
3147
+ "direction_error_deg": {
3148
+ "value": 51.35513468466848,
3149
+ "storms": 230
3150
+ },
3151
+ "shape_similarity": {
3152
+ "value": 0.756462863476536,
3153
+ "storms": 230
3154
+ },
3155
+ "track_error_by_lead_km": [
3156
+ 63.95070387461008,
3157
+ 129.56057152366327,
3158
+ 196.91757281750267,
3159
+ 266.29351479253165,
3160
+ 337.4313487866377,
3161
+ 408.5365624559959,
3162
+ 480.4125299649792,
3163
+ 554.0338033012117,
3164
+ 628.3701179860931,
3165
+ 704.556054381504,
3166
+ 783.1646921434294,
3167
+ 864.6586584087509,
3168
+ 949.2682475583533,
3169
+ 1035.1766032588005,
3170
+ 1125.2495149384633,
3171
+ 1218.047210654655,
3172
+ 1315.6802847719387,
3173
+ 1415.099441487216,
3174
+ 1515.8196994120542,
3175
+ 1617.6853700760307
3176
+ ]
3177
+ },
3178
+ "1.2": {
3179
+ "mean_track_error_km": {
3180
+ "value": 470.1683227329181,
3181
+ "storms": 230
3182
+ },
3183
+ "track_error_120h_km": {
3184
+ "value": 1022.9686679865174,
3185
+ "storms": 230
3186
+ },
3187
+ "direction_error_deg": {
3188
+ "value": 35.008663500237326,
3189
+ "storms": 230
3190
+ },
3191
+ "shape_similarity": {
3192
+ "value": 0.880227238887145,
3193
+ "storms": 230
3194
+ },
3195
+ "track_error_by_lead_km": [
3196
+ 48.00936024802012,
3197
+ 91.97411308450529,
3198
+ 131.2279581683132,
3199
+ 167.32238620520673,
3200
+ 201.3545994142221,
3201
+ 236.4041620555792,
3202
+ 272.8634618572267,
3203
+ 311.62044814780137,
3204
+ 353.54628740878155,
3205
+ 398.8030667186859,
3206
+ 448.4963800108917,
3207
+ 501.7638464578764,
3208
+ 557.7134662207559,
3209
+ 615.9415271471161,
3210
+ 677.1770146233011,
3211
+ 739.235914695639,
3212
+ 804.7389191190093,
3213
+ 874.8402182910024,
3214
+ 947.3646567979115,
3215
+ 1022.9686679865174
3216
+ ]
3217
+ },
3218
+ "deepmind": {
3219
+ "mean_track_error_km": {
3220
+ "value": 534.8619522162429,
3221
+ "storms": 230
3222
+ },
3223
+ "track_error_120h_km": {
3224
+ "value": 1082.253921983746,
3225
+ "storms": 230
3226
+ },
3227
+ "direction_error_deg": {
3228
+ "value": 41.2608569444939,
3229
+ "storms": 230
3230
+ },
3231
+ "shape_similarity": {
3232
+ "value": 0.8933690501351934,
3233
+ "storms": 230
3234
+ },
3235
+ "track_error_by_lead_km": [
3236
+ 114.73579161496248,
3237
+ 150.05176773716605,
3238
+ 186.62578636599312,
3239
+ 230.15185300349486,
3240
+ 269.44361640486176,
3241
+ 308.8927597927205,
3242
+ 350.43195179308117,
3243
+ 393.53364129433595,
3244
+ 432.49137917943165,
3245
+ 476.05487406828956,
3246
+ 517.4587499637993,
3247
+ 564.5613200677591,
3248
+ 620.1750658120939,
3249
+ 679.1636664565294,
3250
+ 737.6134951348805,
3251
+ 794.3707077948451,
3252
+ 855.8112853459712,
3253
+ 927.6904921578597,
3254
+ 1005.7269183530368,
3255
+ 1082.2539219837458
3256
+ ]
3257
+ }
3258
+ },
3259
+ "pressure": {
3260
+ "JMA": {
3261
+ "daily_cases": 0,
3262
+ "storms": 0,
3263
+ "common_lead_points": 0,
3264
+ "models": {
3265
+ "1.1": {
3266
+ "mae_hpa": {
3267
+ "value": null,
3268
+ "storms": 0,
3269
+ "daily_cases": 0
3270
+ },
3271
+ "curve_similarity": {
3272
+ "value": null,
3273
+ "storms": 0,
3274
+ "daily_cases": 0
3275
+ }
3276
+ },
3277
+ "1.2": {
3278
+ "mae_hpa": {
3279
+ "value": null,
3280
+ "storms": 0,
3281
+ "daily_cases": 0
3282
+ },
3283
+ "curve_similarity": {
3284
+ "value": null,
3285
+ "storms": 0,
3286
+ "daily_cases": 0
3287
+ }
3288
+ },
3289
+ "deepmind": {
3290
+ "mae_hpa": {
3291
+ "value": null,
3292
+ "storms": 0,
3293
+ "daily_cases": 0
3294
+ },
3295
+ "curve_similarity": {
3296
+ "value": null,
3297
+ "storms": 0,
3298
+ "daily_cases": 0
3299
+ }
3300
+ }
3301
+ }
3302
+ },
3303
+ "USA": {
3304
+ "daily_cases": 0,
3305
+ "storms": 0,
3306
+ "common_lead_points": 0,
3307
+ "models": {
3308
+ "1.1": {
3309
+ "mae_hpa": {
3310
+ "value": null,
3311
+ "storms": 0,
3312
+ "daily_cases": 0
3313
+ },
3314
+ "curve_similarity": {
3315
+ "value": null,
3316
+ "storms": 0,
3317
+ "daily_cases": 0
3318
+ }
3319
+ },
3320
+ "1.2": {
3321
+ "mae_hpa": {
3322
+ "value": null,
3323
+ "storms": 0,
3324
+ "daily_cases": 0
3325
+ },
3326
+ "curve_similarity": {
3327
+ "value": null,
3328
+ "storms": 0,
3329
+ "daily_cases": 0
3330
+ }
3331
+ },
3332
+ "deepmind": {
3333
+ "mae_hpa": {
3334
+ "value": null,
3335
+ "storms": 0,
3336
+ "daily_cases": 0
3337
+ },
3338
+ "curve_similarity": {
3339
+ "value": null,
3340
+ "storms": 0,
3341
+ "daily_cases": 0
3342
+ }
3343
+ }
3344
+ }
3345
+ }
3346
+ }
3347
+ }
3348
+ },
3349
+ "year_2024": {
3350
+ "daily_issues": 76,
3351
+ "storms": 22,
3352
+ "daily_issue_percentage": 5.159538357094365,
3353
+ "storm_percentage": 8.148148148148149,
3354
+ "years": [
3355
+ 2024
3356
+ ],
3357
+ "case_indices": [
3358
+ 0,
3359
+ 1,
3360
+ 2,
3361
+ 3,
3362
+ 4,
3363
+ 5,
3364
+ 6,
3365
+ 7,
3366
+ 8,
3367
+ 9,
3368
+ 10,
3369
+ 11,
3370
+ 12,
3371
+ 13,
3372
+ 14,
3373
+ 15,
3374
+ 16,
3375
+ 17,
3376
+ 18,
3377
+ 19,
3378
+ 20,
3379
+ 21,
3380
+ 22,
3381
+ 23,
3382
+ 24,
3383
+ 25,
3384
+ 26,
3385
+ 27,
3386
+ 28,
3387
+ 29,
3388
+ 30,
3389
+ 31,
3390
+ 32,
3391
+ 33,
3392
+ 34,
3393
+ 35,
3394
+ 36,
3395
+ 37,
3396
+ 38,
3397
+ 39,
3398
+ 40,
3399
+ 41,
3400
+ 42,
3401
+ 43,
3402
+ 44,
3403
+ 45,
3404
+ 46,
3405
+ 47,
3406
+ 48,
3407
+ 49,
3408
+ 50,
3409
+ 51,
3410
+ 52,
3411
+ 53,
3412
+ 54,
3413
+ 55,
3414
+ 56,
3415
+ 57,
3416
+ 58,
3417
+ 59,
3418
+ 60,
3419
+ 61,
3420
+ 62,
3421
+ 63,
3422
+ 64,
3423
+ 65,
3424
+ 66,
3425
+ 67,
3426
+ 68,
3427
+ 69,
3428
+ 70,
3429
+ 71,
3430
+ 72,
3431
+ 73,
3432
+ 74,
3433
+ 75
3434
+ ],
3435
+ "scores": {
3436
+ "route": {
3437
+ "1.1": {
3438
+ "mean_track_error_km": {
3439
+ "value": 851.069652650772,
3440
+ "storms": 22
3441
+ },
3442
+ "track_error_120h_km": {
3443
+ "value": 1716.8996534023747,
3444
+ "storms": 22
3445
+ },
3446
+ "direction_error_deg": {
3447
+ "value": 48.830011291962656,
3448
+ "storms": 22
3449
+ },
3450
+ "shape_similarity": {
3451
+ "value": 0.7689853663890921,
3452
+ "storms": 22
3453
+ },
3454
+ "track_error_by_lead_km": [
3455
+ 75.84128578430085,
3456
+ 146.50681221461048,
3457
+ 220.69811486013256,
3458
+ 290.65592313474764,
3459
+ 367.8132540402448,
3460
+ 438.4677690351893,
3461
+ 512.5382692171562,
3462
+ 584.3729276005962,
3463
+ 665.284293874995,
3464
+ 754.7709840834777,
3465
+ 852.0303372586964,
3466
+ 947.944750486554,
3467
+ 1052.617727498743,
3468
+ 1149.912829874128,
3469
+ 1257.3077928348841,
3470
+ 1356.8602615806035,
3471
+ 1456.4428740423764,
3472
+ 1543.1489683678344,
3473
+ 1631.2782238237926,
3474
+ 1716.899653402374
3475
+ ]
3476
+ },
3477
+ "1.2": {
3478
+ "mean_track_error_km": {
3479
+ "value": 483.5122014599372,
3480
+ "storms": 22
3481
+ },
3482
+ "track_error_120h_km": {
3483
+ "value": 1132.4632948293836,
3484
+ "storms": 22
3485
+ },
3486
+ "direction_error_deg": {
3487
+ "value": 35.38865344733253,
3488
+ "storms": 22
3489
+ },
3490
+ "shape_similarity": {
3491
+ "value": 0.9061199534324835,
3492
+ "storms": 22
3493
+ },
3494
+ "track_error_by_lead_km": [
3495
+ 49.09150874683278,
3496
+ 84.09210593828664,
3497
+ 114.24370109126707,
3498
+ 141.09471538601255,
3499
+ 173.7009974401082,
3500
+ 209.5794604324088,
3501
+ 251.45370314663168,
3502
+ 294.43956140634396,
3503
+ 340.88571107060386,
3504
+ 396.31768997158156,
3505
+ 445.79688240525445,
3506
+ 504.6446774791011,
3507
+ 561.5406567114486,
3508
+ 622.3233052894565,
3509
+ 694.6086502568785,
3510
+ 778.8725208152301,
3511
+ 869.8998539438417,
3512
+ 958.17313569473,
3513
+ 1047.0218971433453,
3514
+ 1132.4632948293834
3515
+ ]
3516
+ },
3517
+ "deepmind": {
3518
+ "mean_track_error_km": {
3519
+ "value": 312.9327101518539,
3520
+ "storms": 22
3521
+ },
3522
+ "track_error_120h_km": {
3523
+ "value": 790.9316045611957,
3524
+ "storms": 22
3525
+ },
3526
+ "direction_error_deg": {
3527
+ "value": 33.137944251888136,
3528
+ "storms": 22
3529
+ },
3530
+ "shape_similarity": {
3531
+ "value": 0.9355693909659393,
3532
+ "storms": 22
3533
+ },
3534
+ "track_error_by_lead_km": [
3535
+ 54.58902658137272,
3536
+ 65.7462960768359,
3537
+ 73.52168962701263,
3538
+ 92.86859769504566,
3539
+ 96.373597880233,
3540
+ 96.75232249961837,
3541
+ 130.8129603276949,
3542
+ 167.88138846810426,
3543
+ 186.6687173578555,
3544
+ 243.44197871338855,
3545
+ 291.3827143837273,
3546
+ 321.38732871822793,
3547
+ 370.096826684578,
3548
+ 408.1607304153433,
3549
+ 445.2089287625335,
3550
+ 497.0321066830775,
3551
+ 568.7128037344056,
3552
+ 640.3582397485433,
3553
+ 716.7263441182849,
3554
+ 790.9316045611957
3555
+ ]
3556
+ }
3557
+ },
3558
+ "pressure": {
3559
+ "JMA": {
3560
+ "daily_cases": 75,
3561
+ "storms": 22,
3562
+ "common_lead_points": 1463,
3563
+ "models": {
3564
+ "1.1": {
3565
+ "mae_hpa": {
3566
+ "value": 14.305578319402843,
3567
+ "storms": 22,
3568
+ "daily_cases": 75
3569
+ },
3570
+ "curve_similarity": {
3571
+ "value": 0.7263270694972225,
3572
+ "storms": 22,
3573
+ "daily_cases": 75
3574
+ }
3575
+ },
3576
+ "1.2": {
3577
+ "mae_hpa": {
3578
+ "value": 14.237999799728543,
3579
+ "storms": 22,
3580
+ "daily_cases": 75
3581
+ },
3582
+ "curve_similarity": {
3583
+ "value": 0.7044854731789147,
3584
+ "storms": 22,
3585
+ "daily_cases": 75
3586
+ }
3587
+ },
3588
+ "deepmind": {
3589
+ "mae_hpa": {
3590
+ "value": 10.723988313018564,
3591
+ "storms": 22,
3592
+ "daily_cases": 75
3593
+ },
3594
+ "curve_similarity": {
3595
+ "value": 0.8291562895738808,
3596
+ "storms": 22,
3597
+ "daily_cases": 75
3598
+ }
3599
+ }
3600
+ }
3601
+ },
3602
+ "USA": {
3603
+ "daily_cases": 75,
3604
+ "storms": 22,
3605
+ "common_lead_points": 1296,
3606
+ "models": {
3607
+ "1.1": {
3608
+ "mae_hpa": {
3609
+ "value": 13.485648768964092,
3610
+ "storms": 22,
3611
+ "daily_cases": 75
3612
+ },
3613
+ "curve_similarity": {
3614
+ "value": 0.7188777183776079,
3615
+ "storms": 22,
3616
+ "daily_cases": 73
3617
+ }
3618
+ },
3619
+ "1.2": {
3620
+ "mae_hpa": {
3621
+ "value": 14.532223993455476,
3622
+ "storms": 22,
3623
+ "daily_cases": 75
3624
+ },
3625
+ "curve_similarity": {
3626
+ "value": 0.6834798052872869,
3627
+ "storms": 22,
3628
+ "daily_cases": 73
3629
+ }
3630
+ },
3631
+ "deepmind": {
3632
+ "mae_hpa": {
3633
+ "value": 13.65917529227191,
3634
+ "storms": 22,
3635
+ "daily_cases": 75
3636
+ },
3637
+ "curve_similarity": {
3638
+ "value": 0.7463002937191867,
3639
+ "storms": 22,
3640
+ "daily_cases": 73
3641
+ }
3642
+ }
3643
+ }
3644
+ }
3645
+ }
3646
+ }
3647
+ },
3648
+ "after_2024": {
3649
+ "daily_issues": 61,
3650
+ "storms": 18,
3651
+ "daily_issue_percentage": 4.141208418194162,
3652
+ "storm_percentage": 6.666666666666667,
3653
+ "years": [
3654
+ 2025,
3655
+ 2026
3656
+ ],
3657
+ "case_indices": [
3658
+ 76,
3659
+ 77,
3660
+ 78,
3661
+ 79,
3662
+ 80,
3663
+ 81,
3664
+ 82,
3665
+ 83,
3666
+ 84,
3667
+ 85,
3668
+ 86,
3669
+ 87,
3670
+ 88,
3671
+ 89,
3672
+ 90,
3673
+ 91,
3674
+ 92,
3675
+ 93,
3676
+ 94,
3677
+ 95,
3678
+ 96,
3679
+ 97,
3680
+ 98,
3681
+ 99,
3682
+ 100,
3683
+ 101,
3684
+ 102,
3685
+ 103,
3686
+ 104,
3687
+ 105,
3688
+ 106,
3689
+ 107,
3690
+ 108,
3691
+ 109,
3692
+ 110,
3693
+ 111,
3694
+ 112,
3695
+ 113,
3696
+ 114,
3697
+ 115,
3698
+ 116,
3699
+ 117,
3700
+ 118,
3701
+ 119,
3702
+ 120,
3703
+ 121,
3704
+ 122,
3705
+ 123,
3706
+ 124,
3707
+ 125,
3708
+ 126,
3709
+ 127,
3710
+ 128,
3711
+ 129,
3712
+ 130,
3713
+ 131,
3714
+ 132,
3715
+ 133,
3716
+ 134,
3717
+ 135,
3718
+ 136
3719
+ ],
3720
+ "scores": {
3721
+ "route": {
3722
+ "1.1": {
3723
+ "mean_track_error_km": {
3724
+ "value": 963.0191970365182,
3725
+ "storms": 18
3726
+ },
3727
+ "track_error_120h_km": {
3728
+ "value": 1927.083631764508,
3729
+ "storms": 18
3730
+ },
3731
+ "direction_error_deg": {
3732
+ "value": 57.8772574074533,
3733
+ "storms": 18
3734
+ },
3735
+ "shape_similarity": {
3736
+ "value": 0.7099514872992113,
3737
+ "storms": 18
3738
+ },
3739
+ "track_error_by_lead_km": [
3740
+ 81.8025678517714,
3741
+ 167.61543586590366,
3742
+ 249.46663673120304,
3743
+ 341.4339485262844,
3744
+ 442.3354666246499,
3745
+ 542.0573263548533,
3746
+ 638.5165035666296,
3747
+ 727.733656555558,
3748
+ 819.5783752861557,
3749
+ 914.1994229096217,
3750
+ 1005.4446386913846,
3751
+ 1092.2378665683639,
3752
+ 1183.1996106784654,
3753
+ 1276.0686383677994,
3754
+ 1358.781115767807,
3755
+ 1452.2852603050856,
3756
+ 1562.3157892739691,
3757
+ 1679.9702151039908,
3758
+ 1798.2578339363579,
3759
+ 1927.083631764508
3760
+ ]
3761
+ },
3762
+ "1.2": {
3763
+ "mean_track_error_km": {
3764
+ "value": 469.40221083866464,
3765
+ "storms": 18
3766
+ },
3767
+ "track_error_120h_km": {
3768
+ "value": 1019.115437578709,
3769
+ "storms": 18
3770
+ },
3771
+ "direction_error_deg": {
3772
+ "value": 33.813490658008476,
3773
+ "storms": 18
3774
+ },
3775
+ "shape_similarity": {
3776
+ "value": 0.9007149531588161,
3777
+ "storms": 18
3778
+ },
3779
+ "track_error_by_lead_km": [
3780
+ 50.69021325356019,
3781
+ 88.9121274629723,
3782
+ 120.37932574202394,
3783
+ 156.76099181112943,
3784
+ 200.87826319453114,
3785
+ 247.11591543872177,
3786
+ 293.286386142183,
3787
+ 330.4964148606854,
3788
+ 367.85529009990427,
3789
+ 410.55564343641066,
3790
+ 463.41321358956753,
3791
+ 509.1475932923909,
3792
+ 562.0955928892587,
3793
+ 611.6495554072883,
3794
+ 663.130375481449,
3795
+ 716.2637314284851,
3796
+ 786.0488048665179,
3797
+ 851.5437432356528,
3798
+ 938.705597561852,
3799
+ 1019.1154375787087
3800
+ ]
3801
+ },
3802
+ "deepmind": {
3803
+ "mean_track_error_km": {
3804
+ "value": 258.6707762778929,
3805
+ "storms": 18
3806
+ },
3807
+ "track_error_120h_km": {
3808
+ "value": 683.1428345172344,
3809
+ "storms": 18
3810
+ },
3811
+ "direction_error_deg": {
3812
+ "value": 28.733081775997544,
3813
+ "storms": 18
3814
+ },
3815
+ "shape_similarity": {
3816
+ "value": 0.9568268841484324,
3817
+ "storms": 18
3818
+ },
3819
+ "track_error_by_lead_km": [
3820
+ 54.126420805821375,
3821
+ 46.94163120408546,
3822
+ 58.86616680989597,
3823
+ 80.01116161375951,
3824
+ 93.91638926857053,
3825
+ 106.49906129637235,
3826
+ 112.15867842312555,
3827
+ 123.9315897743232,
3828
+ 138.03670561437082,
3829
+ 167.59619992636138,
3830
+ 203.0298648721001,
3831
+ 230.36392606108677,
3832
+ 278.05828409161444,
3833
+ 337.2959678761665,
3834
+ 391.0225226751433,
3835
+ 443.31147180196325,
3836
+ 483.90485020308813,
3837
+ 549.1520881611517,
3838
+ 592.0497105616223,
3839
+ 683.1428345172343
3840
+ ]
3841
+ }
3842
+ },
3843
+ "pressure": {
3844
+ "JMA": {
3845
+ "daily_cases": 59,
3846
+ "storms": 18,
3847
+ "common_lead_points": 1174,
3848
+ "models": {
3849
+ "1.1": {
3850
+ "mae_hpa": {
3851
+ "value": 12.587267857142855,
3852
+ "storms": 18,
3853
+ "daily_cases": 59
3854
+ },
3855
+ "curve_similarity": {
3856
+ "value": 0.6842816751130856,
3857
+ "storms": 18,
3858
+ "daily_cases": 59
3859
+ }
3860
+ },
3861
+ "1.2": {
3862
+ "mae_hpa": {
3863
+ "value": 11.124838837640858,
3864
+ "storms": 18,
3865
+ "daily_cases": 59
3866
+ },
3867
+ "curve_similarity": {
3868
+ "value": 0.7208424466529877,
3869
+ "storms": 18,
3870
+ "daily_cases": 59
3871
+ }
3872
+ },
3873
+ "deepmind": {
3874
+ "mae_hpa": {
3875
+ "value": 9.554410767097337,
3876
+ "storms": 18,
3877
+ "daily_cases": 59
3878
+ },
3879
+ "curve_similarity": {
3880
+ "value": 0.7839132382856023,
3881
+ "storms": 18,
3882
+ "daily_cases": 59
3883
+ }
3884
+ }
3885
+ }
3886
+ },
3887
+ "USA": {
3888
+ "daily_cases": 59,
3889
+ "storms": 18,
3890
+ "common_lead_points": 1029,
3891
+ "models": {
3892
+ "1.1": {
3893
+ "mae_hpa": {
3894
+ "value": 12.041161414819193,
3895
+ "storms": 18,
3896
+ "daily_cases": 59
3897
+ },
3898
+ "curve_similarity": {
3899
+ "value": 0.7295482388430138,
3900
+ "storms": 18,
3901
+ "daily_cases": 58
3902
+ }
3903
+ },
3904
+ "1.2": {
3905
+ "mae_hpa": {
3906
+ "value": 10.133820579981911,
3907
+ "storms": 18,
3908
+ "daily_cases": 59
3909
+ },
3910
+ "curve_similarity": {
3911
+ "value": 0.6394734569751335,
3912
+ "storms": 18,
3913
+ "daily_cases": 58
3914
+ }
3915
+ },
3916
+ "deepmind": {
3917
+ "mae_hpa": {
3918
+ "value": 8.96523730598073,
3919
+ "storms": 18,
3920
+ "daily_cases": 59
3921
+ },
3922
+ "curve_similarity": {
3923
+ "value": 0.7423907051779878,
3924
+ "storms": 18,
3925
+ "daily_cases": 58
3926
+ }
3927
+ }
3928
+ }
3929
+ }
3930
+ }
3931
+ }
3932
+ }
3933
+ },
3934
+ "source_hashes": {
3935
+ "archive_sha256": "602425d3ff9284cce44fee4d3a75f50354b6e3f26f391f5402f72afabd762d45",
3936
+ "publication_audit_sha256": "52c767b46452a29341c024f24a774328ed6fd4169f5f28e923a81e01c641b222",
3937
+ "snapshot_sha256": "adff1baa1dbc38a6b443cfdd436cd7d4893c04241355c9eaf5004f439ce469a4",
3938
+ "protocol.json": "91b31582f24ffdd4f2309eddb0cc68498a2c31cab7cbabaf06f43dfbff413606",
3939
+ "verification.json": "8f29a767ab5db61cf6773f5806cc110789329b04db48361715e5b4c295545c89",
3940
+ "case-manifest.json": "30d35cfb79e809227fd0d255f9b5173ad18e781c7450ed4bbf0211553f8e63bd",
3941
+ "benchmark.json": "85a0965b7a87d400ccad67b437d05b2ac651055b8f4a473ff30fdd85ac778645"
3942
+ },
3943
+ "verified_case_score_files": 1473,
3944
+ "aggregation": "Valid leads within day, days within storm, then equal storm weight; identical original masks.",
3945
+ "proportion_definition": "Fractions of evaluation starts and storms, not proportions of model training data.",
3946
+ "pressure_definition": "Agency-specific central-pressure MAE/centred time-curve similarity, not map-grid MAE.",
3947
+ "missing_results_scored_as_zero": 0,
3948
+ "new_inference_performed": false,
3949
+ "model_weights_changed": false,
3950
+ "forecast_arrays_modified": false,
3951
+ "raw_inputs_reaudited": false,
3952
+ "notes": [
3953
+ "Historical years overlap Mini fitting years; do not call the combined cohort an unused temporal test.",
3954
+ "2024 is already after the checkpoint training cutoff, but is excluded from strict >2024.",
3955
+ "All-time pressure has smaller valid coverage than all-time track; counts are metric-specific.",
3956
+ "Different causal input pipelines and 50-member 1.2 versus one-member Mini; not an equal-compute comparison.",
3957
+ "Post-2024 dates alone do not certify an untouched holdout across earlier development experiments."
3958
+ ]
3959
+ }
evaluation/released_daily/model_1_2_after_2024_benchmark.json ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "source": "evaluation/deepmind_daily/period_comparison.json",
3
+ "source_sha256": "0aef2eb8b5f808e5100cbbe132af3dc3e5d2de6fefe7d92d916190049cdf25cb",
4
+ "chart": "evaluation/released_daily/model_1_2_after_2024_benchmark.png",
5
+ "chart_sha256": "e62fb38b56fdf47876efc6d748884bb95e81108dfb3bd7ac6e930db86ca3b5dc",
6
+ "period": "after_2024",
7
+ "period_definition": "UTC issue year > 2024 (2025 onward)",
8
+ "metrics": [
9
+ "pressure_JMA_hpa",
10
+ "mean_track_error_km",
11
+ "direction_error_deg"
12
+ ],
13
+ "values": {
14
+ "pressure_JMA_hpa": {
15
+ "1.1": 12.587267857142855,
16
+ "1.2": 11.124838837640858,
17
+ "deepmind": 9.554410767097337
18
+ },
19
+ "mean_track_error_km": {
20
+ "1.1": 963.0191970365182,
21
+ "1.2": 469.40221083866464,
22
+ "deepmind": 258.6707762778929
23
+ },
24
+ "direction_error_deg": {
25
+ "1.1": 57.8772574074533,
26
+ "1.2": 33.813490658008476,
27
+ "deepmind": 28.733081775997544
28
+ }
29
+ },
30
+ "deepmind_status": "complete_verified",
31
+ "deepmind_model": {
32
+ "key": "deepmind",
33
+ "label": "Google DeepMind WeatherNext Cyclones Mini (<2024)",
34
+ "model_checkpoint": "WeatherNextCyclones_Mini_<2024",
35
+ "software_version": "0.3.0",
36
+ "software_commit": "89c4b2a77a1c57b328b909c575550fd2e5aadc9c",
37
+ "trained_through": 2023,
38
+ "resolution_degrees": 1,
39
+ "member_count": 1,
40
+ "member_policy": "One official Mini member, seed 0",
41
+ "checkpoint_sha256": "a1bb151457077248d70a458b1a7b19deacd2926fbcb46eee4ff2691444e3596e",
42
+ "method": "Official predictor and initialized-storm tracker; causal ERA5; RTX 3070 CUDA",
43
+ "status": "complete_verified"
44
+ },
45
+ "models": [
46
+ "1.1",
47
+ "1.2",
48
+ "deepmind"
49
+ ],
50
+ "bars_per_panel": 3,
51
+ "error_bars": false,
52
+ "zero_fill": false,
53
+ "model_forecasts_modified": false,
54
+ "publication_audit_sha256": "52c767b46452a29341c024f24a774328ed6fd4169f5f28e923a81e01c641b222"
55
+ }
evaluation/released_daily/model_1_2_after_2024_benchmark.png ADDED

Git LFS Details

  • SHA256: e62fb38b56fdf47876efc6d748884bb95e81108dfb3bd7ac6e930db86ca3b5dc
  • Pointer size: 131 Bytes
  • Size of remote file: 209 kB
evaluation/released_daily/model_1_2_benchmark.json CHANGED
@@ -1,8 +1,10 @@
1
  {
2
- "source": "evaluation/released_daily/released_daily_benchmark.json",
3
- "source_sha256": "adff1baa1dbc38a6b443cfdd436cd7d4893c04241355c9eaf5004f439ce469a4",
4
  "chart": "evaluation/released_daily/model_1_2_benchmark.png",
5
- "chart_sha256": "a1aec843491af2c81c587410de9d9a478a7aae75c4b79ee4b95d2fd18ef9b2de",
 
 
6
  "metrics": [
7
  "pressure_JMA_hpa",
8
  "mean_track_error_km",
@@ -21,7 +23,7 @@
21
  },
22
  "direction_error_deg": {
23
  "1.1": 51.58419207122625,
24
- "1.2": 34.95994745459279,
25
  "deepmind": 39.76380497312257
26
  }
27
  },
 
1
  {
2
+ "source": "evaluation/deepmind_daily/period_comparison.json",
3
+ "source_sha256": "0aef2eb8b5f808e5100cbbe132af3dc3e5d2de6fefe7d92d916190049cdf25cb",
4
  "chart": "evaluation/released_daily/model_1_2_benchmark.png",
5
+ "chart_sha256": "ef201e3187496b476bef0281f854ac5d5e6f3143e7e2152d3f9795e3b20ccc1f",
6
+ "period": "total",
7
+ "period_definition": "All 1,473 frozen daily starts",
8
  "metrics": [
9
  "pressure_JMA_hpa",
10
  "mean_track_error_km",
 
23
  },
24
  "direction_error_deg": {
25
  "1.1": 51.58419207122625,
26
+ "1.2": 34.959947454592786,
27
  "deepmind": 39.76380497312257
28
  }
29
  },
evaluation/released_daily/model_1_2_benchmark.png CHANGED

Git LFS Details

  • SHA256: a1aec843491af2c81c587410de9d9a478a7aae75c4b79ee4b95d2fd18ef9b2de
  • Pointer size: 131 Bytes
  • Size of remote file: 203 kB

Git LFS Details

  • SHA256: ef201e3187496b476bef0281f854ac5d5e6f3143e7e2152d3f9795e3b20ccc1f
  • Pointer size: 131 Bytes
  • Size of remote file: 204 kB
release_tools/build_deepmind_period_comparison.py ADDED
@@ -0,0 +1,171 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Audit and partition completed CUDA scores; never run or change a forecast.
2
+
3
+ The frozen worker export stays byte-for-byte intact. This derivative uses UTC
4
+ issue years, not model version strings or storm-name matching. Calendar 2024
5
+ is a separate boundary group: after_2024 always means 2025 onward.
6
+ """
7
+ from __future__ import annotations
8
+
9
+ import argparse
10
+ from collections import defaultdict
11
+ from datetime import datetime
12
+ import hashlib
13
+ import json
14
+ from pathlib import Path
15
+ import zipfile
16
+
17
+ from deepmind_daily_benchmark import aggregate, STEP_NS
18
+ from import_deepmind_release_results import ROOT, same, validate_identity
19
+
20
+ FOLDER = ROOT / 'evaluation/deepmind_daily'
21
+ DEST = FOLDER / 'period_comparison.json'
22
+ MODELS = ('1.1', '1.2', 'deepmind')
23
+
24
+
25
+ def sha(path):
26
+ with Path(path).open('rb') as stream:
27
+ return hashlib.file_digest(stream, 'sha256').hexdigest()
28
+
29
+
30
+ def require(condition, message):
31
+ if not condition:
32
+ raise ValueError(message)
33
+
34
+
35
+ def period_key(issue_time):
36
+ issue = datetime.fromisoformat(issue_time.replace('Z', '+00:00'))
37
+ require(issue.utcoffset().total_seconds() == 0, 'Issue date must be UTC')
38
+ return 'before_2024' if issue.year < 2024 else 'year_2024' if issue.year == 2024 else 'after_2024'
39
+
40
+
41
+ def summarize(records, total_issues, total_storms):
42
+ groups = defaultdict(list)
43
+ for record in records:
44
+ groups[record['storm_id']].append(record)
45
+ return {
46
+ 'daily_issues': len(records),
47
+ 'storms': len(groups),
48
+ 'daily_issue_percentage': 100 * len(records) / total_issues,
49
+ 'storm_percentage': 100 * len(groups) / total_storms,
50
+ 'years': sorted({int(r['issue_time_utc'][:4]) for r in records}),
51
+ 'case_indices': sorted(r['case_index'] for r in records),
52
+ 'scores': aggregate(groups),
53
+ }
54
+
55
+
56
+ def build(archive):
57
+ protocol = json.loads((FOLDER / 'protocol.json').read_text())
58
+ exported = json.loads((FOLDER / 'benchmark.json').read_text())
59
+ receipt = json.loads((FOLDER / 'verification.json').read_text())
60
+ audit = json.loads((FOLDER / 'publication_audit.json').read_text())
61
+ snapshot_path = ROOT / 'evaluation/released_daily/released_daily_benchmark.json'
62
+ snapshot = json.loads(snapshot_path.read_text())
63
+ validate_identity(protocol, receipt, exported)
64
+ require(audit['status'] == 'complete_verified', 'Missing original publication audit')
65
+ require(sha(archive) == audit['archive_sha256'], 'Different result archive')
66
+ require(sha(snapshot_path) == audit['snapshot_sha256'], 'Different original comparison')
67
+ for name, expected in audit['imported_files_sha256'].items():
68
+ require(sha(FOLDER / name) == expected, 'Changed frozen export: ' + name)
69
+
70
+ records = []
71
+ with zipfile.ZipFile(archive) as bundle:
72
+ names = bundle.namelist()
73
+ require(len(names) == len(set(names)), 'Duplicate ZIP entries')
74
+ manifest_bytes = bundle.read('results/case-manifest.json')
75
+ require(hashlib.sha256(manifest_bytes).hexdigest() == sha(FOLDER / 'case-manifest.json'),
76
+ 'Archive case manifest differs')
77
+ items = {r['path']: r for r in json.loads(manifest_bytes)['files']}
78
+ for case in protocol['cases']:
79
+ path = f"cases/{case['case_index']:05d}.json"
80
+ content = bundle.read('results/' + path)
81
+ require(len(content) == items[path]['bytes'] and
82
+ hashlib.sha256(content).hexdigest() == items[path]['sha256'],
83
+ 'Case score hash differs: ' + path)
84
+ record = json.loads(content)
85
+ require(all(record.get(k) == v for k, v in case.items()), 'Case identity differs: ' + path)
86
+ require(record['status'] == 'complete' and record['backend'] == 'cuda' and
87
+ record['members'] == 1 and record['gpu_verified_steps'] == 20 and
88
+ record['verified_device_steps'] == 20, 'Incomplete CUDA case: ' + path)
89
+ require(record['checkpoint_sha256'] == protocol['checkpoint_sha256'] and
90
+ record['protocol_sha256'] == receipt['protocol_sha256'], 'Model identity differs')
91
+ require(record['input_time_ns'] == [case['issue_ns'] - STEP_NS, case['issue_ns']] and
92
+ not record['future_weather_used'] and not record['future_storm_labels_used'],
93
+ 'Noncausal input metadata')
94
+ for agency, pressure in record['pressure_metrics'].items():
95
+ if not pressure['valid_leads']:
96
+ continue
97
+ masks = [[value is not None for value in pressure['models'][m]['error_by_lead_hpa']]
98
+ for m in MODELS]
99
+ require(masks[0] == masks[1] == masks[2] and sum(masks[0]) == pressure['valid_leads'],
100
+ 'Different pressure support: ' + agency)
101
+ shapes = [pressure['models'][m]['curve_similarity'] is not None for m in MODELS]
102
+ require(shapes[0] == shapes[1] == shapes[2], 'Different pressure-curve support')
103
+ records.append(record)
104
+
105
+ total_issues, total_storms = 1473, 270
106
+ require(len(records) == total_issues and len({r['storm_id'] for r in records}) == total_storms,
107
+ 'Incomplete case/storm coverage')
108
+ bins = {key: [r for r in records if period_key(r['issue_time_utc']) == key]
109
+ for key in ('before_2024', 'year_2024', 'after_2024')}
110
+ periods = {'total': summarize(records, total_issues, total_storms),
111
+ **{key: summarize(rows, total_issues, total_storms) for key, rows in bins.items()}}
112
+ same(periods['total']['scores'], exported['aggregate_equal_complete_storm'], 'Original total scores')
113
+ original_groups = defaultdict(list)
114
+ for record in records:
115
+ original_groups[record['storm_id']].append(record)
116
+ for key, expected in exported['periods'].items():
117
+ same(aggregate({sid: days for sid, days in original_groups.items() if days[0]['period'] == key}),
118
+ expected, 'Original period scores: ' + key)
119
+ require(set(periods['before_2024']['case_indices']).isdisjoint(periods['after_2024']['case_indices']),
120
+ 'Overlapping temporal subsets')
121
+ require(sum(len(rows) for rows in bins.values()) == total_issues, 'Partition does not cover total')
122
+ require(sum(len({r['storm_id'] for r in rows}) for rows in bins.values()) == total_storms,
123
+ 'Storm crosses year bins; do not imply additive equal-storm weights')
124
+ reference = next(m for m in snapshot['models'] if m['key'] == 'deepmind')
125
+ return {
126
+ 'schema': 'deepmind-completed-utc-period-comparison-v1',
127
+ 'status': 'complete_verified',
128
+ 'model': reference,
129
+ 'single_checkpoint_across_all_periods': True,
130
+ 'cohort': exported['cohort'],
131
+ 'period_definition': {'before_2024': 'UTC issue year < 2024',
132
+ 'year_2024': 'UTC issue year == 2024',
133
+ 'after_2024': 'UTC issue year > 2024 (2025 onward)',
134
+ 'total': 'All 1,473 frozen daily starts'},
135
+ 'periods': periods,
136
+ 'source_hashes': {'archive_sha256': audit['archive_sha256'],
137
+ 'publication_audit_sha256': sha(FOLDER / 'publication_audit.json'),
138
+ 'snapshot_sha256': sha(snapshot_path),
139
+ **{name: sha(FOLDER / name) for name in
140
+ ('protocol.json', 'verification.json', 'case-manifest.json', 'benchmark.json')}},
141
+ 'verified_case_score_files': total_issues,
142
+ 'aggregation': 'Valid leads within day, days within storm, then equal storm weight; identical original masks.',
143
+ 'proportion_definition': 'Fractions of evaluation starts and storms, not proportions of model training data.',
144
+ 'pressure_definition': 'Agency-specific central-pressure MAE/centred time-curve similarity, not map-grid MAE.',
145
+ 'missing_results_scored_as_zero': 0,
146
+ 'new_inference_performed': False,
147
+ 'model_weights_changed': False,
148
+ 'forecast_arrays_modified': False,
149
+ 'raw_inputs_reaudited': False,
150
+ 'notes': ['Historical years overlap Mini fitting years; do not call the combined cohort an unused temporal test.',
151
+ '2024 is already after the checkpoint training cutoff, but is excluded from strict >2024.',
152
+ 'All-time pressure has smaller valid coverage than all-time track; counts are metric-specific.',
153
+ 'Different causal input pipelines and 50-member 1.2 versus one-member Mini; not an equal-compute comparison.',
154
+ 'Post-2024 dates alone do not certify an untouched holdout across earlier development experiments.'],
155
+ }
156
+
157
+
158
+ def main():
159
+ parser = argparse.ArgumentParser(description=__doc__)
160
+ parser.add_argument('--archive', type=Path, required=True)
161
+ args = parser.parse_args()
162
+ result = build(args.archive)
163
+ DEST.write_text(json.dumps(result, indent=2, allow_nan=False) + '\n')
164
+ print(json.dumps({'status': result['status'], 'output': str(DEST),
165
+ 'periods': {k: {n: v[n] for n in
166
+ ('daily_issues', 'storms', 'daily_issue_percentage', 'storm_percentage')}
167
+ for k, v in result['periods'].items()}}, indent=2))
168
+
169
+
170
+ if __name__ == '__main__':
171
+ main()
release_tools/plot_model_announcement.py CHANGED
@@ -10,6 +10,22 @@ import numpy as np
10
  ROOT = Path(__file__).resolve().parents[1]
11
  SOURCE = ROOT/'evaluation/released_daily/released_daily_benchmark.json'
12
  DEST = ROOT/'evaluation/released_daily/model_1_2_benchmark.png'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
 
14
 
15
  def main():
@@ -20,17 +36,28 @@ def main():
20
  audit = json.loads((ROOT/'evaluation/deepmind_daily/publication_audit.json').read_text())
21
  if reference['status'] != 'complete_verified' or audit['snapshot_sha256'] != hashlib.sha256(SOURCE.read_bytes()).hexdigest():
22
  raise ValueError('DeepMind bars require the matching independent publication audit')
23
- metrics = {m['key']: m for m in source['metrics']}
 
 
 
 
 
 
 
 
 
 
 
24
  models = ('1.1', '1.2', 'deepmind')
25
  plt.rcParams.update({'font.family': 'DejaVu Sans', 'font.size': 11,
26
  'axes.spines.top': False, 'axes.spines.right': False,
27
  'axes.spines.left': False, 'axes.spines.bottom': False})
28
  fig, axes = plt.subplots(1, 3, figsize=(15.2, 6.1))
29
  fig.set_facecolor('#f6f8fc')
30
- specs = [('pressure_JMA_hpa', 'Pressure intensity', 'Central-pressure MAE · hPa', 18, 2),
31
- ('mean_track_error_km', 'Track position', 'Mean position error · km', 1050, 1),
32
- ('direction_error_deg', 'Track direction', 'Six-hour heading error · degrees', 65, 2)]
33
- for ax, (key, title, label, maximum, digits) in zip(axes, specs):
34
  row = metrics[key]
35
  values = [row['values'][k] for k in models]
36
  if any(v is None or not np.isfinite(v) or v < 0 for v in values):
@@ -43,29 +70,35 @@ def main():
43
  ax.text(x, value+maximum*.038, f'{value:,.{digits}f}', ha='center',
44
  fontsize=17, fontweight='bold', color='#21334c')
45
  ax.set_ylim(0, maximum)
46
- ax.set_xticks([0, 1, 2], ['1.1', '1.2\nmean of 50', 'DeepMind Mini\none member'])
47
  ax.tick_params(axis='both', length=0, labelcolor='#53647c')
48
- ax.set_title(title, loc='left', fontsize=16, fontweight='bold', color='#21334c', pad=38)
49
  ax.text(0, 1.03, label, transform=ax.transAxes, color='#53647c', fontsize=10)
50
  coverage = row['coverage']
51
- ax.text(.5, -.225, f"{coverage['daily_issues']:,} daily starts / {coverage['storms']} storms",
52
  transform=ax.transAxes, ha='center', color='#53647c', fontsize=10)
53
- fig.text(.055, .945, 'Trackformer 1.2 · matched model comparison', fontsize=23, fontweight='bold', color='#182b45')
54
- fig.text(.055, .895, 'Matched five-day forecasts · equal weight per storm · lower is better', fontsize=12, color='#53647c')
55
- fig.text(.055, .095, 'DeepMind: WeatherNext Cyclones Mini <2024 · software v0.3.0 · 1° · RTX 3070 CUDA · all 1,473 forecasts verified.', fontsize=10, color='#53647c')
56
- fig.text(.055, .057, 'Mean errors, not significance claims. Mixed historical/recent cohort; Mini has better recent-only track scores. Different pipelines/member policies.', fontsize=10, color='#53647c')
57
- fig.subplots_adjust(left=.055, right=.975, top=.735, bottom=.29, wspace=.36)
58
- fig.savefig(DEST, dpi=180, facecolor=fig.get_facecolor())
 
 
 
 
 
59
  plt.close(fig)
60
- receipt = {'source': SOURCE.relative_to(ROOT).as_posix(), 'source_sha256': hashlib.sha256(SOURCE.read_bytes()).hexdigest(),
61
- 'chart': DEST.relative_to(ROOT).as_posix(), 'chart_sha256': hashlib.sha256(DEST.read_bytes()).hexdigest(),
 
62
  'metrics': [s[0] for s in specs], 'values': {k: metrics[k]['values'] for k, *_ in specs},
63
  'deepmind_status': 'complete_verified', 'deepmind_model': reference,
64
  'models': list(models), 'bars_per_panel': 3, 'error_bars': False,
65
  'zero_fill': False, 'model_forecasts_modified': False,
66
  'publication_audit_sha256': hashlib.sha256((ROOT/'evaluation/deepmind_daily/publication_audit.json').read_bytes()).hexdigest()}
67
- DEST.with_suffix('.json').write_text(json.dumps(receipt, indent=2)+'\n')
68
- print(json.dumps(receipt, indent=2))
69
 
70
 
71
  if __name__ == '__main__':
 
10
  ROOT = Path(__file__).resolve().parents[1]
11
  SOURCE = ROOT/'evaluation/released_daily/released_daily_benchmark.json'
12
  DEST = ROOT/'evaluation/released_daily/model_1_2_benchmark.png'
13
+ PERIOD_SOURCE = ROOT/'evaluation/deepmind_daily/period_comparison.json'
14
+ POST_DEST = ROOT/'evaluation/released_daily/model_1_2_after_2024_benchmark.png'
15
+
16
+
17
+ def period_metrics(period):
18
+ scores = period['scores']
19
+ pressure = scores['pressure']['JMA']
20
+ return {
21
+ 'pressure_JMA_hpa': {
22
+ 'values': {m: pressure['models'][m]['mae_hpa']['value'] for m in ('1.1', '1.2', 'deepmind')},
23
+ 'coverage': {'daily_issues': pressure['daily_cases'], 'storms': pressure['storms']},
24
+ },
25
+ **{key: {'values': {m: scores['route'][m][key]['value'] for m in ('1.1', '1.2', 'deepmind')},
26
+ 'coverage': {'daily_issues': period['daily_issues'], 'storms': period['storms']}}
27
+ for key in ('mean_track_error_km', 'direction_error_deg')},
28
+ }
29
 
30
 
31
  def main():
 
36
  audit = json.loads((ROOT/'evaluation/deepmind_daily/publication_audit.json').read_text())
37
  if reference['status'] != 'complete_verified' or audit['snapshot_sha256'] != hashlib.sha256(SOURCE.read_bytes()).hexdigest():
38
  raise ValueError('DeepMind bars require the matching independent publication audit')
39
+ periods = json.loads(PERIOD_SOURCE.read_text())
40
+ if periods['status'] != 'complete_verified' or periods['source_hashes']['snapshot_sha256'] != hashlib.sha256(SOURCE.read_bytes()).hexdigest():
41
+ raise ValueError('Period comparison requires the exact original audited snapshot')
42
+ if periods['model'] != reference or not periods['single_checkpoint_across_all_periods']:
43
+ raise ValueError('Period groups are not different checkpoint generations')
44
+ for key, dest, title in (('total', DEST, 'Total · mixed-year comparison'),
45
+ ('after_2024', POST_DEST, 'After 2024 · 2025–2026 comparison')):
46
+ metrics = period_metrics(periods['periods'][key])
47
+ draw_chart(metrics, reference, periods, key, dest, title)
48
+
49
+
50
+ def draw_chart(metrics, reference, periods, period_key, dest, title):
51
  models = ('1.1', '1.2', 'deepmind')
52
  plt.rcParams.update({'font.family': 'DejaVu Sans', 'font.size': 11,
53
  'axes.spines.top': False, 'axes.spines.right': False,
54
  'axes.spines.left': False, 'axes.spines.bottom': False})
55
  fig, axes = plt.subplots(1, 3, figsize=(15.2, 6.1))
56
  fig.set_facecolor('#f6f8fc')
57
+ specs = [('pressure_JMA_hpa', 'Pressure intensity', 'Central-pressure MAE · hPa', 20, 2),
58
+ ('mean_track_error_km', 'Track position', 'Mean position error · km', 1200, 1),
59
+ ('direction_error_deg', 'Track direction', 'Six-hour heading error · degrees', 75, 2)]
60
+ for ax, (key, panel_title, label, maximum, digits) in zip(axes, specs):
61
  row = metrics[key]
62
  values = [row['values'][k] for k in models]
63
  if any(v is None or not np.isfinite(v) or v < 0 for v in values):
 
70
  ax.text(x, value+maximum*.038, f'{value:,.{digits}f}', ha='center',
71
  fontsize=17, fontweight='bold', color='#21334c')
72
  ax.set_ylim(0, maximum)
73
+ ax.set_xticks([0, 1, 2], ['1.1', '1.2\nmean of 50', 'DeepMind Mini\n<2024 · 1 member'])
74
  ax.tick_params(axis='both', length=0, labelcolor='#53647c')
75
+ ax.set_title(panel_title, loc='left', fontsize=16, fontweight='bold', color='#21334c', pad=38)
76
  ax.text(0, 1.03, label, transform=ax.transAxes, color='#53647c', fontsize=10)
77
  coverage = row['coverage']
78
+ ax.text(.5, -.33, f"{coverage['daily_issues']:,} daily starts / {coverage['storms']} storms",
79
  transform=ax.transAxes, ha='center', color='#53647c', fontsize=10)
80
+ fig.text(.055, .945, title, fontsize=23, fontweight='bold', color='#182b45')
81
+ fig.text(.055, .89, 'DeepMind = WeatherNext Cyclones Mini <2024 · software v0.3.0 · 1° · one CUDA member', fontsize=12, color='#53647c')
82
+ fig.text(.055, .84, 'Same saved forecasts and valid times · +6 to +120 h · equal storm weight · lower is better', fontsize=11, color='#53647c')
83
+ if period_key == 'total':
84
+ note = 'Storm proportions: <2024 85.2% · 2024 8.1% · >2024 6.7%. Historical dates overlap Mini fitting years.'
85
+ else:
86
+ note = 'Strict UTC issue year >2024: 61 starts / 18 storms. Calendar 2024 is excluded, not counted as >2024.'
87
+ fig.text(.055, .09, note, fontsize=10, color='#53647c')
88
+ fig.text(.055, .052, 'Pressure coverage is smaller than track coverage. Missing is not zero. Different pipelines/member counts; no significance or unused-holdout claim.', fontsize=9.5, color='#53647c')
89
+ fig.subplots_adjust(left=.055, right=.975, top=.705, bottom=.32, wspace=.36)
90
+ fig.savefig(dest, dpi=180, facecolor=fig.get_facecolor())
91
  plt.close(fig)
92
+ receipt = {'source': PERIOD_SOURCE.relative_to(ROOT).as_posix(), 'source_sha256': hashlib.sha256(PERIOD_SOURCE.read_bytes()).hexdigest(),
93
+ 'chart': dest.relative_to(ROOT).as_posix(), 'chart_sha256': hashlib.sha256(dest.read_bytes()).hexdigest(),
94
+ 'period': period_key, 'period_definition': periods['period_definition'][period_key],
95
  'metrics': [s[0] for s in specs], 'values': {k: metrics[k]['values'] for k, *_ in specs},
96
  'deepmind_status': 'complete_verified', 'deepmind_model': reference,
97
  'models': list(models), 'bars_per_panel': 3, 'error_bars': False,
98
  'zero_fill': False, 'model_forecasts_modified': False,
99
  'publication_audit_sha256': hashlib.sha256((ROOT/'evaluation/deepmind_daily/publication_audit.json').read_bytes()).hexdigest()}
100
+ dest.with_suffix('.json').write_text(json.dumps(receipt, indent=2)+'\n')
101
+ print(json.dumps({'chart': receipt['chart'], 'period': period_key, 'values': receipt['values']}))
102
 
103
 
104
  if __name__ == '__main__':
release_tools/sync_public_model_cards.py CHANGED
@@ -23,6 +23,7 @@ HF = 'https://huggingface.co/' + REPO
23
  FILMS = ('mangkhut',)
24
  CURRENT_FIGURES = frozenset((
25
  'evaluation/released_daily/model_1_2_benchmark.png',
 
26
  'docs/trackformer_1_2_architecture.svg',
27
  ))
28
  SYNC_FILES = (
@@ -40,6 +41,8 @@ SYNC_FILES = (
40
  'release_tools/plot_release_pressure_benchmark.py',
41
  'release_tools/plot_daily_storm_final.py',
42
  'release_tools/plot_model_announcement.py',
 
 
43
  'release_tools/import_deepmind_release_results.py',
44
  'release_tools/test_deepmind_release_results.py',
45
  'release_tools/build_mangkhut_gif.py',
@@ -63,12 +66,15 @@ SYNC_FILES = (
63
  'evaluation/released_daily/pressure_comparison.png',
64
  'evaluation/released_daily/model_1_2_benchmark.png',
65
  'evaluation/released_daily/model_1_2_benchmark.json',
 
 
66
  'evaluation/deepmind_daily/benchmark.json',
67
  'evaluation/deepmind_daily/verification.json',
68
  'evaluation/deepmind_daily/publication_audit.json',
69
  'evaluation/deepmind_daily/protocol.json',
70
  'evaluation/deepmind_daily/case-manifest.json',
71
  'evaluation/deepmind_daily/canary.json',
 
72
  )
73
 
74
 
@@ -181,13 +187,13 @@ def run(output, publish=False):
181
  # immutable commit in the card. Never pin new bytes to the old movie
182
  # revision or let a missing future image render as a stale figure.
183
  assets = api.create_commit(repo_id=REPO, repo_type='model', parent_commit=parent,
184
- commit_message='Publish completed WeatherNext Cyclones Mini daily comparison and audited three-model chart',
185
  operations=[CommitOperationAdd(path_in_repo=name, path_or_fileobj=str(ROOT/name)) for name in SYNC_FILES])
186
  card_path.write_text(render_card(original.read_text(), github, assets.oid))
187
  receipt['files']['README.md'] = sha(card_path)
188
  receipt['figure_revision'] = assets.oid
189
  committed = api.create_commit(repo_id=REPO, repo_type='model', parent_commit=assets.oid,
190
- commit_message='Update Trackformer 1.2 model card with completed DeepMind CUDA benchmark',
191
  operations=[CommitOperationAdd(path_in_repo='README.md', path_or_fileobj=str(card_path))])
192
  for name, expected in receipt['files'].items():
193
  saved = hf_hub_download(REPO, name, revision=committed.oid, cache_dir=CACHE)
 
23
  FILMS = ('mangkhut',)
24
  CURRENT_FIGURES = frozenset((
25
  'evaluation/released_daily/model_1_2_benchmark.png',
26
+ 'evaluation/released_daily/model_1_2_after_2024_benchmark.png',
27
  'docs/trackformer_1_2_architecture.svg',
28
  ))
29
  SYNC_FILES = (
 
41
  'release_tools/plot_release_pressure_benchmark.py',
42
  'release_tools/plot_daily_storm_final.py',
43
  'release_tools/plot_model_announcement.py',
44
+ 'release_tools/build_deepmind_period_comparison.py',
45
+ 'release_tools/test_deepmind_period_comparison.py',
46
  'release_tools/import_deepmind_release_results.py',
47
  'release_tools/test_deepmind_release_results.py',
48
  'release_tools/build_mangkhut_gif.py',
 
66
  'evaluation/released_daily/pressure_comparison.png',
67
  'evaluation/released_daily/model_1_2_benchmark.png',
68
  'evaluation/released_daily/model_1_2_benchmark.json',
69
+ 'evaluation/released_daily/model_1_2_after_2024_benchmark.png',
70
+ 'evaluation/released_daily/model_1_2_after_2024_benchmark.json',
71
  'evaluation/deepmind_daily/benchmark.json',
72
  'evaluation/deepmind_daily/verification.json',
73
  'evaluation/deepmind_daily/publication_audit.json',
74
  'evaluation/deepmind_daily/protocol.json',
75
  'evaluation/deepmind_daily/case-manifest.json',
76
  'evaluation/deepmind_daily/canary.json',
77
+ 'evaluation/deepmind_daily/period_comparison.json',
78
  )
79
 
80
 
 
187
  # immutable commit in the card. Never pin new bytes to the old movie
188
  # revision or let a missing future image render as a stale figure.
189
  assets = api.create_commit(repo_id=REPO, repo_type='model', parent_commit=parent,
190
+ commit_message='Publish exact Mini <2024 identity, UTC proportions and total/post-2024 comparison charts',
191
  operations=[CommitOperationAdd(path_in_repo=name, path_or_fileobj=str(ROOT/name)) for name in SYNC_FILES])
192
  card_path.write_text(render_card(original.read_text(), github, assets.oid))
193
  receipt['files']['README.md'] = sha(card_path)
194
  receipt['figure_revision'] = assets.oid
195
  committed = api.create_commit(repo_id=REPO, repo_type='model', parent_commit=assets.oid,
196
+ commit_message='Show completed Mini <2024 results with separate total and post-2024 benchmarks',
197
  operations=[CommitOperationAdd(path_in_repo='README.md', path_or_fileobj=str(card_path))])
198
  for name, expected in receipt['files'].items():
199
  saved = hf_hub_download(REPO, name, revision=committed.oid, cache_dir=CACHE)
release_tools/test_deepmind_period_comparison.py ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Offline temporal/identity/coverage checks; no model or network imports."""
2
+ import hashlib
3
+ import json
4
+ import unittest
5
+
6
+ from build_deepmind_period_comparison import FOLDER, MODELS, ROOT, period_key, summarize
7
+ from import_deepmind_release_results import same
8
+ from plot_model_announcement import period_metrics
9
+
10
+
11
+ class DeepMindPeriodComparisonTest(unittest.TestCase):
12
+ @classmethod
13
+ def setUpClass(cls):
14
+ cls.report = json.loads((FOLDER / 'period_comparison.json').read_text())
15
+ cls.protocol = json.loads((FOLDER / 'protocol.json').read_text())
16
+ cls.original = json.loads((FOLDER / 'benchmark.json').read_text())
17
+
18
+ def test_strict_utc_boundary_not_2024_onward(self):
19
+ self.assertEqual(period_key('2023-12-31T18:00:00Z'), 'before_2024')
20
+ self.assertEqual(period_key('2024-01-01T00:00:00Z'), 'year_2024')
21
+ self.assertEqual(period_key('2024-12-31T18:00:00Z'), 'year_2024')
22
+ self.assertEqual(period_key('2025-01-01T00:00:00Z'), 'after_2024')
23
+ with self.assertRaises(ValueError):
24
+ period_key('2024-12-31T23:00:00+08:00')
25
+
26
+ def test_counts_and_proportions_are_exact_partition(self):
27
+ expected = {'before_2024': (1336, 230), 'year_2024': (76, 22), 'after_2024': (61, 18)}
28
+ all_ids = []
29
+ by_id = {c['case_index']: c for c in self.protocol['cases']}
30
+ for key, (days, storms) in expected.items():
31
+ period = self.report['periods'][key]
32
+ self.assertEqual(period['daily_issues'], days)
33
+ self.assertEqual(period['storms'], storms)
34
+ self.assertAlmostEqual(period['daily_issue_percentage'], days / 1473 * 100)
35
+ self.assertAlmostEqual(period['storm_percentage'], storms / 270 * 100)
36
+ self.assertEqual(len(period['case_indices']), days)
37
+ self.assertEqual(len({by_id[i]['storm_id'] for i in period['case_indices']}), storms)
38
+ for index in period['case_indices']:
39
+ self.assertEqual(period_key(by_id[index]['issue_time_utc']), key)
40
+ all_ids.extend(period['case_indices'])
41
+ self.assertEqual(sorted(all_ids), list(range(1473)))
42
+
43
+ def test_total_preserves_all_original_scores(self):
44
+ same(self.report['periods']['total']['scores'],
45
+ self.original['aggregate_equal_complete_storm'], 'original totals')
46
+
47
+ def test_pressure_coverage_never_becomes_track_coverage(self):
48
+ total = self.report['periods']['total']
49
+ post = self.report['periods']['after_2024']
50
+ self.assertEqual(total['scores']['pressure']['JMA']['daily_cases'], 134)
51
+ self.assertEqual(total['scores']['pressure']['JMA']['common_lead_points'], 2637)
52
+ self.assertEqual(post['scores']['pressure']['JMA']['daily_cases'], 59)
53
+ self.assertEqual(post['scores']['pressure']['JMA']['common_lead_points'], 1174)
54
+ self.assertEqual(period_metrics(post)['mean_track_error_km']['coverage']['daily_issues'], 61)
55
+ self.assertEqual(period_metrics(post)['pressure_JMA_hpa']['coverage']['daily_issues'], 59)
56
+ missing = self.report['periods']['before_2024']['scores']['pressure']['JMA']
57
+ for model in MODELS:
58
+ self.assertIsNone(missing['models'][model]['mae_hpa']['value'])
59
+ self.assertIsNone(period_metrics(self.report['periods']['before_2024'])['pressure_JMA_hpa']['values']['deepmind'])
60
+
61
+ def test_empty_coverage_is_null_not_zero(self):
62
+ empty = summarize([], 1473, 270)
63
+ self.assertIsNone(empty['scores']['route']['deepmind']['mean_track_error_km']['value'])
64
+ self.assertIsNone(empty['scores']['pressure']['JMA']['models']['deepmind']['mae_hpa']['value'])
65
+
66
+ def test_equal_storm_not_pooled_daily_average(self):
67
+ def record(storm, index, score):
68
+ values = dict(mean_track_error_km=score, track_error_120h_km=score,
69
+ direction_error_deg=score, shape_similarity=.5,
70
+ track_error_by_lead_km=[score] * 20)
71
+ return {'storm_id': storm, 'case_index': index, 'issue_time_utc': '2025-01-01T00:00:00Z',
72
+ 'route_metrics': {m: values for m in MODELS}, 'pressure_metrics': {}}
73
+ rows = [record('a', 0, 10), record('a', 1, 10), record('a', 2, 10), record('b', 3, 30)]
74
+ self.assertEqual(summarize(rows, 4, 2)['scores']['route']['deepmind']['mean_track_error_km']['value'], 20)
75
+
76
+ def test_same_checkpoint_and_immutable_source_hashes(self):
77
+ self.assertTrue(self.report['single_checkpoint_across_all_periods'])
78
+ self.assertEqual(self.report['model']['model_checkpoint'], 'WeatherNextCyclones_Mini_<2024')
79
+ self.assertEqual(self.report['model']['trained_through'], 2023)
80
+ self.assertEqual(self.report['model']['software_version'], '0.3.0')
81
+ for name in ('protocol.json', 'verification.json', 'case-manifest.json', 'benchmark.json'):
82
+ self.assertEqual(hashlib.sha256((FOLDER / name).read_bytes()).hexdigest(), self.report['source_hashes'][name])
83
+ for key in ('new_inference_performed', 'model_weights_changed', 'forecast_arrays_modified', 'raw_inputs_reaudited'):
84
+ self.assertFalse(self.report[key])
85
+ self.assertEqual(self.report['missing_results_scored_as_zero'], 0)
86
+
87
+ def test_chart_receipts_match_exact_data_and_bytes(self):
88
+ for name, key in (('model_1_2_benchmark', 'total'), ('model_1_2_after_2024_benchmark', 'after_2024')):
89
+ base = ROOT / 'evaluation/released_daily' / name
90
+ receipt = json.loads(base.with_suffix('.json').read_text())
91
+ self.assertEqual(receipt['period'], key)
92
+ self.assertEqual(receipt['deepmind_model'], self.report['model'])
93
+ self.assertEqual(receipt['source_sha256'], hashlib.sha256((FOLDER / 'period_comparison.json').read_bytes()).hexdigest())
94
+ self.assertEqual(receipt['chart_sha256'], hashlib.sha256(base.with_suffix('.png').read_bytes()).hexdigest())
95
+ expected = period_metrics(self.report['periods'][key])
96
+ self.assertEqual(receipt['values'], {k: v['values'] for k, v in expected.items()})
97
+ self.assertFalse(receipt['zero_fill'])
98
+
99
+
100
+ if __name__ == '__main__':
101
+ unittest.main()
release_tools/test_public_model_cards.py CHANGED
@@ -16,7 +16,7 @@ class PublicModelCardsTest(unittest.TestCase):
16
  self.assertTrue(rendered.startswith(self.header))
17
  for text in ('# Introducing Trackformer 1.2', '1,473 days / 270 storms',
18
  '134 days / 40 storms', '13.53', '12.84',
19
- 'WeatherNext software v0.3.0', '10.20 hPa', '288.5 km',
20
  'no native wind-radius forecast head'):
21
  self.assertIn(text, rendered)
22
  self.assertNotIn('README revision', rendered)
@@ -134,18 +134,34 @@ class PublicModelCardsTest(unittest.TestCase):
134
  self.assert_metric_row(release, label, metrics[key], places)
135
 
136
  def test_recent_group_is_not_confused_with_combined_cohort(self):
137
- exported = json.loads((ROOT / 'evaluation/deepmind_daily/benchmark.json').read_text())
138
- recent = exported['periods']['recent_2024_onward']['route']
139
- section = self.source.split('| Recent storms beginning in 2024+', 1)[1]
140
- for label, key, places in (('Mean track error', 'mean_track_error_km', 1),
141
- ('Six-hour direction error', 'direction_error_deg', 2)):
142
- values = {model: recent[model][key]['value'] for model in ('1.1', '1.2', 'deepmind')}
143
- # The recent-only table has four columns, unlike the main coverage table.
144
- rows = [line for line in section.splitlines() if line.startswith('| ')
145
- and line.split('|')[1].strip().startswith(label)]
146
- self.assertEqual(len(rows), 1)
147
- row = rows[0].rstrip('|').rstrip() + ' | recent-only |'
148
- self.assert_metric_row(row, label, values, places)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
149
 
150
  def test_evaluation_index_and_worker_handoff_metadata_are_explained(self):
151
  index = (ROOT / 'evaluation/README.md').read_text()
 
16
  self.assertTrue(rendered.startswith(self.header))
17
  for text in ('# Introducing Trackformer 1.2', '1,473 days / 270 storms',
18
  '134 days / 40 storms', '13.53', '12.84',
19
+ 'WeatherNext software v0.3.0', '10.20 hPa', '258.7 km',
20
  'no native wind-radius forecast head'):
21
  self.assertIn(text, rendered)
22
  self.assertNotIn('README revision', rendered)
 
134
  self.assert_metric_row(release, label, metrics[key], places)
135
 
136
  def test_recent_group_is_not_confused_with_combined_cohort(self):
137
+ report = json.loads((ROOT / 'evaluation/deepmind_daily/period_comparison.json').read_text())
138
+ post = report['periods']['after_2024']
139
+ self.assertEqual(post['daily_issues'], 61)
140
+ self.assertEqual(post['storms'], 18)
141
+ self.assertEqual(post['years'], [2025, 2026])
142
+ section = self.source.split('### After 2024', 1)[1]
143
+ for label, key, places in (('Track position MAE', 'mean_track_error_km', 1),
144
+ ('Track-direction error', 'direction_error_deg', 2),
145
+ ('Route-shape similarity', 'shape_similarity', 4)):
146
+ values = {model: post['scores']['route'][model][key]['value']
147
+ for model in ('1.1', '1.2', 'deepmind')}
148
+ self.assert_metric_row(section, label, values, places)
149
+ pressure = post['scores']['pressure']['JMA']['models']
150
+ for label, key, places in (('JMA central-pressure MAE', 'mae_hpa', 2),
151
+ ('JMA pressure-curve similarity', 'curve_similarity', 4)):
152
+ self.assert_metric_row(section, label,
153
+ {m: pressure[m][key]['value'] for m in ('1.1', '1.2', 'deepmind')}, places)
154
+
155
+ def test_checkpoint_identity_and_proportions_precede_separate_charts(self):
156
+ for source in (self.source, render_card(self.original, self.source)):
157
+ self.assertLess(source.index('**DeepMind checkpoint:'), source.index('model_1_2_benchmark.png'))
158
+ self.assertEqual(source.count('model_1_2_benchmark.png'), 1)
159
+ self.assertEqual(source.count('model_1_2_after_2024_benchmark.png'), 1)
160
+ for text in ('90.7%', '85.2%', '5.2%', '8.1%', '4.1%', '6.7%',
161
+ 'Calendar 2024', '59 days / 18 storms / 1,174',
162
+ 'not training-data composition', 'same Mini `<2024` checkpoint',
163
+ '100% Mini `<2024`; 0% other checkpoints'):
164
+ self.assertIn(text, source)
165
 
166
  def test_evaluation_index_and_worker_handoff_metadata_are_explained(self):
167
  index = (ROOT / 'evaluation/README.md').read_text()