euler314 commited on
Commit
87a6e36
·
verified ·
1 Parent(s): fdb9863

Repair actual moving-core Mangkhut pressure film and remove frozen ending

Browse files
.gitattributes CHANGED
@@ -193,3 +193,4 @@ evaluation/storm_structure/fung_wong_wind_radius.png filter=lfs diff=lfs merge=l
193
  evaluation/storm_structure/mangkhut_wind_radius.png filter=lfs diff=lfs merge=lfs -text
194
  evaluation/storm_structure/meranti_wind_radius.png filter=lfs diff=lfs merge=lfs -text
195
  evaluation/storm_structure/soudelor_wind_radius.png filter=lfs diff=lfs merge=lfs -text
 
 
193
  evaluation/storm_structure/mangkhut_wind_radius.png filter=lfs diff=lfs merge=lfs -text
194
  evaluation/storm_structure/meranti_wind_radius.png filter=lfs diff=lfs merge=lfs -text
195
  evaluation/storm_structure/soudelor_wind_radius.png filter=lfs diff=lfs merge=lfs -text
196
+ evaluation/release_data/pressure_core/mangkhut/common-pressure.npz filter=lfs diff=lfs merge=lfs -text
README.md CHANGED
@@ -178,7 +178,9 @@ Native-detail input history was unavailable; the regional pressure reconstructio
178
 
179
  ## More historical pressure forecasts — MP4
180
 
181
- Each film shows a **Western Pacific pressure overview**, a larger **unshifted forecast-versus-observed route close-up**, and a central-pressure comparison with JMA best track. All three were freshly forecast on the Mac GPU using the frozen **Trackformer 1.2** release and **50 distinct seeded input perturbations**. The displayed physical pressure fields, routes and central pressures are separately averaged over all 50 members. Each 23-second MP4 contains 20 genuine six-hour forecast states through **+120 h**, with blue lows, red highs and 4 hPa isobars; no interpolated forecast states.
 
 
182
 
183
  ### Soudelor (2015) — issue 5 August 2015, 00 UTC
184
 
@@ -198,10 +200,14 @@ Each film shows a **Western Pacific pressure overview**, a larger **unshifted fo
198
 
199
  [Play / download Meranti MP4](https://huggingface.co/euler314/typhoon-predict/resolve/main/docs/trackformer_1_2_meranti.mp4) · [Provenance](evaluation/release_data/meranti_video.json)
200
 
201
- **These are calendar-selected historical development examples, not untouched tests or representative skill claims.** Their dates were fixed before inference, without choosing the lowest-error starts, but may overlap the checkpoint's fitting/validation years. Inputs are nine exact six-hour retrospective NCEP analyses through issue time, current intensity and past motion. Future observations are comparison labels only. Native-detail history is not supplied to these runs and remains masked; the regional reconstruction has 0.25° sampling, while outside that fixed patch only the 2.5° basin field is shown. Meranti's issue-time wind was missing and remains masked, not filled from future data. No wind-radii forecast is implied.
202
 
203
  [50-member mean and MP4 audit](evaluation/release_data/historical_video50_verification.json) · [Mac GPU forecast preparation](release_tools/forecast_historical_video50_mac.py) · [Video renderer](release_tools/build_fung_wong_video.py)
204
 
 
 
 
 
205
  ### Illustrated technical paper
206
 
207
  The **[Trackformer 1.2 technical paper (PDF)](paper/trackformer.pdf)** explains the input tensors, multiscale attention, recurrent basin transport, moving pressure core, centre association, objectives and 50-member means. It includes a **model-structure diagram**, **1.2-versus-1.1 benchmark bars and lead-error curves**, and the selected **Fung-wong route, central-pressure timeline and model-generated isobar map**. Development-data limitations, short-lead regressions and pressure failures are reported alongside improvements. [Editable, self-contained LaTeX source](paper/trackformer.tex) · [Figure reproduction utility](release_tools/build_paper_figures.py). Historical material is recoverable from Git history and the [1.1 release](https://github.com/yu314-coder/typhoon-predict/releases/tag/trackformer-1.1).
 
178
 
179
  ## More historical pressure forecasts — MP4
180
 
181
+ Each film shows a **Western Pacific pressure overview**, a larger **unshifted forecast-versus-observed route close-up**, and a central-pressure comparison with JMA best track. All three were forecast on the Mac GPU using the frozen **Trackformer 1.2** release and **50 distinct seeded input perturbations**. The displayed physical fields, routes and central pressures are separately averaged over all 50 members. Each film contains 20 genuine six-hour forecast states through **+120 h**, with blue lows and red highs; no interpolated forecast states. Soudelor and Meranti retain their original 23-second films. **Mangkhut is now 20 seconds, without the extra frozen ending**, and uses 2 hPa isobars with 4 hPa labels.
182
+
183
+ **Mangkhut pressure repair:** its actual moving model cores are now registered geographically for every member before averaging, rather than losing detailed pressure when the storm leaves the old fixed regional patch. The reconstruction uses the frozen model equation—evolving basin plus its tapered moving anomaly—with no scalar-pressure insertion or shift to the observed/forecast route. Original routes, central pressures, inputs and weights are unchanged. [Common-grid physical pressure arrays](evaluation/release_data/pressure_core/mangkhut/common-pressure.npz) · [Core and replay verification](evaluation/release_data/pressure_core/mangkhut/verification.json) · [Playback audit](evaluation/release_data/mangkhut_playback_verification.json).
184
 
185
  ### Soudelor (2015) — issue 5 August 2015, 00 UTC
186
 
 
200
 
201
  [Play / download Meranti MP4](https://huggingface.co/euler314/typhoon-predict/resolve/main/docs/trackformer_1_2_meranti.mp4) · [Provenance](evaluation/release_data/meranti_video.json)
202
 
203
+ **These are calendar-selected historical development examples, not untouched tests or representative skill claims.** Their dates were fixed before inference, without choosing the lowest-error starts, but may overlap the checkpoint's fitting/validation years. Inputs are nine exact six-hour retrospective NCEP analyses through issue time, current intensity and past motion. Future observations are comparison labels only. Native-detail input history is not supplied and remains masked. Soudelor and Meranti retain a fixed regional reconstruction; beyond its coverage they show the 2.5° basin field only. Mangkhut uses the actual moving-core reconstruction: 0.1° close-up and 0.25° overview are interpolation/sampling, not additional native information; the core's information spacing is 20 km. Meranti's issue-time wind was missing and remains masked, not filled from future data. No validated wind-radii forecast is implied.
204
 
205
  [50-member mean and MP4 audit](evaluation/release_data/historical_video50_verification.json) · [Mac GPU forecast preparation](release_tools/forecast_historical_video50_mac.py) · [Video renderer](release_tools/build_fung_wong_video.py)
206
 
207
+ ### Public forecast and observation API
208
+
209
+ [API guide](https://trackformer-weatherlab.rudin-euler-8253.chatgpt.site/history-api) · [Machine-readable resources](https://trackformer-weatherlab.rudin-euler-8253.chatgpt.site/api/history/v1/resources) · [All published data assets](https://trackformer-weatherlab.rudin-euler-8253.chatgpt.site/api/data/v1/catalog). Cross-origin, read-only JSON exposes routes, actual basin/core pressure fields, separate observed winds/radii and provenance for external pages. The original 32,230-issue Western Pacific archive and the still-progressing moving-core recovery have separate verification endpoints; missing core/wind/radius data remain unavailable, never zero. One-member historical issues are not relabelled 50-member ensembles.
210
+
211
  ### Illustrated technical paper
212
 
213
  The **[Trackformer 1.2 technical paper (PDF)](paper/trackformer.pdf)** explains the input tensors, multiscale attention, recurrent basin transport, moving pressure core, centre association, objectives and 50-member means. It includes a **model-structure diagram**, **1.2-versus-1.1 benchmark bars and lead-error curves**, and the selected **Fung-wong route, central-pressure timeline and model-generated isobar map**. Development-data limitations, short-lead regressions and pressure failures are reported alongside improvements. [Editable, self-contained LaTeX source](paper/trackformer.tex) · [Figure reproduction utility](release_tools/build_paper_figures.py). Historical material is recoverable from Git history and the [1.1 release](https://github.com/yu314-coder/typhoon-predict/releases/tag/trackformer-1.1).
docs/trackformer_1_2_mangkhut.mp4 CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:a609f7dda0cb42ed5dc17e543c838489f7632317e40d7f29038ee69d691eacbb
3
- size 9263233
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:220e09eea71af88c9622131f4248be9b9914adae16785c5caee349b1e10abc20
3
+ size 8576997
evaluation/release_data/historical_video50_verification.json CHANGED
@@ -1 +1 @@
1
- {"verified":true,"storms":{"soudelor":{"storm_id":"2015211N13162","issue_time_utc":"2015-08-05T00:00:00Z","model":"Trackformer 1.2","checkpoint_sha256":"f194a23d3f91ea76ad776dfad942fabd669eeae8b3fd665815463095367e9ee0","members":50,"distinct_inputs":50,"distinct_member_outputs":{"center":50,"pressure":50,"basin":50,"regional":50},"max_mean_difference":{"center":0.0,"pressure":0.0,"basin":0.0,"regional":0.0},"causal_nine_analyses_verified":true,"observed_plus_zero_alignment_verified":true,"future_observations_not_in_model_packet":true,"masked_native_history_verified":true,"native_history_available":false,"route_points":21,"pressure_states":20,"mp4_duration_seconds":23.0,"mp4_dimensions":[1600,1000],"files_sha256":{"mean_fields":"bed5425496abde931d81af06e1ef1438504c82468d5577c6bac5dc131a07e91f","mp4":"5fcc26588a75007c50255e92a55ff7442b405995072324850632258a40443bce","individual_members":"161e2a5d8def6ef6f555031ba6ba1b21f16ccf4390366d0360c5bbd06edcd31c","model_inputs":"2cad11d38a54c0ab41c8366793b2bae7febecae89609aeda3e016180df8b1ccd"},"evaluation_limit":"Calendar-selected historical development examples, not untouched holdouts."},"mangkhut":{"storm_id":"2018250N12170","issue_time_utc":"2018-09-11T00:00:00Z","model":"Trackformer 1.2","checkpoint_sha256":"f194a23d3f91ea76ad776dfad942fabd669eeae8b3fd665815463095367e9ee0","members":50,"distinct_inputs":50,"distinct_member_outputs":{"center":50,"pressure":50,"basin":50,"regional":50},"max_mean_difference":{"center":0.0,"pressure":0.0,"basin":0.0,"regional":0.0},"causal_nine_analyses_verified":true,"observed_plus_zero_alignment_verified":true,"future_observations_not_in_model_packet":true,"masked_native_history_verified":true,"native_history_available":false,"route_points":21,"pressure_states":20,"mp4_duration_seconds":23.0,"mp4_dimensions":[1600,1000],"files_sha256":{"mean_fields":"f06c857dc0e7edaa67a2e7262324fa0a9ebad684ce5a8ffa1610c27717c35b71","mp4":"a609f7dda0cb42ed5dc17e543c838489f7632317e40d7f29038ee69d691eacbb","individual_members":"5ba1e2325867bc71c48b9f94b8afa02925261e07c175d9c360a71b8334a9f43d","model_inputs":"7a180f3ec9f216b5cb8e9e5e1fdebb60bff779586d42054e10477edd23fdfccd"},"evaluation_limit":"Calendar-selected historical development examples, not untouched holdouts."},"meranti":{"storm_id":"2016253N13144","issue_time_utc":"2016-09-10T00:00:00Z","model":"Trackformer 1.2","checkpoint_sha256":"f194a23d3f91ea76ad776dfad942fabd669eeae8b3fd665815463095367e9ee0","members":50,"distinct_inputs":50,"distinct_member_outputs":{"center":50,"pressure":50,"basin":50,"regional":50},"max_mean_difference":{"center":0.0,"pressure":0.0,"basin":0.0,"regional":0.0},"causal_nine_analyses_verified":true,"observed_plus_zero_alignment_verified":true,"future_observations_not_in_model_packet":true,"masked_native_history_verified":true,"native_history_available":false,"route_points":21,"pressure_states":20,"mp4_duration_seconds":23.0,"mp4_dimensions":[1600,1000],"files_sha256":{"mean_fields":"565343166656155e8f227372cce2947536afe83593820c89790606e5ac909baf","mp4":"e12a83b0e129e5a5accb3a8d396481ea6f72979777d70d17fc9a18e6ad810a59","individual_members":"d04b729f31733e63f937ad6a523e8a034cc9e93c6b2775dc1d18ceeb2ad9987b","model_inputs":"5a65f65e765edd48adfa45938d4d452fbec001f7e567afe1b930b5d44e14f9e6"},"evaluation_limit":"Calendar-selected historical development examples, not untouched holdouts."}}}
 
1
+ {"verified":true,"storms":{"soudelor":{"storm_id":"2015211N13162","issue_time_utc":"2015-08-05T00:00:00Z","model":"Trackformer 1.2","checkpoint_sha256":"f194a23d3f91ea76ad776dfad942fabd669eeae8b3fd665815463095367e9ee0","members":50,"distinct_inputs":50,"distinct_member_outputs":{"center":50,"pressure":50,"basin":50,"regional":50},"max_mean_difference":{"center":0.0,"pressure":0.0,"basin":0.0,"regional":0.0},"causal_nine_analyses_verified":true,"observed_plus_zero_alignment_verified":true,"future_observations_not_in_model_packet":true,"masked_native_history_verified":true,"native_history_available":false,"route_points":21,"pressure_states":20,"mp4_duration_seconds":23.0,"mp4_dimensions":[1600,1000],"files_sha256":{"mean_fields":"bed5425496abde931d81af06e1ef1438504c82468d5577c6bac5dc131a07e91f","mp4":"5fcc26588a75007c50255e92a55ff7442b405995072324850632258a40443bce","individual_members":"161e2a5d8def6ef6f555031ba6ba1b21f16ccf4390366d0360c5bbd06edcd31c","model_inputs":"2cad11d38a54c0ab41c8366793b2bae7febecae89609aeda3e016180df8b1ccd"},"evaluation_limit":"Calendar-selected historical development examples, not untouched holdouts."},"mangkhut":{"storm_id":"2018250N12170","issue_time_utc":"2018-09-11T00:00:00Z","model":"Trackformer 1.2","checkpoint_sha256":"f194a23d3f91ea76ad776dfad942fabd669eeae8b3fd665815463095367e9ee0","members":50,"distinct_inputs":50,"distinct_member_outputs":{"center":50,"pressure":50,"basin":50,"regional":50},"max_mean_difference":{"center":0.0,"pressure":0.0,"basin":0.0,"regional":0.0},"causal_nine_analyses_verified":true,"observed_plus_zero_alignment_verified":true,"future_observations_not_in_model_packet":true,"masked_native_history_verified":true,"native_history_available":false,"route_points":21,"pressure_states":20,"mp4_duration_seconds":20.0,"mp4_dimensions":[1600,1000],"files_sha256":{"mean_fields":"f06c857dc0e7edaa67a2e7262324fa0a9ebad684ce5a8ffa1610c27717c35b71","mp4":"220e09eea71af88c9622131f4248be9b9914adae16785c5caee349b1e10abc20","individual_members":"5ba1e2325867bc71c48b9f94b8afa02925261e07c175d9c360a71b8334a9f43d","model_inputs":"7a180f3ec9f216b5cb8e9e5e1fdebb60bff779586d42054e10477edd23fdfccd"},"evaluation_limit":"Calendar-selected historical development examples, not untouched holdouts."},"meranti":{"storm_id":"2016253N13144","issue_time_utc":"2016-09-10T00:00:00Z","model":"Trackformer 1.2","checkpoint_sha256":"f194a23d3f91ea76ad776dfad942fabd669eeae8b3fd665815463095367e9ee0","members":50,"distinct_inputs":50,"distinct_member_outputs":{"center":50,"pressure":50,"basin":50,"regional":50},"max_mean_difference":{"center":0.0,"pressure":0.0,"basin":0.0,"regional":0.0},"causal_nine_analyses_verified":true,"observed_plus_zero_alignment_verified":true,"future_observations_not_in_model_packet":true,"masked_native_history_verified":true,"native_history_available":false,"route_points":21,"pressure_states":20,"mp4_duration_seconds":23.0,"mp4_dimensions":[1600,1000],"files_sha256":{"mean_fields":"565343166656155e8f227372cce2947536afe83593820c89790606e5ac909baf","mp4":"e12a83b0e129e5a5accb3a8d396481ea6f72979777d70d17fc9a18e6ad810a59","individual_members":"d04b729f31733e63f937ad6a523e8a034cc9e93c6b2775dc1d18ceeb2ad9987b","model_inputs":"5a65f65e765edd48adfa45938d4d452fbec001f7e567afe1b930b5d44e14f9e6"},"evaluation_limit":"Calendar-selected historical development examples, not untouched holdouts."}}}
evaluation/release_data/mangkhut_playback_verification.json ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "verified": true,
3
+ "model": "Trackformer 1.2",
4
+ "members": 50,
5
+ "storm_id": "2018250N12170",
6
+ "issue_time_utc": "2018-09-11T00:00:00Z",
7
+ "leads_hours": [
8
+ 6,
9
+ 12,
10
+ 18,
11
+ 24,
12
+ 30,
13
+ 36,
14
+ 42,
15
+ 48,
16
+ 54,
17
+ 60,
18
+ 66,
19
+ 72,
20
+ 78,
21
+ 84,
22
+ 90,
23
+ 96,
24
+ 102,
25
+ 108,
26
+ 114,
27
+ 120
28
+ ],
29
+ "duration_seconds": 20,
30
+ "encoded_frames": 600,
31
+ "forecast_states": 20,
32
+ "distinct_decoded_states": 20,
33
+ "state_duration_seconds": 1,
34
+ "extra_final_hold_seconds": 0,
35
+ "interpolated_forecast_states": false,
36
+ "decoded_state_md5": [
37
+ "feb906cc63367cefccabc8ebfd42219b",
38
+ "2d55d7fc627cebd5deec23454b768e17",
39
+ "82b3ac68b85117a8a0b236d65c885e05",
40
+ "80d1375cf72a8e81fb89f93161b6aa3b",
41
+ "b8831a71727107ef386a8c0d99a83909",
42
+ "1e9da09ce8f889756baa27d2352bcb94",
43
+ "abea530d8af6798413a480cfeacaf59d",
44
+ "e3278c56f054662e522e78e9e64d4aac",
45
+ "3eb2a4b703b9281d7837568bf5ddbf27",
46
+ "2200e7d007e6fe5e70cbe9dfa6a32b1b",
47
+ "f9b4e38e9c62deedd100f3b18daf08b1",
48
+ "4c6f23d4720272d382dfc9be4b2e8e26",
49
+ "1b43cd12d680b9e24572955a40178bc7",
50
+ "bb68679ed92a93e4aa9930d817cbdf5b",
51
+ "63defc78905a9a8d7fc1f5d7ee343e3c",
52
+ "ae5580a19793dad9ddf85a73c062f3ad",
53
+ "fccd724e71a512854229b142bf3a7cbc",
54
+ "504ec965962e0fe61185817ee5eb8493",
55
+ "d52d60f144b25b8b2decb34877ab0d79",
56
+ "6f21c144ec7b91a4fee91b7fec463df4"
57
+ ],
58
+ "last_four_states_distinct": true,
59
+ "video_sha256": "220e09eea71af88c9622131f4248be9b9914adae16785c5caee349b1e10abc20",
60
+ "mean_fields_sha256": "f06c857dc0e7edaa67a2e7262324fa0a9ebad684ce5a8ffa1610c27717c35b71",
61
+ "common_pressure_sha256": "5a9183d758fce8294bf854412edb9185cf4fcc2f386e8af74f4759a60bb16bdc",
62
+ "core_verification_sha256": "18ce959f8328837c3bb6f3bc065e12ef7267546fb74d71543a8421bef6f8103f"
63
+ }
evaluation/release_data/mangkhut_video.json CHANGED
@@ -426,16 +426,16 @@
426
  "observed_csv_sha256": "4348af2679b4be0d53ec630bccda759044663a1f57e2bbd5c1d19428aab562fc",
427
  "observed_route_source": "Exact matching-timestamp IBTrACS LAT/LON; display verification only.",
428
  "observed_pressure_source": "IBTrACS TOKYO_PRES JMA best track, not JMA forecasts; missing labels remain missing.",
429
- "field_source": "Equal-weight physical means of all 50 basin and fixed-issue regional fields; no directly averaged moving grids.",
430
  "native_history_available": false,
431
- "grid_note": "0.25-degree regional reconstruction sampling, not native effective resolution. Basin sampling is 2.5 degrees. Coarse basin only outside the fixed regional patch.",
432
  "regional_bounds": [
433
  126.25,
434
  156.25,
435
  -1.0,
436
  29.0
437
  ],
438
- "first_forecast_lead_outside_regional_hours": 78,
439
  "metrics": {
440
  "mean_track_error_km": 77.47351113275661,
441
  "track_error_120h_km": 191.70061661021862,
@@ -446,12 +446,15 @@
446
  "selection": "Calendar issue chosen before running these forecasts, without screening errors. Historical development showcase; dates may overlap checkpoint fitting/validation years. Not an untouched test or evidence of no overfitting.",
447
  "video": {
448
  "file": "docs/trackformer_1_2_mangkhut.mp4",
449
- "duration_seconds": 23,
450
  "forecast_states": 20,
 
451
  "codec": "H.264",
452
  "encoder": "h264_videotoolbox",
453
- "sha256": "a609f7dda0cb42ed5dc17e543c838489f7632317e40d7f29038ee69d691eacbb",
454
- "playback": "Each six-hour state held for 1 second; final frame held 3 seconds extra. No interpolated forecast states."
 
 
455
  },
456
  "video_layout": {
457
  "overview_bounds": [
@@ -469,5 +472,1640 @@
469
  "pressure_colors": "Blue below 1013.25 hPa; red above. Fixed range throughout each film.",
470
  "map_graticule": false,
471
  "geographic_route_adjustment": false
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
472
  }
473
  }
 
426
  "observed_csv_sha256": "4348af2679b4be0d53ec630bccda759044663a1f57e2bbd5c1d19428aab562fc",
427
  "observed_route_source": "Exact matching-timestamp IBTrACS LAT/LON; display verification only.",
428
  "observed_pressure_source": "IBTrACS TOKYO_PRES JMA best track, not JMA forecasts; missing labels remain missing.",
429
+ "field_source": "Original evolving basin plus each actual tapered moving anomaly, geographically registered before 50-member physical averaging. No scalar insertion or route/truth shift.",
430
  "native_history_available": false,
431
+ "grid_note": "Common WP overview sampled at 0.25 degrees; close-up at 0.1 degrees. Model core information spacing is 20 km; interpolation is not added native information.",
432
  "regional_bounds": [
433
  126.25,
434
  156.25,
435
  -1.0,
436
  29.0
437
  ],
438
+ "first_forecast_lead_outside_regional_hours": null,
439
  "metrics": {
440
  "mean_track_error_km": 77.47351113275661,
441
  "track_error_120h_km": 191.70061661021862,
 
446
  "selection": "Calendar issue chosen before running these forecasts, without screening errors. Historical development showcase; dates may overlap checkpoint fitting/validation years. Not an untouched test or evidence of no overfitting.",
447
  "video": {
448
  "file": "docs/trackformer_1_2_mangkhut.mp4",
449
+ "duration_seconds": 20,
450
  "forecast_states": 20,
451
+ "encoded_frames": 600,
452
  "codec": "H.264",
453
  "encoder": "h264_videotoolbox",
454
+ "sha256": "220e09eea71af88c9622131f4248be9b9914adae16785c5caee349b1e10abc20",
455
+ "extra_final_hold_seconds": 0,
456
+ "state_duration_seconds": 1,
457
+ "playback": "Each genuine six-hour state held for one second. No extra ending hold or interpolated forecast states."
458
  },
459
  "video_layout": {
460
  "overview_bounds": [
 
472
  "pressure_colors": "Blue below 1013.25 hPa; red above. Fixed range throughout each film.",
473
  "map_graticule": false,
474
  "geographic_route_adjustment": false
475
+ },
476
+ "pressure_reconstruction": {
477
+ "model": "Trackformer 1.2",
478
+ "checkpoint_sha256": "f194a23d3f91ea76ad776dfad942fabd669eeae8b3fd665815463095367e9ee0",
479
+ "inference_weights_sha256": "db49f36e85a3766defc4c172746897a1f783705d1ce8e6f9dfb8e87ae1d902cb",
480
+ "storm_id": "2018250N12170",
481
+ "issue_time_utc": "2018-09-11T00:00:00Z",
482
+ "members": 50,
483
+ "input_file_sha256": "7a180f3ec9f216b5cb8e9e5e1fdebb60bff779586d42054e10477edd23fdfccd",
484
+ "original_replay_max_difference": {
485
+ "center": 0.0,
486
+ "pressure": 0.0,
487
+ "basin": 0.0,
488
+ "regional": 0.0
489
+ },
490
+ "regional_equation_max_difference_hpa": 6.103515625e-05,
491
+ "ensemble_policy": {
492
+ "method": "seeded causal input-perturbation ensemble, not latent samples",
493
+ "member_count": 50,
494
+ "member_ids": [
495
+ 0,
496
+ 1,
497
+ 2,
498
+ 3,
499
+ 4,
500
+ 5,
501
+ 6,
502
+ 7,
503
+ 8,
504
+ 9,
505
+ 10,
506
+ 11,
507
+ 12,
508
+ 13,
509
+ 14,
510
+ 15,
511
+ 16,
512
+ 17,
513
+ 18,
514
+ 19,
515
+ 20,
516
+ 21,
517
+ 22,
518
+ 23,
519
+ 24,
520
+ 25,
521
+ 26,
522
+ 27,
523
+ 28,
524
+ 29,
525
+ 30,
526
+ 31,
527
+ 32,
528
+ 33,
529
+ 34,
530
+ 35,
531
+ 36,
532
+ 37,
533
+ 38,
534
+ 39,
535
+ 40,
536
+ 41,
537
+ 42,
538
+ 43,
539
+ 44,
540
+ 45,
541
+ 46,
542
+ 47,
543
+ 48,
544
+ 49
545
+ ],
546
+ "seeds": [
547
+ 2043,
548
+ 2044,
549
+ 2045,
550
+ 2046,
551
+ 2047,
552
+ 2048,
553
+ 2049,
554
+ 2050,
555
+ 2051,
556
+ 2052,
557
+ 2053,
558
+ 2054,
559
+ 2055,
560
+ 2056,
561
+ 2057,
562
+ 2058,
563
+ 2059,
564
+ 2060,
565
+ 2061,
566
+ 2062,
567
+ 2063,
568
+ 2064,
569
+ 2065,
570
+ 2066,
571
+ 2067,
572
+ 2068,
573
+ 2069,
574
+ 2070,
575
+ 2071,
576
+ 2072,
577
+ 2073,
578
+ 2074,
579
+ 2075,
580
+ 2076,
581
+ 2077,
582
+ 2078,
583
+ 2079,
584
+ 2080,
585
+ 2081,
586
+ 2082,
587
+ 2083,
588
+ 2084,
589
+ 2085,
590
+ 2086,
591
+ 2087,
592
+ 2088,
593
+ 2089,
594
+ 2090,
595
+ 2091,
596
+ 2092
597
+ ],
598
+ "weights": [
599
+ 0.02,
600
+ 0.02,
601
+ 0.02,
602
+ 0.02,
603
+ 0.02,
604
+ 0.02,
605
+ 0.02,
606
+ 0.02,
607
+ 0.02,
608
+ 0.02,
609
+ 0.02,
610
+ 0.02,
611
+ 0.02,
612
+ 0.02,
613
+ 0.02,
614
+ 0.02,
615
+ 0.02,
616
+ 0.02,
617
+ 0.02,
618
+ 0.02,
619
+ 0.02,
620
+ 0.02,
621
+ 0.02,
622
+ 0.02,
623
+ 0.02,
624
+ 0.02,
625
+ 0.02,
626
+ 0.02,
627
+ 0.02,
628
+ 0.02,
629
+ 0.02,
630
+ 0.02,
631
+ 0.02,
632
+ 0.02,
633
+ 0.02,
634
+ 0.02,
635
+ 0.02,
636
+ 0.02,
637
+ 0.02,
638
+ 0.02,
639
+ 0.02,
640
+ 0.02,
641
+ 0.02,
642
+ 0.02,
643
+ 0.02,
644
+ 0.02,
645
+ 0.02,
646
+ 0.02,
647
+ 0.02,
648
+ 0.02
649
+ ],
650
+ "global_noise_normalized_std": 0.025,
651
+ "regional_noise_normalized_std": 0.015,
652
+ "global_smoothing_kernel": 5,
653
+ "regional_smoothing_kernel": 9,
654
+ "native_detail_available": false,
655
+ "missing_native_history_remains_masked": true,
656
+ "input_sha256": [
657
+ "690ccf7cfbefd4fabb96dd2a7064045ec2231abe36cb38a671fb8a4353785740",
658
+ "ee66f59be2788df7b59ddb5529bd1631069c3420cdad1325d577420c565b5a3e",
659
+ "9e08fe681d82a516546a03b4950ee050863c6a55e05679e00b9ebe59a9d53580",
660
+ "a09db74dc739ed26d96773bbec2107074f3f8ac7e6640fa4d2b1392d910b6abc",
661
+ "75bbc8d0afb68f99428754986e819adf9e8504d8ad4a9d58617b7cb2f0775e92",
662
+ "6547c4adfba667e1aeca322cbb943c96ee531940970c91e88bc67b03585cff8c",
663
+ "783d074aca68ac90b8ab9ee76544d71f6488f11bd087d44832fc8cfd0b962395",
664
+ "dfca797a534e1b2ebf7d5e61a821fc44fec7f9ac92a387aacaec13a858250fb7",
665
+ "6331aa287831c25e6495045428fa1274f998baa8ba00c3e1320dba2265c2b1a2",
666
+ "5773e32cf25cfac8701607795c8ce153ac654e2052512d0eb4835de1c9469c02",
667
+ "fcbf6161420fadd979befcbb30060f0879ffb1f31a958ea7dafd41edf9bcdb5b",
668
+ "81bca70e93f43c3d2ae3fd16600cef5e467e7c61c41eabe8db88624cdded8c41",
669
+ "f02d5396e99e7fe31ffcfa1c68040e5d986b081500b48a873a943d64dd99975d",
670
+ "4c90b3f18a02726f33ae77b3476a160aff0b4707e4df517575780bb36bb815b7",
671
+ "db181c7953a86f392d7f1b8f517b3459e8f8beb656dd2de96e5ec67f948471a9",
672
+ "5f147e69858a3815cf191ef8d9f5e0b5b5459f730bd5b748a0d07e37677f274b",
673
+ "6acae892c328e2714e483ef9e03fdbfa8d14e9674e54c2e4ac4699169f6a9cbc",
674
+ "47c94868f59ea6845171c868c0a06c12ff319e29f3185be11a84d4c173f17568",
675
+ "66e32a3a94220722a217bbfb843701416a941483ee7f0d0e55f56116630fda22",
676
+ "434e0455202b6423d80bacc0a9b8f685572aa03ad108dc97291f8b80468b26f9",
677
+ "b9fa426a56cffb7afbbedf04ebbb17151cc93b056154f5b44aec5eff1aa4e717",
678
+ "ac5119c2b6d2c76ec411d593520fa22ee40c769810ee5556be09120108e9b3ff",
679
+ "abbf4cd27f9037b89bd2ab0b0d31dc293db279e23da7cda33f5163cd2e3d1084",
680
+ "19a039f0c4e03b2b956d70b00c57176d0ae4fce69f47e0a69b1fc47931647cf9",
681
+ "d5c27c461b11924c3bec6cdde494d86d93cb5cd2b2244dee07312e3c420741d3",
682
+ "0ac8e56ffb487952229af64da264acf34bee2c7326365c4a84f003e884db9d8b",
683
+ "d5d56c4eb1fe906036ac424f67af9adcc8ebbb134c61774900406c38bc5a0799",
684
+ "ef4dec655c8b2db666a13323713a40a7dcbfd8a61d0008378b9fae0bd151f0c9",
685
+ "acd844481e416569d88d23f81d76db5a4a30f3b144a79ad67735a1bc919b2d98",
686
+ "8cdbafbb4282fb99d608a7deff79648045c746e88df86b78fdcbd03f678e41d9",
687
+ "4d4b83606d84c3f32b53c8b7eb4dc60caa23dc591f7dcfd9dc98c97a0e202544",
688
+ "3ab94849134aec597505fdca1282963de2b2a94135e1729a0ef8ccaf75a27c2b",
689
+ "736ccc1e895306dbdf27328337c20ce920bd780bf69a73175d9015d0d1df74f8",
690
+ "9e27b2e22606a50fd57e7b97ed19f84c5a85f7d0c4ea1e0a4ea1dbb220e0ddcf",
691
+ "b64766d01e496500d3b812bd01416c19362576f87e8d7867aa31052b44c5d87f",
692
+ "dc7dc9ac4032d1b86f09b29f13ae7c9005a0f6939c0fca0286fd39ef0e3819b5",
693
+ "39965b5d1c5da1886b1c578260a0c6cbcfdd5af6c2b1d92f85a876328af41bc3",
694
+ "66325deea7c22747758fb72e0c884b1d4c0f18588e86c75dbefbc1ef125ba21d",
695
+ "f8a5805ae9759a9d812f74e6035063fd462d1b8af338ad8642e73e701cfbe4db",
696
+ "cc92fcde602d7d5a43ce86db5012028fc0ad36e52a653b3332e6381d3db4f79f",
697
+ "17b1ce2676ccbdbfd20cd1035ea8ad248c4747a09469a875ddc8273bad1cba1c",
698
+ "14b2dfbb3b723fbd61182be93fb852206a1bf4c72b2b19315f3ee04107b9e131",
699
+ "fc8c890b376136af901df9f462f6c0b414408fb3336778cb939eefe3e0e1729b",
700
+ "ea2483e7980843e63788a1c61216e528b13680d4c5a1963d8bcd331aa1e4faf7",
701
+ "6f35d5e33812cc1c4aa4f9ed7a5cec56c15a51feab4eb7807b6b132e096227c7",
702
+ "b902d9fec1bc216fe2531a7c70c0dd3d20a8ca8c63a6663167fe79c1c4f86b81",
703
+ "565328f83948b2ee4f8b93e8ef81891a39727504145f8c177a535bc23b933a30",
704
+ "5b244303c45f335af63fbf73b5ac612b8dc189347d57b6ae6aed747602d6d14d",
705
+ "915041461c8a56691a2e56be40ba29e612320ca0e0fdc0d57e19926c30a921b5",
706
+ "19f8adf60b5c0a75adfc55acc1d78c646cb8700a92ff069a86487867103ece98"
707
+ ],
708
+ "route_sha256": [
709
+ "db21c9f417b9ba8f78b2019b754c078e2b366cc96b91df59ddad4b30f7f26f04",
710
+ "6e1fd6a7bd8dc7a36455df448ca1bf6cd2952974462970309913e13669eff4ee",
711
+ "397446cfed2943daa7b94e7284076f3baefa58c213bfb6be6edd544c1b7be717",
712
+ "0c7590febf1bd0cdce140a0b6d07319f2b6d1489e03ffc4f83d5553a1d322ed1",
713
+ "3b9537d227180d7e689606364f8b398d15e06c016ab186c8b1d97f9854673834",
714
+ "9aa621fca7d762529e3475e37f63d2b47e19e3ed4e06f5aa6f69fb8d26457569",
715
+ "14ba7a3a079da30e84c8d025bbe68f988aa7c58db87d34d25df3d9204e1e7e6d",
716
+ "11f0fde39c6469f6589211249795264c17343a6e787e844d49fac76ee400f89b",
717
+ "9d949874c8649ded973ef8b55a8e7653c2e59f21dcd32144b260afe33aff3cb2",
718
+ "0b176e17d38295027c8e00cfbb71a005df179119bde5fa14c4c007e99597c62b",
719
+ "590c348f53f7d8d12448170d40927e22a69eb5fe9af6a2e69e18badb0f729e24",
720
+ "18685ab64814b3db124d78c71404e1d6fd339b8c08dac7990e52ee3e1dc42948",
721
+ "fb8263524c649fa2f8b533e70ce9d58978b29edda42fcbaed4d7a2a0997b41f4",
722
+ "59acf0a35ef195fe92f913a5136b67a57533cfff8c008674b71c55f9a52b2ae0",
723
+ "137aca6f1aca213eaa79a1bc93047f9803ca3536ee53b660b9fce9c5e4d2505c",
724
+ "2307cbffa477f241ebdf4e32c97735c510e1b00b9fd07ba6ab9edf70302af5a2",
725
+ "d5f718dd784365d96567df6e876f6c11201197d80f20262d517e2fa36a0ea640",
726
+ "800a66f078a9992dfd4cfa1701e7ed75d52b3c63a03b79f9977bca77612c9b00",
727
+ "1313199f81953217b6b940e4aec361c68c204cb4087c34350853c9d189b1594c",
728
+ "c7306db1e3b5f1f519a1bbb07b05e541ccf9d5f31d8bf4c1fb5ee061bb65df35",
729
+ "ca232cc52a19975307bc46d957e066f45c179a6708bed304b5ef9f4a935dfc42",
730
+ "fe86cb2d959c141b8be2c12d4e676c61a7096d84c68d50efb774c5d17fc56017",
731
+ "fc985324b46c5315d75316c90ebfa026e6fc0caced452f7eeafa25ba56f11325",
732
+ "318dcd0c92763abbc3cc21931e5f8a8dd90fea1ae50ae34328917e7c72cda8dc",
733
+ "25e35ec2980154240a82a63c744cdf032c8367bfa5319c9a49a68a414bbb7591",
734
+ "15d67c3655ba166ffb364c4235e9c0d0f19ea14e4f0392ee3c5d02191bffeca3",
735
+ "c47179d7191b3e187dba56ad8e38479cb7a0598f63642fda60f6de31ea507ff4",
736
+ "7f765737a28a3e526550f4d7ac7b6428a18f46cdafaae7656135379702c2041d",
737
+ "e14490b2d77ddb9c91b40fbc441735135aee66bdf7a04f9c6213e6b87428e982",
738
+ "960e5da19439733c8e72294b8f627d3b1310d1813218d7baf370ace3d74e2655",
739
+ "10f1791fca7cb5902e8f5c76156b4ac4810bcab6feee29a107458da6405e36cf",
740
+ "08b7371e1fbb8dc597aee2945bb90d50477b24a8eec98d5ff8f875a83fd16ae1",
741
+ "8dd13f315687f54e833d86da7a4bc9679880237e5a9dd3b1cf79cb279837b53e",
742
+ "2109a93573845870144781c1143a4ac631c99efa79c8d5e5f3d713259911999e",
743
+ "ff032166bebe64c3b82d6e24313fd5d6fe465620dc1450807ad4ecf2d316fb05",
744
+ "88c0bacee57408648452b4bc47e96d16018f416ea9a4292f0392a3e46d2c7495",
745
+ "bd8bb21aa188fe2d5f747a10636634de7df841961072e8c2f5227690c10d0afc",
746
+ "8d95a8268a3c104ea1154e7187ce0e839ba3ebc54d2f775c8f86af619518f2d2",
747
+ "da3df612945702fb12114c311da50483b8b6382a240d456d874cb1a49b849eaf",
748
+ "d9a8012537bb08ab358a9cc3e69aa6b7ca0fa68d0856ba9baff298620a989643",
749
+ "1e63d0c09c398b0fa1d317010ef4472e3d2e6183f79b1bf83778ec508579cc53",
750
+ "7949f53ee228585da4ce341f33850b0d56416860e098f5eeb823ecf8fc6172ad",
751
+ "05bc016f6f94d4bebf00b84be9ff4b6aab97efbb9b41608c475a768a408ded03",
752
+ "86a11a0672fc32ddd2679ac1ba19e728ab1a50769575a1c7f496f022f5e6c5c7",
753
+ "93f89662ca852fd2170fb0638ff8e09ea21002420911427a567c99b81fc7013d",
754
+ "23bbd1227fc0db13a555b895f4bc218cb6770f5fee006e29e945990367ec379a",
755
+ "b1e2487eb6e808af637bf68382d19ea3a4ff7deec66002b6a02e2388467610a2",
756
+ "e3ea54b9eb9b5e70f3a28f9d4f8a00f47e87c35882de43c1eee8461f5136ff69",
757
+ "400cc5a239645d4b31ac61a907250412470c1041e4839d1e9fada06e8b112380",
758
+ "7c8f937b23ce082a319279d5155ed2cc258a8e66799d2a8d1276a71d06def094"
759
+ ],
760
+ "basin_field_sha256": [
761
+ "6344cbd121db183cca969fd28b7ea83d50ee26254a58bd13fa62969fec380627",
762
+ "992051ee31f610238dbb7ab19ab2a997c7c160aa3edac584da1e74ce69fd05f0",
763
+ "89c6506b310acb123dfa0e53725e85a8507e30b40226203519e21b21422540ea",
764
+ "e1e3f5d645533d14faafa885ffa13e0de3ab22c53ea626708b93a7690b8cd730",
765
+ "95489efc81d9677b6db3111557af451fe4707ffd54028f221cb75d9eb8b2defb",
766
+ "8136c31e1f646eebc20e0046eb0c15b5497e124760bf2c8871d23e71fa20428b",
767
+ "f36ce045ca4400dbd6bf43623bd694e93c5ebcd7f158b2d0cfe5cb2fe77a3a8b",
768
+ "6f65232ffb53d37548cd6f775be29f847a22eeb213c0befd37869f1234631a78",
769
+ "250d8a91ed217f35e5bd69a12ab0fe88fa52dce9d5698ba2a024141fccf5d004",
770
+ "e99493a4dba527a15d5f27243b94b7a6161ded0e6ec7c3f27250b9a83cea8a71",
771
+ "c3bcc1979782bbcd5e5b55b7e00e274cd4ff344d1c7466a2eea02e7f643e50ba",
772
+ "968a75c0ddacf6171dcb9dd66d4fdebc341f5acc2c6ee49886ced5d75ee2c984",
773
+ "e32bb4ed9dd6ac3c9945494b7a2ca2c7fe36ae0382dd2104e99ad2a9ecbb6e4c",
774
+ "0fe89c22aaf99d21f128eb9bf460a6406b85be1a9cd87f047fd9f38feade4cdb",
775
+ "dda831239a8cf6b32ed0e8f2782b5b966b3c9145e91f08abfe41827a6f0a1948",
776
+ "5dba6f8f29398c4e11b8f0fec58b56b8a120b3cc8d680ea614233169cb50748f",
777
+ "8eb539d600248d9399e915434e9485d16adbec9d509ceeb2f614ff3f0edb90d0",
778
+ "b0a2a2b064567fe10ffecee3703ea542877d4a0236052ba3aa7b43b25c1e4967",
779
+ "3930ab46c1d5a82a537542fd9c85aa5ec96f36c896fb4948ea5e8dc103410384",
780
+ "fb4abb99acc4be620c97f0db8befecac42cfa07e569a2bb5986e57f32d534241",
781
+ "e4778f633dca26234033c7e09f360dfef9225d9200cdeed37d254f509f16218b",
782
+ "512c137ef6e4c8120a66bd458a7b4ebcb4afc46e7807e297fac391d321314171",
783
+ "a99e92b510ae720b3af333cedb20b2dd8d4fa45e82e2cfa2fbee7a0600e44548",
784
+ "322e821cab63608a4b4156a0e326d3d908ec8e52509898ec5c8bd3d5813c4300",
785
+ "e40c1e6ef7ec382f2affe1f0f880b3c0277aac6256d6a8a6ca6ef6ab5b0c7055",
786
+ "5000f5304d5ee5c941c24470d98352d5566839f85cc0afc1701336fc7ee7bd06",
787
+ "ab18fed5e8eede5653ac5c56504606989cdb1fff3f63c951e1d88ac1064dde2a",
788
+ "7e950e84694cd0820d2c3b858cd518116880129351f87bf1ba6b9ba0b7592c64",
789
+ "6f5f4996b873b5db41abac7a2061ba381bd581e75d27625afd3fa44745085597",
790
+ "cda69edf10aeac53e4dfd5f672061223c4d9f5a71aa4b2883b390a40572c31a1",
791
+ "537b20317bdd27a135161013bbb5e6bfde8362ad04ce4b79fdacd23c086cf8b0",
792
+ "28c3deff6729dc94b59c5fbc227235bf031677600b514f5062ebdba810cef723",
793
+ "f19bfc3a27e491e7b7e4e177f9abde2c4ff6b69d778ba8d25df7b3b7a4b42deb",
794
+ "9054d181ef8bf7600e5ad4df1c36160472468891bb16bfb99d2c2c124befafe9",
795
+ "e7ab3cf1414e27efa8d292d59706e7d70c1bd7b48f4f9b57679eef7fda155fbf",
796
+ "e1b569b5550df7545a352c8e5cb273b1b4f3756f27c25cbf0a7d722bc8303226",
797
+ "6db2f51bf81c952ace60ebacebad57d58951eff8b5dd8fe7d92989efecf7fda9",
798
+ "53d84f18c347e1158bd8c0354ab5f9be4e6e7a5e2320407e86cf8aaf98dffb00",
799
+ "1f8325fccfcce7a1b56afbb5651de60eb7c553e2ebc7efcaf8d8e123cb1f6b0f",
800
+ "ac18a3af7ff0c71b70c43aa136afb253ad1aae1de176cca718253236d86a769c",
801
+ "7b853c498ae6aae5a6a28f48694504da633205850d4445e0682cdb7376d75919",
802
+ "a267b1e43c934e06920621ec9e207b7c2a82e384761c0bf54441d4f9009fec57",
803
+ "0564cdcf56c828ce5271a083b8bedcf143a754e053a90ec7e3e6c5ac48a07db8",
804
+ "70129cee082cd9378c8c571d28e342c9ced9b08cbf0ac55ab4af16597aa5bc23",
805
+ "8d25fcad7807bcbc5773feca7d8f0f4f66733afcafbaff0c63fc67a669bfe7db",
806
+ "9b92bc545b9bcbfcf36438c7ff90893ddd78fed9c57164bb3c28191bc8284f5e",
807
+ "6aa86b795cea402e35333b948ee041b56886718df9245acd5865809862abe3c1",
808
+ "fb63b73a74cd1cf2f6ac70d9ff77e1ac2eb741744c1296a21464762eb3572116",
809
+ "6776a0a90790bc107851455146d7a16668395032678a596507db2a5c428e954b",
810
+ "9f96f9a1b9173683eed4eaced6f2b2a9ede323777922d46d0645e83e119ffbe4"
811
+ ],
812
+ "mean_policy": "Equal-weight physical basin and fixed-issue regional grids; member-mean coordinates and central pressures separately. Moving-core grids are not directly averaged.",
813
+ "wind_estimation_method": "pressure-gradient-experimental-v1",
814
+ "wind_estimation_by_lead": [
815
+ {
816
+ "method": "pressure-gradient-experimental-v1",
817
+ "experimental": true,
818
+ "members": 50,
819
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
820
+ "assumptions": {
821
+ "air_density_kg_m3": 1.15,
822
+ "ocean_surface_reduction": 0.8,
823
+ "maximum_radius_km": 480,
824
+ "azimuth_samples": 72,
825
+ "radial_smoothing": "three-point pressure average",
826
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
827
+ "wind_averaging_period": "not calibrated to an agency averaging period",
828
+ "land_friction_asymmetry_and_translation": "not modelled",
829
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
830
+ },
831
+ "estimates": {
832
+ "maximum_wind_auxiliary_kt": {
833
+ "mean": 104.64149520874024,
834
+ "p10": 104.58159561157227,
835
+ "p90": 104.70846023559571,
836
+ "valid_members": 50,
837
+ "total_members": 50
838
+ },
839
+ "pressure_wind_estimate_kt": {
840
+ "mean": 98.00374223870789,
841
+ "p10": 97.80231271889745,
842
+ "p90": 98.19026460155195,
843
+ "valid_members": 50,
844
+ "total_members": 50
845
+ },
846
+ "rmw_estimate_km": {
847
+ "mean": 140.21552498268358,
848
+ "p10": 140.20882648826307,
849
+ "p90": 140.22283389951482,
850
+ "valid_members": 50,
851
+ "total_members": 50
852
+ },
853
+ "r34_estimate_km": {
854
+ "mean": 327.96277717304275,
855
+ "p10": 326.06328416897753,
856
+ "p90": 329.486667986721,
857
+ "valid_members": 50,
858
+ "total_members": 50
859
+ },
860
+ "r50_estimate_km": {
861
+ "mean": 272.21176165556614,
862
+ "p10": 271.10282188627866,
863
+ "p90": 273.1254728770137,
864
+ "valid_members": 50,
865
+ "total_members": 50
866
+ },
867
+ "r64_estimate_km": {
868
+ "mean": 239.63624000338467,
869
+ "p10": 238.71707266428785,
870
+ "p90": 240.37856261303537,
871
+ "valid_members": 50,
872
+ "total_members": 50
873
+ }
874
+ },
875
+ "status_counts": {
876
+ "experimental_estimate": 50
877
+ }
878
+ },
879
+ {
880
+ "method": "pressure-gradient-experimental-v1",
881
+ "experimental": true,
882
+ "members": 50,
883
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
884
+ "assumptions": {
885
+ "air_density_kg_m3": 1.15,
886
+ "ocean_surface_reduction": 0.8,
887
+ "maximum_radius_km": 480,
888
+ "azimuth_samples": 72,
889
+ "radial_smoothing": "three-point pressure average",
890
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
891
+ "wind_averaging_period": "not calibrated to an agency averaging period",
892
+ "land_friction_asymmetry_and_translation": "not modelled",
893
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
894
+ },
895
+ "estimates": {
896
+ "maximum_wind_auxiliary_kt": {
897
+ "mean": 114.6093830871582,
898
+ "p10": 114.48875350952149,
899
+ "p90": 114.74834365844727,
900
+ "valid_members": 50,
901
+ "total_members": 50
902
+ },
903
+ "pressure_wind_estimate_kt": {
904
+ "mean": 97.76423073668602,
905
+ "p10": 97.56445380482718,
906
+ "p90": 97.94516150595952,
907
+ "valid_members": 50,
908
+ "total_members": 50
909
+ },
910
+ "rmw_estimate_km": {
911
+ "mean": 120.12001856077529,
912
+ "p10": 120.1141653194275,
913
+ "p90": 120.12585230465635,
914
+ "valid_members": 50,
915
+ "total_members": 50
916
+ },
917
+ "r34_estimate_km": {
918
+ "mean": 375.1343617333669,
919
+ "p10": 369.83682877368943,
920
+ "p90": 380.5987113539689,
921
+ "valid_members": 50,
922
+ "total_members": 50
923
+ },
924
+ "r50_estimate_km": {
925
+ "mean": 270.19178549300455,
926
+ "p10": 268.5438124632186,
927
+ "p90": 272.4599920330505,
928
+ "valid_members": 50,
929
+ "total_members": 50
930
+ },
931
+ "r64_estimate_km": {
932
+ "mean": 227.70460778298198,
933
+ "p10": 226.28985453932185,
934
+ "p90": 229.3568742608026,
935
+ "valid_members": 50,
936
+ "total_members": 50
937
+ }
938
+ },
939
+ "status_counts": {
940
+ "experimental_estimate": 50
941
+ }
942
+ },
943
+ {
944
+ "method": "pressure-gradient-experimental-v1",
945
+ "experimental": true,
946
+ "members": 50,
947
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
948
+ "assumptions": {
949
+ "air_density_kg_m3": 1.15,
950
+ "ocean_surface_reduction": 0.8,
951
+ "maximum_radius_km": 480,
952
+ "azimuth_samples": 72,
953
+ "radial_smoothing": "three-point pressure average",
954
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
955
+ "wind_averaging_period": "not calibrated to an agency averaging period",
956
+ "land_friction_asymmetry_and_translation": "not modelled",
957
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
958
+ },
959
+ "estimates": {
960
+ "maximum_wind_auxiliary_kt": {
961
+ "mean": 124.60197982788085,
962
+ "p10": 124.44197387695313,
963
+ "p90": 124.7645034790039,
964
+ "valid_members": 50,
965
+ "total_members": 50
966
+ },
967
+ "pressure_wind_estimate_kt": {
968
+ "mean": 97.32348131358722,
969
+ "p10": 97.08238867534251,
970
+ "p90": 97.51864846191978,
971
+ "valid_members": 50,
972
+ "total_members": 50
973
+ },
974
+ "rmw_estimate_km": {
975
+ "mean": 100.10766200816072,
976
+ "p10": 100.1014718372439,
977
+ "p90": 100.11441015302614,
978
+ "valid_members": 50,
979
+ "total_members": 50
980
+ },
981
+ "r34_estimate_km": {
982
+ "mean": 413.1252738568222,
983
+ "p10": 408.4149080867087,
984
+ "p90": 419.1785100897602,
985
+ "valid_members": 50,
986
+ "total_members": 50
987
+ },
988
+ "r50_estimate_km": {
989
+ "mean": 282.87310075473874,
990
+ "p10": 279.58358256574206,
991
+ "p90": 286.1527752268946,
992
+ "valid_members": 50,
993
+ "total_members": 50
994
+ },
995
+ "r64_estimate_km": {
996
+ "mean": 218.90412066334235,
997
+ "p10": 216.79619227152747,
998
+ "p90": 221.1736812900946,
999
+ "valid_members": 50,
1000
+ "total_members": 50
1001
+ }
1002
+ },
1003
+ "status_counts": {
1004
+ "experimental_estimate": 50
1005
+ }
1006
+ },
1007
+ {
1008
+ "method": "pressure-gradient-experimental-v1",
1009
+ "experimental": true,
1010
+ "members": 50,
1011
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
1012
+ "assumptions": {
1013
+ "air_density_kg_m3": 1.15,
1014
+ "ocean_surface_reduction": 0.8,
1015
+ "maximum_radius_km": 480,
1016
+ "azimuth_samples": 72,
1017
+ "radial_smoothing": "three-point pressure average",
1018
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
1019
+ "wind_averaging_period": "not calibrated to an agency averaging period",
1020
+ "land_friction_asymmetry_and_translation": "not modelled",
1021
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
1022
+ },
1023
+ "estimates": {
1024
+ "maximum_wind_auxiliary_kt": {
1025
+ "mean": 134.72011596679687,
1026
+ "p10": 134.5215103149414,
1027
+ "p90": 134.8843521118164,
1028
+ "valid_members": 50,
1029
+ "total_members": 50
1030
+ },
1031
+ "pressure_wind_estimate_kt": {
1032
+ "mean": 97.04198919856742,
1033
+ "p10": 96.67313755073036,
1034
+ "p90": 97.3116939686303,
1035
+ "valid_members": 50,
1036
+ "total_members": 50
1037
+ },
1038
+ "rmw_estimate_km": {
1039
+ "mean": 100.14342511893864,
1040
+ "p10": 100.13863989882952,
1041
+ "p90": 100.14780075807953,
1042
+ "valid_members": 50,
1043
+ "total_members": 50
1044
+ },
1045
+ "r34_estimate_km": {
1046
+ "mean": null,
1047
+ "p10": null,
1048
+ "p90": null,
1049
+ "valid_members": 0,
1050
+ "total_members": 50
1051
+ },
1052
+ "r50_estimate_km": {
1053
+ "mean": 309.3529348870095,
1054
+ "p10": 306.60156243702573,
1055
+ "p90": 311.9936685618269,
1056
+ "valid_members": 50,
1057
+ "total_members": 50
1058
+ },
1059
+ "r64_estimate_km": {
1060
+ "mean": 231.32225592151636,
1061
+ "p10": 228.00789721262316,
1062
+ "p90": 234.6310286652605,
1063
+ "valid_members": 50,
1064
+ "total_members": 50
1065
+ }
1066
+ },
1067
+ "status_counts": {
1068
+ "experimental_estimate": 50
1069
+ }
1070
+ },
1071
+ {
1072
+ "method": "pressure-gradient-experimental-v1",
1073
+ "experimental": true,
1074
+ "members": 50,
1075
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
1076
+ "assumptions": {
1077
+ "air_density_kg_m3": 1.15,
1078
+ "ocean_surface_reduction": 0.8,
1079
+ "maximum_radius_km": 480,
1080
+ "azimuth_samples": 72,
1081
+ "radial_smoothing": "three-point pressure average",
1082
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
1083
+ "wind_averaging_period": "not calibrated to an agency averaging period",
1084
+ "land_friction_asymmetry_and_translation": "not modelled",
1085
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
1086
+ },
1087
+ "estimates": {
1088
+ "maximum_wind_auxiliary_kt": {
1089
+ "mean": 144.47232666015626,
1090
+ "p10": 144.24500274658203,
1091
+ "p90": 144.68001403808594,
1092
+ "valid_members": 50,
1093
+ "total_members": 50
1094
+ },
1095
+ "pressure_wind_estimate_kt": {
1096
+ "mean": 96.05489124293308,
1097
+ "p10": 95.80413142495685,
1098
+ "p90": 96.27318165472724,
1099
+ "valid_members": 50,
1100
+ "total_members": 50
1101
+ },
1102
+ "rmw_estimate_km": {
1103
+ "mean": 80.1265606014329,
1104
+ "p10": 80.12188602226055,
1105
+ "p90": 80.1308562577929,
1106
+ "valid_members": 50,
1107
+ "total_members": 50
1108
+ },
1109
+ "r34_estimate_km": {
1110
+ "mean": null,
1111
+ "p10": null,
1112
+ "p90": null,
1113
+ "valid_members": 0,
1114
+ "total_members": 50
1115
+ },
1116
+ "r50_estimate_km": {
1117
+ "mean": 325.148704939771,
1118
+ "p10": 322.4279751078741,
1119
+ "p90": 327.6814356749051,
1120
+ "valid_members": 50,
1121
+ "total_members": 50
1122
+ },
1123
+ "r64_estimate_km": {
1124
+ "mean": 253.28096449872635,
1125
+ "p10": 250.84240036943405,
1126
+ "p90": 255.78899295102656,
1127
+ "valid_members": 50,
1128
+ "total_members": 50
1129
+ }
1130
+ },
1131
+ "status_counts": {
1132
+ "experimental_estimate": 50
1133
+ }
1134
+ },
1135
+ {
1136
+ "method": "pressure-gradient-experimental-v1",
1137
+ "experimental": true,
1138
+ "members": 50,
1139
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
1140
+ "assumptions": {
1141
+ "air_density_kg_m3": 1.15,
1142
+ "ocean_surface_reduction": 0.8,
1143
+ "maximum_radius_km": 480,
1144
+ "azimuth_samples": 72,
1145
+ "radial_smoothing": "three-point pressure average",
1146
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
1147
+ "wind_averaging_period": "not calibrated to an agency averaging period",
1148
+ "land_friction_asymmetry_and_translation": "not modelled",
1149
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
1150
+ },
1151
+ "estimates": {
1152
+ "maximum_wind_auxiliary_kt": {
1153
+ "mean": 153.0615121459961,
1154
+ "p10": 152.79605407714843,
1155
+ "p90": 153.30550689697264,
1156
+ "valid_members": 50,
1157
+ "total_members": 50
1158
+ },
1159
+ "pressure_wind_estimate_kt": {
1160
+ "mean": 95.41144513551481,
1161
+ "p10": 95.0734835457216,
1162
+ "p90": 95.72629437491186,
1163
+ "valid_members": 50,
1164
+ "total_members": 50
1165
+ },
1166
+ "rmw_estimate_km": {
1167
+ "mean": 80.12469925917772,
1168
+ "p10": 80.12063327316504,
1169
+ "p90": 80.12871117530699,
1170
+ "valid_members": 50,
1171
+ "total_members": 50
1172
+ },
1173
+ "r34_estimate_km": {
1174
+ "mean": null,
1175
+ "p10": null,
1176
+ "p90": null,
1177
+ "valid_members": 0,
1178
+ "total_members": 50
1179
+ },
1180
+ "r50_estimate_km": {
1181
+ "mean": 342.19317162257676,
1182
+ "p10": 338.64803031669237,
1183
+ "p90": 344.8672725973593,
1184
+ "valid_members": 50,
1185
+ "total_members": 50
1186
+ },
1187
+ "r64_estimate_km": {
1188
+ "mean": 269.6479198258531,
1189
+ "p10": 267.651987163571,
1190
+ "p90": 272.33888509569937,
1191
+ "valid_members": 50,
1192
+ "total_members": 50
1193
+ }
1194
+ },
1195
+ "status_counts": {
1196
+ "experimental_estimate": 50
1197
+ }
1198
+ },
1199
+ {
1200
+ "method": "pressure-gradient-experimental-v1",
1201
+ "experimental": true,
1202
+ "members": 50,
1203
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
1204
+ "assumptions": {
1205
+ "air_density_kg_m3": 1.15,
1206
+ "ocean_surface_reduction": 0.8,
1207
+ "maximum_radius_km": 480,
1208
+ "azimuth_samples": 72,
1209
+ "radial_smoothing": "three-point pressure average",
1210
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
1211
+ "wind_averaging_period": "not calibrated to an agency averaging period",
1212
+ "land_friction_asymmetry_and_translation": "not modelled",
1213
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
1214
+ },
1215
+ "estimates": {
1216
+ "maximum_wind_auxiliary_kt": {
1217
+ "mean": 160.86925262451172,
1218
+ "p10": 160.53501739501954,
1219
+ "p90": 161.1848907470703,
1220
+ "valid_members": 50,
1221
+ "total_members": 50
1222
+ },
1223
+ "pressure_wind_estimate_kt": {
1224
+ "mean": 92.59287966762922,
1225
+ "p10": 92.12958770639787,
1226
+ "p90": 93.02336450729004,
1227
+ "valid_members": 50,
1228
+ "total_members": 50
1229
+ },
1230
+ "rmw_estimate_km": {
1231
+ "mean": 80.12683289296967,
1232
+ "p10": 80.12444669363076,
1233
+ "p90": 80.12891831644141,
1234
+ "valid_members": 50,
1235
+ "total_members": 50
1236
+ },
1237
+ "r34_estimate_km": {
1238
+ "mean": null,
1239
+ "p10": null,
1240
+ "p90": null,
1241
+ "valid_members": 0,
1242
+ "total_members": 50
1243
+ },
1244
+ "r50_estimate_km": {
1245
+ "mean": 336.6116176969245,
1246
+ "p10": 333.9044025069236,
1247
+ "p90": 339.23115874176534,
1248
+ "valid_members": 50,
1249
+ "total_members": 50
1250
+ },
1251
+ "r64_estimate_km": {
1252
+ "mean": 272.77200253329147,
1253
+ "p10": 270.3044378728332,
1254
+ "p90": 275.2759640184968,
1255
+ "valid_members": 50,
1256
+ "total_members": 50
1257
+ }
1258
+ },
1259
+ "status_counts": {
1260
+ "experimental_estimate": 50
1261
+ }
1262
+ },
1263
+ {
1264
+ "method": "pressure-gradient-experimental-v1",
1265
+ "experimental": true,
1266
+ "members": 50,
1267
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
1268
+ "assumptions": {
1269
+ "air_density_kg_m3": 1.15,
1270
+ "ocean_surface_reduction": 0.8,
1271
+ "maximum_radius_km": 480,
1272
+ "azimuth_samples": 72,
1273
+ "radial_smoothing": "three-point pressure average",
1274
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
1275
+ "wind_averaging_period": "not calibrated to an agency averaging period",
1276
+ "land_friction_asymmetry_and_translation": "not modelled",
1277
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
1278
+ },
1279
+ "estimates": {
1280
+ "maximum_wind_auxiliary_kt": {
1281
+ "mean": 166.31432495117187,
1282
+ "p10": 165.836328125,
1283
+ "p90": 166.77098999023437,
1284
+ "valid_members": 50,
1285
+ "total_members": 50
1286
+ },
1287
+ "pressure_wind_estimate_kt": {
1288
+ "mean": 89.4126686770208,
1289
+ "p10": 89.09052980078643,
1290
+ "p90": 89.74115186122647,
1291
+ "valid_members": 50,
1292
+ "total_members": 50
1293
+ },
1294
+ "rmw_estimate_km": {
1295
+ "mean": 64.09090154744209,
1296
+ "p10": 60.08198126211212,
1297
+ "p90": 80.11269879728108,
1298
+ "valid_members": 50,
1299
+ "total_members": 50
1300
+ },
1301
+ "r34_estimate_km": {
1302
+ "mean": null,
1303
+ "p10": null,
1304
+ "p90": null,
1305
+ "valid_members": 0,
1306
+ "total_members": 50
1307
+ },
1308
+ "r50_estimate_km": {
1309
+ "mean": 336.2333189696262,
1310
+ "p10": 333.20750729232975,
1311
+ "p90": 339.5872531191811,
1312
+ "valid_members": 50,
1313
+ "total_members": 50
1314
+ },
1315
+ "r64_estimate_km": {
1316
+ "mean": 265.239610384554,
1317
+ "p10": 263.058654768621,
1318
+ "p90": 267.7612145964522,
1319
+ "valid_members": 50,
1320
+ "total_members": 50
1321
+ }
1322
+ },
1323
+ "status_counts": {
1324
+ "experimental_estimate": 50
1325
+ }
1326
+ },
1327
+ {
1328
+ "method": "pressure-gradient-experimental-v1",
1329
+ "experimental": true,
1330
+ "members": 50,
1331
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
1332
+ "assumptions": {
1333
+ "air_density_kg_m3": 1.15,
1334
+ "ocean_surface_reduction": 0.8,
1335
+ "maximum_radius_km": 480,
1336
+ "azimuth_samples": 72,
1337
+ "radial_smoothing": "three-point pressure average",
1338
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
1339
+ "wind_averaging_period": "not calibrated to an agency averaging period",
1340
+ "land_friction_asymmetry_and_translation": "not modelled",
1341
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
1342
+ },
1343
+ "estimates": {
1344
+ "maximum_wind_auxiliary_kt": {
1345
+ "mean": 172.97844329833984,
1346
+ "p10": 172.44232330322265,
1347
+ "p90": 173.51752319335938,
1348
+ "valid_members": 50,
1349
+ "total_members": 50
1350
+ },
1351
+ "pressure_wind_estimate_kt": {
1352
+ "mean": 87.00958330913801,
1353
+ "p10": 86.57519528132963,
1354
+ "p90": 87.36372475392078,
1355
+ "valid_members": 50,
1356
+ "total_members": 50
1357
+ },
1358
+ "rmw_estimate_km": {
1359
+ "mean": 60.09867693552717,
1360
+ "p10": 60.097122014031754,
1361
+ "p90": 60.100280364309675,
1362
+ "valid_members": 50,
1363
+ "total_members": 50
1364
+ },
1365
+ "r34_estimate_km": {
1366
+ "mean": null,
1367
+ "p10": null,
1368
+ "p90": null,
1369
+ "valid_members": 0,
1370
+ "total_members": 50
1371
+ },
1372
+ "r50_estimate_km": {
1373
+ "mean": 323.8147295382622,
1374
+ "p10": 320.53976022365106,
1375
+ "p90": 326.45310081631044,
1376
+ "valid_members": 50,
1377
+ "total_members": 50
1378
+ },
1379
+ "r64_estimate_km": {
1380
+ "mean": 255.19766455473234,
1381
+ "p10": 253.03487885359738,
1382
+ "p90": 257.7478687006905,
1383
+ "valid_members": 50,
1384
+ "total_members": 50
1385
+ }
1386
+ },
1387
+ "status_counts": {
1388
+ "experimental_estimate": 50
1389
+ }
1390
+ },
1391
+ {
1392
+ "method": "pressure-gradient-experimental-v1",
1393
+ "experimental": true,
1394
+ "members": 50,
1395
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
1396
+ "assumptions": {
1397
+ "air_density_kg_m3": 1.15,
1398
+ "ocean_surface_reduction": 0.8,
1399
+ "maximum_radius_km": 480,
1400
+ "azimuth_samples": 72,
1401
+ "radial_smoothing": "three-point pressure average",
1402
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
1403
+ "wind_averaging_period": "not calibrated to an agency averaging period",
1404
+ "land_friction_asymmetry_and_translation": "not modelled",
1405
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
1406
+ },
1407
+ "estimates": {
1408
+ "maximum_wind_auxiliary_kt": {
1409
+ "mean": 178.4434976196289,
1410
+ "p10": 177.85364532470703,
1411
+ "p90": 179.11270294189453,
1412
+ "valid_members": 50,
1413
+ "total_members": 50
1414
+ },
1415
+ "pressure_wind_estimate_kt": {
1416
+ "mean": 85.27550767998771,
1417
+ "p10": 84.92737745406437,
1418
+ "p90": 85.59656969651694,
1419
+ "valid_members": 50,
1420
+ "total_members": 50
1421
+ },
1422
+ "rmw_estimate_km": {
1423
+ "mean": 60.10134609866478,
1424
+ "p10": 60.099996156822336,
1425
+ "p90": 60.10273149377433,
1426
+ "valid_members": 50,
1427
+ "total_members": 50
1428
+ },
1429
+ "r34_estimate_km": {
1430
+ "mean": null,
1431
+ "p10": null,
1432
+ "p90": null,
1433
+ "valid_members": 0,
1434
+ "total_members": 50
1435
+ },
1436
+ "r50_estimate_km": {
1437
+ "mean": 323.3379465456766,
1438
+ "p10": 321.052923975466,
1439
+ "p90": 326.3950634200647,
1440
+ "valid_members": 50,
1441
+ "total_members": 50
1442
+ },
1443
+ "r64_estimate_km": {
1444
+ "mean": 254.42498791125038,
1445
+ "p10": 251.41136974585046,
1446
+ "p90": 257.16026725079416,
1447
+ "valid_members": 50,
1448
+ "total_members": 50
1449
+ }
1450
+ },
1451
+ "status_counts": {
1452
+ "experimental_estimate": 50
1453
+ }
1454
+ },
1455
+ {
1456
+ "method": "pressure-gradient-experimental-v1",
1457
+ "experimental": true,
1458
+ "members": 50,
1459
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
1460
+ "assumptions": {
1461
+ "air_density_kg_m3": 1.15,
1462
+ "ocean_surface_reduction": 0.8,
1463
+ "maximum_radius_km": 480,
1464
+ "azimuth_samples": 72,
1465
+ "radial_smoothing": "three-point pressure average",
1466
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
1467
+ "wind_averaging_period": "not calibrated to an agency averaging period",
1468
+ "land_friction_asymmetry_and_translation": "not modelled",
1469
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
1470
+ },
1471
+ "estimates": {
1472
+ "maximum_wind_auxiliary_kt": {
1473
+ "mean": 184.83419647216797,
1474
+ "p10": 184.22805938720703,
1475
+ "p90": 185.59008026123047,
1476
+ "valid_members": 50,
1477
+ "total_members": 50
1478
+ },
1479
+ "pressure_wind_estimate_kt": {
1480
+ "mean": 82.8757899279715,
1481
+ "p10": 82.477565234095,
1482
+ "p90": 83.32197720985265,
1483
+ "valid_members": 50,
1484
+ "total_members": 50
1485
+ },
1486
+ "rmw_estimate_km": {
1487
+ "mean": 60.104588817743604,
1488
+ "p10": 60.102750852476895,
1489
+ "p90": 60.10622509523515,
1490
+ "valid_members": 50,
1491
+ "total_members": 50
1492
+ },
1493
+ "r34_estimate_km": {
1494
+ "mean": null,
1495
+ "p10": null,
1496
+ "p90": null,
1497
+ "valid_members": 40,
1498
+ "total_members": 50
1499
+ },
1500
+ "r50_estimate_km": {
1501
+ "mean": 309.96740848663853,
1502
+ "p10": 307.3536522734231,
1503
+ "p90": 312.1578294087369,
1504
+ "valid_members": 50,
1505
+ "total_members": 50
1506
+ },
1507
+ "r64_estimate_km": {
1508
+ "mean": 251.21210579593867,
1509
+ "p10": 248.87880133824493,
1510
+ "p90": 253.22332635847602,
1511
+ "valid_members": 50,
1512
+ "total_members": 50
1513
+ }
1514
+ },
1515
+ "status_counts": {
1516
+ "experimental_estimate": 50
1517
+ }
1518
+ },
1519
+ {
1520
+ "method": "pressure-gradient-experimental-v1",
1521
+ "experimental": true,
1522
+ "members": 50,
1523
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
1524
+ "assumptions": {
1525
+ "air_density_kg_m3": 1.15,
1526
+ "ocean_surface_reduction": 0.8,
1527
+ "maximum_radius_km": 480,
1528
+ "azimuth_samples": 72,
1529
+ "radial_smoothing": "three-point pressure average",
1530
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
1531
+ "wind_averaging_period": "not calibrated to an agency averaging period",
1532
+ "land_friction_asymmetry_and_translation": "not modelled",
1533
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
1534
+ },
1535
+ "estimates": {
1536
+ "maximum_wind_auxiliary_kt": {
1537
+ "mean": 189.625908203125,
1538
+ "p10": 188.9086700439453,
1539
+ "p90": 190.48143157958984,
1540
+ "valid_members": 50,
1541
+ "total_members": 50
1542
+ },
1543
+ "pressure_wind_estimate_kt": {
1544
+ "mean": 82.27035281296507,
1545
+ "p10": 81.90378016337422,
1546
+ "p90": 82.6236493373704,
1547
+ "valid_members": 50,
1548
+ "total_members": 50
1549
+ },
1550
+ "rmw_estimate_km": {
1551
+ "mean": 60.104536946833704,
1552
+ "p10": 60.102496164849505,
1553
+ "p90": 60.10672293703247,
1554
+ "valid_members": 50,
1555
+ "total_members": 50
1556
+ },
1557
+ "r34_estimate_km": {
1558
+ "mean": null,
1559
+ "p10": null,
1560
+ "p90": null,
1561
+ "valid_members": 42,
1562
+ "total_members": 50
1563
+ },
1564
+ "r50_estimate_km": {
1565
+ "mean": 303.72308996847096,
1566
+ "p10": 301.45082461032354,
1567
+ "p90": 305.96301941311685,
1568
+ "valid_members": 50,
1569
+ "total_members": 50
1570
+ },
1571
+ "r64_estimate_km": {
1572
+ "mean": 243.80047608643724,
1573
+ "p10": 241.47275346694394,
1574
+ "p90": 245.6147815346318,
1575
+ "valid_members": 50,
1576
+ "total_members": 50
1577
+ }
1578
+ },
1579
+ "status_counts": {
1580
+ "experimental_estimate": 50
1581
+ }
1582
+ },
1583
+ {
1584
+ "method": "pressure-gradient-experimental-v1",
1585
+ "experimental": true,
1586
+ "members": 50,
1587
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
1588
+ "assumptions": {
1589
+ "air_density_kg_m3": 1.15,
1590
+ "ocean_surface_reduction": 0.8,
1591
+ "maximum_radius_km": 480,
1592
+ "azimuth_samples": 72,
1593
+ "radial_smoothing": "three-point pressure average",
1594
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
1595
+ "wind_averaging_period": "not calibrated to an agency averaging period",
1596
+ "land_friction_asymmetry_and_translation": "not modelled",
1597
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
1598
+ },
1599
+ "estimates": {
1600
+ "maximum_wind_auxiliary_kt": {
1601
+ "mean": 193.3230471801758,
1602
+ "p10": 192.4901336669922,
1603
+ "p90": 194.10914306640626,
1604
+ "valid_members": 50,
1605
+ "total_members": 50
1606
+ },
1607
+ "pressure_wind_estimate_kt": {
1608
+ "mean": 78.9289822653774,
1609
+ "p10": 78.22955361765983,
1610
+ "p90": 80.09489924613538,
1611
+ "valid_members": 50,
1612
+ "total_members": 50
1613
+ },
1614
+ "rmw_estimate_km": {
1615
+ "mean": 80.14115924554564,
1616
+ "p10": 60.10457335492511,
1617
+ "p90": 160.28117097357432,
1618
+ "valid_members": 50,
1619
+ "total_members": 50
1620
+ },
1621
+ "r34_estimate_km": {
1622
+ "mean": 400.2034786232343,
1623
+ "p10": 396.8221408637958,
1624
+ "p90": 403.9267988409667,
1625
+ "valid_members": 50,
1626
+ "total_members": 50
1627
+ },
1628
+ "r50_estimate_km": {
1629
+ "mean": 296.2262003516522,
1630
+ "p10": 293.87734982256023,
1631
+ "p90": 298.3335774739285,
1632
+ "valid_members": 50,
1633
+ "total_members": 50
1634
+ },
1635
+ "r64_estimate_km": {
1636
+ "mean": 235.0631070975254,
1637
+ "p10": 232.91396524373607,
1638
+ "p90": 237.5867791745078,
1639
+ "valid_members": 50,
1640
+ "total_members": 50
1641
+ }
1642
+ },
1643
+ "status_counts": {
1644
+ "experimental_estimate": 50
1645
+ }
1646
+ },
1647
+ {
1648
+ "method": "pressure-gradient-experimental-v1",
1649
+ "experimental": true,
1650
+ "members": 50,
1651
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
1652
+ "assumptions": {
1653
+ "air_density_kg_m3": 1.15,
1654
+ "ocean_surface_reduction": 0.8,
1655
+ "maximum_radius_km": 480,
1656
+ "azimuth_samples": 72,
1657
+ "radial_smoothing": "three-point pressure average",
1658
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
1659
+ "wind_averaging_period": "not calibrated to an agency averaging period",
1660
+ "land_friction_asymmetry_and_translation": "not modelled",
1661
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
1662
+ },
1663
+ "estimates": {
1664
+ "maximum_wind_auxiliary_kt": {
1665
+ "mean": 194.78679779052734,
1666
+ "p10": 193.89285583496093,
1667
+ "p90": 195.69148864746094,
1668
+ "valid_members": 50,
1669
+ "total_members": 50
1670
+ },
1671
+ "pressure_wind_estimate_kt": {
1672
+ "mean": 78.91453224738169,
1673
+ "p10": 78.0647604736035,
1674
+ "p90": 80.0890360938151,
1675
+ "valid_members": 50,
1676
+ "total_members": 50
1677
+ },
1678
+ "rmw_estimate_km": {
1679
+ "mean": 60.1133803981089,
1680
+ "p10": 60.111826178087256,
1681
+ "p90": 60.1148267553243,
1682
+ "valid_members": 50,
1683
+ "total_members": 50
1684
+ },
1685
+ "r34_estimate_km": {
1686
+ "mean": 393.3382101998209,
1687
+ "p10": 389.23759333622667,
1688
+ "p90": 398.3474492278534,
1689
+ "valid_members": 50,
1690
+ "total_members": 50
1691
+ },
1692
+ "r50_estimate_km": {
1693
+ "mean": 284.0531922263074,
1694
+ "p10": 282.3683663208646,
1695
+ "p90": 285.9396185043405,
1696
+ "valid_members": 50,
1697
+ "total_members": 50
1698
+ },
1699
+ "r64_estimate_km": {
1700
+ "mean": 217.9772810869825,
1701
+ "p10": 215.8062460714762,
1702
+ "p90": 220.29602532111207,
1703
+ "valid_members": 50,
1704
+ "total_members": 50
1705
+ }
1706
+ },
1707
+ "status_counts": {
1708
+ "experimental_estimate": 50
1709
+ }
1710
+ },
1711
+ {
1712
+ "method": "pressure-gradient-experimental-v1",
1713
+ "experimental": true,
1714
+ "members": 50,
1715
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
1716
+ "assumptions": {
1717
+ "air_density_kg_m3": 1.15,
1718
+ "ocean_surface_reduction": 0.8,
1719
+ "maximum_radius_km": 480,
1720
+ "azimuth_samples": 72,
1721
+ "radial_smoothing": "three-point pressure average",
1722
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
1723
+ "wind_averaging_period": "not calibrated to an agency averaging period",
1724
+ "land_friction_asymmetry_and_translation": "not modelled",
1725
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
1726
+ },
1727
+ "estimates": {
1728
+ "maximum_wind_auxiliary_kt": {
1729
+ "mean": 193.2800442504883,
1730
+ "p10": 192.31536712646485,
1731
+ "p90": 194.29532775878906,
1732
+ "valid_members": 50,
1733
+ "total_members": 50
1734
+ },
1735
+ "pressure_wind_estimate_kt": {
1736
+ "mean": 74.81134141839351,
1737
+ "p10": 74.4369829379548,
1738
+ "p90": 75.1841029810445,
1739
+ "valid_members": 50,
1740
+ "total_members": 50
1741
+ },
1742
+ "rmw_estimate_km": {
1743
+ "mean": 60.11652657382222,
1744
+ "p10": 60.114659890002365,
1745
+ "p90": 60.11819916239406,
1746
+ "valid_members": 50,
1747
+ "total_members": 50
1748
+ },
1749
+ "r34_estimate_km": {
1750
+ "mean": 359.96791331210335,
1751
+ "p10": 355.6046306588598,
1752
+ "p90": 364.63283575083074,
1753
+ "valid_members": 50,
1754
+ "total_members": 50
1755
+ },
1756
+ "r50_estimate_km": {
1757
+ "mean": 268.37126846060744,
1758
+ "p10": 265.551229016982,
1759
+ "p90": 271.3137807922926,
1760
+ "valid_members": 50,
1761
+ "total_members": 50
1762
+ },
1763
+ "r64_estimate_km": {
1764
+ "mean": 199.26242717302347,
1765
+ "p10": 195.18915089313438,
1766
+ "p90": 203.48214946911628,
1767
+ "valid_members": 50,
1768
+ "total_members": 50
1769
+ }
1770
+ },
1771
+ "status_counts": {
1772
+ "experimental_estimate": 50
1773
+ }
1774
+ },
1775
+ {
1776
+ "method": "pressure-gradient-experimental-v1",
1777
+ "experimental": true,
1778
+ "members": 50,
1779
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
1780
+ "assumptions": {
1781
+ "air_density_kg_m3": 1.15,
1782
+ "ocean_surface_reduction": 0.8,
1783
+ "maximum_radius_km": 480,
1784
+ "azimuth_samples": 72,
1785
+ "radial_smoothing": "three-point pressure average",
1786
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
1787
+ "wind_averaging_period": "not calibrated to an agency averaging period",
1788
+ "land_friction_asymmetry_and_translation": "not modelled",
1789
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
1790
+ },
1791
+ "estimates": {
1792
+ "maximum_wind_auxiliary_kt": {
1793
+ "mean": 189.61082092285156,
1794
+ "p10": 188.40074310302734,
1795
+ "p90": 190.71917419433595,
1796
+ "valid_members": 50,
1797
+ "total_members": 50
1798
+ },
1799
+ "pressure_wind_estimate_kt": {
1800
+ "mean": 74.42452677966686,
1801
+ "p10": 73.85330743551495,
1802
+ "p90": 74.99625336166386,
1803
+ "valid_members": 50,
1804
+ "total_members": 50
1805
+ },
1806
+ "rmw_estimate_km": {
1807
+ "mean": 60.10848581720569,
1808
+ "p10": 60.09991000639112,
1809
+ "p90": 60.11404489743269,
1810
+ "valid_members": 50,
1811
+ "total_members": 50
1812
+ },
1813
+ "r34_estimate_km": {
1814
+ "mean": 326.7466855612969,
1815
+ "p10": 323.4526633040891,
1816
+ "p90": 329.72691282253663,
1817
+ "valid_members": 50,
1818
+ "total_members": 50
1819
+ },
1820
+ "r50_estimate_km": {
1821
+ "mean": 246.20762980258667,
1822
+ "p10": 243.19177875715442,
1823
+ "p90": 248.77733602564567,
1824
+ "valid_members": 50,
1825
+ "total_members": 50
1826
+ },
1827
+ "r64_estimate_km": {
1828
+ "mean": 160.83696994428612,
1829
+ "p10": 151.05273553422822,
1830
+ "p90": 171.30948148781948,
1831
+ "valid_members": 50,
1832
+ "total_members": 50
1833
+ }
1834
+ },
1835
+ "status_counts": {
1836
+ "experimental_estimate": 50
1837
+ }
1838
+ },
1839
+ {
1840
+ "method": "pressure-gradient-experimental-v1",
1841
+ "experimental": true,
1842
+ "members": 50,
1843
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
1844
+ "assumptions": {
1845
+ "air_density_kg_m3": 1.15,
1846
+ "ocean_surface_reduction": 0.8,
1847
+ "maximum_radius_km": 480,
1848
+ "azimuth_samples": 72,
1849
+ "radial_smoothing": "three-point pressure average",
1850
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
1851
+ "wind_averaging_period": "not calibrated to an agency averaging period",
1852
+ "land_friction_asymmetry_and_translation": "not modelled",
1853
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
1854
+ },
1855
+ "estimates": {
1856
+ "maximum_wind_auxiliary_kt": {
1857
+ "mean": 185.56466522216797,
1858
+ "p10": 184.58406677246094,
1859
+ "p90": 186.4939727783203,
1860
+ "valid_members": 50,
1861
+ "total_members": 50
1862
+ },
1863
+ "pressure_wind_estimate_kt": {
1864
+ "mean": 68.98629654043093,
1865
+ "p10": 68.46383155402424,
1866
+ "p90": 69.52045476908492,
1867
+ "valid_members": 50,
1868
+ "total_members": 50
1869
+ },
1870
+ "rmw_estimate_km": {
1871
+ "mean": 60.1113759504662,
1872
+ "p10": 60.106164602195506,
1873
+ "p90": 60.11551870060794,
1874
+ "valid_members": 50,
1875
+ "total_members": 50
1876
+ },
1877
+ "r34_estimate_km": {
1878
+ "mean": 301.36671364980907,
1879
+ "p10": 298.0363628550547,
1880
+ "p90": 304.54676273693855,
1881
+ "valid_members": 50,
1882
+ "total_members": 50
1883
+ },
1884
+ "r50_estimate_km": {
1885
+ "mean": 224.41029943553283,
1886
+ "p10": 220.6652662699374,
1887
+ "p90": 227.85334658458692,
1888
+ "valid_members": 50,
1889
+ "total_members": 50
1890
+ },
1891
+ "r64_estimate_km": {
1892
+ "mean": 78.29319834701019,
1893
+ "p10": 75.99688569994754,
1894
+ "p90": 80.97304184660781,
1895
+ "valid_members": 50,
1896
+ "total_members": 50
1897
+ }
1898
+ },
1899
+ "status_counts": {
1900
+ "experimental_estimate": 50
1901
+ }
1902
+ },
1903
+ {
1904
+ "method": "pressure-gradient-experimental-v1",
1905
+ "experimental": true,
1906
+ "members": 50,
1907
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
1908
+ "assumptions": {
1909
+ "air_density_kg_m3": 1.15,
1910
+ "ocean_surface_reduction": 0.8,
1911
+ "maximum_radius_km": 480,
1912
+ "azimuth_samples": 72,
1913
+ "radial_smoothing": "three-point pressure average",
1914
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
1915
+ "wind_averaging_period": "not calibrated to an agency averaging period",
1916
+ "land_friction_asymmetry_and_translation": "not modelled",
1917
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
1918
+ },
1919
+ "estimates": {
1920
+ "maximum_wind_auxiliary_kt": {
1921
+ "mean": 181.93035186767577,
1922
+ "p10": 180.96984405517577,
1923
+ "p90": 182.76628723144532,
1924
+ "valid_members": 50,
1925
+ "total_members": 50
1926
+ },
1927
+ "pressure_wind_estimate_kt": {
1928
+ "mean": 64.01554967240737,
1929
+ "p10": 63.4476104265332,
1930
+ "p90": 64.60528140592703,
1931
+ "valid_members": 50,
1932
+ "total_members": 50
1933
+ },
1934
+ "rmw_estimate_km": {
1935
+ "mean": 57.264833266128925,
1936
+ "p10": 40.043851225057836,
1937
+ "p90": 60.07138420176969,
1938
+ "valid_members": 50,
1939
+ "total_members": 50
1940
+ },
1941
+ "r34_estimate_km": {
1942
+ "mean": 285.3926589268816,
1943
+ "p10": 281.9497910894972,
1944
+ "p90": 288.61522960186204,
1945
+ "valid_members": 50,
1946
+ "total_members": 50
1947
+ },
1948
+ "r50_estimate_km": {
1949
+ "mean": 201.94426763608394,
1950
+ "p10": 198.44027272383866,
1951
+ "p90": 205.34523107437954,
1952
+ "valid_members": 50,
1953
+ "total_members": 50
1954
+ },
1955
+ "r64_estimate_km": {
1956
+ "mean": null,
1957
+ "p10": null,
1958
+ "p90": null,
1959
+ "valid_members": 20,
1960
+ "total_members": 50
1961
+ }
1962
+ },
1963
+ "status_counts": {
1964
+ "experimental_estimate": 50
1965
+ }
1966
+ },
1967
+ {
1968
+ "method": "pressure-gradient-experimental-v1",
1969
+ "experimental": true,
1970
+ "members": 50,
1971
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
1972
+ "assumptions": {
1973
+ "air_density_kg_m3": 1.15,
1974
+ "ocean_surface_reduction": 0.8,
1975
+ "maximum_radius_km": 480,
1976
+ "azimuth_samples": 72,
1977
+ "radial_smoothing": "three-point pressure average",
1978
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
1979
+ "wind_averaging_period": "not calibrated to an agency averaging period",
1980
+ "land_friction_asymmetry_and_translation": "not modelled",
1981
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
1982
+ },
1983
+ "estimates": {
1984
+ "maximum_wind_auxiliary_kt": {
1985
+ "mean": 179.79521240234374,
1986
+ "p10": 178.78561096191407,
1987
+ "p90": 180.6649139404297,
1988
+ "valid_members": 50,
1989
+ "total_members": 50
1990
+ },
1991
+ "pressure_wind_estimate_kt": {
1992
+ "mean": 62.02471521549326,
1993
+ "p10": 61.471880369208954,
1994
+ "p90": 62.63308119151764,
1995
+ "valid_members": 50,
1996
+ "total_members": 50
1997
+ },
1998
+ "rmw_estimate_km": {
1999
+ "mean": 53.26003039020891,
2000
+ "p10": 40.04464954779199,
2001
+ "p90": 60.06938880565317,
2002
+ "valid_members": 50,
2003
+ "total_members": 50
2004
+ },
2005
+ "r34_estimate_km": {
2006
+ "mean": 260.7967639959379,
2007
+ "p10": 257.8204643398188,
2008
+ "p90": 264.0569781064068,
2009
+ "valid_members": 50,
2010
+ "total_members": 50
2011
+ },
2012
+ "r50_estimate_km": {
2013
+ "mean": 170.86120489720204,
2014
+ "p10": 166.5565118327133,
2015
+ "p90": 176.4476179674408,
2016
+ "valid_members": 50,
2017
+ "total_members": 50
2018
+ },
2019
+ "r64_estimate_km": {
2020
+ "mean": null,
2021
+ "p10": null,
2022
+ "p90": null,
2023
+ "valid_members": 0,
2024
+ "total_members": 50
2025
+ }
2026
+ },
2027
+ "status_counts": {
2028
+ "experimental_estimate": 50
2029
+ }
2030
+ },
2031
+ {
2032
+ "method": "pressure-gradient-experimental-v1",
2033
+ "experimental": true,
2034
+ "members": 50,
2035
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
2036
+ "assumptions": {
2037
+ "air_density_kg_m3": 1.15,
2038
+ "ocean_surface_reduction": 0.8,
2039
+ "maximum_radius_km": 480,
2040
+ "azimuth_samples": 72,
2041
+ "radial_smoothing": "three-point pressure average",
2042
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
2043
+ "wind_averaging_period": "not calibrated to an agency averaging period",
2044
+ "land_friction_asymmetry_and_translation": "not modelled",
2045
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
2046
+ },
2047
+ "estimates": {
2048
+ "maximum_wind_auxiliary_kt": {
2049
+ "mean": 178.62585235595702,
2050
+ "p10": 177.64862060546875,
2051
+ "p90": 179.59320068359375,
2052
+ "valid_members": 50,
2053
+ "total_members": 50
2054
+ },
2055
+ "pressure_wind_estimate_kt": {
2056
+ "mean": 61.366070448477785,
2057
+ "p10": 60.72983180675786,
2058
+ "p90": 61.907323189394795,
2059
+ "valid_members": 50,
2060
+ "total_members": 50
2061
+ },
2062
+ "rmw_estimate_km": {
2063
+ "mean": 60.085127989726,
2064
+ "p10": 60.078455694854924,
2065
+ "p90": 60.092307903408916,
2066
+ "valid_members": 50,
2067
+ "total_members": 50
2068
+ },
2069
+ "r34_estimate_km": {
2070
+ "mean": 252.54537665110155,
2071
+ "p10": 249.4091393803782,
2072
+ "p90": 255.59958414029367,
2073
+ "valid_members": 50,
2074
+ "total_members": 50
2075
+ },
2076
+ "r50_estimate_km": {
2077
+ "mean": 155.4694924332101,
2078
+ "p10": 149.96250368125305,
2079
+ "p90": 160.97504668341705,
2080
+ "valid_members": 50,
2081
+ "total_members": 50
2082
+ },
2083
+ "r64_estimate_km": {
2084
+ "mean": null,
2085
+ "p10": null,
2086
+ "p90": null,
2087
+ "valid_members": 0,
2088
+ "total_members": 50
2089
+ }
2090
+ },
2091
+ "status_counts": {
2092
+ "experimental_estimate": 50
2093
+ }
2094
+ }
2095
+ ],
2096
+ "inference_seconds": 23.216
2097
+ },
2098
+ "method": "Original model equation: bilinear basin + georeferenced model tapered moving anomaly; physical member fields registered before equal-weight mean.",
2099
+ "scalar_pressure_inserted": false,
2100
+ "route_or_truth_alignment": false,
2101
+ "native_detail_history_available": false,
2102
+ "model_core_information_spacing_km": 20,
2103
+ "sampling_note": "0.1-degree core export and 0.25-degree basin reconstruction are sampling, not additional observations.",
2104
+ "files_sha256": {
2105
+ "common-pressure.npz": "5a9183d758fce8294bf854412edb9185cf4fcc2f386e8af74f4759a60bb16bdc",
2106
+ "core-reconstruction.json": "fce45ac6395b867f092e31d8cb0ad7160ffb3fe1f76dbe489095b14385eee0eb",
2107
+ "captured-core-members.npz": "e65def9a4508c311a0778ebb12b8ddf7ea680dc6133c3f2467fb792d259dba09"
2108
+ },
2109
+ "public_common_grid_file": "evaluation/release_data/pressure_core/mangkhut/common-pressure.npz"
2110
  }
2111
  }
evaluation/release_data/pressure_core/mangkhut/common-pressure.npz ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5a9183d758fce8294bf854412edb9185cf4fcc2f386e8af74f4759a60bb16bdc
3
+ size 4393148
evaluation/release_data/pressure_core/mangkhut/core-reconstruction.json ADDED
The diff for this file is too large to render. See raw diff
 
evaluation/release_data/pressure_core/mangkhut/verification.json ADDED
@@ -0,0 +1,1634 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "model": "Trackformer 1.2",
3
+ "checkpoint_sha256": "f194a23d3f91ea76ad776dfad942fabd669eeae8b3fd665815463095367e9ee0",
4
+ "inference_weights_sha256": "db49f36e85a3766defc4c172746897a1f783705d1ce8e6f9dfb8e87ae1d902cb",
5
+ "storm_id": "2018250N12170",
6
+ "issue_time_utc": "2018-09-11T00:00:00Z",
7
+ "members": 50,
8
+ "input_file_sha256": "7a180f3ec9f216b5cb8e9e5e1fdebb60bff779586d42054e10477edd23fdfccd",
9
+ "original_replay_max_difference": {
10
+ "center": 0.0,
11
+ "pressure": 0.0,
12
+ "basin": 0.0,
13
+ "regional": 0.0
14
+ },
15
+ "regional_equation_max_difference_hpa": 6.103515625e-05,
16
+ "ensemble_policy": {
17
+ "method": "seeded causal input-perturbation ensemble, not latent samples",
18
+ "member_count": 50,
19
+ "member_ids": [
20
+ 0,
21
+ 1,
22
+ 2,
23
+ 3,
24
+ 4,
25
+ 5,
26
+ 6,
27
+ 7,
28
+ 8,
29
+ 9,
30
+ 10,
31
+ 11,
32
+ 12,
33
+ 13,
34
+ 14,
35
+ 15,
36
+ 16,
37
+ 17,
38
+ 18,
39
+ 19,
40
+ 20,
41
+ 21,
42
+ 22,
43
+ 23,
44
+ 24,
45
+ 25,
46
+ 26,
47
+ 27,
48
+ 28,
49
+ 29,
50
+ 30,
51
+ 31,
52
+ 32,
53
+ 33,
54
+ 34,
55
+ 35,
56
+ 36,
57
+ 37,
58
+ 38,
59
+ 39,
60
+ 40,
61
+ 41,
62
+ 42,
63
+ 43,
64
+ 44,
65
+ 45,
66
+ 46,
67
+ 47,
68
+ 48,
69
+ 49
70
+ ],
71
+ "seeds": [
72
+ 2043,
73
+ 2044,
74
+ 2045,
75
+ 2046,
76
+ 2047,
77
+ 2048,
78
+ 2049,
79
+ 2050,
80
+ 2051,
81
+ 2052,
82
+ 2053,
83
+ 2054,
84
+ 2055,
85
+ 2056,
86
+ 2057,
87
+ 2058,
88
+ 2059,
89
+ 2060,
90
+ 2061,
91
+ 2062,
92
+ 2063,
93
+ 2064,
94
+ 2065,
95
+ 2066,
96
+ 2067,
97
+ 2068,
98
+ 2069,
99
+ 2070,
100
+ 2071,
101
+ 2072,
102
+ 2073,
103
+ 2074,
104
+ 2075,
105
+ 2076,
106
+ 2077,
107
+ 2078,
108
+ 2079,
109
+ 2080,
110
+ 2081,
111
+ 2082,
112
+ 2083,
113
+ 2084,
114
+ 2085,
115
+ 2086,
116
+ 2087,
117
+ 2088,
118
+ 2089,
119
+ 2090,
120
+ 2091,
121
+ 2092
122
+ ],
123
+ "weights": [
124
+ 0.02,
125
+ 0.02,
126
+ 0.02,
127
+ 0.02,
128
+ 0.02,
129
+ 0.02,
130
+ 0.02,
131
+ 0.02,
132
+ 0.02,
133
+ 0.02,
134
+ 0.02,
135
+ 0.02,
136
+ 0.02,
137
+ 0.02,
138
+ 0.02,
139
+ 0.02,
140
+ 0.02,
141
+ 0.02,
142
+ 0.02,
143
+ 0.02,
144
+ 0.02,
145
+ 0.02,
146
+ 0.02,
147
+ 0.02,
148
+ 0.02,
149
+ 0.02,
150
+ 0.02,
151
+ 0.02,
152
+ 0.02,
153
+ 0.02,
154
+ 0.02,
155
+ 0.02,
156
+ 0.02,
157
+ 0.02,
158
+ 0.02,
159
+ 0.02,
160
+ 0.02,
161
+ 0.02,
162
+ 0.02,
163
+ 0.02,
164
+ 0.02,
165
+ 0.02,
166
+ 0.02,
167
+ 0.02,
168
+ 0.02,
169
+ 0.02,
170
+ 0.02,
171
+ 0.02,
172
+ 0.02,
173
+ 0.02
174
+ ],
175
+ "global_noise_normalized_std": 0.025,
176
+ "regional_noise_normalized_std": 0.015,
177
+ "global_smoothing_kernel": 5,
178
+ "regional_smoothing_kernel": 9,
179
+ "native_detail_available": false,
180
+ "missing_native_history_remains_masked": true,
181
+ "input_sha256": [
182
+ "690ccf7cfbefd4fabb96dd2a7064045ec2231abe36cb38a671fb8a4353785740",
183
+ "ee66f59be2788df7b59ddb5529bd1631069c3420cdad1325d577420c565b5a3e",
184
+ "9e08fe681d82a516546a03b4950ee050863c6a55e05679e00b9ebe59a9d53580",
185
+ "a09db74dc739ed26d96773bbec2107074f3f8ac7e6640fa4d2b1392d910b6abc",
186
+ "75bbc8d0afb68f99428754986e819adf9e8504d8ad4a9d58617b7cb2f0775e92",
187
+ "6547c4adfba667e1aeca322cbb943c96ee531940970c91e88bc67b03585cff8c",
188
+ "783d074aca68ac90b8ab9ee76544d71f6488f11bd087d44832fc8cfd0b962395",
189
+ "dfca797a534e1b2ebf7d5e61a821fc44fec7f9ac92a387aacaec13a858250fb7",
190
+ "6331aa287831c25e6495045428fa1274f998baa8ba00c3e1320dba2265c2b1a2",
191
+ "5773e32cf25cfac8701607795c8ce153ac654e2052512d0eb4835de1c9469c02",
192
+ "fcbf6161420fadd979befcbb30060f0879ffb1f31a958ea7dafd41edf9bcdb5b",
193
+ "81bca70e93f43c3d2ae3fd16600cef5e467e7c61c41eabe8db88624cdded8c41",
194
+ "f02d5396e99e7fe31ffcfa1c68040e5d986b081500b48a873a943d64dd99975d",
195
+ "4c90b3f18a02726f33ae77b3476a160aff0b4707e4df517575780bb36bb815b7",
196
+ "db181c7953a86f392d7f1b8f517b3459e8f8beb656dd2de96e5ec67f948471a9",
197
+ "5f147e69858a3815cf191ef8d9f5e0b5b5459f730bd5b748a0d07e37677f274b",
198
+ "6acae892c328e2714e483ef9e03fdbfa8d14e9674e54c2e4ac4699169f6a9cbc",
199
+ "47c94868f59ea6845171c868c0a06c12ff319e29f3185be11a84d4c173f17568",
200
+ "66e32a3a94220722a217bbfb843701416a941483ee7f0d0e55f56116630fda22",
201
+ "434e0455202b6423d80bacc0a9b8f685572aa03ad108dc97291f8b80468b26f9",
202
+ "b9fa426a56cffb7afbbedf04ebbb17151cc93b056154f5b44aec5eff1aa4e717",
203
+ "ac5119c2b6d2c76ec411d593520fa22ee40c769810ee5556be09120108e9b3ff",
204
+ "abbf4cd27f9037b89bd2ab0b0d31dc293db279e23da7cda33f5163cd2e3d1084",
205
+ "19a039f0c4e03b2b956d70b00c57176d0ae4fce69f47e0a69b1fc47931647cf9",
206
+ "d5c27c461b11924c3bec6cdde494d86d93cb5cd2b2244dee07312e3c420741d3",
207
+ "0ac8e56ffb487952229af64da264acf34bee2c7326365c4a84f003e884db9d8b",
208
+ "d5d56c4eb1fe906036ac424f67af9adcc8ebbb134c61774900406c38bc5a0799",
209
+ "ef4dec655c8b2db666a13323713a40a7dcbfd8a61d0008378b9fae0bd151f0c9",
210
+ "acd844481e416569d88d23f81d76db5a4a30f3b144a79ad67735a1bc919b2d98",
211
+ "8cdbafbb4282fb99d608a7deff79648045c746e88df86b78fdcbd03f678e41d9",
212
+ "4d4b83606d84c3f32b53c8b7eb4dc60caa23dc591f7dcfd9dc98c97a0e202544",
213
+ "3ab94849134aec597505fdca1282963de2b2a94135e1729a0ef8ccaf75a27c2b",
214
+ "736ccc1e895306dbdf27328337c20ce920bd780bf69a73175d9015d0d1df74f8",
215
+ "9e27b2e22606a50fd57e7b97ed19f84c5a85f7d0c4ea1e0a4ea1dbb220e0ddcf",
216
+ "b64766d01e496500d3b812bd01416c19362576f87e8d7867aa31052b44c5d87f",
217
+ "dc7dc9ac4032d1b86f09b29f13ae7c9005a0f6939c0fca0286fd39ef0e3819b5",
218
+ "39965b5d1c5da1886b1c578260a0c6cbcfdd5af6c2b1d92f85a876328af41bc3",
219
+ "66325deea7c22747758fb72e0c884b1d4c0f18588e86c75dbefbc1ef125ba21d",
220
+ "f8a5805ae9759a9d812f74e6035063fd462d1b8af338ad8642e73e701cfbe4db",
221
+ "cc92fcde602d7d5a43ce86db5012028fc0ad36e52a653b3332e6381d3db4f79f",
222
+ "17b1ce2676ccbdbfd20cd1035ea8ad248c4747a09469a875ddc8273bad1cba1c",
223
+ "14b2dfbb3b723fbd61182be93fb852206a1bf4c72b2b19315f3ee04107b9e131",
224
+ "fc8c890b376136af901df9f462f6c0b414408fb3336778cb939eefe3e0e1729b",
225
+ "ea2483e7980843e63788a1c61216e528b13680d4c5a1963d8bcd331aa1e4faf7",
226
+ "6f35d5e33812cc1c4aa4f9ed7a5cec56c15a51feab4eb7807b6b132e096227c7",
227
+ "b902d9fec1bc216fe2531a7c70c0dd3d20a8ca8c63a6663167fe79c1c4f86b81",
228
+ "565328f83948b2ee4f8b93e8ef81891a39727504145f8c177a535bc23b933a30",
229
+ "5b244303c45f335af63fbf73b5ac612b8dc189347d57b6ae6aed747602d6d14d",
230
+ "915041461c8a56691a2e56be40ba29e612320ca0e0fdc0d57e19926c30a921b5",
231
+ "19f8adf60b5c0a75adfc55acc1d78c646cb8700a92ff069a86487867103ece98"
232
+ ],
233
+ "route_sha256": [
234
+ "db21c9f417b9ba8f78b2019b754c078e2b366cc96b91df59ddad4b30f7f26f04",
235
+ "6e1fd6a7bd8dc7a36455df448ca1bf6cd2952974462970309913e13669eff4ee",
236
+ "397446cfed2943daa7b94e7284076f3baefa58c213bfb6be6edd544c1b7be717",
237
+ "0c7590febf1bd0cdce140a0b6d07319f2b6d1489e03ffc4f83d5553a1d322ed1",
238
+ "3b9537d227180d7e689606364f8b398d15e06c016ab186c8b1d97f9854673834",
239
+ "9aa621fca7d762529e3475e37f63d2b47e19e3ed4e06f5aa6f69fb8d26457569",
240
+ "14ba7a3a079da30e84c8d025bbe68f988aa7c58db87d34d25df3d9204e1e7e6d",
241
+ "11f0fde39c6469f6589211249795264c17343a6e787e844d49fac76ee400f89b",
242
+ "9d949874c8649ded973ef8b55a8e7653c2e59f21dcd32144b260afe33aff3cb2",
243
+ "0b176e17d38295027c8e00cfbb71a005df179119bde5fa14c4c007e99597c62b",
244
+ "590c348f53f7d8d12448170d40927e22a69eb5fe9af6a2e69e18badb0f729e24",
245
+ "18685ab64814b3db124d78c71404e1d6fd339b8c08dac7990e52ee3e1dc42948",
246
+ "fb8263524c649fa2f8b533e70ce9d58978b29edda42fcbaed4d7a2a0997b41f4",
247
+ "59acf0a35ef195fe92f913a5136b67a57533cfff8c008674b71c55f9a52b2ae0",
248
+ "137aca6f1aca213eaa79a1bc93047f9803ca3536ee53b660b9fce9c5e4d2505c",
249
+ "2307cbffa477f241ebdf4e32c97735c510e1b00b9fd07ba6ab9edf70302af5a2",
250
+ "d5f718dd784365d96567df6e876f6c11201197d80f20262d517e2fa36a0ea640",
251
+ "800a66f078a9992dfd4cfa1701e7ed75d52b3c63a03b79f9977bca77612c9b00",
252
+ "1313199f81953217b6b940e4aec361c68c204cb4087c34350853c9d189b1594c",
253
+ "c7306db1e3b5f1f519a1bbb07b05e541ccf9d5f31d8bf4c1fb5ee061bb65df35",
254
+ "ca232cc52a19975307bc46d957e066f45c179a6708bed304b5ef9f4a935dfc42",
255
+ "fe86cb2d959c141b8be2c12d4e676c61a7096d84c68d50efb774c5d17fc56017",
256
+ "fc985324b46c5315d75316c90ebfa026e6fc0caced452f7eeafa25ba56f11325",
257
+ "318dcd0c92763abbc3cc21931e5f8a8dd90fea1ae50ae34328917e7c72cda8dc",
258
+ "25e35ec2980154240a82a63c744cdf032c8367bfa5319c9a49a68a414bbb7591",
259
+ "15d67c3655ba166ffb364c4235e9c0d0f19ea14e4f0392ee3c5d02191bffeca3",
260
+ "c47179d7191b3e187dba56ad8e38479cb7a0598f63642fda60f6de31ea507ff4",
261
+ "7f765737a28a3e526550f4d7ac7b6428a18f46cdafaae7656135379702c2041d",
262
+ "e14490b2d77ddb9c91b40fbc441735135aee66bdf7a04f9c6213e6b87428e982",
263
+ "960e5da19439733c8e72294b8f627d3b1310d1813218d7baf370ace3d74e2655",
264
+ "10f1791fca7cb5902e8f5c76156b4ac4810bcab6feee29a107458da6405e36cf",
265
+ "08b7371e1fbb8dc597aee2945bb90d50477b24a8eec98d5ff8f875a83fd16ae1",
266
+ "8dd13f315687f54e833d86da7a4bc9679880237e5a9dd3b1cf79cb279837b53e",
267
+ "2109a93573845870144781c1143a4ac631c99efa79c8d5e5f3d713259911999e",
268
+ "ff032166bebe64c3b82d6e24313fd5d6fe465620dc1450807ad4ecf2d316fb05",
269
+ "88c0bacee57408648452b4bc47e96d16018f416ea9a4292f0392a3e46d2c7495",
270
+ "bd8bb21aa188fe2d5f747a10636634de7df841961072e8c2f5227690c10d0afc",
271
+ "8d95a8268a3c104ea1154e7187ce0e839ba3ebc54d2f775c8f86af619518f2d2",
272
+ "da3df612945702fb12114c311da50483b8b6382a240d456d874cb1a49b849eaf",
273
+ "d9a8012537bb08ab358a9cc3e69aa6b7ca0fa68d0856ba9baff298620a989643",
274
+ "1e63d0c09c398b0fa1d317010ef4472e3d2e6183f79b1bf83778ec508579cc53",
275
+ "7949f53ee228585da4ce341f33850b0d56416860e098f5eeb823ecf8fc6172ad",
276
+ "05bc016f6f94d4bebf00b84be9ff4b6aab97efbb9b41608c475a768a408ded03",
277
+ "86a11a0672fc32ddd2679ac1ba19e728ab1a50769575a1c7f496f022f5e6c5c7",
278
+ "93f89662ca852fd2170fb0638ff8e09ea21002420911427a567c99b81fc7013d",
279
+ "23bbd1227fc0db13a555b895f4bc218cb6770f5fee006e29e945990367ec379a",
280
+ "b1e2487eb6e808af637bf68382d19ea3a4ff7deec66002b6a02e2388467610a2",
281
+ "e3ea54b9eb9b5e70f3a28f9d4f8a00f47e87c35882de43c1eee8461f5136ff69",
282
+ "400cc5a239645d4b31ac61a907250412470c1041e4839d1e9fada06e8b112380",
283
+ "7c8f937b23ce082a319279d5155ed2cc258a8e66799d2a8d1276a71d06def094"
284
+ ],
285
+ "basin_field_sha256": [
286
+ "6344cbd121db183cca969fd28b7ea83d50ee26254a58bd13fa62969fec380627",
287
+ "992051ee31f610238dbb7ab19ab2a997c7c160aa3edac584da1e74ce69fd05f0",
288
+ "89c6506b310acb123dfa0e53725e85a8507e30b40226203519e21b21422540ea",
289
+ "e1e3f5d645533d14faafa885ffa13e0de3ab22c53ea626708b93a7690b8cd730",
290
+ "95489efc81d9677b6db3111557af451fe4707ffd54028f221cb75d9eb8b2defb",
291
+ "8136c31e1f646eebc20e0046eb0c15b5497e124760bf2c8871d23e71fa20428b",
292
+ "f36ce045ca4400dbd6bf43623bd694e93c5ebcd7f158b2d0cfe5cb2fe77a3a8b",
293
+ "6f65232ffb53d37548cd6f775be29f847a22eeb213c0befd37869f1234631a78",
294
+ "250d8a91ed217f35e5bd69a12ab0fe88fa52dce9d5698ba2a024141fccf5d004",
295
+ "e99493a4dba527a15d5f27243b94b7a6161ded0e6ec7c3f27250b9a83cea8a71",
296
+ "c3bcc1979782bbcd5e5b55b7e00e274cd4ff344d1c7466a2eea02e7f643e50ba",
297
+ "968a75c0ddacf6171dcb9dd66d4fdebc341f5acc2c6ee49886ced5d75ee2c984",
298
+ "e32bb4ed9dd6ac3c9945494b7a2ca2c7fe36ae0382dd2104e99ad2a9ecbb6e4c",
299
+ "0fe89c22aaf99d21f128eb9bf460a6406b85be1a9cd87f047fd9f38feade4cdb",
300
+ "dda831239a8cf6b32ed0e8f2782b5b966b3c9145e91f08abfe41827a6f0a1948",
301
+ "5dba6f8f29398c4e11b8f0fec58b56b8a120b3cc8d680ea614233169cb50748f",
302
+ "8eb539d600248d9399e915434e9485d16adbec9d509ceeb2f614ff3f0edb90d0",
303
+ "b0a2a2b064567fe10ffecee3703ea542877d4a0236052ba3aa7b43b25c1e4967",
304
+ "3930ab46c1d5a82a537542fd9c85aa5ec96f36c896fb4948ea5e8dc103410384",
305
+ "fb4abb99acc4be620c97f0db8befecac42cfa07e569a2bb5986e57f32d534241",
306
+ "e4778f633dca26234033c7e09f360dfef9225d9200cdeed37d254f509f16218b",
307
+ "512c137ef6e4c8120a66bd458a7b4ebcb4afc46e7807e297fac391d321314171",
308
+ "a99e92b510ae720b3af333cedb20b2dd8d4fa45e82e2cfa2fbee7a0600e44548",
309
+ "322e821cab63608a4b4156a0e326d3d908ec8e52509898ec5c8bd3d5813c4300",
310
+ "e40c1e6ef7ec382f2affe1f0f880b3c0277aac6256d6a8a6ca6ef6ab5b0c7055",
311
+ "5000f5304d5ee5c941c24470d98352d5566839f85cc0afc1701336fc7ee7bd06",
312
+ "ab18fed5e8eede5653ac5c56504606989cdb1fff3f63c951e1d88ac1064dde2a",
313
+ "7e950e84694cd0820d2c3b858cd518116880129351f87bf1ba6b9ba0b7592c64",
314
+ "6f5f4996b873b5db41abac7a2061ba381bd581e75d27625afd3fa44745085597",
315
+ "cda69edf10aeac53e4dfd5f672061223c4d9f5a71aa4b2883b390a40572c31a1",
316
+ "537b20317bdd27a135161013bbb5e6bfde8362ad04ce4b79fdacd23c086cf8b0",
317
+ "28c3deff6729dc94b59c5fbc227235bf031677600b514f5062ebdba810cef723",
318
+ "f19bfc3a27e491e7b7e4e177f9abde2c4ff6b69d778ba8d25df7b3b7a4b42deb",
319
+ "9054d181ef8bf7600e5ad4df1c36160472468891bb16bfb99d2c2c124befafe9",
320
+ "e7ab3cf1414e27efa8d292d59706e7d70c1bd7b48f4f9b57679eef7fda155fbf",
321
+ "e1b569b5550df7545a352c8e5cb273b1b4f3756f27c25cbf0a7d722bc8303226",
322
+ "6db2f51bf81c952ace60ebacebad57d58951eff8b5dd8fe7d92989efecf7fda9",
323
+ "53d84f18c347e1158bd8c0354ab5f9be4e6e7a5e2320407e86cf8aaf98dffb00",
324
+ "1f8325fccfcce7a1b56afbb5651de60eb7c553e2ebc7efcaf8d8e123cb1f6b0f",
325
+ "ac18a3af7ff0c71b70c43aa136afb253ad1aae1de176cca718253236d86a769c",
326
+ "7b853c498ae6aae5a6a28f48694504da633205850d4445e0682cdb7376d75919",
327
+ "a267b1e43c934e06920621ec9e207b7c2a82e384761c0bf54441d4f9009fec57",
328
+ "0564cdcf56c828ce5271a083b8bedcf143a754e053a90ec7e3e6c5ac48a07db8",
329
+ "70129cee082cd9378c8c571d28e342c9ced9b08cbf0ac55ab4af16597aa5bc23",
330
+ "8d25fcad7807bcbc5773feca7d8f0f4f66733afcafbaff0c63fc67a669bfe7db",
331
+ "9b92bc545b9bcbfcf36438c7ff90893ddd78fed9c57164bb3c28191bc8284f5e",
332
+ "6aa86b795cea402e35333b948ee041b56886718df9245acd5865809862abe3c1",
333
+ "fb63b73a74cd1cf2f6ac70d9ff77e1ac2eb741744c1296a21464762eb3572116",
334
+ "6776a0a90790bc107851455146d7a16668395032678a596507db2a5c428e954b",
335
+ "9f96f9a1b9173683eed4eaced6f2b2a9ede323777922d46d0645e83e119ffbe4"
336
+ ],
337
+ "mean_policy": "Equal-weight physical basin and fixed-issue regional grids; member-mean coordinates and central pressures separately. Moving-core grids are not directly averaged.",
338
+ "wind_estimation_method": "pressure-gradient-experimental-v1",
339
+ "wind_estimation_by_lead": [
340
+ {
341
+ "method": "pressure-gradient-experimental-v1",
342
+ "experimental": true,
343
+ "members": 50,
344
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
345
+ "assumptions": {
346
+ "air_density_kg_m3": 1.15,
347
+ "ocean_surface_reduction": 0.8,
348
+ "maximum_radius_km": 480,
349
+ "azimuth_samples": 72,
350
+ "radial_smoothing": "three-point pressure average",
351
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
352
+ "wind_averaging_period": "not calibrated to an agency averaging period",
353
+ "land_friction_asymmetry_and_translation": "not modelled",
354
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
355
+ },
356
+ "estimates": {
357
+ "maximum_wind_auxiliary_kt": {
358
+ "mean": 104.64149520874024,
359
+ "p10": 104.58159561157227,
360
+ "p90": 104.70846023559571,
361
+ "valid_members": 50,
362
+ "total_members": 50
363
+ },
364
+ "pressure_wind_estimate_kt": {
365
+ "mean": 98.00374223870789,
366
+ "p10": 97.80231271889745,
367
+ "p90": 98.19026460155195,
368
+ "valid_members": 50,
369
+ "total_members": 50
370
+ },
371
+ "rmw_estimate_km": {
372
+ "mean": 140.21552498268358,
373
+ "p10": 140.20882648826307,
374
+ "p90": 140.22283389951482,
375
+ "valid_members": 50,
376
+ "total_members": 50
377
+ },
378
+ "r34_estimate_km": {
379
+ "mean": 327.96277717304275,
380
+ "p10": 326.06328416897753,
381
+ "p90": 329.486667986721,
382
+ "valid_members": 50,
383
+ "total_members": 50
384
+ },
385
+ "r50_estimate_km": {
386
+ "mean": 272.21176165556614,
387
+ "p10": 271.10282188627866,
388
+ "p90": 273.1254728770137,
389
+ "valid_members": 50,
390
+ "total_members": 50
391
+ },
392
+ "r64_estimate_km": {
393
+ "mean": 239.63624000338467,
394
+ "p10": 238.71707266428785,
395
+ "p90": 240.37856261303537,
396
+ "valid_members": 50,
397
+ "total_members": 50
398
+ }
399
+ },
400
+ "status_counts": {
401
+ "experimental_estimate": 50
402
+ }
403
+ },
404
+ {
405
+ "method": "pressure-gradient-experimental-v1",
406
+ "experimental": true,
407
+ "members": 50,
408
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
409
+ "assumptions": {
410
+ "air_density_kg_m3": 1.15,
411
+ "ocean_surface_reduction": 0.8,
412
+ "maximum_radius_km": 480,
413
+ "azimuth_samples": 72,
414
+ "radial_smoothing": "three-point pressure average",
415
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
416
+ "wind_averaging_period": "not calibrated to an agency averaging period",
417
+ "land_friction_asymmetry_and_translation": "not modelled",
418
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
419
+ },
420
+ "estimates": {
421
+ "maximum_wind_auxiliary_kt": {
422
+ "mean": 114.6093830871582,
423
+ "p10": 114.48875350952149,
424
+ "p90": 114.74834365844727,
425
+ "valid_members": 50,
426
+ "total_members": 50
427
+ },
428
+ "pressure_wind_estimate_kt": {
429
+ "mean": 97.76423073668602,
430
+ "p10": 97.56445380482718,
431
+ "p90": 97.94516150595952,
432
+ "valid_members": 50,
433
+ "total_members": 50
434
+ },
435
+ "rmw_estimate_km": {
436
+ "mean": 120.12001856077529,
437
+ "p10": 120.1141653194275,
438
+ "p90": 120.12585230465635,
439
+ "valid_members": 50,
440
+ "total_members": 50
441
+ },
442
+ "r34_estimate_km": {
443
+ "mean": 375.1343617333669,
444
+ "p10": 369.83682877368943,
445
+ "p90": 380.5987113539689,
446
+ "valid_members": 50,
447
+ "total_members": 50
448
+ },
449
+ "r50_estimate_km": {
450
+ "mean": 270.19178549300455,
451
+ "p10": 268.5438124632186,
452
+ "p90": 272.4599920330505,
453
+ "valid_members": 50,
454
+ "total_members": 50
455
+ },
456
+ "r64_estimate_km": {
457
+ "mean": 227.70460778298198,
458
+ "p10": 226.28985453932185,
459
+ "p90": 229.3568742608026,
460
+ "valid_members": 50,
461
+ "total_members": 50
462
+ }
463
+ },
464
+ "status_counts": {
465
+ "experimental_estimate": 50
466
+ }
467
+ },
468
+ {
469
+ "method": "pressure-gradient-experimental-v1",
470
+ "experimental": true,
471
+ "members": 50,
472
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
473
+ "assumptions": {
474
+ "air_density_kg_m3": 1.15,
475
+ "ocean_surface_reduction": 0.8,
476
+ "maximum_radius_km": 480,
477
+ "azimuth_samples": 72,
478
+ "radial_smoothing": "three-point pressure average",
479
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
480
+ "wind_averaging_period": "not calibrated to an agency averaging period",
481
+ "land_friction_asymmetry_and_translation": "not modelled",
482
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
483
+ },
484
+ "estimates": {
485
+ "maximum_wind_auxiliary_kt": {
486
+ "mean": 124.60197982788085,
487
+ "p10": 124.44197387695313,
488
+ "p90": 124.7645034790039,
489
+ "valid_members": 50,
490
+ "total_members": 50
491
+ },
492
+ "pressure_wind_estimate_kt": {
493
+ "mean": 97.32348131358722,
494
+ "p10": 97.08238867534251,
495
+ "p90": 97.51864846191978,
496
+ "valid_members": 50,
497
+ "total_members": 50
498
+ },
499
+ "rmw_estimate_km": {
500
+ "mean": 100.10766200816072,
501
+ "p10": 100.1014718372439,
502
+ "p90": 100.11441015302614,
503
+ "valid_members": 50,
504
+ "total_members": 50
505
+ },
506
+ "r34_estimate_km": {
507
+ "mean": 413.1252738568222,
508
+ "p10": 408.4149080867087,
509
+ "p90": 419.1785100897602,
510
+ "valid_members": 50,
511
+ "total_members": 50
512
+ },
513
+ "r50_estimate_km": {
514
+ "mean": 282.87310075473874,
515
+ "p10": 279.58358256574206,
516
+ "p90": 286.1527752268946,
517
+ "valid_members": 50,
518
+ "total_members": 50
519
+ },
520
+ "r64_estimate_km": {
521
+ "mean": 218.90412066334235,
522
+ "p10": 216.79619227152747,
523
+ "p90": 221.1736812900946,
524
+ "valid_members": 50,
525
+ "total_members": 50
526
+ }
527
+ },
528
+ "status_counts": {
529
+ "experimental_estimate": 50
530
+ }
531
+ },
532
+ {
533
+ "method": "pressure-gradient-experimental-v1",
534
+ "experimental": true,
535
+ "members": 50,
536
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
537
+ "assumptions": {
538
+ "air_density_kg_m3": 1.15,
539
+ "ocean_surface_reduction": 0.8,
540
+ "maximum_radius_km": 480,
541
+ "azimuth_samples": 72,
542
+ "radial_smoothing": "three-point pressure average",
543
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
544
+ "wind_averaging_period": "not calibrated to an agency averaging period",
545
+ "land_friction_asymmetry_and_translation": "not modelled",
546
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
547
+ },
548
+ "estimates": {
549
+ "maximum_wind_auxiliary_kt": {
550
+ "mean": 134.72011596679687,
551
+ "p10": 134.5215103149414,
552
+ "p90": 134.8843521118164,
553
+ "valid_members": 50,
554
+ "total_members": 50
555
+ },
556
+ "pressure_wind_estimate_kt": {
557
+ "mean": 97.04198919856742,
558
+ "p10": 96.67313755073036,
559
+ "p90": 97.3116939686303,
560
+ "valid_members": 50,
561
+ "total_members": 50
562
+ },
563
+ "rmw_estimate_km": {
564
+ "mean": 100.14342511893864,
565
+ "p10": 100.13863989882952,
566
+ "p90": 100.14780075807953,
567
+ "valid_members": 50,
568
+ "total_members": 50
569
+ },
570
+ "r34_estimate_km": {
571
+ "mean": null,
572
+ "p10": null,
573
+ "p90": null,
574
+ "valid_members": 0,
575
+ "total_members": 50
576
+ },
577
+ "r50_estimate_km": {
578
+ "mean": 309.3529348870095,
579
+ "p10": 306.60156243702573,
580
+ "p90": 311.9936685618269,
581
+ "valid_members": 50,
582
+ "total_members": 50
583
+ },
584
+ "r64_estimate_km": {
585
+ "mean": 231.32225592151636,
586
+ "p10": 228.00789721262316,
587
+ "p90": 234.6310286652605,
588
+ "valid_members": 50,
589
+ "total_members": 50
590
+ }
591
+ },
592
+ "status_counts": {
593
+ "experimental_estimate": 50
594
+ }
595
+ },
596
+ {
597
+ "method": "pressure-gradient-experimental-v1",
598
+ "experimental": true,
599
+ "members": 50,
600
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
601
+ "assumptions": {
602
+ "air_density_kg_m3": 1.15,
603
+ "ocean_surface_reduction": 0.8,
604
+ "maximum_radius_km": 480,
605
+ "azimuth_samples": 72,
606
+ "radial_smoothing": "three-point pressure average",
607
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
608
+ "wind_averaging_period": "not calibrated to an agency averaging period",
609
+ "land_friction_asymmetry_and_translation": "not modelled",
610
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
611
+ },
612
+ "estimates": {
613
+ "maximum_wind_auxiliary_kt": {
614
+ "mean": 144.47232666015626,
615
+ "p10": 144.24500274658203,
616
+ "p90": 144.68001403808594,
617
+ "valid_members": 50,
618
+ "total_members": 50
619
+ },
620
+ "pressure_wind_estimate_kt": {
621
+ "mean": 96.05489124293308,
622
+ "p10": 95.80413142495685,
623
+ "p90": 96.27318165472724,
624
+ "valid_members": 50,
625
+ "total_members": 50
626
+ },
627
+ "rmw_estimate_km": {
628
+ "mean": 80.1265606014329,
629
+ "p10": 80.12188602226055,
630
+ "p90": 80.1308562577929,
631
+ "valid_members": 50,
632
+ "total_members": 50
633
+ },
634
+ "r34_estimate_km": {
635
+ "mean": null,
636
+ "p10": null,
637
+ "p90": null,
638
+ "valid_members": 0,
639
+ "total_members": 50
640
+ },
641
+ "r50_estimate_km": {
642
+ "mean": 325.148704939771,
643
+ "p10": 322.4279751078741,
644
+ "p90": 327.6814356749051,
645
+ "valid_members": 50,
646
+ "total_members": 50
647
+ },
648
+ "r64_estimate_km": {
649
+ "mean": 253.28096449872635,
650
+ "p10": 250.84240036943405,
651
+ "p90": 255.78899295102656,
652
+ "valid_members": 50,
653
+ "total_members": 50
654
+ }
655
+ },
656
+ "status_counts": {
657
+ "experimental_estimate": 50
658
+ }
659
+ },
660
+ {
661
+ "method": "pressure-gradient-experimental-v1",
662
+ "experimental": true,
663
+ "members": 50,
664
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
665
+ "assumptions": {
666
+ "air_density_kg_m3": 1.15,
667
+ "ocean_surface_reduction": 0.8,
668
+ "maximum_radius_km": 480,
669
+ "azimuth_samples": 72,
670
+ "radial_smoothing": "three-point pressure average",
671
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
672
+ "wind_averaging_period": "not calibrated to an agency averaging period",
673
+ "land_friction_asymmetry_and_translation": "not modelled",
674
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
675
+ },
676
+ "estimates": {
677
+ "maximum_wind_auxiliary_kt": {
678
+ "mean": 153.0615121459961,
679
+ "p10": 152.79605407714843,
680
+ "p90": 153.30550689697264,
681
+ "valid_members": 50,
682
+ "total_members": 50
683
+ },
684
+ "pressure_wind_estimate_kt": {
685
+ "mean": 95.41144513551481,
686
+ "p10": 95.0734835457216,
687
+ "p90": 95.72629437491186,
688
+ "valid_members": 50,
689
+ "total_members": 50
690
+ },
691
+ "rmw_estimate_km": {
692
+ "mean": 80.12469925917772,
693
+ "p10": 80.12063327316504,
694
+ "p90": 80.12871117530699,
695
+ "valid_members": 50,
696
+ "total_members": 50
697
+ },
698
+ "r34_estimate_km": {
699
+ "mean": null,
700
+ "p10": null,
701
+ "p90": null,
702
+ "valid_members": 0,
703
+ "total_members": 50
704
+ },
705
+ "r50_estimate_km": {
706
+ "mean": 342.19317162257676,
707
+ "p10": 338.64803031669237,
708
+ "p90": 344.8672725973593,
709
+ "valid_members": 50,
710
+ "total_members": 50
711
+ },
712
+ "r64_estimate_km": {
713
+ "mean": 269.6479198258531,
714
+ "p10": 267.651987163571,
715
+ "p90": 272.33888509569937,
716
+ "valid_members": 50,
717
+ "total_members": 50
718
+ }
719
+ },
720
+ "status_counts": {
721
+ "experimental_estimate": 50
722
+ }
723
+ },
724
+ {
725
+ "method": "pressure-gradient-experimental-v1",
726
+ "experimental": true,
727
+ "members": 50,
728
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
729
+ "assumptions": {
730
+ "air_density_kg_m3": 1.15,
731
+ "ocean_surface_reduction": 0.8,
732
+ "maximum_radius_km": 480,
733
+ "azimuth_samples": 72,
734
+ "radial_smoothing": "three-point pressure average",
735
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
736
+ "wind_averaging_period": "not calibrated to an agency averaging period",
737
+ "land_friction_asymmetry_and_translation": "not modelled",
738
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
739
+ },
740
+ "estimates": {
741
+ "maximum_wind_auxiliary_kt": {
742
+ "mean": 160.86925262451172,
743
+ "p10": 160.53501739501954,
744
+ "p90": 161.1848907470703,
745
+ "valid_members": 50,
746
+ "total_members": 50
747
+ },
748
+ "pressure_wind_estimate_kt": {
749
+ "mean": 92.59287966762922,
750
+ "p10": 92.12958770639787,
751
+ "p90": 93.02336450729004,
752
+ "valid_members": 50,
753
+ "total_members": 50
754
+ },
755
+ "rmw_estimate_km": {
756
+ "mean": 80.12683289296967,
757
+ "p10": 80.12444669363076,
758
+ "p90": 80.12891831644141,
759
+ "valid_members": 50,
760
+ "total_members": 50
761
+ },
762
+ "r34_estimate_km": {
763
+ "mean": null,
764
+ "p10": null,
765
+ "p90": null,
766
+ "valid_members": 0,
767
+ "total_members": 50
768
+ },
769
+ "r50_estimate_km": {
770
+ "mean": 336.6116176969245,
771
+ "p10": 333.9044025069236,
772
+ "p90": 339.23115874176534,
773
+ "valid_members": 50,
774
+ "total_members": 50
775
+ },
776
+ "r64_estimate_km": {
777
+ "mean": 272.77200253329147,
778
+ "p10": 270.3044378728332,
779
+ "p90": 275.2759640184968,
780
+ "valid_members": 50,
781
+ "total_members": 50
782
+ }
783
+ },
784
+ "status_counts": {
785
+ "experimental_estimate": 50
786
+ }
787
+ },
788
+ {
789
+ "method": "pressure-gradient-experimental-v1",
790
+ "experimental": true,
791
+ "members": 50,
792
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
793
+ "assumptions": {
794
+ "air_density_kg_m3": 1.15,
795
+ "ocean_surface_reduction": 0.8,
796
+ "maximum_radius_km": 480,
797
+ "azimuth_samples": 72,
798
+ "radial_smoothing": "three-point pressure average",
799
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
800
+ "wind_averaging_period": "not calibrated to an agency averaging period",
801
+ "land_friction_asymmetry_and_translation": "not modelled",
802
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
803
+ },
804
+ "estimates": {
805
+ "maximum_wind_auxiliary_kt": {
806
+ "mean": 166.31432495117187,
807
+ "p10": 165.836328125,
808
+ "p90": 166.77098999023437,
809
+ "valid_members": 50,
810
+ "total_members": 50
811
+ },
812
+ "pressure_wind_estimate_kt": {
813
+ "mean": 89.4126686770208,
814
+ "p10": 89.09052980078643,
815
+ "p90": 89.74115186122647,
816
+ "valid_members": 50,
817
+ "total_members": 50
818
+ },
819
+ "rmw_estimate_km": {
820
+ "mean": 64.09090154744209,
821
+ "p10": 60.08198126211212,
822
+ "p90": 80.11269879728108,
823
+ "valid_members": 50,
824
+ "total_members": 50
825
+ },
826
+ "r34_estimate_km": {
827
+ "mean": null,
828
+ "p10": null,
829
+ "p90": null,
830
+ "valid_members": 0,
831
+ "total_members": 50
832
+ },
833
+ "r50_estimate_km": {
834
+ "mean": 336.2333189696262,
835
+ "p10": 333.20750729232975,
836
+ "p90": 339.5872531191811,
837
+ "valid_members": 50,
838
+ "total_members": 50
839
+ },
840
+ "r64_estimate_km": {
841
+ "mean": 265.239610384554,
842
+ "p10": 263.058654768621,
843
+ "p90": 267.7612145964522,
844
+ "valid_members": 50,
845
+ "total_members": 50
846
+ }
847
+ },
848
+ "status_counts": {
849
+ "experimental_estimate": 50
850
+ }
851
+ },
852
+ {
853
+ "method": "pressure-gradient-experimental-v1",
854
+ "experimental": true,
855
+ "members": 50,
856
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
857
+ "assumptions": {
858
+ "air_density_kg_m3": 1.15,
859
+ "ocean_surface_reduction": 0.8,
860
+ "maximum_radius_km": 480,
861
+ "azimuth_samples": 72,
862
+ "radial_smoothing": "three-point pressure average",
863
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
864
+ "wind_averaging_period": "not calibrated to an agency averaging period",
865
+ "land_friction_asymmetry_and_translation": "not modelled",
866
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
867
+ },
868
+ "estimates": {
869
+ "maximum_wind_auxiliary_kt": {
870
+ "mean": 172.97844329833984,
871
+ "p10": 172.44232330322265,
872
+ "p90": 173.51752319335938,
873
+ "valid_members": 50,
874
+ "total_members": 50
875
+ },
876
+ "pressure_wind_estimate_kt": {
877
+ "mean": 87.00958330913801,
878
+ "p10": 86.57519528132963,
879
+ "p90": 87.36372475392078,
880
+ "valid_members": 50,
881
+ "total_members": 50
882
+ },
883
+ "rmw_estimate_km": {
884
+ "mean": 60.09867693552717,
885
+ "p10": 60.097122014031754,
886
+ "p90": 60.100280364309675,
887
+ "valid_members": 50,
888
+ "total_members": 50
889
+ },
890
+ "r34_estimate_km": {
891
+ "mean": null,
892
+ "p10": null,
893
+ "p90": null,
894
+ "valid_members": 0,
895
+ "total_members": 50
896
+ },
897
+ "r50_estimate_km": {
898
+ "mean": 323.8147295382622,
899
+ "p10": 320.53976022365106,
900
+ "p90": 326.45310081631044,
901
+ "valid_members": 50,
902
+ "total_members": 50
903
+ },
904
+ "r64_estimate_km": {
905
+ "mean": 255.19766455473234,
906
+ "p10": 253.03487885359738,
907
+ "p90": 257.7478687006905,
908
+ "valid_members": 50,
909
+ "total_members": 50
910
+ }
911
+ },
912
+ "status_counts": {
913
+ "experimental_estimate": 50
914
+ }
915
+ },
916
+ {
917
+ "method": "pressure-gradient-experimental-v1",
918
+ "experimental": true,
919
+ "members": 50,
920
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
921
+ "assumptions": {
922
+ "air_density_kg_m3": 1.15,
923
+ "ocean_surface_reduction": 0.8,
924
+ "maximum_radius_km": 480,
925
+ "azimuth_samples": 72,
926
+ "radial_smoothing": "three-point pressure average",
927
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
928
+ "wind_averaging_period": "not calibrated to an agency averaging period",
929
+ "land_friction_asymmetry_and_translation": "not modelled",
930
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
931
+ },
932
+ "estimates": {
933
+ "maximum_wind_auxiliary_kt": {
934
+ "mean": 178.4434976196289,
935
+ "p10": 177.85364532470703,
936
+ "p90": 179.11270294189453,
937
+ "valid_members": 50,
938
+ "total_members": 50
939
+ },
940
+ "pressure_wind_estimate_kt": {
941
+ "mean": 85.27550767998771,
942
+ "p10": 84.92737745406437,
943
+ "p90": 85.59656969651694,
944
+ "valid_members": 50,
945
+ "total_members": 50
946
+ },
947
+ "rmw_estimate_km": {
948
+ "mean": 60.10134609866478,
949
+ "p10": 60.099996156822336,
950
+ "p90": 60.10273149377433,
951
+ "valid_members": 50,
952
+ "total_members": 50
953
+ },
954
+ "r34_estimate_km": {
955
+ "mean": null,
956
+ "p10": null,
957
+ "p90": null,
958
+ "valid_members": 0,
959
+ "total_members": 50
960
+ },
961
+ "r50_estimate_km": {
962
+ "mean": 323.3379465456766,
963
+ "p10": 321.052923975466,
964
+ "p90": 326.3950634200647,
965
+ "valid_members": 50,
966
+ "total_members": 50
967
+ },
968
+ "r64_estimate_km": {
969
+ "mean": 254.42498791125038,
970
+ "p10": 251.41136974585046,
971
+ "p90": 257.16026725079416,
972
+ "valid_members": 50,
973
+ "total_members": 50
974
+ }
975
+ },
976
+ "status_counts": {
977
+ "experimental_estimate": 50
978
+ }
979
+ },
980
+ {
981
+ "method": "pressure-gradient-experimental-v1",
982
+ "experimental": true,
983
+ "members": 50,
984
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
985
+ "assumptions": {
986
+ "air_density_kg_m3": 1.15,
987
+ "ocean_surface_reduction": 0.8,
988
+ "maximum_radius_km": 480,
989
+ "azimuth_samples": 72,
990
+ "radial_smoothing": "three-point pressure average",
991
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
992
+ "wind_averaging_period": "not calibrated to an agency averaging period",
993
+ "land_friction_asymmetry_and_translation": "not modelled",
994
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
995
+ },
996
+ "estimates": {
997
+ "maximum_wind_auxiliary_kt": {
998
+ "mean": 184.83419647216797,
999
+ "p10": 184.22805938720703,
1000
+ "p90": 185.59008026123047,
1001
+ "valid_members": 50,
1002
+ "total_members": 50
1003
+ },
1004
+ "pressure_wind_estimate_kt": {
1005
+ "mean": 82.8757899279715,
1006
+ "p10": 82.477565234095,
1007
+ "p90": 83.32197720985265,
1008
+ "valid_members": 50,
1009
+ "total_members": 50
1010
+ },
1011
+ "rmw_estimate_km": {
1012
+ "mean": 60.104588817743604,
1013
+ "p10": 60.102750852476895,
1014
+ "p90": 60.10622509523515,
1015
+ "valid_members": 50,
1016
+ "total_members": 50
1017
+ },
1018
+ "r34_estimate_km": {
1019
+ "mean": null,
1020
+ "p10": null,
1021
+ "p90": null,
1022
+ "valid_members": 40,
1023
+ "total_members": 50
1024
+ },
1025
+ "r50_estimate_km": {
1026
+ "mean": 309.96740848663853,
1027
+ "p10": 307.3536522734231,
1028
+ "p90": 312.1578294087369,
1029
+ "valid_members": 50,
1030
+ "total_members": 50
1031
+ },
1032
+ "r64_estimate_km": {
1033
+ "mean": 251.21210579593867,
1034
+ "p10": 248.87880133824493,
1035
+ "p90": 253.22332635847602,
1036
+ "valid_members": 50,
1037
+ "total_members": 50
1038
+ }
1039
+ },
1040
+ "status_counts": {
1041
+ "experimental_estimate": 50
1042
+ }
1043
+ },
1044
+ {
1045
+ "method": "pressure-gradient-experimental-v1",
1046
+ "experimental": true,
1047
+ "members": 50,
1048
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
1049
+ "assumptions": {
1050
+ "air_density_kg_m3": 1.15,
1051
+ "ocean_surface_reduction": 0.8,
1052
+ "maximum_radius_km": 480,
1053
+ "azimuth_samples": 72,
1054
+ "radial_smoothing": "three-point pressure average",
1055
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
1056
+ "wind_averaging_period": "not calibrated to an agency averaging period",
1057
+ "land_friction_asymmetry_and_translation": "not modelled",
1058
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
1059
+ },
1060
+ "estimates": {
1061
+ "maximum_wind_auxiliary_kt": {
1062
+ "mean": 189.625908203125,
1063
+ "p10": 188.9086700439453,
1064
+ "p90": 190.48143157958984,
1065
+ "valid_members": 50,
1066
+ "total_members": 50
1067
+ },
1068
+ "pressure_wind_estimate_kt": {
1069
+ "mean": 82.27035281296507,
1070
+ "p10": 81.90378016337422,
1071
+ "p90": 82.6236493373704,
1072
+ "valid_members": 50,
1073
+ "total_members": 50
1074
+ },
1075
+ "rmw_estimate_km": {
1076
+ "mean": 60.104536946833704,
1077
+ "p10": 60.102496164849505,
1078
+ "p90": 60.10672293703247,
1079
+ "valid_members": 50,
1080
+ "total_members": 50
1081
+ },
1082
+ "r34_estimate_km": {
1083
+ "mean": null,
1084
+ "p10": null,
1085
+ "p90": null,
1086
+ "valid_members": 42,
1087
+ "total_members": 50
1088
+ },
1089
+ "r50_estimate_km": {
1090
+ "mean": 303.72308996847096,
1091
+ "p10": 301.45082461032354,
1092
+ "p90": 305.96301941311685,
1093
+ "valid_members": 50,
1094
+ "total_members": 50
1095
+ },
1096
+ "r64_estimate_km": {
1097
+ "mean": 243.80047608643724,
1098
+ "p10": 241.47275346694394,
1099
+ "p90": 245.6147815346318,
1100
+ "valid_members": 50,
1101
+ "total_members": 50
1102
+ }
1103
+ },
1104
+ "status_counts": {
1105
+ "experimental_estimate": 50
1106
+ }
1107
+ },
1108
+ {
1109
+ "method": "pressure-gradient-experimental-v1",
1110
+ "experimental": true,
1111
+ "members": 50,
1112
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
1113
+ "assumptions": {
1114
+ "air_density_kg_m3": 1.15,
1115
+ "ocean_surface_reduction": 0.8,
1116
+ "maximum_radius_km": 480,
1117
+ "azimuth_samples": 72,
1118
+ "radial_smoothing": "three-point pressure average",
1119
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
1120
+ "wind_averaging_period": "not calibrated to an agency averaging period",
1121
+ "land_friction_asymmetry_and_translation": "not modelled",
1122
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
1123
+ },
1124
+ "estimates": {
1125
+ "maximum_wind_auxiliary_kt": {
1126
+ "mean": 193.3230471801758,
1127
+ "p10": 192.4901336669922,
1128
+ "p90": 194.10914306640626,
1129
+ "valid_members": 50,
1130
+ "total_members": 50
1131
+ },
1132
+ "pressure_wind_estimate_kt": {
1133
+ "mean": 78.9289822653774,
1134
+ "p10": 78.22955361765983,
1135
+ "p90": 80.09489924613538,
1136
+ "valid_members": 50,
1137
+ "total_members": 50
1138
+ },
1139
+ "rmw_estimate_km": {
1140
+ "mean": 80.14115924554564,
1141
+ "p10": 60.10457335492511,
1142
+ "p90": 160.28117097357432,
1143
+ "valid_members": 50,
1144
+ "total_members": 50
1145
+ },
1146
+ "r34_estimate_km": {
1147
+ "mean": 400.2034786232343,
1148
+ "p10": 396.8221408637958,
1149
+ "p90": 403.9267988409667,
1150
+ "valid_members": 50,
1151
+ "total_members": 50
1152
+ },
1153
+ "r50_estimate_km": {
1154
+ "mean": 296.2262003516522,
1155
+ "p10": 293.87734982256023,
1156
+ "p90": 298.3335774739285,
1157
+ "valid_members": 50,
1158
+ "total_members": 50
1159
+ },
1160
+ "r64_estimate_km": {
1161
+ "mean": 235.0631070975254,
1162
+ "p10": 232.91396524373607,
1163
+ "p90": 237.5867791745078,
1164
+ "valid_members": 50,
1165
+ "total_members": 50
1166
+ }
1167
+ },
1168
+ "status_counts": {
1169
+ "experimental_estimate": 50
1170
+ }
1171
+ },
1172
+ {
1173
+ "method": "pressure-gradient-experimental-v1",
1174
+ "experimental": true,
1175
+ "members": 50,
1176
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
1177
+ "assumptions": {
1178
+ "air_density_kg_m3": 1.15,
1179
+ "ocean_surface_reduction": 0.8,
1180
+ "maximum_radius_km": 480,
1181
+ "azimuth_samples": 72,
1182
+ "radial_smoothing": "three-point pressure average",
1183
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
1184
+ "wind_averaging_period": "not calibrated to an agency averaging period",
1185
+ "land_friction_asymmetry_and_translation": "not modelled",
1186
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
1187
+ },
1188
+ "estimates": {
1189
+ "maximum_wind_auxiliary_kt": {
1190
+ "mean": 194.78679779052734,
1191
+ "p10": 193.89285583496093,
1192
+ "p90": 195.69148864746094,
1193
+ "valid_members": 50,
1194
+ "total_members": 50
1195
+ },
1196
+ "pressure_wind_estimate_kt": {
1197
+ "mean": 78.91453224738169,
1198
+ "p10": 78.0647604736035,
1199
+ "p90": 80.0890360938151,
1200
+ "valid_members": 50,
1201
+ "total_members": 50
1202
+ },
1203
+ "rmw_estimate_km": {
1204
+ "mean": 60.1133803981089,
1205
+ "p10": 60.111826178087256,
1206
+ "p90": 60.1148267553243,
1207
+ "valid_members": 50,
1208
+ "total_members": 50
1209
+ },
1210
+ "r34_estimate_km": {
1211
+ "mean": 393.3382101998209,
1212
+ "p10": 389.23759333622667,
1213
+ "p90": 398.3474492278534,
1214
+ "valid_members": 50,
1215
+ "total_members": 50
1216
+ },
1217
+ "r50_estimate_km": {
1218
+ "mean": 284.0531922263074,
1219
+ "p10": 282.3683663208646,
1220
+ "p90": 285.9396185043405,
1221
+ "valid_members": 50,
1222
+ "total_members": 50
1223
+ },
1224
+ "r64_estimate_km": {
1225
+ "mean": 217.9772810869825,
1226
+ "p10": 215.8062460714762,
1227
+ "p90": 220.29602532111207,
1228
+ "valid_members": 50,
1229
+ "total_members": 50
1230
+ }
1231
+ },
1232
+ "status_counts": {
1233
+ "experimental_estimate": 50
1234
+ }
1235
+ },
1236
+ {
1237
+ "method": "pressure-gradient-experimental-v1",
1238
+ "experimental": true,
1239
+ "members": 50,
1240
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
1241
+ "assumptions": {
1242
+ "air_density_kg_m3": 1.15,
1243
+ "ocean_surface_reduction": 0.8,
1244
+ "maximum_radius_km": 480,
1245
+ "azimuth_samples": 72,
1246
+ "radial_smoothing": "three-point pressure average",
1247
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
1248
+ "wind_averaging_period": "not calibrated to an agency averaging period",
1249
+ "land_friction_asymmetry_and_translation": "not modelled",
1250
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
1251
+ },
1252
+ "estimates": {
1253
+ "maximum_wind_auxiliary_kt": {
1254
+ "mean": 193.2800442504883,
1255
+ "p10": 192.31536712646485,
1256
+ "p90": 194.29532775878906,
1257
+ "valid_members": 50,
1258
+ "total_members": 50
1259
+ },
1260
+ "pressure_wind_estimate_kt": {
1261
+ "mean": 74.81134141839351,
1262
+ "p10": 74.4369829379548,
1263
+ "p90": 75.1841029810445,
1264
+ "valid_members": 50,
1265
+ "total_members": 50
1266
+ },
1267
+ "rmw_estimate_km": {
1268
+ "mean": 60.11652657382222,
1269
+ "p10": 60.114659890002365,
1270
+ "p90": 60.11819916239406,
1271
+ "valid_members": 50,
1272
+ "total_members": 50
1273
+ },
1274
+ "r34_estimate_km": {
1275
+ "mean": 359.96791331210335,
1276
+ "p10": 355.6046306588598,
1277
+ "p90": 364.63283575083074,
1278
+ "valid_members": 50,
1279
+ "total_members": 50
1280
+ },
1281
+ "r50_estimate_km": {
1282
+ "mean": 268.37126846060744,
1283
+ "p10": 265.551229016982,
1284
+ "p90": 271.3137807922926,
1285
+ "valid_members": 50,
1286
+ "total_members": 50
1287
+ },
1288
+ "r64_estimate_km": {
1289
+ "mean": 199.26242717302347,
1290
+ "p10": 195.18915089313438,
1291
+ "p90": 203.48214946911628,
1292
+ "valid_members": 50,
1293
+ "total_members": 50
1294
+ }
1295
+ },
1296
+ "status_counts": {
1297
+ "experimental_estimate": 50
1298
+ }
1299
+ },
1300
+ {
1301
+ "method": "pressure-gradient-experimental-v1",
1302
+ "experimental": true,
1303
+ "members": 50,
1304
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
1305
+ "assumptions": {
1306
+ "air_density_kg_m3": 1.15,
1307
+ "ocean_surface_reduction": 0.8,
1308
+ "maximum_radius_km": 480,
1309
+ "azimuth_samples": 72,
1310
+ "radial_smoothing": "three-point pressure average",
1311
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
1312
+ "wind_averaging_period": "not calibrated to an agency averaging period",
1313
+ "land_friction_asymmetry_and_translation": "not modelled",
1314
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
1315
+ },
1316
+ "estimates": {
1317
+ "maximum_wind_auxiliary_kt": {
1318
+ "mean": 189.61082092285156,
1319
+ "p10": 188.40074310302734,
1320
+ "p90": 190.71917419433595,
1321
+ "valid_members": 50,
1322
+ "total_members": 50
1323
+ },
1324
+ "pressure_wind_estimate_kt": {
1325
+ "mean": 74.42452677966686,
1326
+ "p10": 73.85330743551495,
1327
+ "p90": 74.99625336166386,
1328
+ "valid_members": 50,
1329
+ "total_members": 50
1330
+ },
1331
+ "rmw_estimate_km": {
1332
+ "mean": 60.10848581720569,
1333
+ "p10": 60.09991000639112,
1334
+ "p90": 60.11404489743269,
1335
+ "valid_members": 50,
1336
+ "total_members": 50
1337
+ },
1338
+ "r34_estimate_km": {
1339
+ "mean": 326.7466855612969,
1340
+ "p10": 323.4526633040891,
1341
+ "p90": 329.72691282253663,
1342
+ "valid_members": 50,
1343
+ "total_members": 50
1344
+ },
1345
+ "r50_estimate_km": {
1346
+ "mean": 246.20762980258667,
1347
+ "p10": 243.19177875715442,
1348
+ "p90": 248.77733602564567,
1349
+ "valid_members": 50,
1350
+ "total_members": 50
1351
+ },
1352
+ "r64_estimate_km": {
1353
+ "mean": 160.83696994428612,
1354
+ "p10": 151.05273553422822,
1355
+ "p90": 171.30948148781948,
1356
+ "valid_members": 50,
1357
+ "total_members": 50
1358
+ }
1359
+ },
1360
+ "status_counts": {
1361
+ "experimental_estimate": 50
1362
+ }
1363
+ },
1364
+ {
1365
+ "method": "pressure-gradient-experimental-v1",
1366
+ "experimental": true,
1367
+ "members": 50,
1368
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
1369
+ "assumptions": {
1370
+ "air_density_kg_m3": 1.15,
1371
+ "ocean_surface_reduction": 0.8,
1372
+ "maximum_radius_km": 480,
1373
+ "azimuth_samples": 72,
1374
+ "radial_smoothing": "three-point pressure average",
1375
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
1376
+ "wind_averaging_period": "not calibrated to an agency averaging period",
1377
+ "land_friction_asymmetry_and_translation": "not modelled",
1378
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
1379
+ },
1380
+ "estimates": {
1381
+ "maximum_wind_auxiliary_kt": {
1382
+ "mean": 185.56466522216797,
1383
+ "p10": 184.58406677246094,
1384
+ "p90": 186.4939727783203,
1385
+ "valid_members": 50,
1386
+ "total_members": 50
1387
+ },
1388
+ "pressure_wind_estimate_kt": {
1389
+ "mean": 68.98629654043093,
1390
+ "p10": 68.46383155402424,
1391
+ "p90": 69.52045476908492,
1392
+ "valid_members": 50,
1393
+ "total_members": 50
1394
+ },
1395
+ "rmw_estimate_km": {
1396
+ "mean": 60.1113759504662,
1397
+ "p10": 60.106164602195506,
1398
+ "p90": 60.11551870060794,
1399
+ "valid_members": 50,
1400
+ "total_members": 50
1401
+ },
1402
+ "r34_estimate_km": {
1403
+ "mean": 301.36671364980907,
1404
+ "p10": 298.0363628550547,
1405
+ "p90": 304.54676273693855,
1406
+ "valid_members": 50,
1407
+ "total_members": 50
1408
+ },
1409
+ "r50_estimate_km": {
1410
+ "mean": 224.41029943553283,
1411
+ "p10": 220.6652662699374,
1412
+ "p90": 227.85334658458692,
1413
+ "valid_members": 50,
1414
+ "total_members": 50
1415
+ },
1416
+ "r64_estimate_km": {
1417
+ "mean": 78.29319834701019,
1418
+ "p10": 75.99688569994754,
1419
+ "p90": 80.97304184660781,
1420
+ "valid_members": 50,
1421
+ "total_members": 50
1422
+ }
1423
+ },
1424
+ "status_counts": {
1425
+ "experimental_estimate": 50
1426
+ }
1427
+ },
1428
+ {
1429
+ "method": "pressure-gradient-experimental-v1",
1430
+ "experimental": true,
1431
+ "members": 50,
1432
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
1433
+ "assumptions": {
1434
+ "air_density_kg_m3": 1.15,
1435
+ "ocean_surface_reduction": 0.8,
1436
+ "maximum_radius_km": 480,
1437
+ "azimuth_samples": 72,
1438
+ "radial_smoothing": "three-point pressure average",
1439
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
1440
+ "wind_averaging_period": "not calibrated to an agency averaging period",
1441
+ "land_friction_asymmetry_and_translation": "not modelled",
1442
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
1443
+ },
1444
+ "estimates": {
1445
+ "maximum_wind_auxiliary_kt": {
1446
+ "mean": 181.93035186767577,
1447
+ "p10": 180.96984405517577,
1448
+ "p90": 182.76628723144532,
1449
+ "valid_members": 50,
1450
+ "total_members": 50
1451
+ },
1452
+ "pressure_wind_estimate_kt": {
1453
+ "mean": 64.01554967240737,
1454
+ "p10": 63.4476104265332,
1455
+ "p90": 64.60528140592703,
1456
+ "valid_members": 50,
1457
+ "total_members": 50
1458
+ },
1459
+ "rmw_estimate_km": {
1460
+ "mean": 57.264833266128925,
1461
+ "p10": 40.043851225057836,
1462
+ "p90": 60.07138420176969,
1463
+ "valid_members": 50,
1464
+ "total_members": 50
1465
+ },
1466
+ "r34_estimate_km": {
1467
+ "mean": 285.3926589268816,
1468
+ "p10": 281.9497910894972,
1469
+ "p90": 288.61522960186204,
1470
+ "valid_members": 50,
1471
+ "total_members": 50
1472
+ },
1473
+ "r50_estimate_km": {
1474
+ "mean": 201.94426763608394,
1475
+ "p10": 198.44027272383866,
1476
+ "p90": 205.34523107437954,
1477
+ "valid_members": 50,
1478
+ "total_members": 50
1479
+ },
1480
+ "r64_estimate_km": {
1481
+ "mean": null,
1482
+ "p10": null,
1483
+ "p90": null,
1484
+ "valid_members": 20,
1485
+ "total_members": 50
1486
+ }
1487
+ },
1488
+ "status_counts": {
1489
+ "experimental_estimate": 50
1490
+ }
1491
+ },
1492
+ {
1493
+ "method": "pressure-gradient-experimental-v1",
1494
+ "experimental": true,
1495
+ "members": 50,
1496
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
1497
+ "assumptions": {
1498
+ "air_density_kg_m3": 1.15,
1499
+ "ocean_surface_reduction": 0.8,
1500
+ "maximum_radius_km": 480,
1501
+ "azimuth_samples": 72,
1502
+ "radial_smoothing": "three-point pressure average",
1503
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
1504
+ "wind_averaging_period": "not calibrated to an agency averaging period",
1505
+ "land_friction_asymmetry_and_translation": "not modelled",
1506
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
1507
+ },
1508
+ "estimates": {
1509
+ "maximum_wind_auxiliary_kt": {
1510
+ "mean": 179.79521240234374,
1511
+ "p10": 178.78561096191407,
1512
+ "p90": 180.6649139404297,
1513
+ "valid_members": 50,
1514
+ "total_members": 50
1515
+ },
1516
+ "pressure_wind_estimate_kt": {
1517
+ "mean": 62.02471521549326,
1518
+ "p10": 61.471880369208954,
1519
+ "p90": 62.63308119151764,
1520
+ "valid_members": 50,
1521
+ "total_members": 50
1522
+ },
1523
+ "rmw_estimate_km": {
1524
+ "mean": 53.26003039020891,
1525
+ "p10": 40.04464954779199,
1526
+ "p90": 60.06938880565317,
1527
+ "valid_members": 50,
1528
+ "total_members": 50
1529
+ },
1530
+ "r34_estimate_km": {
1531
+ "mean": 260.7967639959379,
1532
+ "p10": 257.8204643398188,
1533
+ "p90": 264.0569781064068,
1534
+ "valid_members": 50,
1535
+ "total_members": 50
1536
+ },
1537
+ "r50_estimate_km": {
1538
+ "mean": 170.86120489720204,
1539
+ "p10": 166.5565118327133,
1540
+ "p90": 176.4476179674408,
1541
+ "valid_members": 50,
1542
+ "total_members": 50
1543
+ },
1544
+ "r64_estimate_km": {
1545
+ "mean": null,
1546
+ "p10": null,
1547
+ "p90": null,
1548
+ "valid_members": 0,
1549
+ "total_members": 50
1550
+ }
1551
+ },
1552
+ "status_counts": {
1553
+ "experimental_estimate": 50
1554
+ }
1555
+ },
1556
+ {
1557
+ "method": "pressure-gradient-experimental-v1",
1558
+ "experimental": true,
1559
+ "members": 50,
1560
+ "aggregation": "diagnose each member, then equal-weight mean; never diagnose the mean pressure",
1561
+ "assumptions": {
1562
+ "air_density_kg_m3": 1.15,
1563
+ "ocean_surface_reduction": 0.8,
1564
+ "maximum_radius_km": 480,
1565
+ "azimuth_samples": 72,
1566
+ "radial_smoothing": "three-point pressure average",
1567
+ "geometry": "azimuthal mean; circular equivalent radii, not quadrants",
1568
+ "wind_averaging_period": "not calibrated to an agency averaging period",
1569
+ "land_friction_asymmetry_and_translation": "not modelled",
1570
+ "calibration": "none; fixed physical assumptions, not fitted to benchmarks"
1571
+ },
1572
+ "estimates": {
1573
+ "maximum_wind_auxiliary_kt": {
1574
+ "mean": 178.62585235595702,
1575
+ "p10": 177.64862060546875,
1576
+ "p90": 179.59320068359375,
1577
+ "valid_members": 50,
1578
+ "total_members": 50
1579
+ },
1580
+ "pressure_wind_estimate_kt": {
1581
+ "mean": 61.366070448477785,
1582
+ "p10": 60.72983180675786,
1583
+ "p90": 61.907323189394795,
1584
+ "valid_members": 50,
1585
+ "total_members": 50
1586
+ },
1587
+ "rmw_estimate_km": {
1588
+ "mean": 60.085127989726,
1589
+ "p10": 60.078455694854924,
1590
+ "p90": 60.092307903408916,
1591
+ "valid_members": 50,
1592
+ "total_members": 50
1593
+ },
1594
+ "r34_estimate_km": {
1595
+ "mean": 252.54537665110155,
1596
+ "p10": 249.4091393803782,
1597
+ "p90": 255.59958414029367,
1598
+ "valid_members": 50,
1599
+ "total_members": 50
1600
+ },
1601
+ "r50_estimate_km": {
1602
+ "mean": 155.4694924332101,
1603
+ "p10": 149.96250368125305,
1604
+ "p90": 160.97504668341705,
1605
+ "valid_members": 50,
1606
+ "total_members": 50
1607
+ },
1608
+ "r64_estimate_km": {
1609
+ "mean": null,
1610
+ "p10": null,
1611
+ "p90": null,
1612
+ "valid_members": 0,
1613
+ "total_members": 50
1614
+ }
1615
+ },
1616
+ "status_counts": {
1617
+ "experimental_estimate": 50
1618
+ }
1619
+ }
1620
+ ],
1621
+ "inference_seconds": 23.216
1622
+ },
1623
+ "method": "Original model equation: bilinear basin + georeferenced model tapered moving anomaly; physical member fields registered before equal-weight mean.",
1624
+ "scalar_pressure_inserted": false,
1625
+ "route_or_truth_alignment": false,
1626
+ "native_detail_history_available": false,
1627
+ "model_core_information_spacing_km": 20,
1628
+ "sampling_note": "0.1-degree core export and 0.25-degree basin reconstruction are sampling, not additional observations.",
1629
+ "files_sha256": {
1630
+ "common-pressure.npz": "5a9183d758fce8294bf854412edb9185cf4fcc2f386e8af74f4759a60bb16bdc",
1631
+ "core-reconstruction.json": "fce45ac6395b867f092e31d8cb0ad7160ffb3fe1f76dbe489095b14385eee0eb",
1632
+ "captured-core-members.npz": "e65def9a4508c311a0778ebb12b8ddf7ea680dc6133c3f2467fb792d259dba09"
1633
+ }
1634
+ }
evaluation/trackformer_1_2_mangkhut_video_poster.png CHANGED

Git LFS Details

  • SHA256: 3ce1f53ea27c88addcc4633a52a6487ee92a3b6509e1ae078a668117d1db3bf0
  • Pointer size: 131 Bytes
  • Size of remote file: 291 kB

Git LFS Details

  • SHA256: 89b39c04835df8ee0bda16584ec16c8010d5117fb779b33358e4ca245051d1d8
  • Pointer size: 131 Bytes
  • Size of remote file: 337 kB
release_tools/build_fung_wong_video.py CHANGED
@@ -12,10 +12,6 @@ from datetime import datetime, timedelta
12
  from pathlib import Path
13
 
14
  import numpy as np
15
- import matplotlib
16
- matplotlib.use('Agg')
17
- import matplotlib.pyplot as plt
18
- from matplotlib.colors import TwoSlopeNorm
19
 
20
  REPO = Path(__file__).resolve().parents[1]
21
  DATA = REPO / 'evaluation/release_data'
@@ -27,6 +23,33 @@ def sha(path):
27
  return hashlib.file_digest(stream, 'sha256').hexdigest()
28
 
29
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  def distances(a, b):
31
  a, b = np.deg2rad(a), np.deg2rad(b)
32
  d = b - a
@@ -101,7 +124,14 @@ def prepare(root):
101
  print(json.dumps(meta['metrics'], indent=2), flush=True)
102
 
103
 
104
- def build(work, stem='fung_wong', data=DATA):
 
 
 
 
 
 
 
105
  work.mkdir(parents=True, exist_ok=True)
106
  meta = json.loads((data/f'{stem}_video.json').read_text())
107
  assert meta['model'] == 'Trackformer 1.2' and meta['members'] == 50
@@ -109,6 +139,17 @@ def build(work, stem='fung_wong', data=DATA):
109
  assert sha(data/f'{stem}_video.npz') == meta['data_sha256']
110
  with np.load(data/f'{stem}_video.npz', allow_pickle=False) as z:
111
  a = {k: z[k] for k in z.files}
 
 
 
 
 
 
 
 
 
 
 
112
  rings = json.loads((data/f'{stem}_coastlines.json').read_text())
113
  f, o, lat, lon = (a[k] for k in ('forecast_lat_lon', 'observed_lat_lon', 'latitude', 'longitude'))
114
  if f.shape != (21, 2) or a['regional_pressure_hpa'].shape != (20, 121, 121) or a['basin_pressure_hpa'].shape != (20, 25, 33):
@@ -116,10 +157,10 @@ def build(work, stem='fung_wong', data=DATA):
116
  bounds = meta.get('display_bounds', [115, 141, 8, 25])
117
  vmin, vmax = 936, 1016
118
  if stem != 'fung_wong':
119
- field_min = min(a['basin_pressure_hpa'].min(), a['regional_pressure_hpa'].min())
120
- field_max = max(a['basin_pressure_hpa'].max(), a['regional_pressure_hpa'].max())
121
  vmin, vmax = min(1008, 4*np.floor(field_min/4)), max(1020, 4*np.ceil(field_max/4))
122
- levels, contours = np.arange(vmin, vmax+1, 2), np.arange(vmin, vmax+1, 4)
123
  # Conventional diverging pressure colors: lows blue, highs red. The
124
  # numeric colorbar remains explicit; this changes rendering, never fields.
125
  pressure_norm = TwoSlopeNorm(vmin=vmin, vcenter=1013.25, vmax=vmax)
@@ -152,12 +193,17 @@ def build(work, stem='fung_wong', data=DATA):
152
  ax = fig.add_subplot(gs[0, :])
153
  maps = [(ax, bounds, False)]
154
  for axis, extent, is_small in maps:
155
- axis.contourf(glon, glat, a['basin_pressure_hpa'][k], levels=levels, cmap='RdYlBu_r', norm=pressure_norm, extend='both')
156
- axis.contour(glon, glat, a['basin_pressure_hpa'][k], levels=contours, colors='#546971', linewidths=.4)
157
- im = axis.contourf(lon, lat, regional[k], levels=levels, cmap='RdYlBu_r', norm=pressure_norm, extend='both')
158
- cs = axis.contour(lon, lat, regional[k], levels=contours, colors='#354b58', linewidths=.6)
 
 
 
 
 
159
  if not is_small:
160
- axis.clabel(cs, levels=contours[::2], fmt='%d', fontsize=9)
161
  for ring in rings:
162
  xy = np.asarray(ring); axis.plot(xy[:, 0], xy[:, 1], c='#66716b', lw=.65 if is_small else .8)
163
  for path, color, label, style in [(o, '#182f42', 'Observed best track', '--'), (f, '#b31565', 'Trackformer 1.2 mean of 50', '-')]:
@@ -170,7 +216,7 @@ def build(work, stem='fung_wong', data=DATA):
170
  if is_small:
171
  axis.tick_params(labelsize=9)
172
  axis.set_xticks([100, 140, 180])
173
- axis.text(0, -.24, 'Same 50-member pressure mean\nBasin + fixed regional reconstruction\nNo decorative grid / no route shift',
174
  transform=axis.transAxes, fontsize=10, color='#47636d', va='top')
175
  ax.legend(loc='lower left', fontsize=11, framealpha=.95)
176
  ax.text(.985, .035, 'Same map / same valid time\nNo route shifting or rescaling', transform=ax.transAxes,
@@ -186,23 +232,20 @@ def build(work, stem='fung_wong', data=DATA):
186
  curve.grid(alpha=.2); curve.legend(loc='lower left', fontsize=10)
187
  info = fig.add_subplot(gs[1, 2] if overview_layout else gs[1, 1]); info.axis('off')
188
  inside = lon.min() <= f[k+1, 1] <= lon.max() and lat.min() <= f[k+1, 0] <= lat.max()
189
- coverage = 'Centre within regional field' if inside else 'Centre outside regional field\nCoarse pressure only here'
190
  info.text(0, 1, f"Position error: {a['track_error_km'][k]:.0f} km\nModel: {a['central_pressure_hpa'][k]:.1f} hPa\nObserved: {a['observed_pressure_hpa'][k]:.0f} hPa\n\n{coverage}", va='top', fontsize=12, color='#244754')
191
  valid = start+timedelta(hours=int(lead))
192
  fig.suptitle(f"Trackformer 1.2 / {meta['storm']} / +{lead:03d} h", x=.055, y=.97, ha='left', fontsize=24, fontweight='bold', color='#173947')
193
  fig.text(.055, .918, f'Issue: {start:%d %b %Y %H:%M} UTC | Valid: {valid:%d %b %Y %H:%M} UTC | 50-member mean', fontsize=14, color='#385865')
194
- fig.text(.055, .067, 'Actual model pressure with 4 hPa isobars. Observations are verification only; selected example, not typical skill.', fontsize=11, color='#47636d')
195
- fig.text(.055, .040, 'Regional reconstruction has no native-detail history. Outside its coverage: saved coarse basin field only.', fontsize=10, color='#47636d')
196
  fig.text(.93, .91, 'Blue: low (L) / Red: high (H)', ha='right', fontsize=12, color='#385865')
197
  fig.savefig(work/f'frame_{k:03d}.png', dpi=100)
198
- if k == 9: fig.savefig(REPO/f'evaluation/trackformer_1_2_{stem}_video_poster.png', dpi=100)
 
199
  plt.close(fig)
200
- output = REPO/f'docs/trackformer_1_2_{stem}.mp4'
201
- subprocess.run(['ffmpeg', '-y', '-hide_banner', '-loglevel', 'warning', '-framerate', '1', '-i', str(work/'frame_%03d.png'),
202
- '-vf', 'fps=30,tpad=stop_mode=clone:stop_duration=3', '-c:v', 'h264_videotoolbox', '-b:v', '4M', '-pix_fmt', 'yuv420p', '-movflags', '+faststart', '-an', str(output)], check=True)
203
- meta['video'] = {'file': f'docs/trackformer_1_2_{stem}.mp4', 'duration_seconds': 23, 'forecast_states': 20,
204
- 'codec': 'H.264', 'encoder': 'h264_videotoolbox', 'sha256': sha(output),
205
- 'playback': 'Each six-hour state held for 1 second; final frame held 3 seconds extra. No interpolated forecast states.'}
206
  (data/f'{stem}_video.json').write_text(json.dumps(meta, indent=2)+'\n')
207
  print('Saved', output, output.stat().st_size, 'bytes', flush=True)
208
 
@@ -213,9 +256,11 @@ if __name__ == '__main__':
213
  p.add_argument('--work', type=Path, required=True)
214
  p.add_argument('--stem', choices=['fung_wong', 'soudelor', 'mangkhut', 'meranti'], default='fung_wong')
215
  p.add_argument('--data', type=Path, default=DATA)
 
 
216
  args = p.parse_args()
217
  if args.source_root:
218
  if args.stem != 'fung_wong' or args.data != DATA:
219
  p.error('--source-root prepares only the original saved Fung-wong dataset')
220
  prepare(args.source_root)
221
- build(args.work, args.stem, args.data)
 
12
  from pathlib import Path
13
 
14
  import numpy as np
 
 
 
 
15
 
16
  REPO = Path(__file__).resolve().parents[1]
17
  DATA = REPO / 'evaluation/release_data'
 
23
  return hashlib.file_digest(stream, 'sha256').hexdigest()
24
 
25
 
26
+ def encode_video(work, output, forecast_states=20):
27
+ """One second per actual six-hour state, with no appended frozen tail."""
28
+ frames = sorted(work.glob('frame_*.png'))
29
+ expected = [work/f'frame_{i:03d}.png' for i in range(forecast_states)]
30
+ if frames != expected:
31
+ raise ValueError('Missing or unexpected forecast video frames')
32
+ subprocess.run(['ffmpeg', '-y', '-hide_banner', '-loglevel', 'warning',
33
+ '-framerate', '1', '-i', str(work/'frame_%03d.png'), '-vf', 'fps=30',
34
+ '-frames:v', str(forecast_states*30), '-c:v', 'h264_videotoolbox',
35
+ '-b:v', '4M', '-pix_fmt', 'yuv420p', '-movflags', '+faststart',
36
+ '-an', str(output)], check=True)
37
+ probe = json.loads(subprocess.check_output(['ffprobe', '-v', 'error',
38
+ '-select_streams', 'v:0', '-show_entries',
39
+ 'stream=codec_name,width,height,nb_frames:format=duration',
40
+ '-of', 'json', str(output)]))
41
+ stream = probe['streams'][0]
42
+ if (stream['codec_name'], stream['width'], stream['height'], int(stream['nb_frames'])) != ('h264', 1600, 1000, forecast_states*30):
43
+ raise ValueError('Unexpected encoded video dimensions or frame count')
44
+ if abs(float(probe['format']['duration'])-forecast_states) > .05:
45
+ raise ValueError('Unexpected video duration or frozen tail')
46
+ return {'duration_seconds': float(probe['format']['duration']),
47
+ 'forecast_states': forecast_states, 'encoded_frames': int(stream['nb_frames']),
48
+ 'state_duration_seconds': 1, 'extra_final_hold_seconds': 0,
49
+ 'codec': 'H.264', 'encoder': 'h264_videotoolbox', 'sha256': sha(output),
50
+ 'playback': 'Each genuine six-hour state held for 1 second; no extra final hold and no interpolated forecast states.'}
51
+
52
+
53
  def distances(a, b):
54
  a, b = np.deg2rad(a), np.deg2rad(b)
55
  d = b - a
 
124
  print(json.dumps(meta['metrics'], indent=2), flush=True)
125
 
126
 
127
+ def build(work, stem='fung_wong', data=DATA, core_export=None, output=None):
128
+ # CPU forecast/archive tests import the data helpers, not this renderer.
129
+ # Keep optional video dependencies out of those scheduled forecast jobs.
130
+ import matplotlib
131
+ matplotlib.use('Agg')
132
+ import matplotlib.pyplot as plt
133
+ from matplotlib.colors import TwoSlopeNorm
134
+
135
  work.mkdir(parents=True, exist_ok=True)
136
  meta = json.loads((data/f'{stem}_video.json').read_text())
137
  assert meta['model'] == 'Trackformer 1.2' and meta['members'] == 50
 
139
  assert sha(data/f'{stem}_video.npz') == meta['data_sha256']
140
  with np.load(data/f'{stem}_video.npz', allow_pickle=False) as z:
141
  a = {k: z[k] for k in z.files}
142
+ if core_export is not None:
143
+ receipt = json.loads((core_export/'verification.json').read_text())
144
+ if (receipt['checkpoint_sha256'] != CHECKPOINT or receipt['members'] != 50
145
+ or receipt['issue_time_utc'] != meta['issue_time_utc']
146
+ or receipt['storm_id'] != meta['storm_id']):
147
+ raise ValueError('Core pressure identity mismatch')
148
+ if sha(core_export/'common-pressure.npz') != receipt['files_sha256']['common-pressure.npz']:
149
+ raise ValueError('Core pressure export changed')
150
+ with np.load(core_export/'common-pressure.npz', allow_pickle=False) as z:
151
+ common_pressure, common_lat, common_lon = z['pressure_hpa'], z['latitude'], z['longitude']
152
+ meta['pressure_reconstruction'] = receipt
153
  rings = json.loads((data/f'{stem}_coastlines.json').read_text())
154
  f, o, lat, lon = (a[k] for k in ('forecast_lat_lon', 'observed_lat_lon', 'latitude', 'longitude'))
155
  if f.shape != (21, 2) or a['regional_pressure_hpa'].shape != (20, 121, 121) or a['basin_pressure_hpa'].shape != (20, 25, 33):
 
157
  bounds = meta.get('display_bounds', [115, 141, 8, 25])
158
  vmin, vmax = 936, 1016
159
  if stem != 'fung_wong':
160
+ field_min = common_pressure.min() if core_export else min(a['basin_pressure_hpa'].min(), a['regional_pressure_hpa'].min())
161
+ field_max = common_pressure.max() if core_export else max(a['basin_pressure_hpa'].max(), a['regional_pressure_hpa'].max())
162
  vmin, vmax = min(1008, 4*np.floor(field_min/4)), max(1020, 4*np.ceil(field_max/4))
163
+ levels, contours = np.arange(vmin, vmax+1, 2), np.arange(vmin, vmax+1, 2)
164
  # Conventional diverging pressure colors: lows blue, highs red. The
165
  # numeric colorbar remains explicit; this changes rendering, never fields.
166
  pressure_norm = TwoSlopeNorm(vmin=vmin, vcenter=1013.25, vmax=vmax)
 
193
  ax = fig.add_subplot(gs[0, :])
194
  maps = [(ax, bounds, False)]
195
  for axis, extent, is_small in maps:
196
+ if core_export:
197
+ im = axis.contourf(common_lon, common_lat, common_pressure[k], levels=levels, cmap='RdYlBu_r', norm=pressure_norm, extend='both')
198
+ cs = axis.contour(common_lon, common_lat, common_pressure[k], levels=contours, colors='#354b58',
199
+ linewidths=[.65 if p % 4 == 0 else .3 for p in contours])
200
+ else:
201
+ axis.contourf(glon, glat, a['basin_pressure_hpa'][k], levels=levels, cmap='RdYlBu_r', norm=pressure_norm, extend='both')
202
+ axis.contour(glon, glat, a['basin_pressure_hpa'][k], levels=contours, colors='#546971', linewidths=.4)
203
+ im = axis.contourf(lon, lat, regional[k], levels=levels, cmap='RdYlBu_r', norm=pressure_norm, extend='both')
204
+ cs = axis.contour(lon, lat, regional[k], levels=contours, colors='#354b58', linewidths=.6)
205
  if not is_small:
206
+ axis.clabel(cs, levels=contours[contours % 4 == 0], fmt='%d', fontsize=9)
207
  for ring in rings:
208
  xy = np.asarray(ring); axis.plot(xy[:, 0], xy[:, 1], c='#66716b', lw=.65 if is_small else .8)
209
  for path, color, label, style in [(o, '#182f42', 'Observed best track', '--'), (f, '#b31565', 'Trackformer 1.2 mean of 50', '-')]:
 
216
  if is_small:
217
  axis.tick_params(labelsize=9)
218
  axis.set_xticks([100, 140, 180])
219
+ axis.text(0, -.24, 'Same 50-member pressure mean\nBasin + georeferenced moving core\nNo decorative grid / no route shift' if core_export else 'Same 50-member pressure mean\nBasin + fixed regional reconstruction\nNo decorative grid / no route shift',
220
  transform=axis.transAxes, fontsize=10, color='#47636d', va='top')
221
  ax.legend(loc='lower left', fontsize=11, framealpha=.95)
222
  ax.text(.985, .035, 'Same map / same valid time\nNo route shifting or rescaling', transform=ax.transAxes,
 
232
  curve.grid(alpha=.2); curve.legend(loc='lower left', fontsize=10)
233
  info = fig.add_subplot(gs[1, 2] if overview_layout else gs[1, 1]); info.axis('off')
234
  inside = lon.min() <= f[k+1, 1] <= lon.max() and lat.min() <= f[k+1, 0] <= lat.max()
235
+ coverage = 'Actual model moving core\n50 fields registered before mean' if core_export else 'Centre within regional field' if inside else 'Centre outside regional field\nCoarse pressure only here'
236
  info.text(0, 1, f"Position error: {a['track_error_km'][k]:.0f} km\nModel: {a['central_pressure_hpa'][k]:.1f} hPa\nObserved: {a['observed_pressure_hpa'][k]:.0f} hPa\n\n{coverage}", va='top', fontsize=12, color='#244754')
237
  valid = start+timedelta(hours=int(lead))
238
  fig.suptitle(f"Trackformer 1.2 / {meta['storm']} / +{lead:03d} h", x=.055, y=.97, ha='left', fontsize=24, fontweight='bold', color='#173947')
239
  fig.text(.055, .918, f'Issue: {start:%d %b %Y %H:%M} UTC | Valid: {valid:%d %b %Y %H:%M} UTC | 50-member mean', fontsize=14, color='#385865')
240
+ fig.text(.055, .067, 'Actual model pressure: 2 hPa isobars, bold/labeled 4 hPa. Observations are verification only; selected example, not typical skill.', fontsize=11, color='#47636d')
241
+ fig.text(.055, .040, 'Model basin + actual moving pressure anomalies on a common geographic grid. Mean core readout need not equal the mean-field minimum.' if core_export else 'Regional reconstruction has no native-detail history. Outside its coverage: saved coarse basin field only.', fontsize=10, color='#47636d')
242
  fig.text(.93, .91, 'Blue: low (L) / Red: high (H)', ha='right', fontsize=12, color='#385865')
243
  fig.savefig(work/f'frame_{k:03d}.png', dpi=100)
244
+ if k == 9: fig.savefig(work/'poster.png' if output else REPO/f'evaluation/trackformer_1_2_{stem}_video_poster.png', dpi=100)
245
+ print(f'Rendered +{lead:03d}h', flush=True)
246
  plt.close(fig)
247
+ output = output or REPO/f'docs/trackformer_1_2_{stem}.mp4'
248
+ meta['video'] = {'file': f'docs/trackformer_1_2_{stem}.mp4', **encode_video(work, output)}
 
 
 
 
249
  (data/f'{stem}_video.json').write_text(json.dumps(meta, indent=2)+'\n')
250
  print('Saved', output, output.stat().st_size, 'bytes', flush=True)
251
 
 
256
  p.add_argument('--work', type=Path, required=True)
257
  p.add_argument('--stem', choices=['fung_wong', 'soudelor', 'mangkhut', 'meranti'], default='fung_wong')
258
  p.add_argument('--data', type=Path, default=DATA)
259
+ p.add_argument('--core-export', type=Path)
260
+ p.add_argument('--output', type=Path)
261
  args = p.parse_args()
262
  if args.source_root:
263
  if args.stem != 'fung_wong' or args.data != DATA:
264
  p.error('--source-root prepares only the original saved Fung-wong dataset')
265
  prepare(args.source_root)
266
+ build(args.work, args.stem, args.data, args.core_export, args.output)
release_tools/publish_mangkhut_video_revision.py ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Scoped HF video revision: preserve the remote card and all other model assets."""
2
+ import argparse
3
+ import hashlib
4
+ import json
5
+ from pathlib import Path
6
+
7
+ from huggingface_hub import CommitOperationAdd, HfApi, hf_hub_download
8
+
9
+ ROOT = Path(__file__).resolve().parents[1]
10
+ REPO = 'euler314/typhoon-predict'
11
+ CACHE = '/Volumes/D/typhoon_predict/.cache/huggingface-intensity'
12
+ START = '## More historical pressure forecasts — MP4\n'
13
+ END = '### Illustrated technical paper\n'
14
+
15
+
16
+ def sha(path):
17
+ with Path(path).open('rb') as stream:
18
+ return hashlib.file_digest(stream, 'sha256').hexdigest()
19
+
20
+
21
+ def merge_card(card, github):
22
+ """Only replace shared descriptions; keep HF front matter and inline films."""
23
+ for text in (card, github):
24
+ if text.count(START) != 1 or text.count(END) != 1:
25
+ raise ValueError('Unexpected card anchors; preserve remote content')
26
+ old = card.split(START, 1)[1].split(END, 1)[0]
27
+ new = github.split(START, 1)[1].split(END, 1)[0]
28
+ lead = new.split('\n\n| Soudelor', 1)[0]
29
+ tail = new.split('**These are calendar-selected', 1)[1]
30
+ if old.count('### Soudelor') != 1 or old.count('**These are calendar-selected') != 1:
31
+ raise ValueError('Unexpected HF video section')
32
+ videos = '### Soudelor'+old.split('### Soudelor', 1)[1].split('**These are calendar-selected', 1)[0]
33
+ result = card.split(START, 1)[0]+START+'\n'+lead.strip()+'\n\n'+videos+'**These are calendar-selected'+tail+END+card.split(END, 1)[1]
34
+ if not result.startswith('---\n') or result.count('<video ') != card.count('<video ') or result.count('<video ') != 4:
35
+ raise ValueError('Lost HF metadata or an inline film')
36
+ return result
37
+
38
+
39
+ def run(output, publish):
40
+ if not str(output.resolve()).startswith('/Volumes/D/'):
41
+ raise ValueError('All publication artifacts must stay on D')
42
+ output.mkdir(parents=True, exist_ok=True)
43
+ api = HfApi()
44
+ parent = api.model_info(REPO).sha
45
+ original = Path(hf_hub_download(REPO, 'README.md', revision=parent, cache_dir=CACHE))
46
+ card = output/'README.md'
47
+ card.write_text(merge_card(original.read_text(), (ROOT/'README.md').read_text()))
48
+ files = {'README.md': card}
49
+ for name in ('docs/trackformer_1_2_mangkhut.mp4', 'evaluation/trackformer_1_2_mangkhut_video_poster.png',
50
+ 'evaluation/release_data/mangkhut_video.json', 'evaluation/release_data/mangkhut_playback_verification.json',
51
+ 'evaluation/release_data/historical_video50_verification.json',
52
+ 'release_tools/build_fung_wong_video.py', 'release_tools/verify_historical_video50.py',
53
+ 'release_tools/test_historical_video_playback.py', 'release_tools/publish_mangkhut_video_revision.py'):
54
+ files[name] = ROOT/name
55
+ for name in ('common-pressure.npz', 'verification.json', 'core-reconstruction.json'):
56
+ relative = 'evaluation/release_data/pressure_core/mangkhut/'+name
57
+ files[relative] = ROOT/relative
58
+ meta = json.loads(files['evaluation/release_data/mangkhut_video.json'].read_text())
59
+ check = json.loads(files['evaluation/release_data/mangkhut_playback_verification.json'].read_text())
60
+ if meta['members'] != 50 or meta['video']['duration_seconds'] != 20 or not check['verified']:
61
+ raise ValueError('Unverified video revision')
62
+ if sha(files['docs/trackformer_1_2_mangkhut.mp4']) != meta['video']['sha256'] or check['video_sha256'] != meta['video']['sha256']:
63
+ raise ValueError('Video hash mismatch')
64
+ receipt = {'status':'prepared', 'repo_id': REPO, 'parent_commit': parent,
65
+ 'files':{p:sha(v) for p,v in files.items()}, 'weights_changed':False, 'other_films_changed':False}
66
+ if publish:
67
+ result = api.create_commit(repo_id=REPO, repo_type='model', parent_commit=parent,
68
+ commit_message='Repair actual moving-core Mangkhut pressure film and remove frozen ending',
69
+ operations=[CommitOperationAdd(path_in_repo=p,path_or_fileobj=str(v)) for p,v in files.items()])
70
+ for name, expected in receipt['files'].items():
71
+ path = hf_hub_download(REPO, name, revision=result.oid, cache_dir=CACHE)
72
+ if sha(path) != expected:
73
+ raise ValueError('Remote file SHA mismatch: '+name)
74
+ receipt.update(status='published_verified', commit=result.oid, commit_url=str(result.commit_url), all_remote_files_sha256_verified=True)
75
+ (output/'publication.json').write_text(json.dumps(receipt, indent=2)+'\n')
76
+ print(json.dumps({k:v for k,v in receipt.items() if k!='files'}))
77
+
78
+
79
+ if __name__ == '__main__':
80
+ p = argparse.ArgumentParser(description=__doc__)
81
+ p.add_argument('--output', type=Path, required=True)
82
+ p.add_argument('--publish', action='store_true')
83
+ args = p.parse_args()
84
+ run(args.output, args.publish)
release_tools/test_historical_video_playback.py ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Regression: never add an extra frozen forecast tail to new encodes."""
2
+ import json
3
+ import tempfile
4
+ import unittest
5
+ from pathlib import Path
6
+ from unittest.mock import patch
7
+
8
+ from build_fung_wong_video import encode_video
9
+
10
+
11
+ class VideoPlaybackTest(unittest.TestCase):
12
+ def test_all_twenty_states_without_padding(self):
13
+ with tempfile.TemporaryDirectory(dir='/Volumes/D/typhoon_predict/output') as name:
14
+ work = Path(name)
15
+ for i in range(20):
16
+ (work/f'frame_{i:03d}.png').touch()
17
+ video = work/'video.mp4'
18
+ video.touch()
19
+ probe = {'streams': [{'codec_name': 'h264', 'width': 1600,
20
+ 'height': 1000, 'nb_frames': '600'}], 'format': {'duration': '20'}}
21
+ with patch('build_fung_wong_video.subprocess.run') as run, patch(
22
+ 'build_fung_wong_video.subprocess.check_output', return_value=json.dumps(probe).encode()):
23
+ result = encode_video(work, video)
24
+ command = run.call_args.args[0]
25
+ self.assertNotIn('tpad', ' '.join(command))
26
+ self.assertEqual(command[command.index('-frames:v')+1], '600')
27
+ self.assertEqual(result['extra_final_hold_seconds'], 0)
28
+ self.assertEqual(result['duration_seconds'], 20)
29
+
30
+ def test_missing_state_is_not_repeated(self):
31
+ with tempfile.TemporaryDirectory(dir='/Volumes/D/typhoon_predict/output') as name:
32
+ with self.assertRaisesRegex(ValueError, 'Missing or unexpected'):
33
+ encode_video(Path(name), Path(name)/'video.mp4')
34
+
35
+
36
+ if __name__ == '__main__':
37
+ unittest.main()
release_tools/verify_historical_video50.py CHANGED
@@ -11,9 +11,11 @@ from ensemble_forecast import array_hash
11
  from forecast_historical_video50_mac import CASES, sha
12
 
13
 
14
- def verify(forecasts, repo):
15
  report = {}
16
  for slug, (name, sid, issue) in CASES.items():
 
 
17
  saved = forecasts/slug
18
  data = repo/'evaluation/release_data'
19
  meta = json.loads((data/f'{slug}_video.json').read_text())
@@ -52,8 +54,10 @@ def verify(forecasts, repo):
52
  probe = json.loads(subprocess.check_output(['ffprobe', '-v', 'error', '-select_streams', 'v:0',
53
  '-show_entries', 'stream=codec_name,width,height,nb_frames:format=duration', '-of', 'json', str(movie)]))
54
  stream = probe['streams'][0]
55
- assert (stream['codec_name'], stream['width'], stream['height'], int(stream['nb_frames'])) == ('h264', 1600, 1000, 690)
56
- assert abs(float(probe['format']['duration'])-23) < .1
 
 
57
  report[slug] = {'storm_id': sid, 'issue_time_utc': issue, 'model': 'Trackformer 1.2',
58
  'checkpoint_sha256': meta['checkpoint_sha256'], 'members': 50,
59
  'distinct_inputs': len(set(meta['ensemble_policy']['input_sha256'])),
@@ -74,10 +78,14 @@ if __name__ == '__main__':
74
  ap.add_argument('--forecasts', type=Path, required=True)
75
  ap.add_argument('--repo', type=Path, default=Path(__file__).resolve().parents[1])
76
  ap.add_argument('--receipt', type=Path, required=True)
 
 
77
  args = ap.parse_args()
78
  if not str(args.receipt.resolve()).startswith('/Volumes/D/'):
79
  raise ValueError('Verification receipt must stay on /Volumes/D')
80
- report = verify(args.forecasts, args.repo)
81
- auto.write(args.receipt, {'verified': True, 'storms': report})
 
 
82
  print(json.dumps({'verified': list(report), 'members_per_storm': 50, 'mean_differences': 0,
83
  'receipt': str(args.receipt)}))
 
11
  from forecast_historical_video50_mac import CASES, sha
12
 
13
 
14
+ def verify(forecasts, repo, stems=None):
15
  report = {}
16
  for slug, (name, sid, issue) in CASES.items():
17
+ if stems is not None and slug not in stems:
18
+ continue
19
  saved = forecasts/slug
20
  data = repo/'evaluation/release_data'
21
  meta = json.loads((data/f'{slug}_video.json').read_text())
 
54
  probe = json.loads(subprocess.check_output(['ffprobe', '-v', 'error', '-select_streams', 'v:0',
55
  '-show_entries', 'stream=codec_name,width,height,nb_frames:format=duration', '-of', 'json', str(movie)]))
56
  stream = probe['streams'][0]
57
+ duration = meta['video']['duration_seconds']
58
+ assert duration in (20, 23) # Preserve older published films; new encodes have no extra hold.
59
+ assert (stream['codec_name'], stream['width'], stream['height'], int(stream['nb_frames'])) == ('h264', 1600, 1000, int(duration*30))
60
+ assert abs(float(probe['format']['duration'])-duration) < .1
61
  report[slug] = {'storm_id': sid, 'issue_time_utc': issue, 'model': 'Trackformer 1.2',
62
  'checkpoint_sha256': meta['checkpoint_sha256'], 'members': 50,
63
  'distinct_inputs': len(set(meta['ensemble_policy']['input_sha256'])),
 
78
  ap.add_argument('--forecasts', type=Path, required=True)
79
  ap.add_argument('--repo', type=Path, default=Path(__file__).resolve().parents[1])
80
  ap.add_argument('--receipt', type=Path, required=True)
81
+ ap.add_argument('--stems', nargs='+', choices=list(CASES))
82
+ ap.add_argument('--merge-receipt', action='store_true', help='Preserve previously verified unselected storms')
83
  args = ap.parse_args()
84
  if not str(args.receipt.resolve()).startswith('/Volumes/D/'):
85
  raise ValueError('Verification receipt must stay on /Volumes/D')
86
+ report = verify(args.forecasts, args.repo, args.stems)
87
+ previous = json.loads(args.receipt.read_text()) if args.merge_receipt and args.receipt.exists() else {'verified':True,'storms':{}}
88
+ previous['storms'].update(report)
89
+ auto.write(args.receipt, previous)
90
  print(json.dumps({'verified': list(report), 'members_per_storm': 50, 'mean_differences': 0,
91
  'receipt': str(args.receipt)}))