Replace Bavi and interactive showcase with verified Yagi MP4
Browse files- .gitattributes +8 -0
- README.md +29 -23
- RELEASE_NOTES_TRACKFORMER_1_2.md +2 -4
- docs/daily_storm_benchmark.md +1 -1
- docs/repository_layout.md +19 -0
- docs/trackformer_1_2_evaluation.md +6 -6
- docs/trackformer_1_2_pressure.html +0 -0
- docs/{trackformer_1_2_bavi.mp4 → trackformer_1_2_yagi.mp4} +2 -2
- evaluation/README.md +12 -0
- evaluation/release_data/cohort_270.json +1391 -0
- evaluation/release_data/daily_storm_cohort.json +0 -0
- evaluation/release_data/map_boundaries.json +1 -0
- paper/trackformer_1_2_interactive_pressure_preview.png → evaluation/release_data/routes_270.npz +2 -2
- paper/release_data/bavi_video.npz → evaluation/release_data/surigae_pressure.npz +2 -2
- evaluation/release_data/surigae_provenance.json +14 -0
- paper/release_data/pressure_showcase_coastlines.json → evaluation/release_data/yagi_coastlines.json +1 -1
- evaluation/release_data/yagi_video.json +135 -0
- paper/release_data/pressure_showcase.npz → evaluation/release_data/yagi_video.npz +2 -2
- evaluation/trackformer_1_2_pressure_map_example.png +0 -0
- evaluation/trackformer_1_2_showcase_selection.json +0 -0
- paper/trackformer_1_2_bavi_video_poster.png → evaluation/trackformer_1_2_surigae_isobars.png +2 -2
- evaluation/trackformer_1_2_vs_1_1_270_bars.png +3 -0
- evaluation/trackformer_1_2_vs_1_1_270_metrics.json +1506 -0
- evaluation/trackformer_1_2_vs_1_1_route_examples.png +3 -0
- evaluation/trackformer_1_2_vs_1_1_tip_bars.png +0 -0
- evaluation/trackformer_1_2_vs_1_1_tip_metrics.json +28 -0
- evaluation/trackformer_1_2_yagi_video_poster.png +3 -0
- paper/release_data/bavi_coastlines.json +0 -1
- paper/release_data/bavi_video.json +0 -55
- paper/release_data/pressure_showcase.json +0 -28
- release_tools/build_bavi_video.py +0 -122
- release_tools/build_pressure_showcase.py +0 -112
- release_tools/build_yagi_video.py +172 -0
- release_tools/export_field_1_2.py +61 -0
- release_tools/plot_field_1_2.py +69 -0
- release_tools/plot_release_270.py +2 -2
- release_tools/pressure_showcase_template.html +0 -42
.gitattributes
CHANGED
|
@@ -15,3 +15,11 @@ paper/trackformer_1_2_interactive_pressure_preview.png filter=lfs diff=lfs merge
|
|
| 15 |
docs/trackformer_1_2_bavi.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 16 |
paper/release_data/bavi_video.npz filter=lfs diff=lfs merge=lfs -text
|
| 17 |
paper/trackformer_1_2_bavi_video_poster.png filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15 |
docs/trackformer_1_2_bavi.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 16 |
paper/release_data/bavi_video.npz filter=lfs diff=lfs merge=lfs -text
|
| 17 |
paper/trackformer_1_2_bavi_video_poster.png filter=lfs diff=lfs merge=lfs -text
|
| 18 |
+
evaluation/trackformer_1_2_surigae_isobars.png filter=lfs diff=lfs merge=lfs -text
|
| 19 |
+
evaluation/trackformer_1_2_vs_1_1_route_examples.png filter=lfs diff=lfs merge=lfs -text
|
| 20 |
+
evaluation/trackformer_1_2_vs_1_1_270_bars.png filter=lfs diff=lfs merge=lfs -text
|
| 21 |
+
evaluation/trackformer_1_2_yagi_video_poster.png filter=lfs diff=lfs merge=lfs -text
|
| 22 |
+
evaluation/release_data/yagi_video.npz filter=lfs diff=lfs merge=lfs -text
|
| 23 |
+
evaluation/release_data/routes_270.npz filter=lfs diff=lfs merge=lfs -text
|
| 24 |
+
evaluation/release_data/surigae_pressure.npz filter=lfs diff=lfs merge=lfs -text
|
| 25 |
+
docs/trackformer_1_2_yagi.mp4 filter=lfs diff=lfs merge=lfs -text
|
README.md
CHANGED
|
@@ -47,55 +47,49 @@ This comparison uses **270 forecast cases from 90 storms**, with the same issue
|
|
| 47 |
| Mean track error, +6 to +120 h | 902.3 km | **714.4 km** | Lower |
|
| 48 |
| Track error at +120 h | 1,833.2 km | **1,433.4 km** | Lower |
|
| 49 |
|
| 50 |
-
. See [metric definitions and limitations](docs/trackformer_1_2_evaluation.md).
|
| 63 |
|
| 64 |
### Expanded daily-issue benchmark: 270 distinct typhoons
|
| 65 |
|
| 66 |
-
A new **1,473-case / 270-storm** benchmark is in progress; it is not the completed 270-case result above. Each storm contributes at most one forecast per UTC day, through +120 h. Daily errors are averaged within each storm, then the 270 storm scores receive equal weight. Selection was frozen before new inference, without filtering on forecast quality. See the [protocol](docs/daily_storm_benchmark.md) and [frozen cohort](
|
| 67 |
-
|
| 68 |
-
## Bavi pressure forecast — MP4
|
| 69 |
-
|
| 70 |
-
<video controls playsinline preload="metadata" width="100%" src="https://huggingface.co/euler314/typhoon-predict/resolve/main/docs/trackformer_1_2_bavi.mp4" poster="https://huggingface.co/euler314/typhoon-predict/resolve/main/paper/trackformer_1_2_bavi_video_poster.png">
|
| 71 |
-
<a href="https://huggingface.co/euler314/typhoon-predict/resolve/main/docs/trackformer_1_2_bavi.mp4">Play the Bavi forecast MP4</a>
|
| 72 |
-
</video>
|
| 73 |
-
|
| 74 |
-
[](https://yu314-coder.github.io/typhoon-predict/trackformer_1_2_bavi.mp4)
|
| 75 |
|
| 76 |
-
|
| 77 |
|
| 78 |
-
|
| 79 |
|
| 80 |
-
|
| 81 |
|
| 82 |
-
**[
|
| 83 |
|
| 84 |
-
|
| 85 |
|
| 86 |
-
This
|
| 87 |
|
| 88 |
### Architecture-only paper
|
| 89 |
|
| 90 |
-
The
|
| 91 |
|
| 92 |
## Recent pressure forecast with isobars
|
| 93 |
|
| 94 |
The archived **Surigae forecast issued 27 September 2026 at 12:00 UTC** shows the model's regional pressure field at +6, +24 and +36 h. Thin lines are isobars every **4 hPa**, with selected labels every 12 hPa; magenta shows the forecast track and centre. Coastlines provide geographic context. These panels use the actual saved model values.
|
| 95 |
|
| 96 |
-

|
| 104 |
- [Input schema and inference instructions](models/trackformer_1_2_field/README.md)
|
| 105 |
|
| 106 |
-
The inference-only `weights.pt` is hosted in the release/Hugging Face model folder, **not committed to GitHub source**. The manifest records its SHA-256 and the original training-checkpoint SHA-256. The three source modules are copied unchanged from the verified training implementation.
|
| 107 |
|
| 108 |
Only issue-time and earlier analyses are permitted. The prediction wrapper rejects future-dated history and unexpected input keys, but cannot certify an externally built packet's data provenance. The operator must verify source timestamps and training-only normalization. The included wrapper runs one unperturbed forecast; it does not reproduce the saved 50-member mean automatically.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 47 |
| Mean track error, +6 to +120 h | 902.3 km | **714.4 km** | Lower |
|
| 48 |
| Track error at +120 h | 1,833.2 km | **1,433.4 km** | Lower |
|
| 49 |
|
| 50 |
+

|
| 51 |
|
| 52 |
**What “similarity” means:** direction error compares the heading of each six-hour step, on 5,382 common valid case-leads where truth and both models move more than 1 km. Shape similarity compares the centred route curves after removing overall scale, while preserving their orientation; a score of 1 means identical shape under that comparison. Path similarity uses Fréchet distance and the observed route length, so it also responds to geographic displacement. These scores measure different aspects of the forecast and are reported separately.
|
| 53 |
|
| 54 |
+
**Actual route alignment is the goal:** predicted and observed positions should coincide geographically at the same valid times. A high centred-shape score alone does **not** demonstrate that alignment; a displaced forecast can have the right shape and still be wrong. Position error and the unshifted route overlay must therefore be read alongside the shape score.
|
| 55 |
+
|
| 56 |
+
The saved 1.1 archive had a coordinate-label bug: its `v11_local` array held absolute latitude/longitude, while the original scorer interpreted it as east/north kilometres. The new comparison converts those coordinates to the same local projection used by 1.2 and verifies a round trip back to the original coordinates. **The old 1,036.3 km score is superseded by 902.3 km.** Original forecast archives are preserved. The [published metrics](evaluation/trackformer_1_2_vs_1_1_270_metrics.json), small plot-data arrays and [reproduction script](release_tools/plot_release_270.py) record the correction.
|
| 57 |
|
| 58 |
### What the routes look like
|
| 59 |
|
| 60 |
+
These are **six selected best-performing examples from six distinct storms**, not a representative sample. Among in-domain cases with at least 300 km of observed travel, shape similarity ≥0.90 and direction error ≤30° on at least 18 common valid leads, we select the lowest 1.2 mean track errors, with one case per storm. Every curve starts at the same issue-time origin. The [selection manifest and all 270 case scores](evaluation/trackformer_1_2_showcase_selection.json) make the choice auditable; the aggregate bars above still include every case, including poor forecasts.
|
| 61 |
|
| 62 |
+

|
| 63 |
|
| 64 |
The 1.2 mean has better aggregate direction, shape and position scores on this previously inspected development cohort. That does not establish an overall win on every storm or pressure metric. A same-270 1.1 central-pressure prediction array was not verified in these route artifacts, so it is not assigned a pressure-error bar. The separate 1.2 report gives 15.73 hPa central-pressure MAE and 2.54 hPa area-weighted regional MSLP MAE. TIP remains a separate diagnostic: its pressure error was worse for 1.2 (30.7 vs 20.1 hPa). See [metric definitions and limitations](docs/trackformer_1_2_evaluation.md).
|
| 65 |
|
| 66 |
### Expanded daily-issue benchmark: 270 distinct typhoons
|
| 67 |
|
| 68 |
+
A new **1,473-case / 270-storm** benchmark is in progress; it is not the completed 270-case result above. Each storm contributes at most one forecast per UTC day, through +120 h. Daily errors are averaged within each storm, then the 270 storm scores receive equal weight. Selection was frozen before new inference, without filtering on forecast quality. See the [protocol](docs/daily_storm_benchmark.md) and [frozen cohort](evaluation/release_data/daily_storm_cohort.json). Results are pending; no improvement is claimed from the partial run.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 69 |
|
| 70 |
+
## Yagi pressure forecast — MP4
|
| 71 |
|
| 72 |
+
<video controls playsinline preload="metadata" width="100%" poster="https://huggingface.co/euler314/typhoon-predict/resolve/main/evaluation/trackformer_1_2_yagi_video_poster.png" src="https://huggingface.co/euler314/typhoon-predict/resolve/main/docs/trackformer_1_2_yagi.mp4"></video>
|
| 73 |
|
| 74 |
+
[](https://yu314-coder.github.io/typhoon-predict/trackformer_1_2_yagi.mp4)
|
| 75 |
|
| 76 |
+
**[Play or download the Yagi MP4](https://yu314-coder.github.io/typhoon-predict/trackformer_1_2_yagi.mp4)** · 23 seconds · +6 to +120 h · **50-member mean**. Click the preview above to play it; inline video playback depends on the Markdown host.
|
| 77 |
|
| 78 |
+
The forecast starts **3 September 2024 at 00 UTC**. Actual saved model-generated pressure with **4 hPa isobars** is shown alongside the mean forecast route and observed best track, at matching valid times and on the same geographic map. Neither route nor field is shifted or rescaled to improve alignment. The central-pressure timeline compares the forecast to **JMA best-track pressure from IBTrACS TOKYO_PRES**, not a JMA forecast.
|
| 79 |
|
| 80 |
+
This deliberately selected good-route example has **114.1 km mean geographic error**, **57.2 km at +120 h**, and all 20 leads within 200 km. **Intensity is too weak: central-pressure MAE is 42.0 hPa.** Good route alignment does not imply good pressure prediction or typical performance. These geographic scores use exact observed coordinates and great-circle distances, separately from the saved local-coordinate benchmark scores above. Native-detail input history was unavailable; the regional pressure reconstruction uses 0.25° output sampling, not native resolution. Outside its dotted boundary only the saved coarse basin field is shown. [Data, source hashes and video provenance](evaluation/release_data/yagi_video.json).
|
| 81 |
|
| 82 |
### Architecture-only paper
|
| 83 |
|
| 84 |
+
The **[Trackformer 1.2 technical paper (PDF)](paper/trackformer.pdf)** describes only the detailed architecture and how forecasts work: input tensors, multiscale attention, recurrent basin transport, moving pressure core, centre association, physical pressure reconstruction, objectives and 50-member means. [Editable LaTeX source](paper/trackformer.tex). Benchmark results remain separate in the evaluation notes. Historical material is recoverable from Git history and the [1.1 release](https://github.com/yu314-coder/typhoon-predict/releases/tag/trackformer-1.1).
|
| 85 |
|
| 86 |
## Recent pressure forecast with isobars
|
| 87 |
|
| 88 |
The archived **Surigae forecast issued 27 September 2026 at 12:00 UTC** shows the model's regional pressure field at +6, +24 and +36 h. Thin lines are isobars every **4 hPa**, with selected labels every 12 hPa; magenta shows the forecast track and centre. Coastlines provide geographic context. These panels use the actual saved model values.
|
| 89 |
|
| 90 |
+

|
| 91 |
|
| 92 |
+
This recent example is **one deterministic forecast**, separate from the benchmark's mean of 50. Its input uses nine GFS analyses ending at 06 UTC, six hours before issue time; issue-time JMA central pressure was provided, while wind, prior motion and native regional history were unavailable. This transfer from the training data contract is experimental. The fixed regional map ends at 144°E; the selected leads keep the forecast centre inside it. The [pressure-field provenance](evaluation/release_data/surigae_provenance.json) records the input limitations and checkpoint hash.
|
| 93 |
|
| 94 |
## Get the model and run it
|
| 95 |
|
|
|
|
| 97 |
- [Hugging Face weights and model card](https://huggingface.co/euler314/typhoon-predict)
|
| 98 |
- [Input schema and inference instructions](models/trackformer_1_2_field/README.md)
|
| 99 |
|
| 100 |
+
The inference-only `weights.pt` is hosted in the release/Hugging Face model folder, **not committed to GitHub source**. The manifest records its SHA-256 and the original training-checkpoint SHA-256. The three source modules are copied unchanged from the verified training implementation. Use **`models/trackformer_1_2_field/predict.py`** as the inference entry point. The withdrawn route/scalar candidate and its incompatible example have been removed from the current source tree.
|
| 101 |
|
| 102 |
Only issue-time and earlier analyses are permitted. The prediction wrapper rejects future-dated history and unexpected input keys, but cannot certify an externally built packet's data provenance. The operator must verify source timestamps and training-only normalization. The included wrapper runs one unperturbed forecast; it does not reproduce the saved 50-member mean automatically.
|
| 103 |
+
|
| 104 |
+
## Repository guide
|
| 105 |
+
|
| 106 |
+
| Folder | Contents |
|
| 107 |
+
| --- | --- |
|
| 108 |
+
| [`models/trackformer_1_2_field/`](models/trackformer_1_2_field/) | Current 1.2 model, inference wrapper and input/provenance contract |
|
| 109 |
+
| [`paper/`](paper/) | Current architecture-only paper: editable source and PDF |
|
| 110 |
+
| [`evaluation/`](evaluation/) | Benchmark charts, selected forecast previews, metrics and saved plot data |
|
| 111 |
+
| [`docs/`](docs/) | Evaluation protocols and published HTML/MP4 showcases |
|
| 112 |
+
| [`release_tools/`](release_tools/) | Reproduction scripts and weight-export utility |
|
| 113 |
+
|
| 114 |
+
The older 1.1 implementation, obsolete Colab notebook, withdrawn candidate, and superseded comparison assets are no longer mixed into the current source tree. Their history and the existing release tags remain intact; the current 1.1-versus-1.2 comparison data are retained. See the [cleanup record](docs/repository_layout.md).
|
RELEASE_NOTES_TRACKFORMER_1_2.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
# Trackformer 1.2 — research candidate
|
| 2 |
|
| 3 |
-
This release packages a verified moving-pressure-core model as **Trackformer 1.2**. It supersedes the withdrawn, unrelated route/scalar 1.2 candidate; the
|
| 4 |
|
| 5 |
The attached archive includes inference-only weights, exact source modules, an input wrapper, a data-contract/provenance manifest, detailed documentation, **270-case direction/route-shape benchmark bars**, paired route examples and recent **Surigae pressure maps with labelled isobars**. The training checkpoint was internally labelled version `1.2.73`, epoch 4; its SHA-256 is `f194a23d3f91ea76ad776dfad942fabd669eeae8b3fd665815463095367e9ee0`. The exported inference weights SHA-256 is `db49f36e85a3766defc4c172746897a1f783705d1ce8e6f9dfb8e87ae1d902cb`.
|
| 6 |
|
|
@@ -8,9 +8,7 @@ On the 270-case development cohort, 1.1 versus 1.2 mean-of-50 scores are: direct
|
|
| 8 |
|
| 9 |
The route gallery now shows six explicitly selected best-performing examples from distinct storms, with the selection rule and all case scores supplied. It is not representative evidence; the aggregate bars retain all 270 cases. A separate larger benchmark has frozen **270 distinct storms / 1,473 daily issues**, with daily scores averaged per storm and storms weighted equally. Its forecasts are being computed; results are pending.
|
| 10 |
|
| 11 |
-
The README
|
| 12 |
-
|
| 13 |
-
A separate Bavi MP4 now shows the saved 50-member mean pressure and forecast route against observations through +120 h. The clickable README poster opens the video directly. Regional coverage, the coarse-field fallback and the observed pressure source are explicitly labelled; the paper is unchanged.
|
| 14 |
|
| 15 |
The Surigae illustration is a single forecast issued 2026-09-27 12 UTC, with 4 hPa isobars at +6/+24/+36 h. It is separate from the 50-member historical benchmark. Reproduction data and metric definitions are included. The model weights are unchanged in this documentation revision.
|
| 16 |
|
|
|
|
| 1 |
# Trackformer 1.2 — research candidate
|
| 2 |
|
| 3 |
+
This release packages a verified moving-pressure-core model as **Trackformer 1.2**. It supersedes the withdrawn, unrelated route/scalar 1.2 candidate. Use `models/trackformer_1_2_field/predict.py`; the incompatible root-level candidate and example are no longer in the current source tree. Trackformer 1.1 remains available as a separate release.
|
| 4 |
|
| 5 |
The attached archive includes inference-only weights, exact source modules, an input wrapper, a data-contract/provenance manifest, detailed documentation, **270-case direction/route-shape benchmark bars**, paired route examples and recent **Surigae pressure maps with labelled isobars**. The training checkpoint was internally labelled version `1.2.73`, epoch 4; its SHA-256 is `f194a23d3f91ea76ad776dfad942fabd669eeae8b3fd665815463095367e9ee0`. The exported inference weights SHA-256 is `db49f36e85a3766defc4c172746897a1f783705d1ce8e6f9dfb8e87ae1d902cb`.
|
| 6 |
|
|
|
|
| 8 |
|
| 9 |
The route gallery now shows six explicitly selected best-performing examples from distinct storms, with the selection rule and all case scores supplied. It is not representative evidence; the aggregate bars retain all 270 cases. A separate larger benchmark has frozen **270 distinct storms / 1,473 daily issues**, with daily scores averaged per storm and storms weighted equally. Its forecasts are being computed; results are pending.
|
| 10 |
|
| 11 |
+
The README now shows a **Yagi MP4** in place of Bavi; the interactive PRAPIROON showcase has been removed. The Yagi forecast starts 3 September 2024 at 00 UTC and uses actual saved 50-member mean pressure fields and routes through +120 h. Geographic mean error is 114.1 km and +120 h error is 57.2 km, but central-pressure MAE is 42.0 hPa against JMA best track from IBTrACS. The video explicitly shows the intensity weakness. It is a selected good-route example, not typical skill. Regional coverage, missing native-detail history and observed pressure provenance are disclosed. The architecture-only paper and model weights are unchanged.
|
|
|
|
|
|
|
| 12 |
|
| 13 |
The Surigae illustration is a single forecast issued 2026-09-27 12 UTC, with 4 hPa isobars at +6/+24/+36 h. It is separate from the 50-member historical benchmark. Reproduction data and metric definitions are included. The model weights are unchanged in this documentation revision.
|
| 14 |
|
docs/daily_storm_benchmark.md
CHANGED
|
@@ -17,7 +17,7 @@ Direction error, route-shape similarity, Fréchet distance and path similarity r
|
|
| 17 |
- The entire storm must lie outside the selected 1.2 checkpoint's 2000–2021 fitting and 2022–2023 validation years, with the history/target boundary also outside those years.
|
| 18 |
- Issue centre within 0–60°N / 100–180°E; exact six-hour weather history through issue; complete route labels through +120 h; matching pressure-atlas coverage for scoring.
|
| 19 |
- Use all eligible daily starts for each chosen storm. Never drop a case because its forecast looks poor.
|
| 20 |
-
- [Cohort manifest](../
|
| 21 |
|
| 22 |
Requiring complete five-day truth excludes short remaining lifetimes. This is a declared coverage limitation, not an all-storm operational sample. Historical cases are retrospective hindcasts from a model trained on later years; reanalysis and best-track issue states do not establish real-time data availability. This cohort has not been certified untouched across all earlier experiments.
|
| 23 |
|
|
|
|
| 17 |
- The entire storm must lie outside the selected 1.2 checkpoint's 2000–2021 fitting and 2022–2023 validation years, with the history/target boundary also outside those years.
|
| 18 |
- Issue centre within 0–60°N / 100–180°E; exact six-hour weather history through issue; complete route labels through +120 h; matching pressure-atlas coverage for scoring.
|
| 19 |
- Use all eligible daily starts for each chosen storm. Never drop a case because its forecast looks poor.
|
| 20 |
+
- [Cohort manifest](../evaluation/release_data/daily_storm_cohort.json) freezes rows, dates, storm IDs, source hashes and checkpoint identity before inference. Forecast artifacts are new; some recent storms overlap earlier development comparisons.
|
| 21 |
|
| 22 |
Requiring complete five-day truth excludes short remaining lifetimes. This is a declared coverage limitation, not an all-storm operational sample. Historical cases are retrospective hindcasts from a model trained on later years; reanalysis and best-track issue states do not establish real-time data availability. This cohort has not been certified untouched across all earlier experiments.
|
| 23 |
|
docs/repository_layout.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Current repository layout
|
| 2 |
+
|
| 3 |
+
The current source tree is focused on the selected pressure-field **Trackformer 1.2** release. The implementation remains at `models/trackformer_1_2_field/`; module filenames such as `v165_base.py` are required architecture dependencies, not unused legacy files. They and their source hashes have not been changed.
|
| 4 |
+
|
| 5 |
+
## Cleanup on 29 September 2026
|
| 6 |
+
|
| 7 |
+
Removed from the current branch:
|
| 8 |
+
|
| 9 |
+
- The withdrawn route/scalar `trackformer_1_2.py` candidate and its incompatible `examples/predict_trackformer_1_2.py` entry point.
|
| 10 |
+
- Root-level 1.1 inference/route/intensity/temporal modules and their old analysis utility, plus `colab_train_v17.ipynb`.
|
| 11 |
+
- The old 1.1 paper and superseded 1.2.26/matched100 comparison assets.
|
| 12 |
+
|
| 13 |
+
Moved current benchmark figures, metrics and plot data from `paper/` into `evaluation/`, updating documentation and reproduction paths. `paper/trackformer.tex` and `paper/trackformer.pdf` stay at their existing locations. Published HTML and MP4 URLs under `docs/` stay unchanged.
|
| 14 |
+
|
| 15 |
+
The 1.1-versus-1.2 comparison arrays, TIP diagnostic, current paper, weights, model source hashes and release tags are retained. No local research checkpoints, running benchmark, Hugging Face files or historical release assets were deleted by this source-tree cleanup.
|
| 16 |
+
|
| 17 |
+
## Recovery
|
| 18 |
+
|
| 19 |
+
The complete pre-cleanup repository remains in [commit 459a3d014aa4794652ceba3ecdffcde0beada2cd](https://github.com/yu314-coder/typhoon-predict/tree/459a3d014aa4794652ceba3ecdffcde0beada2cd). The [Trackformer 1.1 release](https://github.com/yu314-coder/typhoon-predict/releases/tag/trackformer-1.1) remains available. This cleanup does not rewrite Git history.
|
docs/trackformer_1_2_evaluation.md
CHANGED
|
@@ -17,7 +17,7 @@ The main chart compares 270 issue cases from 90 storms and all 20 leads (+6 thro
|
|
| 17 |
- **Path similarity:** calculate discrete Fréchet distance on the ordered 20-point forecast/truth curves, then `exp(-distance / observed path length)`, and average over cases. The observed length includes the step from the issue origin. Means: **0.498254 for 1.1; 0.572741 for 1.2**. This responds to geographic displacement as well as the curve.
|
| 18 |
- **Position error:** mean Euclidean error in the saved benchmark's local-kilometre projection, **902.3001 vs 714.4444 km**. At +120 h it is **1,833.2481 vs 1,433.3863 km**. These are local-coordinate distances, not newly calculated geodesic distances.
|
| 19 |
|
| 20 |
-
No combined weighted ranking is introduced. The route gallery shows six deliberately selected best-performing examples, one per distinct storm, not a representative sample. Eligibility requires an issue inside 0–60°N / 100–180°E, observed travel ≥300 km, 1.2 shape similarity ≥0.90, and direction error ≤30° on ≥18 common valid leads. Eligible cases are sorted by ascending 1.2 mean track error, then the first six distinct storms are selected. `
|
| 21 |
|
| 22 |
The full 270 cohort includes cases beyond the intended Western Pacific model domain. Its aggregate is a legacy development comparison, not a basin-specific validation claim. The previously inspected 133-case subset is separate and is not substituted for the requested 270 cases.
|
| 23 |
|
|
@@ -31,21 +31,21 @@ No same-270 1.1 central-pressure prediction array was verified in the route arti
|
|
| 31 |
|
| 32 |
## Recent pressure-line example
|
| 33 |
|
| 34 |
-
###
|
| 35 |
|
| 36 |
-
The [
|
| 37 |
|
| 38 |
-
The
|
| 39 |
|
| 40 |
### Recent single-member example
|
| 41 |
|
| 42 |
The Surigae archive issued **2026-09-27 12 UTC** supplies real model regional MSLP fields at +6, +24 and +36 h. Isobars are drawn every 4 hPa, with selected labels every 12 hPa and one common colour scale. The magenta curve is the saved model route. Fields are neither relocated nor altered to force the map minimum onto the route. The regional map is a resampled composite and can differ slightly from central pressure sampled in the moving core.
|
| 43 |
|
| 44 |
-
This example is one deterministic member from the released checkpoint. Inputs contain nine GFS analyses ending at 06 UTC (six hours before issue), issue-time JMA centre/central pressure, and static geography. Issue-time wind, prior motion and native regional history were unavailable and masked/zeroed. The stored +0 field is an input analysis; it is excluded from these forecast panels. The GFS transfer and input lag remain limitations. The selected leads keep the centre within the fixed 114–144°E, 11–41°N map. Names, times, member count and checkpoint/source hashes are in `
|
| 45 |
|
| 46 |
## Reproduce the figures
|
| 47 |
|
| 48 |
-
The public repository includes the small numerical plot inputs under `
|
| 49 |
|
| 50 |
```bash
|
| 51 |
python release_tools/plot_release_270.py
|
|
|
|
| 17 |
- **Path similarity:** calculate discrete Fréchet distance on the ordered 20-point forecast/truth curves, then `exp(-distance / observed path length)`, and average over cases. The observed length includes the step from the issue origin. Means: **0.498254 for 1.1; 0.572741 for 1.2**. This responds to geographic displacement as well as the curve.
|
| 18 |
- **Position error:** mean Euclidean error in the saved benchmark's local-kilometre projection, **902.3001 vs 714.4444 km**. At +120 h it is **1,833.2481 vs 1,433.3863 km**. These are local-coordinate distances, not newly calculated geodesic distances.
|
| 19 |
|
| 20 |
+
No combined weighted ranking is introduced. The route gallery shows six deliberately selected best-performing examples, one per distinct storm, not a representative sample. Eligibility requires an issue inside 0–60°N / 100–180°E, observed travel ≥300 km, 1.2 shape similarity ≥0.90, and direction error ≤30° on ≥18 common valid leads. Eligible cases are sorted by ascending 1.2 mean track error, then the first six distinct storms are selected. `evaluation/trackformer_1_2_showcase_selection.json` records the rule, chosen cases and scores for all 270 cases. Axes retain actual kilometre displacements; no route is moved or rotated to improve the visual comparison. Full-cohort bars are unchanged.
|
| 21 |
|
| 22 |
The full 270 cohort includes cases beyond the intended Western Pacific model domain. Its aggregate is a legacy development comparison, not a basin-specific validation claim. The previously inspected 133-case subset is separate and is not substituted for the requested 270 cases.
|
| 23 |
|
|
|
|
| 31 |
|
| 32 |
## Recent pressure-line example
|
| 33 |
|
| 34 |
+
### Yagi MP4: selected good-route example
|
| 35 |
|
| 36 |
+
The [Yagi video](https://yu314-coder.github.io/typhoon-predict/trackformer_1_2_yagi.mp4) uses the unchanged saved 50-member pressure fields and mean route for case 178, issued 2024-09-03 00 UTC. It is a user-selected development example after inspection of geographic alignment, not an untouched test or a representative sample. The geographic mean error is 114.1 km, the +120 h error is 57.2 km, and maximum error is 193.7 km over 20 leads. These are great-circle distances to exact observed coordinates, separate from the main benchmark's saved local-coordinate scores.
|
| 37 |
|
| 38 |
+
The pressure MAE is **42.0 hPa** against IBTrACS TOKYO_PRES (JMA best track), with 20 valid labels. The model substantially underestimates intensity; good route alignment does not establish good pressure skill. The video retains the full pressure comparison. Fields are physical model means on fixed common grids, without shifting them onto the observed track. Native-detail history was unavailable for this issue; the regional reconstruction's 0.25° output sampling is not native resolution. Observed future routes and pressures are verification overlays only. [Data and provenance](../evaluation/release_data/yagi_video.json) record hashes and member policy. Reproduce with `python release_tools/build_yagi_video.py --work /path/to/frames` using NumPy, Matplotlib and ffmpeg with VideoToolbox on macOS; this renders saved outputs without model inference. The former interactive showcase has been removed.
|
| 39 |
|
| 40 |
### Recent single-member example
|
| 41 |
|
| 42 |
The Surigae archive issued **2026-09-27 12 UTC** supplies real model regional MSLP fields at +6, +24 and +36 h. Isobars are drawn every 4 hPa, with selected labels every 12 hPa and one common colour scale. The magenta curve is the saved model route. Fields are neither relocated nor altered to force the map minimum onto the route. The regional map is a resampled composite and can differ slightly from central pressure sampled in the moving core.
|
| 43 |
|
| 44 |
+
This example is one deterministic member from the released checkpoint. Inputs contain nine GFS analyses ending at 06 UTC (six hours before issue), issue-time JMA centre/central pressure, and static geography. Issue-time wind, prior motion and native regional history were unavailable and masked/zeroed. The stored +0 field is an input analysis; it is excluded from these forecast panels. The GFS transfer and input lag remain limitations. The selected leads keep the centre within the fixed 114–144°E, 11–41°N map. Names, times, member count and checkpoint/source hashes are in `evaluation/release_data/surigae_provenance.json`.
|
| 45 |
|
| 46 |
## Reproduce the figures
|
| 47 |
|
| 48 |
+
The public repository includes the small numerical plot inputs under `evaluation/release_data/`, including original 1.1 latitude/longitude, corrected routes, 1.2 mean routes, truth, the three pressure grids and map boundaries. After installing NumPy and Matplotlib, run:
|
| 49 |
|
| 50 |
```bash
|
| 51 |
python release_tools/plot_release_270.py
|
docs/trackformer_1_2_pressure.html
DELETED
|
The diff for this file is too large to render.
See raw diff
|
|
|
docs/{trackformer_1_2_bavi.mp4 → trackformer_1_2_yagi.mp4}
RENAMED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:542172829ec361e55e3f8e7c04436c59e575ac70d756759d8bf5596bf4fffb1a
|
| 3 |
+
size 7933310
|
evaluation/README.md
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Evaluation assets
|
| 2 |
+
|
| 3 |
+
This directory holds the current published comparison figures, metrics, selected forecast previews and the numerical inputs under [`release_data/`](release_data/). The architecture paper is separate in [`../paper/`](../paper/).
|
| 4 |
+
|
| 5 |
+
- [270-case comparison and definitions](../docs/trackformer_1_2_evaluation.md): 270 issue times from 90 storms; the 1.2 output is a 50-member input-perturbation mean.
|
| 6 |
+
- [Expanded daily-issue protocol](../docs/daily_storm_benchmark.md): 1,473 daily issues from 270 storms; results are not implied by the existing 270-case charts.
|
| 7 |
+
- [TIP diagnostic](trackformer_1_2_vs_1_1_tip_metrics.json): retain pressure regressions as well as improvements.
|
| 8 |
+
- [Showcase selection](trackformer_1_2_showcase_selection.json): deliberately selected examples, not typical performance or untouched validation.
|
| 9 |
+
|
| 10 |
+
For geographically aligned routes, use errors between forecasts and observations at the **same valid times on the same map**. Centred/scale-normalized shape similarity alone cannot establish alignment. Never translate, rotate or rescale a forecast to make it match the observed route.
|
| 11 |
+
|
| 12 |
+
From the repository root, reproduce the 270-case figures and Surigae isobars using `python release_tools/plot_release_270.py`. The script defaults to this directory and uses its saved plot inputs; it does not run model inference. Rendering requires NumPy and Matplotlib. The [Yagi video builder](../release_tools/build_yagi_video.py) likewise uses saved model fields, not synthetic illustrations. Its [provenance](release_data/yagi_video.json) reports geographic route alignment separately from pressure error.
|
evaluation/release_data/cohort_270.json
ADDED
|
@@ -0,0 +1,1391 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"case_count": 270,
|
| 3 |
+
"storm_count": 90,
|
| 4 |
+
"cases": [
|
| 5 |
+
{
|
| 6 |
+
"storm_id": "2022096N03150",
|
| 7 |
+
"issue_time_utc": "2022-04-08T06:00:00Z",
|
| 8 |
+
"source_row": 178540
|
| 9 |
+
},
|
| 10 |
+
{
|
| 11 |
+
"storm_id": "2022096N03150",
|
| 12 |
+
"issue_time_utc": "2022-04-11T00:00:00Z",
|
| 13 |
+
"source_row": 178562
|
| 14 |
+
},
|
| 15 |
+
{
|
| 16 |
+
"storm_id": "2022096N03150",
|
| 17 |
+
"issue_time_utc": "2022-04-13T00:00:00Z",
|
| 18 |
+
"source_row": 178578
|
| 19 |
+
},
|
| 20 |
+
{
|
| 21 |
+
"storm_id": "2022167N11269",
|
| 22 |
+
"issue_time_utc": "2022-06-18T00:00:00Z",
|
| 23 |
+
"source_row": 178867
|
| 24 |
+
},
|
| 25 |
+
{
|
| 26 |
+
"storm_id": "2022167N11269",
|
| 27 |
+
"issue_time_utc": "2022-06-22T00:00:00Z",
|
| 28 |
+
"source_row": 178899
|
| 29 |
+
},
|
| 30 |
+
{
|
| 31 |
+
"storm_id": "2022167N11269",
|
| 32 |
+
"issue_time_utc": "2022-06-25T00:00:00Z",
|
| 33 |
+
"source_row": 178923
|
| 34 |
+
},
|
| 35 |
+
{
|
| 36 |
+
"storm_id": "2022179N08310",
|
| 37 |
+
"issue_time_utc": "2022-06-29T18:00:00Z",
|
| 38 |
+
"source_row": 178960
|
| 39 |
+
},
|
| 40 |
+
{
|
| 41 |
+
"storm_id": "2022179N08310",
|
| 42 |
+
"issue_time_utc": "2022-07-03T00:00:00Z",
|
| 43 |
+
"source_row": 178986
|
| 44 |
+
},
|
| 45 |
+
{
|
| 46 |
+
"storm_id": "2022179N08310",
|
| 47 |
+
"issue_time_utc": "2022-07-06T00:00:00Z",
|
| 48 |
+
"source_row": 179010
|
| 49 |
+
},
|
| 50 |
+
{
|
| 51 |
+
"storm_id": "2022180N15117",
|
| 52 |
+
"issue_time_utc": "2022-06-30T18:00:00Z",
|
| 53 |
+
"source_row": 179043
|
| 54 |
+
},
|
| 55 |
+
{
|
| 56 |
+
"storm_id": "2022180N15117",
|
| 57 |
+
"issue_time_utc": "2022-07-01T00:00:00Z",
|
| 58 |
+
"source_row": 179045
|
| 59 |
+
},
|
| 60 |
+
{
|
| 61 |
+
"storm_id": "2022180N15117",
|
| 62 |
+
"issue_time_utc": "2022-07-02T00:00:00Z",
|
| 63 |
+
"source_row": 179055
|
| 64 |
+
},
|
| 65 |
+
{
|
| 66 |
+
"storm_id": "2022180N15130",
|
| 67 |
+
"issue_time_utc": "2022-07-01T00:00:00Z",
|
| 68 |
+
"source_row": 179096
|
| 69 |
+
},
|
| 70 |
+
{
|
| 71 |
+
"storm_id": "2022180N15130",
|
| 72 |
+
"issue_time_utc": "2022-07-04T00:00:00Z",
|
| 73 |
+
"source_row": 179121
|
| 74 |
+
},
|
| 75 |
+
{
|
| 76 |
+
"storm_id": "2022180N15130",
|
| 77 |
+
"issue_time_utc": "2022-07-06T00:00:00Z",
|
| 78 |
+
"source_row": 179138
|
| 79 |
+
},
|
| 80 |
+
{
|
| 81 |
+
"storm_id": "2022197N12260",
|
| 82 |
+
"issue_time_utc": "2022-07-17T12:00:00Z",
|
| 83 |
+
"source_row": 179208
|
| 84 |
+
},
|
| 85 |
+
{
|
| 86 |
+
"storm_id": "2022197N12260",
|
| 87 |
+
"issue_time_utc": "2022-07-18T00:00:00Z",
|
| 88 |
+
"source_row": 179212
|
| 89 |
+
},
|
| 90 |
+
{
|
| 91 |
+
"storm_id": "2022197N12260",
|
| 92 |
+
"issue_time_utc": "2022-07-19T00:00:00Z",
|
| 93 |
+
"source_row": 179220
|
| 94 |
+
},
|
| 95 |
+
{
|
| 96 |
+
"storm_id": "2022207N11262",
|
| 97 |
+
"issue_time_utc": "2022-07-27T12:00:00Z",
|
| 98 |
+
"source_row": 179253
|
| 99 |
+
},
|
| 100 |
+
{
|
| 101 |
+
"storm_id": "2022207N11262",
|
| 102 |
+
"issue_time_utc": "2022-07-29T00:00:00Z",
|
| 103 |
+
"source_row": 179265
|
| 104 |
+
},
|
| 105 |
+
{
|
| 106 |
+
"storm_id": "2022207N11262",
|
| 107 |
+
"issue_time_utc": "2022-07-30T00:00:00Z",
|
| 108 |
+
"source_row": 179273
|
| 109 |
+
},
|
| 110 |
+
{
|
| 111 |
+
"storm_id": "2022209N16246",
|
| 112 |
+
"issue_time_utc": "2022-07-29T12:00:00Z",
|
| 113 |
+
"source_row": 179354
|
| 114 |
+
},
|
| 115 |
+
{
|
| 116 |
+
"storm_id": "2022209N16246",
|
| 117 |
+
"issue_time_utc": "2022-07-30T00:00:00Z",
|
| 118 |
+
"source_row": 179358
|
| 119 |
+
},
|
| 120 |
+
{
|
| 121 |
+
"storm_id": "2022209N16246",
|
| 122 |
+
"issue_time_utc": "2022-07-31T00:00:00Z",
|
| 123 |
+
"source_row": 179366
|
| 124 |
+
},
|
| 125 |
+
{
|
| 126 |
+
"storm_id": "2022225N15253",
|
| 127 |
+
"issue_time_utc": "2022-08-14T12:00:00Z",
|
| 128 |
+
"source_row": 179481
|
| 129 |
+
},
|
| 130 |
+
{
|
| 131 |
+
"storm_id": "2022225N15253",
|
| 132 |
+
"issue_time_utc": "2022-08-16T00:00:00Z",
|
| 133 |
+
"source_row": 179493
|
| 134 |
+
},
|
| 135 |
+
{
|
| 136 |
+
"storm_id": "2022225N15253",
|
| 137 |
+
"issue_time_utc": "2022-08-17T00:00:00Z",
|
| 138 |
+
"source_row": 179501
|
| 139 |
+
},
|
| 140 |
+
{
|
| 141 |
+
"storm_id": "2022239N22150",
|
| 142 |
+
"issue_time_utc": "2022-08-29T00:00:00Z",
|
| 143 |
+
"source_row": 179613
|
| 144 |
+
},
|
| 145 |
+
{
|
| 146 |
+
"storm_id": "2022239N22150",
|
| 147 |
+
"issue_time_utc": "2022-09-01T00:00:00Z",
|
| 148 |
+
"source_row": 179637
|
| 149 |
+
},
|
| 150 |
+
{
|
| 151 |
+
"storm_id": "2022239N22150",
|
| 152 |
+
"issue_time_utc": "2022-09-04T00:00:00Z",
|
| 153 |
+
"source_row": 179661
|
| 154 |
+
},
|
| 155 |
+
{
|
| 156 |
+
"storm_id": "2022244N38313",
|
| 157 |
+
"issue_time_utc": "2022-09-02T12:00:00Z",
|
| 158 |
+
"source_row": 179723
|
| 159 |
+
},
|
| 160 |
+
{
|
| 161 |
+
"storm_id": "2022244N38313",
|
| 162 |
+
"issue_time_utc": "2022-09-06T00:00:00Z",
|
| 163 |
+
"source_row": 179751
|
| 164 |
+
},
|
| 165 |
+
{
|
| 166 |
+
"storm_id": "2022244N38313",
|
| 167 |
+
"issue_time_utc": "2022-09-10T00:00:00Z",
|
| 168 |
+
"source_row": 179783
|
| 169 |
+
},
|
| 170 |
+
{
|
| 171 |
+
"storm_id": "2022246N18301",
|
| 172 |
+
"issue_time_utc": "2022-09-04T18:00:00Z",
|
| 173 |
+
"source_row": 179822
|
| 174 |
+
},
|
| 175 |
+
{
|
| 176 |
+
"storm_id": "2022246N18301",
|
| 177 |
+
"issue_time_utc": "2022-09-07T00:00:00Z",
|
| 178 |
+
"source_row": 179840
|
| 179 |
+
},
|
| 180 |
+
{
|
| 181 |
+
"storm_id": "2022246N18301",
|
| 182 |
+
"issue_time_utc": "2022-09-10T00:00:00Z",
|
| 183 |
+
"source_row": 179864
|
| 184 |
+
},
|
| 185 |
+
{
|
| 186 |
+
"storm_id": "2022247N26147",
|
| 187 |
+
"issue_time_utc": "2022-09-05T18:00:00Z",
|
| 188 |
+
"source_row": 179901
|
| 189 |
+
},
|
| 190 |
+
{
|
| 191 |
+
"storm_id": "2022247N26147",
|
| 192 |
+
"issue_time_utc": "2022-09-09T00:00:00Z",
|
| 193 |
+
"source_row": 179927
|
| 194 |
+
},
|
| 195 |
+
{
|
| 196 |
+
"storm_id": "2022247N26147",
|
| 197 |
+
"issue_time_utc": "2022-09-12T00:00:00Z",
|
| 198 |
+
"source_row": 179951
|
| 199 |
+
},
|
| 200 |
+
{
|
| 201 |
+
"storm_id": "2022248N14259",
|
| 202 |
+
"issue_time_utc": "2022-09-06T12:00:00Z",
|
| 203 |
+
"source_row": 179984
|
| 204 |
+
},
|
| 205 |
+
{
|
| 206 |
+
"storm_id": "2022248N14259",
|
| 207 |
+
"issue_time_utc": "2022-09-07T00:00:00Z",
|
| 208 |
+
"source_row": 179988
|
| 209 |
+
},
|
| 210 |
+
{
|
| 211 |
+
"storm_id": "2022248N14259",
|
| 212 |
+
"issue_time_utc": "2022-09-08T00:00:00Z",
|
| 213 |
+
"source_row": 179996
|
| 214 |
+
},
|
| 215 |
+
{
|
| 216 |
+
"storm_id": "2022254N21158",
|
| 217 |
+
"issue_time_utc": "2022-09-12T12:00:00Z",
|
| 218 |
+
"source_row": 180030
|
| 219 |
+
},
|
| 220 |
+
{
|
| 221 |
+
"storm_id": "2022254N21158",
|
| 222 |
+
"issue_time_utc": "2022-09-13T00:00:00Z",
|
| 223 |
+
"source_row": 180034
|
| 224 |
+
},
|
| 225 |
+
{
|
| 226 |
+
"storm_id": "2022254N21158",
|
| 227 |
+
"issue_time_utc": "2022-09-14T00:00:00Z",
|
| 228 |
+
"source_row": 180042
|
| 229 |
+
},
|
| 230 |
+
{
|
| 231 |
+
"storm_id": "2022254N24143",
|
| 232 |
+
"issue_time_utc": "2022-09-13T06:00:00Z",
|
| 233 |
+
"source_row": 180081
|
| 234 |
+
},
|
| 235 |
+
{
|
| 236 |
+
"storm_id": "2022254N24143",
|
| 237 |
+
"issue_time_utc": "2022-09-14T00:00:00Z",
|
| 238 |
+
"source_row": 180087
|
| 239 |
+
},
|
| 240 |
+
{
|
| 241 |
+
"storm_id": "2022254N24143",
|
| 242 |
+
"issue_time_utc": "2022-09-15T00:00:00Z",
|
| 243 |
+
"source_row": 180095
|
| 244 |
+
},
|
| 245 |
+
{
|
| 246 |
+
"storm_id": "2022255N16256",
|
| 247 |
+
"issue_time_utc": "2022-09-13T12:00:00Z",
|
| 248 |
+
"source_row": 180133
|
| 249 |
+
},
|
| 250 |
+
{
|
| 251 |
+
"storm_id": "2022255N16256",
|
| 252 |
+
"issue_time_utc": "2022-09-17T00:00:00Z",
|
| 253 |
+
"source_row": 180161
|
| 254 |
+
},
|
| 255 |
+
{
|
| 256 |
+
"storm_id": "2022255N16256",
|
| 257 |
+
"issue_time_utc": "2022-09-20T00:00:00Z",
|
| 258 |
+
"source_row": 180185
|
| 259 |
+
},
|
| 260 |
+
{
|
| 261 |
+
"storm_id": "2022257N16312",
|
| 262 |
+
"issue_time_utc": "2022-09-16T06:00:00Z",
|
| 263 |
+
"source_row": 180218
|
| 264 |
+
},
|
| 265 |
+
{
|
| 266 |
+
"storm_id": "2022257N16312",
|
| 267 |
+
"issue_time_utc": "2022-09-19T00:00:00Z",
|
| 268 |
+
"source_row": 180242
|
| 269 |
+
},
|
| 270 |
+
{
|
| 271 |
+
"storm_id": "2022257N16312",
|
| 272 |
+
"issue_time_utc": "2022-09-22T00:00:00Z",
|
| 273 |
+
"source_row": 180268
|
| 274 |
+
},
|
| 275 |
+
{
|
| 276 |
+
"storm_id": "2022266N12294",
|
| 277 |
+
"issue_time_utc": "2022-09-24T18:00:00Z",
|
| 278 |
+
"source_row": 180471
|
| 279 |
+
},
|
| 280 |
+
{
|
| 281 |
+
"storm_id": "2022266N12294",
|
| 282 |
+
"issue_time_utc": "2022-09-25T00:00:00Z",
|
| 283 |
+
"source_row": 180473
|
| 284 |
+
},
|
| 285 |
+
{
|
| 286 |
+
"storm_id": "2022266N12294",
|
| 287 |
+
"issue_time_utc": "2022-09-26T00:00:00Z",
|
| 288 |
+
"source_row": 180481
|
| 289 |
+
},
|
| 290 |
+
{
|
| 291 |
+
"storm_id": "2022270N14136",
|
| 292 |
+
"issue_time_utc": "2022-09-28T12:00:00Z",
|
| 293 |
+
"source_row": 180574
|
| 294 |
+
},
|
| 295 |
+
{
|
| 296 |
+
"storm_id": "2022270N14136",
|
| 297 |
+
"issue_time_utc": "2022-09-29T00:00:00Z",
|
| 298 |
+
"source_row": 180578
|
| 299 |
+
},
|
| 300 |
+
{
|
| 301 |
+
"storm_id": "2022270N14136",
|
| 302 |
+
"issue_time_utc": "2022-09-30T00:00:00Z",
|
| 303 |
+
"source_row": 180586
|
| 304 |
+
},
|
| 305 |
+
{
|
| 306 |
+
"storm_id": "2022284N15152",
|
| 307 |
+
"issue_time_utc": "2022-10-13T06:00:00Z",
|
| 308 |
+
"source_row": 180720
|
| 309 |
+
},
|
| 310 |
+
{
|
| 311 |
+
"storm_id": "2022284N15152",
|
| 312 |
+
"issue_time_utc": "2022-10-14T00:00:00Z",
|
| 313 |
+
"source_row": 180726
|
| 314 |
+
},
|
| 315 |
+
{
|
| 316 |
+
"storm_id": "2022284N15152",
|
| 317 |
+
"issue_time_utc": "2022-10-15T00:00:00Z",
|
| 318 |
+
"source_row": 180734
|
| 319 |
+
},
|
| 320 |
+
{
|
| 321 |
+
"storm_id": "2023138N05151",
|
| 322 |
+
"issue_time_utc": "2023-05-20T00:00:00Z",
|
| 323 |
+
"source_row": 182572
|
| 324 |
+
},
|
| 325 |
+
{
|
| 326 |
+
"storm_id": "2023138N05151",
|
| 327 |
+
"issue_time_utc": "2023-05-25T00:00:00Z",
|
| 328 |
+
"source_row": 182612
|
| 329 |
+
},
|
| 330 |
+
{
|
| 331 |
+
"storm_id": "2023138N05151",
|
| 332 |
+
"issue_time_utc": "2023-05-29T00:00:00Z",
|
| 333 |
+
"source_row": 182644
|
| 334 |
+
},
|
| 335 |
+
{
|
| 336 |
+
"storm_id": "2023156N12135",
|
| 337 |
+
"issue_time_utc": "2023-06-06T18:00:00Z",
|
| 338 |
+
"source_row": 182775
|
| 339 |
+
},
|
| 340 |
+
{
|
| 341 |
+
"storm_id": "2023156N12135",
|
| 342 |
+
"issue_time_utc": "2023-06-09T00:00:00Z",
|
| 343 |
+
"source_row": 182793
|
| 344 |
+
},
|
| 345 |
+
{
|
| 346 |
+
"storm_id": "2023156N12135",
|
| 347 |
+
"issue_time_utc": "2023-06-12T00:00:00Z",
|
| 348 |
+
"source_row": 182817
|
| 349 |
+
},
|
| 350 |
+
{
|
| 351 |
+
"storm_id": "2023156N10067",
|
| 352 |
+
"issue_time_utc": "2023-06-07T00:00:00Z",
|
| 353 |
+
"source_row": 182686
|
| 354 |
+
},
|
| 355 |
+
{
|
| 356 |
+
"storm_id": "2023156N10067",
|
| 357 |
+
"issue_time_utc": "2023-06-11T00:00:00Z",
|
| 358 |
+
"source_row": 182718
|
| 359 |
+
},
|
| 360 |
+
{
|
| 361 |
+
"storm_id": "2023156N10067",
|
| 362 |
+
"issue_time_utc": "2023-06-14T00:00:00Z",
|
| 363 |
+
"source_row": 182742
|
| 364 |
+
},
|
| 365 |
+
{
|
| 366 |
+
"storm_id": "2023191N10262",
|
| 367 |
+
"issue_time_utc": "2023-07-12T06:00:00Z",
|
| 368 |
+
"source_row": 182916
|
| 369 |
+
},
|
| 370 |
+
{
|
| 371 |
+
"storm_id": "2023191N10262",
|
| 372 |
+
"issue_time_utc": "2023-07-13T00:00:00Z",
|
| 373 |
+
"source_row": 182922
|
| 374 |
+
},
|
| 375 |
+
{
|
| 376 |
+
"storm_id": "2023191N10262",
|
| 377 |
+
"issue_time_utc": "2023-07-14T00:00:00Z",
|
| 378 |
+
"source_row": 182930
|
| 379 |
+
},
|
| 380 |
+
{
|
| 381 |
+
"storm_id": "2023193N37305",
|
| 382 |
+
"issue_time_utc": "2023-07-13T12:00:00Z",
|
| 383 |
+
"source_row": 182969
|
| 384 |
+
},
|
| 385 |
+
{
|
| 386 |
+
"storm_id": "2023193N37305",
|
| 387 |
+
"issue_time_utc": "2023-07-17T00:00:00Z",
|
| 388 |
+
"source_row": 182997
|
| 389 |
+
},
|
| 390 |
+
{
|
| 391 |
+
"storm_id": "2023193N37305",
|
| 392 |
+
"issue_time_utc": "2023-07-20T00:00:00Z",
|
| 393 |
+
"source_row": 183021
|
| 394 |
+
},
|
| 395 |
+
{
|
| 396 |
+
"storm_id": "2023201N13134",
|
| 397 |
+
"issue_time_utc": "2023-07-22T06:00:00Z",
|
| 398 |
+
"source_row": 183101
|
| 399 |
+
},
|
| 400 |
+
{
|
| 401 |
+
"storm_id": "2023201N13134",
|
| 402 |
+
"issue_time_utc": "2023-07-24T00:00:00Z",
|
| 403 |
+
"source_row": 183115
|
| 404 |
+
},
|
| 405 |
+
{
|
| 406 |
+
"storm_id": "2023201N13134",
|
| 407 |
+
"issue_time_utc": "2023-07-26T00:00:00Z",
|
| 408 |
+
"source_row": 183131
|
| 409 |
+
},
|
| 410 |
+
{
|
| 411 |
+
"storm_id": "2023207N09141",
|
| 412 |
+
"issue_time_utc": "2023-07-28T06:00:00Z",
|
| 413 |
+
"source_row": 183164
|
| 414 |
+
},
|
| 415 |
+
{
|
| 416 |
+
"storm_id": "2023207N09141",
|
| 417 |
+
"issue_time_utc": "2023-08-02T00:00:00Z",
|
| 418 |
+
"source_row": 183202
|
| 419 |
+
},
|
| 420 |
+
{
|
| 421 |
+
"storm_id": "2023207N09141",
|
| 422 |
+
"issue_time_utc": "2023-08-06T00:00:00Z",
|
| 423 |
+
"source_row": 183234
|
| 424 |
+
},
|
| 425 |
+
{
|
| 426 |
+
"storm_id": "2023213N14257",
|
| 427 |
+
"issue_time_utc": "2023-08-02T12:00:00Z",
|
| 428 |
+
"source_row": 183280
|
| 429 |
+
},
|
| 430 |
+
{
|
| 431 |
+
"storm_id": "2023213N14257",
|
| 432 |
+
"issue_time_utc": "2023-08-10T00:00:00Z",
|
| 433 |
+
"source_row": 183340
|
| 434 |
+
},
|
| 435 |
+
{
|
| 436 |
+
"storm_id": "2023213N14257",
|
| 437 |
+
"issue_time_utc": "2023-08-17T00:00:00Z",
|
| 438 |
+
"source_row": 183396
|
| 439 |
+
},
|
| 440 |
+
{
|
| 441 |
+
"storm_id": "2023218N25145",
|
| 442 |
+
"issue_time_utc": "2023-08-08T00:00:00Z",
|
| 443 |
+
"source_row": 183452
|
| 444 |
+
},
|
| 445 |
+
{
|
| 446 |
+
"storm_id": "2023218N25145",
|
| 447 |
+
"issue_time_utc": "2023-08-11T00:00:00Z",
|
| 448 |
+
"source_row": 183476
|
| 449 |
+
},
|
| 450 |
+
{
|
| 451 |
+
"storm_id": "2023218N25145",
|
| 452 |
+
"issue_time_utc": "2023-08-13T00:00:00Z",
|
| 453 |
+
"source_row": 183492
|
| 454 |
+
},
|
| 455 |
+
{
|
| 456 |
+
"storm_id": "2023225N14248",
|
| 457 |
+
"issue_time_utc": "2023-08-14T12:00:00Z",
|
| 458 |
+
"source_row": 183531
|
| 459 |
+
},
|
| 460 |
+
{
|
| 461 |
+
"storm_id": "2023225N14248",
|
| 462 |
+
"issue_time_utc": "2023-08-17T00:00:00Z",
|
| 463 |
+
"source_row": 183551
|
| 464 |
+
},
|
| 465 |
+
{
|
| 466 |
+
"storm_id": "2023225N14248",
|
| 467 |
+
"issue_time_utc": "2023-08-19T00:00:00Z",
|
| 468 |
+
"source_row": 183567
|
| 469 |
+
},
|
| 470 |
+
{
|
| 471 |
+
"storm_id": "2023231N15313",
|
| 472 |
+
"issue_time_utc": "2023-08-21T00:00:00Z",
|
| 473 |
+
"source_row": 183633
|
| 474 |
+
},
|
| 475 |
+
{
|
| 476 |
+
"storm_id": "2023231N15313",
|
| 477 |
+
"issue_time_utc": "2023-08-26T00:00:00Z",
|
| 478 |
+
"source_row": 183673
|
| 479 |
+
},
|
| 480 |
+
{
|
| 481 |
+
"storm_id": "2023231N15313",
|
| 482 |
+
"issue_time_utc": "2023-08-30T00:00:00Z",
|
| 483 |
+
"source_row": 183705
|
| 484 |
+
},
|
| 485 |
+
{
|
| 486 |
+
"storm_id": "2023232N13300",
|
| 487 |
+
"issue_time_utc": "2023-08-21T18:00:00Z",
|
| 488 |
+
"source_row": 183773
|
| 489 |
+
},
|
| 490 |
+
{
|
| 491 |
+
"storm_id": "2023232N13300",
|
| 492 |
+
"issue_time_utc": "2023-08-28T00:00:00Z",
|
| 493 |
+
"source_row": 183824
|
| 494 |
+
},
|
| 495 |
+
{
|
| 496 |
+
"storm_id": "2023232N13300",
|
| 497 |
+
"issue_time_utc": "2023-09-04T00:00:00Z",
|
| 498 |
+
"source_row": 183880
|
| 499 |
+
},
|
| 500 |
+
{
|
| 501 |
+
"storm_id": "2023234N19154",
|
| 502 |
+
"issue_time_utc": "2023-08-23T12:00:00Z",
|
| 503 |
+
"source_row": 184026
|
| 504 |
+
},
|
| 505 |
+
{
|
| 506 |
+
"storm_id": "2023234N19154",
|
| 507 |
+
"issue_time_utc": "2023-08-24T00:00:00Z",
|
| 508 |
+
"source_row": 184030
|
| 509 |
+
},
|
| 510 |
+
{
|
| 511 |
+
"storm_id": "2023234N19154",
|
| 512 |
+
"issue_time_utc": "2023-08-25T00:00:00Z",
|
| 513 |
+
"source_row": 184038
|
| 514 |
+
},
|
| 515 |
+
{
|
| 516 |
+
"storm_id": "2023234N18128",
|
| 517 |
+
"issue_time_utc": "2023-08-24T00:00:00Z",
|
| 518 |
+
"source_row": 183919
|
| 519 |
+
},
|
| 520 |
+
{
|
| 521 |
+
"storm_id": "2023234N18128",
|
| 522 |
+
"issue_time_utc": "2023-08-27T00:00:00Z",
|
| 523 |
+
"source_row": 183943
|
| 524 |
+
},
|
| 525 |
+
{
|
| 526 |
+
"storm_id": "2023234N18128",
|
| 527 |
+
"issue_time_utc": "2023-08-30T00:00:00Z",
|
| 528 |
+
"source_row": 183967
|
| 529 |
+
},
|
| 530 |
+
{
|
| 531 |
+
"storm_id": "2023239N21274",
|
| 532 |
+
"issue_time_utc": "2023-08-28T12:00:00Z",
|
| 533 |
+
"source_row": 184203
|
| 534 |
+
},
|
| 535 |
+
{
|
| 536 |
+
"storm_id": "2023239N21274",
|
| 537 |
+
"issue_time_utc": "2023-08-31T00:00:00Z",
|
| 538 |
+
"source_row": 184224
|
| 539 |
+
},
|
| 540 |
+
{
|
| 541 |
+
"storm_id": "2023239N21274",
|
| 542 |
+
"issue_time_utc": "2023-09-03T00:00:00Z",
|
| 543 |
+
"source_row": 184248
|
| 544 |
+
},
|
| 545 |
+
{
|
| 546 |
+
"storm_id": "2023239N18144",
|
| 547 |
+
"issue_time_utc": "2023-08-29T00:00:00Z",
|
| 548 |
+
"source_row": 184110
|
| 549 |
+
},
|
| 550 |
+
{
|
| 551 |
+
"storm_id": "2023239N18144",
|
| 552 |
+
"issue_time_utc": "2023-09-02T00:00:00Z",
|
| 553 |
+
"source_row": 184142
|
| 554 |
+
},
|
| 555 |
+
{
|
| 556 |
+
"storm_id": "2023239N18144",
|
| 557 |
+
"issue_time_utc": "2023-09-05T00:00:00Z",
|
| 558 |
+
"source_row": 184166
|
| 559 |
+
},
|
| 560 |
+
{
|
| 561 |
+
"storm_id": "2023241N10158",
|
| 562 |
+
"issue_time_utc": "2023-08-31T00:00:00Z",
|
| 563 |
+
"source_row": 184283
|
| 564 |
+
},
|
| 565 |
+
{
|
| 566 |
+
"storm_id": "2023241N10158",
|
| 567 |
+
"issue_time_utc": "2023-09-01T00:00:00Z",
|
| 568 |
+
"source_row": 184291
|
| 569 |
+
},
|
| 570 |
+
{
|
| 571 |
+
"storm_id": "2023241N10158",
|
| 572 |
+
"issue_time_utc": "2023-09-02T00:00:00Z",
|
| 573 |
+
"source_row": 184299
|
| 574 |
+
},
|
| 575 |
+
{
|
| 576 |
+
"storm_id": "2023242N15339",
|
| 577 |
+
"issue_time_utc": "2023-09-01T00:00:00Z",
|
| 578 |
+
"source_row": 184343
|
| 579 |
+
},
|
| 580 |
+
{
|
| 581 |
+
"storm_id": "2023242N15339",
|
| 582 |
+
"issue_time_utc": "2023-09-06T00:00:00Z",
|
| 583 |
+
"source_row": 184383
|
| 584 |
+
},
|
| 585 |
+
{
|
| 586 |
+
"storm_id": "2023242N15339",
|
| 587 |
+
"issue_time_utc": "2023-09-10T00:00:00Z",
|
| 588 |
+
"source_row": 184415
|
| 589 |
+
},
|
| 590 |
+
{
|
| 591 |
+
"storm_id": "2023248N12257",
|
| 592 |
+
"issue_time_utc": "2023-09-06T12:00:00Z",
|
| 593 |
+
"source_row": 184471
|
| 594 |
+
},
|
| 595 |
+
{
|
| 596 |
+
"storm_id": "2023248N12257",
|
| 597 |
+
"issue_time_utc": "2023-09-08T00:00:00Z",
|
| 598 |
+
"source_row": 184483
|
| 599 |
+
},
|
| 600 |
+
{
|
| 601 |
+
"storm_id": "2023248N12257",
|
| 602 |
+
"issue_time_utc": "2023-09-09T00:00:00Z",
|
| 603 |
+
"source_row": 184491
|
| 604 |
+
},
|
| 605 |
+
{
|
| 606 |
+
"storm_id": "2023249N12320",
|
| 607 |
+
"issue_time_utc": "2023-09-07T12:00:00Z",
|
| 608 |
+
"source_row": 184524
|
| 609 |
+
},
|
| 610 |
+
{
|
| 611 |
+
"storm_id": "2023249N12320",
|
| 612 |
+
"issue_time_utc": "2023-09-10T00:00:00Z",
|
| 613 |
+
"source_row": 184544
|
| 614 |
+
},
|
| 615 |
+
{
|
| 616 |
+
"storm_id": "2023249N12320",
|
| 617 |
+
"issue_time_utc": "2023-09-13T00:00:00Z",
|
| 618 |
+
"source_row": 184568
|
| 619 |
+
},
|
| 620 |
+
{
|
| 621 |
+
"storm_id": "2023251N16334",
|
| 622 |
+
"issue_time_utc": "2023-09-09T12:00:00Z",
|
| 623 |
+
"source_row": 184608
|
| 624 |
+
},
|
| 625 |
+
{
|
| 626 |
+
"storm_id": "2023251N16334",
|
| 627 |
+
"issue_time_utc": "2023-09-11T00:00:00Z",
|
| 628 |
+
"source_row": 184620
|
| 629 |
+
},
|
| 630 |
+
{
|
| 631 |
+
"storm_id": "2023251N16334",
|
| 632 |
+
"issue_time_utc": "2023-09-13T00:00:00Z",
|
| 633 |
+
"source_row": 184636
|
| 634 |
+
},
|
| 635 |
+
{
|
| 636 |
+
"storm_id": "2023258N14318",
|
| 637 |
+
"issue_time_utc": "2023-09-17T06:00:00Z",
|
| 638 |
+
"source_row": 184675
|
| 639 |
+
},
|
| 640 |
+
{
|
| 641 |
+
"storm_id": "2023258N14318",
|
| 642 |
+
"issue_time_utc": "2023-09-19T00:00:00Z",
|
| 643 |
+
"source_row": 184689
|
| 644 |
+
},
|
| 645 |
+
{
|
| 646 |
+
"storm_id": "2023258N14318",
|
| 647 |
+
"issue_time_utc": "2023-09-21T00:00:00Z",
|
| 648 |
+
"source_row": 184705
|
| 649 |
+
},
|
| 650 |
+
{
|
| 651 |
+
"storm_id": "2023266N16323",
|
| 652 |
+
"issue_time_utc": "2023-09-25T06:00:00Z",
|
| 653 |
+
"source_row": 184784
|
| 654 |
+
},
|
| 655 |
+
{
|
| 656 |
+
"storm_id": "2023266N16323",
|
| 657 |
+
"issue_time_utc": "2023-09-28T00:00:00Z",
|
| 658 |
+
"source_row": 184806
|
| 659 |
+
},
|
| 660 |
+
{
|
| 661 |
+
"storm_id": "2023266N16323",
|
| 662 |
+
"issue_time_utc": "2023-10-01T00:00:00Z",
|
| 663 |
+
"source_row": 184830
|
| 664 |
+
},
|
| 665 |
+
{
|
| 666 |
+
"storm_id": "2023271N14144",
|
| 667 |
+
"issue_time_utc": "2023-09-29T12:00:00Z",
|
| 668 |
+
"source_row": 184875
|
| 669 |
+
},
|
| 670 |
+
{
|
| 671 |
+
"storm_id": "2023271N14144",
|
| 672 |
+
"issue_time_utc": "2023-10-02T00:00:00Z",
|
| 673 |
+
"source_row": 184895
|
| 674 |
+
},
|
| 675 |
+
{
|
| 676 |
+
"storm_id": "2023271N14144",
|
| 677 |
+
"issue_time_utc": "2023-10-05T00:00:00Z",
|
| 678 |
+
"source_row": 184919
|
| 679 |
+
},
|
| 680 |
+
{
|
| 681 |
+
"storm_id": "2023279N08157",
|
| 682 |
+
"issue_time_utc": "2023-10-08T00:00:00Z",
|
| 683 |
+
"source_row": 185020
|
| 684 |
+
},
|
| 685 |
+
{
|
| 686 |
+
"storm_id": "2023279N08157",
|
| 687 |
+
"issue_time_utc": "2023-10-10T00:00:00Z",
|
| 688 |
+
"source_row": 185036
|
| 689 |
+
},
|
| 690 |
+
{
|
| 691 |
+
"storm_id": "2023279N08157",
|
| 692 |
+
"issue_time_utc": "2023-10-11T00:00:00Z",
|
| 693 |
+
"source_row": 185044
|
| 694 |
+
},
|
| 695 |
+
{
|
| 696 |
+
"storm_id": "2023292N13309",
|
| 697 |
+
"issue_time_utc": "2023-10-20T18:00:00Z",
|
| 698 |
+
"source_row": 185172
|
| 699 |
+
},
|
| 700 |
+
{
|
| 701 |
+
"storm_id": "2023292N13309",
|
| 702 |
+
"issue_time_utc": "2023-10-23T00:00:00Z",
|
| 703 |
+
"source_row": 185191
|
| 704 |
+
},
|
| 705 |
+
{
|
| 706 |
+
"storm_id": "2023292N13309",
|
| 707 |
+
"issue_time_utc": "2023-10-26T00:00:00Z",
|
| 708 |
+
"source_row": 185215
|
| 709 |
+
},
|
| 710 |
+
{
|
| 711 |
+
"storm_id": "2023302N10267",
|
| 712 |
+
"issue_time_utc": "2023-10-30T12:00:00Z",
|
| 713 |
+
"source_row": 185325
|
| 714 |
+
},
|
| 715 |
+
{
|
| 716 |
+
"storm_id": "2023302N10267",
|
| 717 |
+
"issue_time_utc": "2023-11-01T00:00:00Z",
|
| 718 |
+
"source_row": 185337
|
| 719 |
+
},
|
| 720 |
+
{
|
| 721 |
+
"storm_id": "2023302N10267",
|
| 722 |
+
"issue_time_utc": "2023-11-02T00:00:00Z",
|
| 723 |
+
"source_row": 185345
|
| 724 |
+
},
|
| 725 |
+
{
|
| 726 |
+
"storm_id": "2024141N03142",
|
| 727 |
+
"issue_time_utc": "2024-05-22T00:00:00Z",
|
| 728 |
+
"source_row": 186747
|
| 729 |
+
},
|
| 730 |
+
{
|
| 731 |
+
"storm_id": "2024141N03142",
|
| 732 |
+
"issue_time_utc": "2024-05-25T00:00:00Z",
|
| 733 |
+
"source_row": 186771
|
| 734 |
+
},
|
| 735 |
+
{
|
| 736 |
+
"storm_id": "2024141N03142",
|
| 737 |
+
"issue_time_utc": "2024-05-28T00:00:00Z",
|
| 738 |
+
"source_row": 186795
|
| 739 |
+
},
|
| 740 |
+
{
|
| 741 |
+
"storm_id": "2024181N09320",
|
| 742 |
+
"issue_time_utc": "2024-06-30T12:00:00Z",
|
| 743 |
+
"source_row": 186875
|
| 744 |
+
},
|
| 745 |
+
{
|
| 746 |
+
"storm_id": "2024181N09320",
|
| 747 |
+
"issue_time_utc": "2024-07-03T00:00:00Z",
|
| 748 |
+
"source_row": 186897
|
| 749 |
+
},
|
| 750 |
+
{
|
| 751 |
+
"storm_id": "2024181N09320",
|
| 752 |
+
"issue_time_utc": "2024-07-06T00:00:00Z",
|
| 753 |
+
"source_row": 186922
|
| 754 |
+
},
|
| 755 |
+
{
|
| 756 |
+
"storm_id": "2024198N08130",
|
| 757 |
+
"issue_time_utc": "2024-07-17T12:00:00Z",
|
| 758 |
+
"source_row": 186961
|
| 759 |
+
},
|
| 760 |
+
{
|
| 761 |
+
"storm_id": "2024198N08130",
|
| 762 |
+
"issue_time_utc": "2024-07-19T00:00:00Z",
|
| 763 |
+
"source_row": 186973
|
| 764 |
+
},
|
| 765 |
+
{
|
| 766 |
+
"storm_id": "2024198N08130",
|
| 767 |
+
"issue_time_utc": "2024-07-20T00:00:00Z",
|
| 768 |
+
"source_row": 186981
|
| 769 |
+
},
|
| 770 |
+
{
|
| 771 |
+
"storm_id": "2024201N12133",
|
| 772 |
+
"issue_time_utc": "2024-07-21T00:00:00Z",
|
| 773 |
+
"source_row": 187016
|
| 774 |
+
},
|
| 775 |
+
{
|
| 776 |
+
"storm_id": "2024201N12133",
|
| 777 |
+
"issue_time_utc": "2024-07-22T00:00:00Z",
|
| 778 |
+
"source_row": 187024
|
| 779 |
+
},
|
| 780 |
+
{
|
| 781 |
+
"storm_id": "2024201N12133",
|
| 782 |
+
"issue_time_utc": "2024-07-23T00:00:00Z",
|
| 783 |
+
"source_row": 187032
|
| 784 |
+
},
|
| 785 |
+
{
|
| 786 |
+
"storm_id": "2024218N23143",
|
| 787 |
+
"issue_time_utc": "2024-08-07T00:00:00Z",
|
| 788 |
+
"source_row": 187195
|
| 789 |
+
},
|
| 790 |
+
{
|
| 791 |
+
"storm_id": "2024218N23143",
|
| 792 |
+
"issue_time_utc": "2024-08-08T00:00:00Z",
|
| 793 |
+
"source_row": 187203
|
| 794 |
+
},
|
| 795 |
+
{
|
| 796 |
+
"storm_id": "2024218N23143",
|
| 797 |
+
"issue_time_utc": "2024-08-09T00:00:00Z",
|
| 798 |
+
"source_row": 187211
|
| 799 |
+
},
|
| 800 |
+
{
|
| 801 |
+
"storm_id": "2024225N14313",
|
| 802 |
+
"issue_time_utc": "2024-08-13T18:00:00Z",
|
| 803 |
+
"source_row": 187290
|
| 804 |
+
},
|
| 805 |
+
{
|
| 806 |
+
"storm_id": "2024225N14313",
|
| 807 |
+
"issue_time_utc": "2024-08-14T00:00:00Z",
|
| 808 |
+
"source_row": 187293
|
| 809 |
+
},
|
| 810 |
+
{
|
| 811 |
+
"storm_id": "2024225N14313",
|
| 812 |
+
"issue_time_utc": "2024-08-15T00:00:00Z",
|
| 813 |
+
"source_row": 187301
|
| 814 |
+
},
|
| 815 |
+
{
|
| 816 |
+
"storm_id": "2024225N22135",
|
| 817 |
+
"issue_time_utc": "2024-08-13T12:00:00Z",
|
| 818 |
+
"source_row": 187341
|
| 819 |
+
},
|
| 820 |
+
{
|
| 821 |
+
"storm_id": "2024225N22135",
|
| 822 |
+
"issue_time_utc": "2024-08-15T00:00:00Z",
|
| 823 |
+
"source_row": 187353
|
| 824 |
+
},
|
| 825 |
+
{
|
| 826 |
+
"storm_id": "2024225N22135",
|
| 827 |
+
"issue_time_utc": "2024-08-16T00:00:00Z",
|
| 828 |
+
"source_row": 187361
|
| 829 |
+
},
|
| 830 |
+
{
|
| 831 |
+
"storm_id": "2024231N14251",
|
| 832 |
+
"issue_time_utc": "2024-08-20T06:00:00Z",
|
| 833 |
+
"source_row": 187435
|
| 834 |
+
},
|
| 835 |
+
{
|
| 836 |
+
"storm_id": "2024231N14251",
|
| 837 |
+
"issue_time_utc": "2024-08-22T00:00:00Z",
|
| 838 |
+
"source_row": 187449
|
| 839 |
+
},
|
| 840 |
+
{
|
| 841 |
+
"storm_id": "2024231N14251",
|
| 842 |
+
"issue_time_utc": "2024-08-24T00:00:00Z",
|
| 843 |
+
"source_row": 187465
|
| 844 |
+
},
|
| 845 |
+
{
|
| 846 |
+
"storm_id": "2024233N15148",
|
| 847 |
+
"issue_time_utc": "2024-08-22T06:00:00Z",
|
| 848 |
+
"source_row": 187517
|
| 849 |
+
},
|
| 850 |
+
{
|
| 851 |
+
"storm_id": "2024233N15148",
|
| 852 |
+
"issue_time_utc": "2024-08-25T00:00:00Z",
|
| 853 |
+
"source_row": 187539
|
| 854 |
+
},
|
| 855 |
+
{
|
| 856 |
+
"storm_id": "2024233N15148",
|
| 857 |
+
"issue_time_utc": "2024-08-27T00:00:00Z",
|
| 858 |
+
"source_row": 187555
|
| 859 |
+
},
|
| 860 |
+
{
|
| 861 |
+
"storm_id": "2024235N16223",
|
| 862 |
+
"issue_time_utc": "2024-08-24T00:00:00Z",
|
| 863 |
+
"source_row": 187595
|
| 864 |
+
},
|
| 865 |
+
{
|
| 866 |
+
"storm_id": "2024235N16223",
|
| 867 |
+
"issue_time_utc": "2024-08-26T00:00:00Z",
|
| 868 |
+
"source_row": 187611
|
| 869 |
+
},
|
| 870 |
+
{
|
| 871 |
+
"storm_id": "2024235N16223",
|
| 872 |
+
"issue_time_utc": "2024-08-27T00:00:00Z",
|
| 873 |
+
"source_row": 187619
|
| 874 |
+
},
|
| 875 |
+
{
|
| 876 |
+
"storm_id": "2024238N25077",
|
| 877 |
+
"issue_time_utc": "2024-08-27T00:00:00Z",
|
| 878 |
+
"source_row": 187681
|
| 879 |
+
},
|
| 880 |
+
{
|
| 881 |
+
"storm_id": "2024238N25077",
|
| 882 |
+
"issue_time_utc": "2024-08-28T00:00:00Z",
|
| 883 |
+
"source_row": 187689
|
| 884 |
+
},
|
| 885 |
+
{
|
| 886 |
+
"storm_id": "2024238N25077",
|
| 887 |
+
"issue_time_utc": "2024-08-29T00:00:00Z",
|
| 888 |
+
"source_row": 187697
|
| 889 |
+
},
|
| 890 |
+
{
|
| 891 |
+
"storm_id": "2024244N09137",
|
| 892 |
+
"issue_time_utc": "2024-09-01T12:00:00Z",
|
| 893 |
+
"source_row": 187732
|
| 894 |
+
},
|
| 895 |
+
{
|
| 896 |
+
"storm_id": "2024244N09137",
|
| 897 |
+
"issue_time_utc": "2024-09-03T00:00:00Z",
|
| 898 |
+
"source_row": 187744
|
| 899 |
+
},
|
| 900 |
+
{
|
| 901 |
+
"storm_id": "2024244N09137",
|
| 902 |
+
"issue_time_utc": "2024-09-04T00:00:00Z",
|
| 903 |
+
"source_row": 187752
|
| 904 |
+
},
|
| 905 |
+
{
|
| 906 |
+
"storm_id": "2024253N11148",
|
| 907 |
+
"issue_time_utc": "2024-09-10T18:00:00Z",
|
| 908 |
+
"source_row": 187826
|
| 909 |
+
},
|
| 910 |
+
{
|
| 911 |
+
"storm_id": "2024253N11148",
|
| 912 |
+
"issue_time_utc": "2024-09-12T00:00:00Z",
|
| 913 |
+
"source_row": 187836
|
| 914 |
+
},
|
| 915 |
+
{
|
| 916 |
+
"storm_id": "2024253N11148",
|
| 917 |
+
"issue_time_utc": "2024-09-13T00:00:00Z",
|
| 918 |
+
"source_row": 187844
|
| 919 |
+
},
|
| 920 |
+
{
|
| 921 |
+
"storm_id": "2024259N12145",
|
| 922 |
+
"issue_time_utc": "2024-09-17T00:00:00Z",
|
| 923 |
+
"source_row": 187954
|
| 924 |
+
},
|
| 925 |
+
{
|
| 926 |
+
"storm_id": "2024259N12145",
|
| 927 |
+
"issue_time_utc": "2024-09-18T00:00:00Z",
|
| 928 |
+
"source_row": 187962
|
| 929 |
+
},
|
| 930 |
+
{
|
| 931 |
+
"storm_id": "2024259N12145",
|
| 932 |
+
"issue_time_utc": "2024-09-19T00:00:00Z",
|
| 933 |
+
"source_row": 187970
|
| 934 |
+
},
|
| 935 |
+
{
|
| 936 |
+
"storm_id": "2024269N39302",
|
| 937 |
+
"issue_time_utc": "2024-09-26T12:00:00Z",
|
| 938 |
+
"source_row": 188145
|
| 939 |
+
},
|
| 940 |
+
{
|
| 941 |
+
"storm_id": "2024269N39302",
|
| 942 |
+
"issue_time_utc": "2024-09-27T00:00:00Z",
|
| 943 |
+
"source_row": 188149
|
| 944 |
+
},
|
| 945 |
+
{
|
| 946 |
+
"storm_id": "2024269N39302",
|
| 947 |
+
"issue_time_utc": "2024-09-28T00:00:00Z",
|
| 948 |
+
"source_row": 188157
|
| 949 |
+
},
|
| 950 |
+
{
|
| 951 |
+
"storm_id": "2024274N14328",
|
| 952 |
+
"issue_time_utc": "2024-10-01T18:00:00Z",
|
| 953 |
+
"source_row": 188234
|
| 954 |
+
},
|
| 955 |
+
{
|
| 956 |
+
"storm_id": "2024274N14328",
|
| 957 |
+
"issue_time_utc": "2024-10-03T00:00:00Z",
|
| 958 |
+
"source_row": 188244
|
| 959 |
+
},
|
| 960 |
+
{
|
| 961 |
+
"storm_id": "2024274N14328",
|
| 962 |
+
"issue_time_utc": "2024-10-05T00:00:00Z",
|
| 963 |
+
"source_row": 188260
|
| 964 |
+
},
|
| 965 |
+
{
|
| 966 |
+
"storm_id": "2024275N10336",
|
| 967 |
+
"issue_time_utc": "2024-10-03T00:00:00Z",
|
| 968 |
+
"source_row": 188330
|
| 969 |
+
},
|
| 970 |
+
{
|
| 971 |
+
"storm_id": "2024275N10336",
|
| 972 |
+
"issue_time_utc": "2024-10-05T00:00:00Z",
|
| 973 |
+
"source_row": 188346
|
| 974 |
+
},
|
| 975 |
+
{
|
| 976 |
+
"storm_id": "2024275N10336",
|
| 977 |
+
"issue_time_utc": "2024-10-07T00:00:00Z",
|
| 978 |
+
"source_row": 188362
|
| 979 |
+
},
|
| 980 |
+
{
|
| 981 |
+
"storm_id": "2024278N11150",
|
| 982 |
+
"issue_time_utc": "2024-10-06T06:00:00Z",
|
| 983 |
+
"source_row": 188397
|
| 984 |
+
},
|
| 985 |
+
{
|
| 986 |
+
"storm_id": "2024278N11150",
|
| 987 |
+
"issue_time_utc": "2024-10-08T00:00:00Z",
|
| 988 |
+
"source_row": 188411
|
| 989 |
+
},
|
| 990 |
+
{
|
| 991 |
+
"storm_id": "2024278N11150",
|
| 992 |
+
"issue_time_utc": "2024-10-10T00:00:00Z",
|
| 993 |
+
"source_row": 188427
|
| 994 |
+
},
|
| 995 |
+
{
|
| 996 |
+
"storm_id": "2024293N13141",
|
| 997 |
+
"issue_time_utc": "2024-10-20T12:00:00Z",
|
| 998 |
+
"source_row": 188502
|
| 999 |
+
},
|
| 1000 |
+
{
|
| 1001 |
+
"storm_id": "2024293N13141",
|
| 1002 |
+
"issue_time_utc": "2024-10-22T00:00:00Z",
|
| 1003 |
+
"source_row": 188514
|
| 1004 |
+
},
|
| 1005 |
+
{
|
| 1006 |
+
"storm_id": "2024293N13141",
|
| 1007 |
+
"issue_time_utc": "2024-10-24T00:00:00Z",
|
| 1008 |
+
"source_row": 188530
|
| 1009 |
+
},
|
| 1010 |
+
{
|
| 1011 |
+
"storm_id": "2024298N13150",
|
| 1012 |
+
"issue_time_utc": "2024-10-26T00:00:00Z",
|
| 1013 |
+
"source_row": 188624
|
| 1014 |
+
},
|
| 1015 |
+
{
|
| 1016 |
+
"storm_id": "2024298N13150",
|
| 1017 |
+
"issue_time_utc": "2024-10-27T00:00:00Z",
|
| 1018 |
+
"source_row": 188632
|
| 1019 |
+
},
|
| 1020 |
+
{
|
| 1021 |
+
"storm_id": "2024298N13150",
|
| 1022 |
+
"issue_time_utc": "2024-10-28T00:00:00Z",
|
| 1023 |
+
"source_row": 188640
|
| 1024 |
+
},
|
| 1025 |
+
{
|
| 1026 |
+
"storm_id": "2024307N06143",
|
| 1027 |
+
"issue_time_utc": "2024-11-04T06:00:00Z",
|
| 1028 |
+
"source_row": 188682
|
| 1029 |
+
},
|
| 1030 |
+
{
|
| 1031 |
+
"storm_id": "2024307N06143",
|
| 1032 |
+
"issue_time_utc": "2024-11-06T00:00:00Z",
|
| 1033 |
+
"source_row": 188696
|
| 1034 |
+
},
|
| 1035 |
+
{
|
| 1036 |
+
"storm_id": "2024307N06143",
|
| 1037 |
+
"issue_time_utc": "2024-11-08T00:00:00Z",
|
| 1038 |
+
"source_row": 188712
|
| 1039 |
+
},
|
| 1040 |
+
{
|
| 1041 |
+
"storm_id": "2024313N10169",
|
| 1042 |
+
"issue_time_utc": "2024-11-09T18:00:00Z",
|
| 1043 |
+
"source_row": 188862
|
| 1044 |
+
},
|
| 1045 |
+
{
|
| 1046 |
+
"storm_id": "2024313N10169",
|
| 1047 |
+
"issue_time_utc": "2024-11-12T00:00:00Z",
|
| 1048 |
+
"source_row": 188880
|
| 1049 |
+
},
|
| 1050 |
+
{
|
| 1051 |
+
"storm_id": "2024313N10169",
|
| 1052 |
+
"issue_time_utc": "2024-11-15T00:00:00Z",
|
| 1053 |
+
"source_row": 188904
|
| 1054 |
+
},
|
| 1055 |
+
{
|
| 1056 |
+
"storm_id": "2024329N04089",
|
| 1057 |
+
"issue_time_utc": "2024-11-25T18:00:00Z",
|
| 1058 |
+
"source_row": 189139
|
| 1059 |
+
},
|
| 1060 |
+
{
|
| 1061 |
+
"storm_id": "2024329N04089",
|
| 1062 |
+
"issue_time_utc": "2024-11-27T00:00:00Z",
|
| 1063 |
+
"source_row": 189149
|
| 1064 |
+
},
|
| 1065 |
+
{
|
| 1066 |
+
"storm_id": "2024329N04089",
|
| 1067 |
+
"issue_time_utc": "2024-11-29T00:00:00Z",
|
| 1068 |
+
"source_row": 189165
|
| 1069 |
+
},
|
| 1070 |
+
{
|
| 1071 |
+
"storm_id": "2025182N22149",
|
| 1072 |
+
"issue_time_utc": "2025-07-03T00:00:00Z",
|
| 1073 |
+
"source_row": 190688
|
| 1074 |
+
},
|
| 1075 |
+
{
|
| 1076 |
+
"storm_id": "2025182N22149",
|
| 1077 |
+
"issue_time_utc": "2025-07-05T00:00:00Z",
|
| 1078 |
+
"source_row": 190704
|
| 1079 |
+
},
|
| 1080 |
+
{
|
| 1081 |
+
"storm_id": "2025182N22149",
|
| 1082 |
+
"issue_time_utc": "2025-07-06T00:00:00Z",
|
| 1083 |
+
"source_row": 190712
|
| 1084 |
+
},
|
| 1085 |
+
{
|
| 1086 |
+
"storm_id": "2025203N20124",
|
| 1087 |
+
"issue_time_utc": "2025-07-24T00:00:00Z",
|
| 1088 |
+
"source_row": 190874
|
| 1089 |
+
},
|
| 1090 |
+
{
|
| 1091 |
+
"storm_id": "2025203N20124",
|
| 1092 |
+
"issue_time_utc": "2025-07-27T00:00:00Z",
|
| 1093 |
+
"source_row": 190898
|
| 1094 |
+
},
|
| 1095 |
+
{
|
| 1096 |
+
"storm_id": "2025203N20124",
|
| 1097 |
+
"issue_time_utc": "2025-07-29T00:00:00Z",
|
| 1098 |
+
"source_row": 190914
|
| 1099 |
+
},
|
| 1100 |
+
{
|
| 1101 |
+
"storm_id": "2025205N13145",
|
| 1102 |
+
"issue_time_utc": "2025-07-25T12:00:00Z",
|
| 1103 |
+
"source_row": 190949
|
| 1104 |
+
},
|
| 1105 |
+
{
|
| 1106 |
+
"storm_id": "2025205N13145",
|
| 1107 |
+
"issue_time_utc": "2025-07-28T00:00:00Z",
|
| 1108 |
+
"source_row": 190969
|
| 1109 |
+
},
|
| 1110 |
+
{
|
| 1111 |
+
"storm_id": "2025205N13145",
|
| 1112 |
+
"issue_time_utc": "2025-07-31T00:00:00Z",
|
| 1113 |
+
"source_row": 190993
|
| 1114 |
+
},
|
| 1115 |
+
{
|
| 1116 |
+
"storm_id": "2025215N33284",
|
| 1117 |
+
"issue_time_utc": "2025-08-04T18:00:00Z",
|
| 1118 |
+
"source_row": 191117
|
| 1119 |
+
},
|
| 1120 |
+
{
|
| 1121 |
+
"storm_id": "2025215N33284",
|
| 1122 |
+
"issue_time_utc": "2025-08-06T00:00:00Z",
|
| 1123 |
+
"source_row": 191127
|
| 1124 |
+
},
|
| 1125 |
+
{
|
| 1126 |
+
"storm_id": "2025215N33284",
|
| 1127 |
+
"issue_time_utc": "2025-08-08T00:00:00Z",
|
| 1128 |
+
"source_row": 191143
|
| 1129 |
+
},
|
| 1130 |
+
{
|
| 1131 |
+
"storm_id": "2025216N13243",
|
| 1132 |
+
"issue_time_utc": "2025-08-06T06:00:00Z",
|
| 1133 |
+
"source_row": 191178
|
| 1134 |
+
},
|
| 1135 |
+
{
|
| 1136 |
+
"storm_id": "2025216N13243",
|
| 1137 |
+
"issue_time_utc": "2025-08-08T00:00:00Z",
|
| 1138 |
+
"source_row": 191192
|
| 1139 |
+
},
|
| 1140 |
+
{
|
| 1141 |
+
"storm_id": "2025216N13243",
|
| 1142 |
+
"issue_time_utc": "2025-08-09T00:00:00Z",
|
| 1143 |
+
"source_row": 191200
|
| 1144 |
+
},
|
| 1145 |
+
{
|
| 1146 |
+
"storm_id": "2025218N19149",
|
| 1147 |
+
"issue_time_utc": "2025-08-07T18:00:00Z",
|
| 1148 |
+
"source_row": 191235
|
| 1149 |
+
},
|
| 1150 |
+
{
|
| 1151 |
+
"storm_id": "2025218N19149",
|
| 1152 |
+
"issue_time_utc": "2025-08-09T00:00:00Z",
|
| 1153 |
+
"source_row": 191245
|
| 1154 |
+
},
|
| 1155 |
+
{
|
| 1156 |
+
"storm_id": "2025218N19149",
|
| 1157 |
+
"issue_time_utc": "2025-08-10T00:00:00Z",
|
| 1158 |
+
"source_row": 191253
|
| 1159 |
+
},
|
| 1160 |
+
{
|
| 1161 |
+
"storm_id": "2025223N17337",
|
| 1162 |
+
"issue_time_utc": "2025-08-13T00:00:00Z",
|
| 1163 |
+
"source_row": 191307
|
| 1164 |
+
},
|
| 1165 |
+
{
|
| 1166 |
+
"storm_id": "2025223N17337",
|
| 1167 |
+
"issue_time_utc": "2025-08-18T00:00:00Z",
|
| 1168 |
+
"source_row": 191347
|
| 1169 |
+
},
|
| 1170 |
+
{
|
| 1171 |
+
"storm_id": "2025223N17337",
|
| 1172 |
+
"issue_time_utc": "2025-08-22T00:00:00Z",
|
| 1173 |
+
"source_row": 191379
|
| 1174 |
+
},
|
| 1175 |
+
{
|
| 1176 |
+
"storm_id": "2025243N14239",
|
| 1177 |
+
"issue_time_utc": "2025-09-02T00:00:00Z",
|
| 1178 |
+
"source_row": 191506
|
| 1179 |
+
},
|
| 1180 |
+
{
|
| 1181 |
+
"storm_id": "2025243N14239",
|
| 1182 |
+
"issue_time_utc": "2025-09-04T00:00:00Z",
|
| 1183 |
+
"source_row": 191522
|
| 1184 |
+
},
|
| 1185 |
+
{
|
| 1186 |
+
"storm_id": "2025243N14239",
|
| 1187 |
+
"issue_time_utc": "2025-09-06T00:00:00Z",
|
| 1188 |
+
"source_row": 191538
|
| 1189 |
+
},
|
| 1190 |
+
{
|
| 1191 |
+
"storm_id": "2025260N13138",
|
| 1192 |
+
"issue_time_utc": "2025-09-18T18:00:00Z",
|
| 1193 |
+
"source_row": 191710
|
| 1194 |
+
},
|
| 1195 |
+
{
|
| 1196 |
+
"storm_id": "2025260N13138",
|
| 1197 |
+
"issue_time_utc": "2025-09-19T00:00:00Z",
|
| 1198 |
+
"source_row": 191712
|
| 1199 |
+
},
|
| 1200 |
+
{
|
| 1201 |
+
"storm_id": "2025260N13138",
|
| 1202 |
+
"issue_time_utc": "2025-09-20T00:00:00Z",
|
| 1203 |
+
"source_row": 191720
|
| 1204 |
+
},
|
| 1205 |
+
{
|
| 1206 |
+
"storm_id": "2025261N19312",
|
| 1207 |
+
"issue_time_utc": "2025-09-19T18:00:00Z",
|
| 1208 |
+
"source_row": 191757
|
| 1209 |
+
},
|
| 1210 |
+
{
|
| 1211 |
+
"storm_id": "2025261N19312",
|
| 1212 |
+
"issue_time_utc": "2025-09-21T00:00:00Z",
|
| 1213 |
+
"source_row": 191767
|
| 1214 |
+
},
|
| 1215 |
+
{
|
| 1216 |
+
"storm_id": "2025261N19312",
|
| 1217 |
+
"issue_time_utc": "2025-09-23T00:00:00Z",
|
| 1218 |
+
"source_row": 191783
|
| 1219 |
+
},
|
| 1220 |
+
{
|
| 1221 |
+
"storm_id": "2025261N23166",
|
| 1222 |
+
"issue_time_utc": "2025-09-19T12:00:00Z",
|
| 1223 |
+
"source_row": 191822
|
| 1224 |
+
},
|
| 1225 |
+
{
|
| 1226 |
+
"storm_id": "2025261N23166",
|
| 1227 |
+
"issue_time_utc": "2025-09-23T00:00:00Z",
|
| 1228 |
+
"source_row": 191850
|
| 1229 |
+
},
|
| 1230 |
+
{
|
| 1231 |
+
"storm_id": "2025261N23166",
|
| 1232 |
+
"issue_time_utc": "2025-09-26T00:00:00Z",
|
| 1233 |
+
"source_row": 191874
|
| 1234 |
+
},
|
| 1235 |
+
{
|
| 1236 |
+
"storm_id": "2025265N14261",
|
| 1237 |
+
"issue_time_utc": "2025-09-23T18:00:00Z",
|
| 1238 |
+
"source_row": 191907
|
| 1239 |
+
},
|
| 1240 |
+
{
|
| 1241 |
+
"storm_id": "2025265N14261",
|
| 1242 |
+
"issue_time_utc": "2025-09-25T00:00:00Z",
|
| 1243 |
+
"source_row": 191917
|
| 1244 |
+
},
|
| 1245 |
+
{
|
| 1246 |
+
"storm_id": "2025265N14261",
|
| 1247 |
+
"issue_time_utc": "2025-09-26T00:00:00Z",
|
| 1248 |
+
"source_row": 191925
|
| 1249 |
+
},
|
| 1250 |
+
{
|
| 1251 |
+
"storm_id": "2025270N21285",
|
| 1252 |
+
"issue_time_utc": "2025-09-28T18:00:00Z",
|
| 1253 |
+
"source_row": 192030
|
| 1254 |
+
},
|
| 1255 |
+
{
|
| 1256 |
+
"storm_id": "2025270N21285",
|
| 1257 |
+
"issue_time_utc": "2025-09-30T00:00:00Z",
|
| 1258 |
+
"source_row": 192040
|
| 1259 |
+
},
|
| 1260 |
+
{
|
| 1261 |
+
"storm_id": "2025270N21285",
|
| 1262 |
+
"issue_time_utc": "2025-10-01T00:00:00Z",
|
| 1263 |
+
"source_row": 192048
|
| 1264 |
+
},
|
| 1265 |
+
{
|
| 1266 |
+
"storm_id": "2025273N09248",
|
| 1267 |
+
"issue_time_utc": "2025-10-01T18:00:00Z",
|
| 1268 |
+
"source_row": 192081
|
| 1269 |
+
},
|
| 1270 |
+
{
|
| 1271 |
+
"storm_id": "2025273N09248",
|
| 1272 |
+
"issue_time_utc": "2025-10-03T00:00:00Z",
|
| 1273 |
+
"source_row": 192091
|
| 1274 |
+
},
|
| 1275 |
+
{
|
| 1276 |
+
"storm_id": "2025273N09248",
|
| 1277 |
+
"issue_time_utc": "2025-10-04T00:00:00Z",
|
| 1278 |
+
"source_row": 192099
|
| 1279 |
+
},
|
| 1280 |
+
{
|
| 1281 |
+
"storm_id": "2025280N13147",
|
| 1282 |
+
"issue_time_utc": "2025-10-08T12:00:00Z",
|
| 1283 |
+
"source_row": 192259
|
| 1284 |
+
},
|
| 1285 |
+
{
|
| 1286 |
+
"storm_id": "2025280N13147",
|
| 1287 |
+
"issue_time_utc": "2025-10-10T00:00:00Z",
|
| 1288 |
+
"source_row": 192271
|
| 1289 |
+
},
|
| 1290 |
+
{
|
| 1291 |
+
"storm_id": "2025280N13147",
|
| 1292 |
+
"issue_time_utc": "2025-10-11T00:00:00Z",
|
| 1293 |
+
"source_row": 192279
|
| 1294 |
+
},
|
| 1295 |
+
{
|
| 1296 |
+
"storm_id": "2025294N14290",
|
| 1297 |
+
"issue_time_utc": "2025-10-23T06:00:00Z",
|
| 1298 |
+
"source_row": 192400
|
| 1299 |
+
},
|
| 1300 |
+
{
|
| 1301 |
+
"storm_id": "2025294N14290",
|
| 1302 |
+
"issue_time_utc": "2025-10-25T00:00:00Z",
|
| 1303 |
+
"source_row": 192414
|
| 1304 |
+
},
|
| 1305 |
+
{
|
| 1306 |
+
"storm_id": "2025294N14290",
|
| 1307 |
+
"issue_time_utc": "2025-10-27T00:00:00Z",
|
| 1308 |
+
"source_row": 192430
|
| 1309 |
+
},
|
| 1310 |
+
{
|
| 1311 |
+
"storm_id": "2025308N09144",
|
| 1312 |
+
"issue_time_utc": "2025-11-06T06:00:00Z",
|
| 1313 |
+
"source_row": 192525
|
| 1314 |
+
},
|
| 1315 |
+
{
|
| 1316 |
+
"storm_id": "2025308N09144",
|
| 1317 |
+
"issue_time_utc": "2025-11-07T00:00:00Z",
|
| 1318 |
+
"source_row": 192531
|
| 1319 |
+
},
|
| 1320 |
+
{
|
| 1321 |
+
"storm_id": "2025308N09144",
|
| 1322 |
+
"issue_time_utc": "2025-11-08T00:00:00Z",
|
| 1323 |
+
"source_row": 192539
|
| 1324 |
+
},
|
| 1325 |
+
{
|
| 1326 |
+
"storm_id": "2025328N07132",
|
| 1327 |
+
"issue_time_utc": "2025-11-25T12:00:00Z",
|
| 1328 |
+
"source_row": 192611
|
| 1329 |
+
},
|
| 1330 |
+
{
|
| 1331 |
+
"storm_id": "2025328N07132",
|
| 1332 |
+
"issue_time_utc": "2025-11-27T00:00:00Z",
|
| 1333 |
+
"source_row": 192623
|
| 1334 |
+
},
|
| 1335 |
+
{
|
| 1336 |
+
"storm_id": "2025328N07132",
|
| 1337 |
+
"issue_time_utc": "2025-11-28T00:00:00Z",
|
| 1338 |
+
"source_row": 192631
|
| 1339 |
+
},
|
| 1340 |
+
{
|
| 1341 |
+
"storm_id": "2026014N08133",
|
| 1342 |
+
"issue_time_utc": "2026-01-15T18:00:00Z",
|
| 1343 |
+
"source_row": 192940
|
| 1344 |
+
},
|
| 1345 |
+
{
|
| 1346 |
+
"storm_id": "2026014N08133",
|
| 1347 |
+
"issue_time_utc": "2026-01-16T00:00:00Z",
|
| 1348 |
+
"source_row": 192942
|
| 1349 |
+
},
|
| 1350 |
+
{
|
| 1351 |
+
"storm_id": "2026014N08133",
|
| 1352 |
+
"issue_time_utc": "2026-01-17T00:00:00Z",
|
| 1353 |
+
"source_row": 192950
|
| 1354 |
+
}
|
| 1355 |
+
],
|
| 1356 |
+
"leads_hours": [
|
| 1357 |
+
6,
|
| 1358 |
+
12,
|
| 1359 |
+
18,
|
| 1360 |
+
24,
|
| 1361 |
+
30,
|
| 1362 |
+
36,
|
| 1363 |
+
42,
|
| 1364 |
+
48,
|
| 1365 |
+
54,
|
| 1366 |
+
60,
|
| 1367 |
+
66,
|
| 1368 |
+
72,
|
| 1369 |
+
78,
|
| 1370 |
+
84,
|
| 1371 |
+
90,
|
| 1372 |
+
96,
|
| 1373 |
+
102,
|
| 1374 |
+
108,
|
| 1375 |
+
114,
|
| 1376 |
+
120
|
| 1377 |
+
],
|
| 1378 |
+
"member_policy": {
|
| 1379 |
+
"1.1": "saved released causal route pipeline",
|
| 1380 |
+
"1.2": "50 causal historical-input perturbations"
|
| 1381 |
+
},
|
| 1382 |
+
"case_and_truth_alignment": "Exact source-row order and truth-array equality verified",
|
| 1383 |
+
"v11_coordinate_correction": "Archived v11_local held absolute latitude/longitude from build_v11_routes; converted to issue-centred east/north km using the same projection as 1.2. Round-trip back to original coordinates verified. Original archives preserved.",
|
| 1384 |
+
"coordinate_bug_evidence": "benchmark_100_storms_3_days_gpu.py build_v11_routes returns local_to_absolute; benchmark_strict_causal_post2021.py stores and scores that output as local",
|
| 1385 |
+
"source_sha256": {
|
| 1386 |
+
"routes_and_truth.npz": "0eeca56da8ddf0be05ea7f24f6391fa97b44abc6067a7d20e3ed2199948402cb",
|
| 1387 |
+
"v173_e4_causal_ensemble50.npz": "4afc595af1c02096d2cb38563069a9b2fc37c8cff2b439b77eac2ed96e34223e"
|
| 1388 |
+
},
|
| 1389 |
+
"evaluation": "Previously inspected development cohort; not an untouched test",
|
| 1390 |
+
"pressure_comparison": "No verified same-270 1.1 central-pressure predictions in these route artifacts"
|
| 1391 |
+
}
|
evaluation/release_data/daily_storm_cohort.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
evaluation/release_data/map_boundaries.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
[[[130.64,42.395024],[130.64,42.395],[130.779992,42.22001],[130.400031,42.280004],[129.965949,41.941368],[129.667362,41.601104],[129.705189,40.882828],[129.188115,40.661808],[129.0104,40.485436],[128.633368,40.189847],[127.967414,40.025413],[127.533436,39.75685],[127.50212,39.323931],[127.385434,39.213472],[127.783343,39.050898],[128.349716,38.612243],[128.205746,38.370397],[127.780035,38.304536],[127.073309,38.256115],[126.68372,37.804773],[126.237339,37.840378],[126.174759,37.749686],[125.689104,37.94001],[125.568439,37.752089],[125.27533,37.669071],[125.240087,37.857224],[124.981033,37.948821],[124.712161,38.108346],[124.985994,38.548474],[125.221949,38.665857],[125.132859,38.848559],[125.38659,39.387958],[125.321116,39.551385],[124.737482,39.660344],[124.265625,39.928493],[125.079942,40.569824],[126.182045,41.107336],[126.869083,41.816569],[127.343783,41.503152],[128.208433,41.466772],[128.052215,41.994285],[129.596669,42.424982],[129.994267,42.985387],[130.64,42.395024]],[[126.174759,37.749686],[126.237339,37.840378],[126.68372,37.804773],[127.073309,38.256115],[127.780035,38.304536],[128.205746,38.370397],[128.349716,38.612243],[129.21292,37.432392],[129.46045,36.784189],[129.468304,35.632141],[129.091377,35.082484],[128.18585,34.890377],[127.386519,34.475674],[126.485748,34.390046],[126.37392,34.93456],[126.559231,35.684541],[126.117398,36.725485],[126.860143,36.893924],[126.174759,37.749686]],[[80.25999,42.349999],[80.18015,42.920068],[80.866206,43.180362],[79.966106,44.917517],[81.947071,45.317027],[82.458926,45.53965],[83.180484,47.330031],[85.16429,47.000956],[85.720484,47.452969],[85.768233,48.455751],[86.598776,48.549182],[87.35997,49.214981],[87.751264,49.297198],[88.013832,48.599463],[88.854298,48.069082],[90.280826,47.693549],[90.970809,46.888146],[90.585768,45.719716],[90.94554,45.286073],[92.133891,45.115076],[93.480734,44.975472],[94.688929,44.352332],[95.306875,44.241331],[95.762455,43.319449],[96.349396,42.725635],[97.451757,42.74889],[99.515817,42.524691],[100.845866,42.663804],[101.83304,42.514873],[103.312278,41.907468],[104.522282,41.908347],[104.964994,41.59741],[106.129316,42.134328],[107.744773,42.481516],[109.243596,42.519446],[110.412103,42.871234],[111.129682,43.406834],[111.829588,43.743118],[111.667737,44.073176],[111.348377,44.457442],[111.873306,45.102079],[112.436062,45.011646],[113.463907,44.808893],[114.460332,45.339817],[115.985096,45.727235],[116.717868,46.388202],[117.421701,46.672733],[118.874326,46.805412],[119.66327,46.69268],[119.772824,47.048059],[118.866574,47.74706],[118.064143,48.06673],[117.295507,47.697709],[116.308953,47.85341],[115.742837,47.726545],[115.485282,48.135383],[116.191802,49.134598],[116.678801,49.888531],[117.879244,49.510983],[119.288461,50.142883],[119.27939,50.58292],[120.18208,51.64355],[120.7382,51.96411],[120.725789,52.516226],[120.177089,52.753886],[121.003085,53.251401],[122.245748,53.431726],[123.57147,53.4588],[125.068211,53.161045],[125.946349,52.792799],[126.564399,51.784255],[126.939157,51.353894],[127.287456,50.739797],[127.6574,49.76027],[129.397818,49.4406],[130.582293,48.729687],[130.98726,47.79013],[132.50669,47.78896],[133.373596,48.183442],[135.026311,48.47823],[134.50081,47.57845],[134.11235,47.21248],[133.769644,46.116927],[133.09712,45.14409],[131.883454,45.321162],[131.02519,44.96796],[131.288555,44.11152],[131.144688,42.92999],[130.633866,42.903015],[130.64,42.395024],[129.994267,42.985387],[129.596669,42.424982],[128.052215,41.994285],[128.208433,41.466772],[127.343783,41.503152],[126.869083,41.816569],[126.182045,41.107336],[125.079942,40.569824],[124.265625,39.928493],[122.86757,39.637788],[122.131388,39.170452],[121.054554,38.897471],[121.585995,39.360854],[121.376757,39.750261],[122.168595,40.422443],[121.640359,40.94639],[120.768629,40.593388],[119.639602,39.898056],[119.023464,39.252333],[118.042749,39.204274],[117.532702,38.737636],[118.059699,38.061476],[118.87815,37.897325],[118.911636,37.448464],[119.702802,37.156389],[120.823457,37.870428],[121.711259,37.481123],[122.357937,37.454484],[122.519995,36.930614],[121.104164,36.651329],[120.637009,36.11144],[119.664562,35.609791],[119.151208,34.909859],[120.227525,34.360332],[120.620369,33.376723],[121.229014,32.460319],[121.908146,31.692174],[121.891919,30.949352],[121.264257,30.676267],[121.503519,30.142915],[122.092114,29.83252],[121.938428,29.018022],[121.684439,28.225513],[121.125661,28.135673],[120.395473,27.053207],[119.585497,25.740781],[118.656871,24.547391],[117.281606,23.624501],[115.890735,22.782873],[114.763827,22.668074],[114.152547,22.22376],[113.80678,22.54834],[113.241078,22.051367],[111.843592,21.550494],[110.785466,21.397144],[110.444039,20.341033],[109.889861,20.282457],[109.627655,21.008227],[109.864488,21.395051],[108.522813,21.715212],[108.05018,21.55238],[107.04342,21.811899],[106.567273,22.218205],[106.725403,22.794268],[105.811247,22.976892],[105.329209,23.352063],[104.476858,22.81915],[103.504515,22.703757],[102.706992,22.708795],[102.170436,22.464753],[101.652018,22.318199],[101.80312,21.174367],[101.270026,21.201652],[101.180005,21.436573],[101.150033,21.849984],[100.416538,21.558839],[99.983489,21.742937],[99.240899,22.118314],[99.531992,22.949039],[98.898749,23.142722],[98.660262,24.063286],[97.60472,23.897405],[97.724609,25.083637],[98.671838,25.918703],[98.712094,26.743536],[98.68269,27.508812],[98.246231,27.747221],[97.911988,28.335945],[97.327114,28.261583],[96.248833,28.411031],[96.586591,28.83098],[96.117679,29.452802],[95.404802,29.031717],[94.56599,29.277438],[93.413348,28.640629],[92.503119,27.896876],[91.696657,27.771742],[91.258854,28.040614],[90.730514,28.064954],[90.015829,28.296439],[89.47581,28.042759],[88.814248,27.299316],[88.730326,28.086865],[88.120441,27.876542],[86.954517,27.974262],[85.82332,28.203576],[85.011638,28.642774],[84.23458,28.839894],[83.898993,29.320226],[83.337115,29.463732],[82.327513,30.115268],[81.525804,30.422717],[81.111256,30.183481],[79.721367,30.882715],[78.738894,31.515906],[78.458446,32.618164],[79.176129,32.48378],[79.208892,32.994395],[78.811086,33.506198],[78.912269,34.321936],[77.837451,35.49401],[76.192848,35.898403],[75.896897,36.666806],[75.158028,37.133031],[74.980002,37.41999],[74.829986,37.990007],[74.864816,38.378846],[74.257514,38.606507],[73.928852,38.505815],[73.675379,39.431237],[73.960013,39.660008],[73.822244,39.893973],[74.776862,40.366425],[75.467828,40.562072],[76.526368,40.427946],[76.904484,41.066486],[78.187197,41.185316],[78.543661,41.582243],[80.11943,42.123941],[80.25999,42.349999]],[[121.777818,24.394274],[121.175632,22.790857],[120.74708,21.970571],[120.220083,22.814861],[120.106189,23.556263],[120.69468,24.538451],[121.495044,25.295459],[121.951244,24.997596],[121.777818,24.394274]],[[120.833896,12.704496],[120.323436,13.466413],[121.180128,13.429697],[121.527394,13.06959],[121.26219,12.20556],[120.833896,12.704496]],[[122.586089,9.981045],[122.837081,10.261157],[122.947411,10.881868],[123.49885,10.940624],[123.337774,10.267384],[124.077936,11.232726],[123.982438,10.278779],[123.623183,9.950091],[123.309921,9.318269],[122.995883,9.022189],[122.380055,9.713361],[122.586089,9.981045]],[[118.504581,9.316383],[117.174275,8.3675],[117.664477,9.066889],[118.386914,9.6845],[118.987342,10.376292],[119.511496,11.369668],[119.689677,10.554291],[119.029458,10.003653],[118.504581,9.316383]],[[122.336957,18.224883],[122.174279,17.810283],[122.515654,17.093505],[122.252311,16.262444],[121.662786,15.931018],[121.50507,15.124814],[121.728829,14.328376],[122.258925,14.218202],[122.701276,14.336541],[123.950295,13.782131],[123.855107,13.237771],[124.181289,12.997527],[124.077419,12.536677],[123.298035,13.027526],[122.928652,13.55292],[122.671355,13.185836],[122.03465,13.784482],[121.126385,13.636687],[120.628637,13.857656],[120.679384,14.271016],[120.991819,14.525393],[120.693336,14.756671],[120.564145,14.396279],[120.070429,14.970869],[119.920929,15.406347],[119.883773,16.363704],[120.286488,16.034629],[120.390047,17.599081],[120.715867,18.505227],[121.321308,18.504065],[121.937601,18.218552],[122.246006,18.47895],[122.336957,18.224883]],[[122.03837,11.415841],[121.883548,11.891755],[122.483821,11.582187],[123.120217,11.58366],[123.100838,11.165934],[122.637714,10.741308],[122.00261,10.441017],[121.967367,10.905691],[122.03837,11.415841]],[[125.502552,12.162695],[125.783465,11.046122],[125.011884,11.311455],[125.032761,10.975816],[125.277449,10.358722],[124.801819,10.134679],[124.760168,10.837995],[124.459101,10.88993],[124.302522,11.495371],[124.891013,11.415583],[124.87799,11.79419],[124.266762,12.557761],[125.227116,12.535721],[125.502552,12.162695]],[[141.884601,39.180865],[140.959489,38.174001],[140.976388,37.142074],[140.59977,36.343983],[140.774074,35.842877],[140.253279,35.138114],[138.975528,34.6676],[137.217599,34.606286],[135.792983,33.464805],[135.120983,33.849071],[135.079435,34.596545],[133.340316,34.375938],[132.156771,33.904933],[130.986145,33.885761],[132.000036,33.149992],[131.33279,31.450355],[130.686318,31.029579],[130.20242,31.418238],[130.447676,32.319475],[129.814692,32.61031],[129.408463,33.296056],[130.353935,33.604151],[130.878451,34.232743],[131.884229,34.749714],[132.617673,35.433393],[134.608301,35.731618],[135.677538,35.527134],[136.723831,37.304984],[137.390612,36.827391],[138.857602,37.827485],[139.426405,38.215962],[140.05479,39.438807],[139.883379,40.563312],[140.305783,41.195005],[141.368973,41.37856],[141.914263,39.991616],[141.884601,39.180865]],[[132.371176,33.463642],[132.924373,34.060299],[133.492968,33.944621],[133.904106,34.364931],[134.638428,34.149234],[134.766379,33.806335],[134.203416,33.201178],[133.79295,33.521985],[133.280268,33.28957],[133.014858,32.704567],[132.363115,32.989382],[132.371176,33.463642]]]
|
paper/trackformer_1_2_interactive_pressure_preview.png → evaluation/release_data/routes_270.npz
RENAMED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:1f40f85b2ef2de169bd2cee129d95c854b44f030fd2cc45808f517fc0cb7601f
|
| 3 |
+
size 191620
|
paper/release_data/bavi_video.npz → evaluation/release_data/surigae_pressure.npz
RENAMED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:c92c76dbc83374149532d73118b11761d3ffcecc32e33cf313bbeb18e0030905
|
| 3 |
+
size 126102
|
evaluation/release_data/surigae_provenance.json
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"storm_name": "Surigae",
|
| 3 |
+
"issue_time_utc": "2026-09-27T12:00:00Z",
|
| 4 |
+
"valid_times_utc": [
|
| 5 |
+
"2026-09-27T18:00:00Z",
|
| 6 |
+
"2026-09-28T12:00:00Z",
|
| 7 |
+
"2026-09-29T00:00:00Z"
|
| 8 |
+
],
|
| 9 |
+
"members": 1,
|
| 10 |
+
"source_sha256": "18dee6e7df2cca969a73531430599f89d18b2ec4a2bddd8d4b5971cd28dcf7cc",
|
| 11 |
+
"checkpoint_sha256": "f194a23d3f91ea76ad776dfad942fabd669eeae8b3fd665815463095367e9ee0",
|
| 12 |
+
"source_note": "TrackFormer 1.2.73 E4 (v173-moving-core-multiscale-attention), SHA-256 f194a23d3f91ea76ad776dfad942fabd669eeae8b3fd665815463095367e9ee0; one deterministic checkpoint forecast; no ensemble mean. The issue-time JMA central pressure was supplied; issue-time wind and prior motion were unavailable and masked/zeroed. Native regional pressure history is unavailable, so detail_available=0. Nine causal GFS analyses through 2026092706 (6.0 h before the issue) were mapped to the trained NCEP/NCAR contract; geography elevation was normalized once as in training. Transfer is experimental and not operationally validated.",
|
| 13 |
+
"pressure_display": "Unmodified model regional field with 4 hPa contours"
|
| 14 |
+
}
|
paper/release_data/pressure_showcase_coastlines.json → evaluation/release_data/yagi_coastlines.json
RENAMED
|
@@ -1 +1 @@
|
|
| 1 |
-
[[[117.882035,4.137551],[117.313232,3.234428],[118.04833,2.28769],[117.875627,1.827641],[118.996747,0.902219],[117.811858,0.784242],[117.478339,0.102475],[117.521644,-0.803723],[116.560048,-1.487661],[116.533797,-2.483517],[116.148084,-4.012726],[116.000858,-3.657037],[114.864803,-4.106984],[114.468652,-3.495704],[113.755672,-3.43917],[113.256994,-3.118776],[112.068126,-3.478392],[111.703291,-2.994442],[111.04824,-3.049426],[110.223846,-2.934032],[110.070936,-1.592874],[109.571948,-1.314907],[109.091874,-0.459507],[108.952658,0.415375],[109.069136,1.341934],[109.66326,2.006467],[109.830227,1.338136],[110.514061,0.773131],[111.159138,0.976478],[111.797548,0.904441],[112.380252,1.410121],[112.859809,1.49779],[113.80585,1.217549],[114.621355,1.430688],[115.134037,2.821482],[115.519078,3.169238],[115.865517,4.306559],[117.015214,4.306094],[117.882035,4.137551]],[[127.932378,2.174596],[128.004156,1.628531],[128.594559,1.540811],[128.688249,1.132386],[128.635952,0.258486],[128.12017,0.356413],[127.968034,-0.252077],[128.379999,-0.780004],[128.100016,-0.899996],[127.696475,-0.266598],[127.39949,1.011722],[127.600512,1.810691],[127.932378,2.174596]],[[122.927567,0.875192],[124.077522,0.917102],[125.065989,1.643259],[125.240501,1.419836],[124.437035,0.427881],[123.685505,0.235593],[122.723083,0.431137],[121.056725,0.381217],[120.183083,0.237247],[120.04087,-0.519658],[120.935905,-1.408906],[121.475821,-0.955962],[123.340565,-0.615673],[123.258399,-1.076213],[122.822715,-0.930951],[122.38853,-1.516858],[121.508274,-1.904483],[122.454572,-3.186058],[122.271896,-3.5295],[123.170963,-4.683693],[123.162333,-5.340604],[122.628515,-5.634591],[122.236394,-5.282933],[122.719569,-4.464172],[121.738234,-4.851331],[121.489463,-4.574553],[121.619171,-4.188478],[120.898182,-3.602105],[120.972389,-2.627643],[120.305453,-2.931604],[120.390047,-4.097579],[120.430717,-5.528241],[119.796543,-5.6734],[119.366906,-5.379878],[119.653606,-4.459417],[119.498835,-3.494412],[119.078344,-3.487022],[118.767769,-2.801999],[119.180974,-2.147104],[119.323394,-1.353147],[119.825999,0.154254],[120.035702,0.566477],[120.885779,1.309223],[121.666817,1.013944],[122.927567,0.875192]],[[102.584932,12.186595],[102.348099,13.394247],[102.988422,14.225721],[104.281418,14.416743],[105.218777,14.273212],[106.043946,13.881091],[106.496373,14.570584],[107.382727,14.202441],[107.614548,13.535531],[107.491403,12.337206],[105.810524,11.567615],[106.24967,10.961812],[105.199915,10.88931],[104.334335,10.486544],[103.49728,10.632555],[103.09069,11.153661],[102.584932,12.186595]],[[105.218777,14.273212],[104.281418,14.416743],[102.988422,14.225721],[102.348099,13.394247],[102.584932,12.186595],[101.687158,12.64574],[100.83181,12.627085],[100.978467,13.412722],[100.097797,13.406856],[100.018733,12.307001],[99.478921,10.846367],[99.153772,9.963061],[99.222399,9.239255],[99.873832,9.207862],[100.279647,8.295153],[100.459274,7.429573],[101.017328,6.856869],[101.623079,6.740622],[102.141187,6.221636],[101.814282,5.810808],[101.154219,5.691384],[101.075516,6.204867],[100.259596,6.642825],[100.085757,6.464489],[99.690691,6.848213],[99.519642,7.343454],[98.988253,7.907993],[98.503786,8.382305],[98.339662,7.794512],[98.150009,8.350007],[98.25915,8.973923],[98.553551,9.93296],[99.038121,10.960546],[99.587286,11.892763],[99.196354,12.804748],[99.212012,13.269294],[99.097755,13.827503],[98.430819,14.622028],[98.192074,15.123703],[98.537376,15.308497],[98.903348,16.177824],[98.493761,16.837836],[97.859123,17.567946],[97.375896,18.445438],[97.797783,18.62708],[98.253724,19.708203],[98.959676,19.752981],[99.543309,20.186598],[100.115988,20.41785],[100.548881,20.109238],[100.606294,19.508344],[101.282015,19.462585],[101.035931,18.408928],[101.059548,17.512497],[102.113592,18.109102],[102.413005,17.932782],[102.998706,17.961695],[103.200192,18.309632],[103.956477,18.240954],[104.716947,17.428859],[104.779321,16.441865],[105.589039,15.570316],[105.544338,14.723934],[105.218777,14.273212]],[[107.382727,14.202441],[106.496373,14.570584],[106.043946,13.881091],[105.218777,14.273212],[105.544338,14.723934],[105.589039,15.570316],[104.779321,16.441865],[104.716947,17.428859],[103.956477,18.240954],[103.200192,18.309632],[102.998706,17.961695],[102.413005,17.932782],[102.113592,18.109102],[101.059548,17.512497],[101.035931,18.408928],[101.282015,19.462585],[100.606294,19.508344],[100.548881,20.109238],[100.115988,20.41785],[100.329101,20.786122],[101.180005,21.436573],[101.270026,21.201652],[101.80312,21.174367],[101.652018,22.318199],[102.170436,22.464753],[102.754896,21.675137],[103.203861,20.766562],[104.435,20.758733],[104.822574,19.886642],[104.183388,19.624668],[103.896532,19.265181],[105.094598,18.666975],[105.925762,17.485315],[106.556008,16.604284],[107.312706,15.908538],[107.564525,15.202173],[107.382727,14.202441]],[[104.334335,10.486544],[105.199915,10.88931],[106.24967,10.961812],[105.810524,11.567615],[107.491403,12.337206],[107.614548,13.535531],[107.382727,14.202441],[107.564525,15.202173],[107.312706,15.908538],[106.556008,16.604284],[105.925762,17.485315],[105.094598,18.666975],[103.896532,19.265181],[104.183388,19.624668],[104.822574,19.886642],[104.435,20.758733],[103.203861,20.766562],[102.754896,21.675137],[102.170436,22.464753],[102.706992,22.708795],[103.504515,22.703757],[104.476858,22.81915],[105.329209,23.352063],[105.811247,22.976892],[106.725403,22.794268],[106.567273,22.218205],[107.04342,21.811899],[108.05018,21.55238],[106.715068,20.696851],[105.881682,19.75205],[105.662006,19.058165],[106.426817,18.004121],[107.361954,16.697457],[108.269495,16.079742],[108.877107,15.276691],[109.33527,13.426028],[109.200136,11.666859],[108.36613,11.008321],[107.220929,10.364484],[106.405113,9.53084],[105.158264,8.59976],[104.795185,9.241038],[105.076202,9.918491],[104.334335,10.486544]],[[109.47521,18.197701],[108.655208,18.507682],[108.626217,19.367888],[109.119056,19.821039],[110.211599,20.101254],[110.786551,20.077534],[111.010051,19.69593],[110.570647,19.255879],[110.339188,18.678395],[109.47521,18.197701]],[[80.25999,42.349999],[80.18015,42.920068],[80.866206,43.180362],[79.966106,44.917517],[81.947071,45.317027],[82.458926,45.53965],[83.180484,47.330031],[85.16429,47.000956],[85.720484,47.452969],[85.768233,48.455751],[86.598776,48.549182],[87.35997,49.214981],[87.751264,49.297198],[88.013832,48.599463],[88.854298,48.069082],[90.280826,47.693549],[90.970809,46.888146],[90.585768,45.719716],[90.94554,45.286073],[92.133891,45.115076],[93.480734,44.975472],[94.688929,44.352332],[95.306875,44.241331],[95.762455,43.319449],[96.349396,42.725635],[97.451757,42.74889],[99.515817,42.524691],[100.845866,42.663804],[101.83304,42.514873],[103.312278,41.907468],[104.522282,41.908347],[104.964994,41.59741],[106.129316,42.134328],[107.744773,42.481516],[109.243596,42.519446],[110.412103,42.871234],[111.129682,43.406834],[111.829588,43.743118],[111.667737,44.073176],[111.348377,44.457442],[111.873306,45.102079],[112.436062,45.011646],[113.463907,44.808893],[114.460332,45.339817],[115.985096,45.727235],[116.717868,46.388202],[117.421701,46.672733],[118.874326,46.805412],[119.66327,46.69268],[119.772824,47.048059],[118.866574,47.74706],[118.064143,48.06673],[117.295507,47.697709],[116.308953,47.85341],[115.742837,47.726545],[115.485282,48.135383],[116.191802,49.134598],[116.678801,49.888531],[117.879244,49.510983],[119.288461,50.142883],[119.27939,50.58292],[120.18208,51.64355],[120.7382,51.96411],[120.725789,52.516226],[120.177089,52.753886],[121.003085,53.251401],[122.245748,53.431726],[123.57147,53.4588],[125.068211,53.161045],[125.946349,52.792799],[126.564399,51.784255],[126.939157,51.353894],[127.287456,50.739797],[127.6574,49.76027],[129.397818,49.4406],[130.582293,48.729687],[130.98726,47.79013],[132.50669,47.78896],[133.373596,48.183442],[135.026311,48.47823],[134.50081,47.57845],[134.11235,47.21248],[133.769644,46.116927],[133.09712,45.14409],[131.883454,45.321162],[131.02519,44.96796],[131.288555,44.11152],[131.144688,42.92999],[130.633866,42.903015],[130.64,42.395024],[129.994267,42.985387],[129.596669,42.424982],[128.052215,41.994285],[128.208433,41.466772],[127.343783,41.503152],[126.869083,41.816569],[126.182045,41.107336],[125.079942,40.569824],[124.265625,39.928493],[122.86757,39.637788],[122.131388,39.170452],[121.054554,38.897471],[121.585995,39.360854],[121.376757,39.750261],[122.168595,40.422443],[121.640359,40.94639],[120.768629,40.593388],[119.639602,39.898056],[119.023464,39.252333],[118.042749,39.204274],[117.532702,38.737636],[118.059699,38.061476],[118.87815,37.897325],[118.911636,37.448464],[119.702802,37.156389],[120.823457,37.870428],[121.711259,37.481123],[122.357937,37.454484],[122.519995,36.930614],[121.104164,36.651329],[120.637009,36.11144],[119.664562,35.609791],[119.151208,34.909859],[120.227525,34.360332],[120.620369,33.376723],[121.229014,32.460319],[121.908146,31.692174],[121.891919,30.949352],[121.264257,30.676267],[121.503519,30.142915],[122.092114,29.83252],[121.938428,29.018022],[121.684439,28.225513],[121.125661,28.135673],[120.395473,27.053207],[119.585497,25.740781],[118.656871,24.547391],[117.281606,23.624501],[115.890735,22.782873],[114.763827,22.668074],[114.152547,22.22376],[113.80678,22.54834],[113.241078,22.051367],[111.843592,21.550494],[110.785466,21.397144],[110.444039,20.341033],[109.889861,20.282457],[109.627655,21.008227],[109.864488,21.395051],[108.522813,21.715212],[108.05018,21.55238],[107.04342,21.811899],[106.567273,22.218205],[106.725403,22.794268],[105.811247,22.976892],[105.329209,23.352063],[104.476858,22.81915],[103.504515,22.703757],[102.706992,22.708795],[102.170436,22.464753],[101.652018,22.318199],[101.80312,21.174367],[101.270026,21.201652],[101.180005,21.436573],[101.150033,21.849984],[100.416538,21.558839],[99.983489,21.742937],[99.240899,22.118314],[99.531992,22.949039],[98.898749,23.142722],[98.660262,24.063286],[97.60472,23.897405],[97.724609,25.083637],[98.671838,25.918703],[98.712094,26.743536],[98.68269,27.508812],[98.246231,27.747221],[97.911988,28.335945],[97.327114,28.261583],[96.248833,28.411031],[96.586591,28.83098],[96.117679,29.452802],[95.404802,29.031717],[94.56599,29.277438],[93.413348,28.640629],[92.503119,27.896876],[91.696657,27.771742],[91.258854,28.040614],[90.730514,28.064954],[90.015829,28.296439],[89.47581,28.042759],[88.814248,27.299316],[88.730326,28.086865],[88.120441,27.876542],[86.954517,27.974262],[85.82332,28.203576],[85.011638,28.642774],[84.23458,28.839894],[83.898993,29.320226],[83.337115,29.463732],[82.327513,30.115268],[81.525804,30.422717],[81.111256,30.183481],[79.721367,30.882715],[78.738894,31.515906],[78.458446,32.618164],[79.176129,32.48378],[79.208892,32.994395],[78.811086,33.506198],[78.912269,34.321936],[77.837451,35.49401],[76.192848,35.898403],[75.896897,36.666806],[75.158028,37.133031],[74.980002,37.41999],[74.829986,37.990007],[74.864816,38.378846],[74.257514,38.606507],[73.928852,38.505815],[73.675379,39.431237],[73.960013,39.660008],[73.822244,39.893973],[74.776862,40.366425],[75.467828,40.562072],[76.526368,40.427946],[76.904484,41.066486],[78.187197,41.185316],[78.543661,41.582243],[80.11943,42.123941],[80.25999,42.349999]],[[121.777818,24.394274],[121.175632,22.790857],[120.74708,21.970571],[120.220083,22.814861],[120.106189,23.556263],[120.69468,24.538451],[121.495044,25.295459],[121.951244,24.997596],[121.777818,24.394274]],[[120.833896,12.704496],[120.323436,13.466413],[121.180128,13.429697],[121.527394,13.06959],[121.26219,12.20556],[120.833896,12.704496]],[[122.586089,9.981045],[122.837081,10.261157],[122.947411,10.881868],[123.49885,10.940624],[123.337774,10.267384],[124.077936,11.232726],[123.982438,10.278779],[123.623183,9.950091],[123.309921,9.318269],[122.995883,9.022189],[122.380055,9.713361],[122.586089,9.981045]],[[126.376814,8.414706],[126.478513,7.750354],[126.537424,7.189381],[126.196773,6.274294],[125.831421,7.293715],[125.363852,6.786485],[125.683161,6.049657],[125.396512,5.581003],[124.219788,6.161355],[123.93872,6.885136],[124.243662,7.36061],[123.610212,7.833527],[123.296071,7.418876],[122.825506,7.457375],[122.085499,6.899424],[121.919928,7.192119],[122.312359,8.034962],[122.942398,8.316237],[123.487688,8.69301],[123.841154,8.240324],[124.60147,8.514158],[124.764612,8.960409],[125.471391,8.986997],[125.412118,9.760335],[126.222714,9.286074],[126.306637,8.782487],[126.376814,8.414706]],[[118.504581,9.316383],[117.174275,8.3675],[117.664477,9.066889],[118.386914,9.6845],[118.987342,10.376292],[119.511496,11.369668],[119.689677,10.554291],[119.029458,10.003653],[118.504581,9.316383]],[[122.336957,18.224883],[122.174279,17.810283],[122.515654,17.093505],[122.252311,16.262444],[121.662786,15.931018],[121.50507,15.124814],[121.728829,14.328376],[122.258925,14.218202],[122.701276,14.336541],[123.950295,13.782131],[123.855107,13.237771],[124.181289,12.997527],[124.077419,12.536677],[123.298035,13.027526],[122.928652,13.55292],[122.671355,13.185836],[122.03465,13.784482],[121.126385,13.636687],[120.628637,13.857656],[120.679384,14.271016],[120.991819,14.525393],[120.693336,14.756671],[120.564145,14.396279],[120.070429,14.970869],[119.920929,15.406347],[119.883773,16.363704],[120.286488,16.034629],[120.390047,17.599081],[120.715867,18.505227],[121.321308,18.504065],[121.937601,18.218552],[122.246006,18.47895],[122.336957,18.224883]],[[122.03837,11.415841],[121.883548,11.891755],[122.483821,11.582187],[123.120217,11.58366],[123.100838,11.165934],[122.637714,10.741308],[122.00261,10.441017],[121.967367,10.905691],[122.03837,11.415841]],[[125.502552,12.162695],[125.783465,11.046122],[125.011884,11.311455],[125.032761,10.975816],[125.277449,10.358722],[124.801819,10.134679],[124.760168,10.837995],[124.459101,10.88993],[124.302522,11.495371],[124.891013,11.415583],[124.87799,11.79419],[124.266762,12.557761],[125.227116,12.535721],[125.502552,12.162695]],[[100.085757,6.464489],[100.259596,6.642825],[101.075516,6.204867],[101.154219,5.691384],[101.814282,5.810808],[102.141187,6.221636],[102.371147,6.128205],[102.961705,5.524495],[103.381215,4.855001],[103.438575,4.181606],[103.332122,3.726698],[103.429429,3.382869],[103.502448,2.791019],[103.854674,2.515454],[104.247932,1.631141],[104.228811,1.293048],[103.519707,1.226334],[102.573615,1.967115],[101.390638,2.760814],[101.27354,3.270292],[100.695435,3.93914],[100.557408,4.76728],[100.196706,5.312493],[100.30626,6.040562],[100.085757,6.464489]],[[117.882035,4.137551],[117.015214,4.306094],[115.865517,4.306559],[115.519078,3.169238],[115.134037,2.821482],[114.621355,1.430688],[113.80585,1.217549],[112.859809,1.49779],[112.380252,1.410121],[111.797548,0.904441],[111.159138,0.976478],[110.514061,0.773131],[109.830227,1.338136],[109.66326,2.006467],[110.396135,1.663775],[111.168853,1.850637],[111.370081,2.697303],[111.796928,2.885897],[112.995615,3.102395],[113.712935,3.893509],[114.204017,4.525874],[114.659596,4.007637],[114.869557,4.348314],[115.347461,4.316636],[115.4057,4.955228],[115.45071,5.44773],[116.220741,6.143191],[116.725103,6.924771],[117.129626,6.928053],[117.643393,6.422166],[117.689075,5.98749],[118.347691,5.708696],[119.181904,5.407836],[119.110694,5.016128],[118.439727,4.966519],[118.618321,4.478202],[117.882035,4.137551]],[[115.45071,5.44773],[115.4057,4.955228],[115.347461,4.316636],[114.869557,4.348314],[114.659596,4.007637],[114.204017,4.525874],[114.599961,4.900011],[115.45071,5.44773]]]
|
|
|
|
| 1 |
+
[[[102.584932,12.186595],[102.348099,13.394247],[102.988422,14.225721],[104.281418,14.416743],[105.218777,14.273212],[106.043946,13.881091],[106.496373,14.570584],[107.382727,14.202441],[107.614548,13.535531],[107.491403,12.337206],[105.810524,11.567615],[106.24967,10.961812],[105.199915,10.88931],[104.334335,10.486544],[103.49728,10.632555],[103.09069,11.153661],[102.584932,12.186595]],[[105.218777,14.273212],[104.281418,14.416743],[102.988422,14.225721],[102.348099,13.394247],[102.584932,12.186595],[101.687158,12.64574],[100.83181,12.627085],[100.978467,13.412722],[100.097797,13.406856],[100.018733,12.307001],[99.478921,10.846367],[99.153772,9.963061],[99.222399,9.239255],[99.873832,9.207862],[100.279647,8.295153],[100.459274,7.429573],[101.017328,6.856869],[101.623079,6.740622],[102.141187,6.221636],[101.814282,5.810808],[101.154219,5.691384],[101.075516,6.204867],[100.259596,6.642825],[100.085757,6.464489],[99.690691,6.848213],[99.519642,7.343454],[98.988253,7.907993],[98.503786,8.382305],[98.339662,7.794512],[98.150009,8.350007],[98.25915,8.973923],[98.553551,9.93296],[99.038121,10.960546],[99.587286,11.892763],[99.196354,12.804748],[99.212012,13.269294],[99.097755,13.827503],[98.430819,14.622028],[98.192074,15.123703],[98.537376,15.308497],[98.903348,16.177824],[98.493761,16.837836],[97.859123,17.567946],[97.375896,18.445438],[97.797783,18.62708],[98.253724,19.708203],[98.959676,19.752981],[99.543309,20.186598],[100.115988,20.41785],[100.548881,20.109238],[100.606294,19.508344],[101.282015,19.462585],[101.035931,18.408928],[101.059548,17.512497],[102.113592,18.109102],[102.413005,17.932782],[102.998706,17.961695],[103.200192,18.309632],[103.956477,18.240954],[104.716947,17.428859],[104.779321,16.441865],[105.589039,15.570316],[105.544338,14.723934],[105.218777,14.273212]],[[107.382727,14.202441],[106.496373,14.570584],[106.043946,13.881091],[105.218777,14.273212],[105.544338,14.723934],[105.589039,15.570316],[104.779321,16.441865],[104.716947,17.428859],[103.956477,18.240954],[103.200192,18.309632],[102.998706,17.961695],[102.413005,17.932782],[102.113592,18.109102],[101.059548,17.512497],[101.035931,18.408928],[101.282015,19.462585],[100.606294,19.508344],[100.548881,20.109238],[100.115988,20.41785],[100.329101,20.786122],[101.180005,21.436573],[101.270026,21.201652],[101.80312,21.174367],[101.652018,22.318199],[102.170436,22.464753],[102.754896,21.675137],[103.203861,20.766562],[104.435,20.758733],[104.822574,19.886642],[104.183388,19.624668],[103.896532,19.265181],[105.094598,18.666975],[105.925762,17.485315],[106.556008,16.604284],[107.312706,15.908538],[107.564525,15.202173],[107.382727,14.202441]],[[100.115988,20.41785],[99.543309,20.186598],[98.959676,19.752981],[98.253724,19.708203],[97.797783,18.62708],[97.375896,18.445438],[97.859123,17.567946],[98.493761,16.837836],[98.903348,16.177824],[98.537376,15.308497],[98.192074,15.123703],[98.430819,14.622028],[99.097755,13.827503],[99.212012,13.269294],[99.196354,12.804748],[99.587286,11.892763],[99.038121,10.960546],[98.553551,9.93296],[98.457174,10.675266],[98.764546,11.441292],[98.428339,12.032987],[98.509574,13.122378],[98.103604,13.64046],[97.777732,14.837286],[97.597072,16.100568],[97.16454,16.928734],[96.505769,16.427241],[95.369352,15.71439],[94.808405,15.803454],[94.188804,16.037936],[94.533486,17.27724],[94.324817,18.213514],[93.540988,19.366493],[93.663255,19.726962],[93.078278,19.855145],[92.368554,20.670883],[92.303234,21.475485],[92.652257,21.324048],[92.672721,22.041239],[93.166128,22.27846],[93.060294,22.703111],[93.286327,23.043658],[93.325188,24.078556],[94.106742,23.850741],[94.552658,24.675238],[94.603249,25.162495],[95.155153,26.001307],[95.124768,26.573572],[96.419366,27.264589],[97.133999,27.083774],[97.051989,27.699059],[97.402561,27.882536],[97.327114,28.261583],[97.911988,28.335945],[98.246231,27.747221],[98.68269,27.508812],[98.712094,26.743536],[98.671838,25.918703],[97.724609,25.083637],[97.60472,23.897405],[98.660262,24.063286],[98.898749,23.142722],[99.531992,22.949039],[99.240899,22.118314],[99.983489,21.742937],[100.416538,21.558839],[101.150033,21.849984],[101.180005,21.436573],[100.329101,20.786122],[100.115988,20.41785]],[[104.334335,10.486544],[105.199915,10.88931],[106.24967,10.961812],[105.810524,11.567615],[107.491403,12.337206],[107.614548,13.535531],[107.382727,14.202441],[107.564525,15.202173],[107.312706,15.908538],[106.556008,16.604284],[105.925762,17.485315],[105.094598,18.666975],[103.896532,19.265181],[104.183388,19.624668],[104.822574,19.886642],[104.435,20.758733],[103.203861,20.766562],[102.754896,21.675137],[102.170436,22.464753],[102.706992,22.708795],[103.504515,22.703757],[104.476858,22.81915],[105.329209,23.352063],[105.811247,22.976892],[106.725403,22.794268],[106.567273,22.218205],[107.04342,21.811899],[108.05018,21.55238],[106.715068,20.696851],[105.881682,19.75205],[105.662006,19.058165],[106.426817,18.004121],[107.361954,16.697457],[108.269495,16.079742],[108.877107,15.276691],[109.33527,13.426028],[109.200136,11.666859],[108.36613,11.008321],[107.220929,10.364484],[106.405113,9.53084],[105.158264,8.59976],[104.795185,9.241038],[105.076202,9.918491],[104.334335,10.486544]],[[109.47521,18.197701],[108.655208,18.507682],[108.626217,19.367888],[109.119056,19.821039],[110.211599,20.101254],[110.786551,20.077534],[111.010051,19.69593],[110.570647,19.255879],[110.339188,18.678395],[109.47521,18.197701]],[[80.25999,42.349999],[80.18015,42.920068],[80.866206,43.180362],[79.966106,44.917517],[81.947071,45.317027],[82.458926,45.53965],[83.180484,47.330031],[85.16429,47.000956],[85.720484,47.452969],[85.768233,48.455751],[86.598776,48.549182],[87.35997,49.214981],[87.751264,49.297198],[88.013832,48.599463],[88.854298,48.069082],[90.280826,47.693549],[90.970809,46.888146],[90.585768,45.719716],[90.94554,45.286073],[92.133891,45.115076],[93.480734,44.975472],[94.688929,44.352332],[95.306875,44.241331],[95.762455,43.319449],[96.349396,42.725635],[97.451757,42.74889],[99.515817,42.524691],[100.845866,42.663804],[101.83304,42.514873],[103.312278,41.907468],[104.522282,41.908347],[104.964994,41.59741],[106.129316,42.134328],[107.744773,42.481516],[109.243596,42.519446],[110.412103,42.871234],[111.129682,43.406834],[111.829588,43.743118],[111.667737,44.073176],[111.348377,44.457442],[111.873306,45.102079],[112.436062,45.011646],[113.463907,44.808893],[114.460332,45.339817],[115.985096,45.727235],[116.717868,46.388202],[117.421701,46.672733],[118.874326,46.805412],[119.66327,46.69268],[119.772824,47.048059],[118.866574,47.74706],[118.064143,48.06673],[117.295507,47.697709],[116.308953,47.85341],[115.742837,47.726545],[115.485282,48.135383],[116.191802,49.134598],[116.678801,49.888531],[117.879244,49.510983],[119.288461,50.142883],[119.27939,50.58292],[120.18208,51.64355],[120.7382,51.96411],[120.725789,52.516226],[120.177089,52.753886],[121.003085,53.251401],[122.245748,53.431726],[123.57147,53.4588],[125.068211,53.161045],[125.946349,52.792799],[126.564399,51.784255],[126.939157,51.353894],[127.287456,50.739797],[127.6574,49.76027],[129.397818,49.4406],[130.582293,48.729687],[130.98726,47.79013],[132.50669,47.78896],[133.373596,48.183442],[135.026311,48.47823],[134.50081,47.57845],[134.11235,47.21248],[133.769644,46.116927],[133.09712,45.14409],[131.883454,45.321162],[131.02519,44.96796],[131.288555,44.11152],[131.144688,42.92999],[130.633866,42.903015],[130.64,42.395024],[129.994267,42.985387],[129.596669,42.424982],[128.052215,41.994285],[128.208433,41.466772],[127.343783,41.503152],[126.869083,41.816569],[126.182045,41.107336],[125.079942,40.569824],[124.265625,39.928493],[122.86757,39.637788],[122.131388,39.170452],[121.054554,38.897471],[121.585995,39.360854],[121.376757,39.750261],[122.168595,40.422443],[121.640359,40.94639],[120.768629,40.593388],[119.639602,39.898056],[119.023464,39.252333],[118.042749,39.204274],[117.532702,38.737636],[118.059699,38.061476],[118.87815,37.897325],[118.911636,37.448464],[119.702802,37.156389],[120.823457,37.870428],[121.711259,37.481123],[122.357937,37.454484],[122.519995,36.930614],[121.104164,36.651329],[120.637009,36.11144],[119.664562,35.609791],[119.151208,34.909859],[120.227525,34.360332],[120.620369,33.376723],[121.229014,32.460319],[121.908146,31.692174],[121.891919,30.949352],[121.264257,30.676267],[121.503519,30.142915],[122.092114,29.83252],[121.938428,29.018022],[121.684439,28.225513],[121.125661,28.135673],[120.395473,27.053207],[119.585497,25.740781],[118.656871,24.547391],[117.281606,23.624501],[115.890735,22.782873],[114.763827,22.668074],[114.152547,22.22376],[113.80678,22.54834],[113.241078,22.051367],[111.843592,21.550494],[110.785466,21.397144],[110.444039,20.341033],[109.889861,20.282457],[109.627655,21.008227],[109.864488,21.395051],[108.522813,21.715212],[108.05018,21.55238],[107.04342,21.811899],[106.567273,22.218205],[106.725403,22.794268],[105.811247,22.976892],[105.329209,23.352063],[104.476858,22.81915],[103.504515,22.703757],[102.706992,22.708795],[102.170436,22.464753],[101.652018,22.318199],[101.80312,21.174367],[101.270026,21.201652],[101.180005,21.436573],[101.150033,21.849984],[100.416538,21.558839],[99.983489,21.742937],[99.240899,22.118314],[99.531992,22.949039],[98.898749,23.142722],[98.660262,24.063286],[97.60472,23.897405],[97.724609,25.083637],[98.671838,25.918703],[98.712094,26.743536],[98.68269,27.508812],[98.246231,27.747221],[97.911988,28.335945],[97.327114,28.261583],[96.248833,28.411031],[96.586591,28.83098],[96.117679,29.452802],[95.404802,29.031717],[94.56599,29.277438],[93.413348,28.640629],[92.503119,27.896876],[91.696657,27.771742],[91.258854,28.040614],[90.730514,28.064954],[90.015829,28.296439],[89.47581,28.042759],[88.814248,27.299316],[88.730326,28.086865],[88.120441,27.876542],[86.954517,27.974262],[85.82332,28.203576],[85.011638,28.642774],[84.23458,28.839894],[83.898993,29.320226],[83.337115,29.463732],[82.327513,30.115268],[81.525804,30.422717],[81.111256,30.183481],[79.721367,30.882715],[78.738894,31.515906],[78.458446,32.618164],[79.176129,32.48378],[79.208892,32.994395],[78.811086,33.506198],[78.912269,34.321936],[77.837451,35.49401],[76.192848,35.898403],[75.896897,36.666806],[75.158028,37.133031],[74.980002,37.41999],[74.829986,37.990007],[74.864816,38.378846],[74.257514,38.606507],[73.928852,38.505815],[73.675379,39.431237],[73.960013,39.660008],[73.822244,39.893973],[74.776862,40.366425],[75.467828,40.562072],[76.526368,40.427946],[76.904484,41.066486],[78.187197,41.185316],[78.543661,41.582243],[80.11943,42.123941],[80.25999,42.349999]],[[121.777818,24.394274],[121.175632,22.790857],[120.74708,21.970571],[120.220083,22.814861],[120.106189,23.556263],[120.69468,24.538451],[121.495044,25.295459],[121.951244,24.997596],[121.777818,24.394274]],[[120.833896,12.704496],[120.323436,13.466413],[121.180128,13.429697],[121.527394,13.06959],[121.26219,12.20556],[120.833896,12.704496]],[[122.336957,18.224883],[122.174279,17.810283],[122.515654,17.093505],[122.252311,16.262444],[121.662786,15.931018],[121.50507,15.124814],[121.728829,14.328376],[122.258925,14.218202],[122.701276,14.336541],[123.950295,13.782131],[123.855107,13.237771],[124.181289,12.997527],[124.077419,12.536677],[123.298035,13.027526],[122.928652,13.55292],[122.671355,13.185836],[122.03465,13.784482],[121.126385,13.636687],[120.628637,13.857656],[120.679384,14.271016],[120.991819,14.525393],[120.693336,14.756671],[120.564145,14.396279],[120.070429,14.970869],[119.920929,15.406347],[119.883773,16.363704],[120.286488,16.034629],[120.390047,17.599081],[120.715867,18.505227],[121.321308,18.504065],[121.937601,18.218552],[122.246006,18.47895],[122.336957,18.224883]],[[125.502552,12.162695],[125.783465,11.046122],[125.011884,11.311455],[125.032761,10.975816],[125.277449,10.358722],[124.801819,10.134679],[124.760168,10.837995],[124.459101,10.88993],[124.302522,11.495371],[124.891013,11.415583],[124.87799,11.79419],[124.266762,12.557761],[125.227116,12.535721],[125.502552,12.162695]]]
|
evaluation/release_data/yagi_video.json
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "Trackformer 1.2",
|
| 3 |
+
"storm": "YAGI",
|
| 4 |
+
"storm_id": "2024244N09137",
|
| 5 |
+
"issue_time_utc": "2024-09-03T00:00:00Z",
|
| 6 |
+
"source_row": 187744,
|
| 7 |
+
"case_index": 178,
|
| 8 |
+
"members": 50,
|
| 9 |
+
"ensemble_policy": {
|
| 10 |
+
"member_count": 50,
|
| 11 |
+
"member_ids": [
|
| 12 |
+
0,
|
| 13 |
+
1,
|
| 14 |
+
2,
|
| 15 |
+
3,
|
| 16 |
+
4,
|
| 17 |
+
5,
|
| 18 |
+
6,
|
| 19 |
+
7,
|
| 20 |
+
8,
|
| 21 |
+
9,
|
| 22 |
+
10,
|
| 23 |
+
11,
|
| 24 |
+
12,
|
| 25 |
+
13,
|
| 26 |
+
14,
|
| 27 |
+
15,
|
| 28 |
+
16,
|
| 29 |
+
17,
|
| 30 |
+
18,
|
| 31 |
+
19,
|
| 32 |
+
20,
|
| 33 |
+
21,
|
| 34 |
+
22,
|
| 35 |
+
23,
|
| 36 |
+
24,
|
| 37 |
+
25,
|
| 38 |
+
26,
|
| 39 |
+
27,
|
| 40 |
+
28,
|
| 41 |
+
29,
|
| 42 |
+
30,
|
| 43 |
+
31,
|
| 44 |
+
32,
|
| 45 |
+
33,
|
| 46 |
+
34,
|
| 47 |
+
35,
|
| 48 |
+
36,
|
| 49 |
+
37,
|
| 50 |
+
38,
|
| 51 |
+
39,
|
| 52 |
+
40,
|
| 53 |
+
41,
|
| 54 |
+
42,
|
| 55 |
+
43,
|
| 56 |
+
44,
|
| 57 |
+
45,
|
| 58 |
+
46,
|
| 59 |
+
47,
|
| 60 |
+
48,
|
| 61 |
+
49
|
| 62 |
+
],
|
| 63 |
+
"seed_base": 2043,
|
| 64 |
+
"member_seed": "seed_base + member_id",
|
| 65 |
+
"global_history_noise": {
|
| 66 |
+
"amplitude_normalized": 0.025,
|
| 67 |
+
"spatial_smoothing_kernel": 5,
|
| 68 |
+
"per_history_map_centered_and_unit_scaled": true
|
| 69 |
+
},
|
| 70 |
+
"regional_history_noise": {
|
| 71 |
+
"amplitude_normalized": 0.015,
|
| 72 |
+
"spatial_smoothing_kernel": 9,
|
| 73 |
+
"per_history_map_centered_and_unit_scaled": true
|
| 74 |
+
},
|
| 75 |
+
"perturbed_inputs": [
|
| 76 |
+
"global_history",
|
| 77 |
+
"regional_history"
|
| 78 |
+
],
|
| 79 |
+
"future_weather_as_inputs": false,
|
| 80 |
+
"future_best_track_as_inputs": false,
|
| 81 |
+
"official_forecasts_as_inputs": false,
|
| 82 |
+
"clean_comparator": "same checkpoint, one unperturbed causal evaluation pass"
|
| 83 |
+
},
|
| 84 |
+
"leads_hours": [
|
| 85 |
+
6,
|
| 86 |
+
12,
|
| 87 |
+
18,
|
| 88 |
+
24,
|
| 89 |
+
30,
|
| 90 |
+
36,
|
| 91 |
+
42,
|
| 92 |
+
48,
|
| 93 |
+
54,
|
| 94 |
+
60,
|
| 95 |
+
66,
|
| 96 |
+
72,
|
| 97 |
+
78,
|
| 98 |
+
84,
|
| 99 |
+
90,
|
| 100 |
+
96,
|
| 101 |
+
102,
|
| 102 |
+
108,
|
| 103 |
+
114,
|
| 104 |
+
120
|
| 105 |
+
],
|
| 106 |
+
"source_archive_sha256": "4afc595af1c02096d2cb38563069a9b2fc37c8cff2b439b77eac2ed96e34223e",
|
| 107 |
+
"source_report_sha256": "40ee814e067ac002b8930694ef01e3d9de3fb04c07b7f22b59dfec5fd6492ba7",
|
| 108 |
+
"observed_csv_sha256": "4348af2679b4be0d53ec630bccda759044663a1f57e2bbd5c1d19428aab562fc",
|
| 109 |
+
"data_sha256": "9167bc89c1ea85dc2c133f901f0a084ba06c02762b257194f5354f9d6c3a532b",
|
| 110 |
+
"checkpoint_sha256": "f194a23d3f91ea76ad776dfad942fabd669eeae8b3fd665815463095367e9ee0",
|
| 111 |
+
"observed_route_source": "Exact six-hour IBTrACS LAT/LON for the same storm and valid timestamps.",
|
| 112 |
+
"observed_pressure_source": "IBTrACS TOKYO_PRES (JMA best-track central pressure), not an official forecast.",
|
| 113 |
+
"route_projection": "Saved mean local east/north km converted using issue latitude; no fitting, translation, rotation or scaling to observed route.",
|
| 114 |
+
"field_source": "Unmodified saved ensemble50_native_mslp_hpa and ensemble50_mslp_hpa on their common fixed grids.",
|
| 115 |
+
"native_history_available": false,
|
| 116 |
+
"grid_note": "Regional reconstruction sampled at 0.25 degrees; native-detail history unavailable for this case. Outside regional coverage use only saved 2.5-degree basin field.",
|
| 117 |
+
"metrics": {
|
| 118 |
+
"mean_track_error_km": 114.07107153522307,
|
| 119 |
+
"track_error_120h_km": 57.24838501893502,
|
| 120 |
+
"maximum_track_error_km": 193.7140338557338,
|
| 121 |
+
"within_200km_leads": 20,
|
| 122 |
+
"central_pressure_mae_hpa": 42.011166381835935,
|
| 123 |
+
"pressure_valid_leads": 20
|
| 124 |
+
},
|
| 125 |
+
"selection": "User-selected Yagi issue after inspecting geographic track alignment among saved development cases. Selected good route example, not representative performance or an untouched holdout. Pressure skill is assessed separately.",
|
| 126 |
+
"video": {
|
| 127 |
+
"file": "docs/trackformer_1_2_yagi.mp4",
|
| 128 |
+
"duration_seconds": 23,
|
| 129 |
+
"forecast_states": 20,
|
| 130 |
+
"codec": "H.264",
|
| 131 |
+
"encoder": "h264_videotoolbox",
|
| 132 |
+
"sha256": "542172829ec361e55e3f8e7c04436c59e575ac70d756759d8bf5596bf4fffb1a",
|
| 133 |
+
"playback": "Each six-hour state held for 1 second; final frame held 3 seconds extra. No interpolated forecast states."
|
| 134 |
+
}
|
| 135 |
+
}
|
paper/release_data/pressure_showcase.npz → evaluation/release_data/yagi_video.npz
RENAMED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:9167bc89c1ea85dc2c133f901f0a084ba06c02762b257194f5354f9d6c3a532b
|
| 3 |
+
size 804986
|
evaluation/trackformer_1_2_pressure_map_example.png
ADDED
|
evaluation/trackformer_1_2_showcase_selection.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
paper/trackformer_1_2_bavi_video_poster.png → evaluation/trackformer_1_2_surigae_isobars.png
RENAMED
|
File without changes
|
evaluation/trackformer_1_2_vs_1_1_270_bars.png
ADDED
|
Git LFS Details
|
evaluation/trackformer_1_2_vs_1_1_270_metrics.json
ADDED
|
@@ -0,0 +1,1506 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"case_count": 270,
|
| 3 |
+
"storm_count": 90,
|
| 4 |
+
"cases": [
|
| 5 |
+
{
|
| 6 |
+
"storm_id": "2022096N03150",
|
| 7 |
+
"issue_time_utc": "2022-04-08T06:00:00Z",
|
| 8 |
+
"source_row": 178540
|
| 9 |
+
},
|
| 10 |
+
{
|
| 11 |
+
"storm_id": "2022096N03150",
|
| 12 |
+
"issue_time_utc": "2022-04-11T00:00:00Z",
|
| 13 |
+
"source_row": 178562
|
| 14 |
+
},
|
| 15 |
+
{
|
| 16 |
+
"storm_id": "2022096N03150",
|
| 17 |
+
"issue_time_utc": "2022-04-13T00:00:00Z",
|
| 18 |
+
"source_row": 178578
|
| 19 |
+
},
|
| 20 |
+
{
|
| 21 |
+
"storm_id": "2022167N11269",
|
| 22 |
+
"issue_time_utc": "2022-06-18T00:00:00Z",
|
| 23 |
+
"source_row": 178867
|
| 24 |
+
},
|
| 25 |
+
{
|
| 26 |
+
"storm_id": "2022167N11269",
|
| 27 |
+
"issue_time_utc": "2022-06-22T00:00:00Z",
|
| 28 |
+
"source_row": 178899
|
| 29 |
+
},
|
| 30 |
+
{
|
| 31 |
+
"storm_id": "2022167N11269",
|
| 32 |
+
"issue_time_utc": "2022-06-25T00:00:00Z",
|
| 33 |
+
"source_row": 178923
|
| 34 |
+
},
|
| 35 |
+
{
|
| 36 |
+
"storm_id": "2022179N08310",
|
| 37 |
+
"issue_time_utc": "2022-06-29T18:00:00Z",
|
| 38 |
+
"source_row": 178960
|
| 39 |
+
},
|
| 40 |
+
{
|
| 41 |
+
"storm_id": "2022179N08310",
|
| 42 |
+
"issue_time_utc": "2022-07-03T00:00:00Z",
|
| 43 |
+
"source_row": 178986
|
| 44 |
+
},
|
| 45 |
+
{
|
| 46 |
+
"storm_id": "2022179N08310",
|
| 47 |
+
"issue_time_utc": "2022-07-06T00:00:00Z",
|
| 48 |
+
"source_row": 179010
|
| 49 |
+
},
|
| 50 |
+
{
|
| 51 |
+
"storm_id": "2022180N15117",
|
| 52 |
+
"issue_time_utc": "2022-06-30T18:00:00Z",
|
| 53 |
+
"source_row": 179043
|
| 54 |
+
},
|
| 55 |
+
{
|
| 56 |
+
"storm_id": "2022180N15117",
|
| 57 |
+
"issue_time_utc": "2022-07-01T00:00:00Z",
|
| 58 |
+
"source_row": 179045
|
| 59 |
+
},
|
| 60 |
+
{
|
| 61 |
+
"storm_id": "2022180N15117",
|
| 62 |
+
"issue_time_utc": "2022-07-02T00:00:00Z",
|
| 63 |
+
"source_row": 179055
|
| 64 |
+
},
|
| 65 |
+
{
|
| 66 |
+
"storm_id": "2022180N15130",
|
| 67 |
+
"issue_time_utc": "2022-07-01T00:00:00Z",
|
| 68 |
+
"source_row": 179096
|
| 69 |
+
},
|
| 70 |
+
{
|
| 71 |
+
"storm_id": "2022180N15130",
|
| 72 |
+
"issue_time_utc": "2022-07-04T00:00:00Z",
|
| 73 |
+
"source_row": 179121
|
| 74 |
+
},
|
| 75 |
+
{
|
| 76 |
+
"storm_id": "2022180N15130",
|
| 77 |
+
"issue_time_utc": "2022-07-06T00:00:00Z",
|
| 78 |
+
"source_row": 179138
|
| 79 |
+
},
|
| 80 |
+
{
|
| 81 |
+
"storm_id": "2022197N12260",
|
| 82 |
+
"issue_time_utc": "2022-07-17T12:00:00Z",
|
| 83 |
+
"source_row": 179208
|
| 84 |
+
},
|
| 85 |
+
{
|
| 86 |
+
"storm_id": "2022197N12260",
|
| 87 |
+
"issue_time_utc": "2022-07-18T00:00:00Z",
|
| 88 |
+
"source_row": 179212
|
| 89 |
+
},
|
| 90 |
+
{
|
| 91 |
+
"storm_id": "2022197N12260",
|
| 92 |
+
"issue_time_utc": "2022-07-19T00:00:00Z",
|
| 93 |
+
"source_row": 179220
|
| 94 |
+
},
|
| 95 |
+
{
|
| 96 |
+
"storm_id": "2022207N11262",
|
| 97 |
+
"issue_time_utc": "2022-07-27T12:00:00Z",
|
| 98 |
+
"source_row": 179253
|
| 99 |
+
},
|
| 100 |
+
{
|
| 101 |
+
"storm_id": "2022207N11262",
|
| 102 |
+
"issue_time_utc": "2022-07-29T00:00:00Z",
|
| 103 |
+
"source_row": 179265
|
| 104 |
+
},
|
| 105 |
+
{
|
| 106 |
+
"storm_id": "2022207N11262",
|
| 107 |
+
"issue_time_utc": "2022-07-30T00:00:00Z",
|
| 108 |
+
"source_row": 179273
|
| 109 |
+
},
|
| 110 |
+
{
|
| 111 |
+
"storm_id": "2022209N16246",
|
| 112 |
+
"issue_time_utc": "2022-07-29T12:00:00Z",
|
| 113 |
+
"source_row": 179354
|
| 114 |
+
},
|
| 115 |
+
{
|
| 116 |
+
"storm_id": "2022209N16246",
|
| 117 |
+
"issue_time_utc": "2022-07-30T00:00:00Z",
|
| 118 |
+
"source_row": 179358
|
| 119 |
+
},
|
| 120 |
+
{
|
| 121 |
+
"storm_id": "2022209N16246",
|
| 122 |
+
"issue_time_utc": "2022-07-31T00:00:00Z",
|
| 123 |
+
"source_row": 179366
|
| 124 |
+
},
|
| 125 |
+
{
|
| 126 |
+
"storm_id": "2022225N15253",
|
| 127 |
+
"issue_time_utc": "2022-08-14T12:00:00Z",
|
| 128 |
+
"source_row": 179481
|
| 129 |
+
},
|
| 130 |
+
{
|
| 131 |
+
"storm_id": "2022225N15253",
|
| 132 |
+
"issue_time_utc": "2022-08-16T00:00:00Z",
|
| 133 |
+
"source_row": 179493
|
| 134 |
+
},
|
| 135 |
+
{
|
| 136 |
+
"storm_id": "2022225N15253",
|
| 137 |
+
"issue_time_utc": "2022-08-17T00:00:00Z",
|
| 138 |
+
"source_row": 179501
|
| 139 |
+
},
|
| 140 |
+
{
|
| 141 |
+
"storm_id": "2022239N22150",
|
| 142 |
+
"issue_time_utc": "2022-08-29T00:00:00Z",
|
| 143 |
+
"source_row": 179613
|
| 144 |
+
},
|
| 145 |
+
{
|
| 146 |
+
"storm_id": "2022239N22150",
|
| 147 |
+
"issue_time_utc": "2022-09-01T00:00:00Z",
|
| 148 |
+
"source_row": 179637
|
| 149 |
+
},
|
| 150 |
+
{
|
| 151 |
+
"storm_id": "2022239N22150",
|
| 152 |
+
"issue_time_utc": "2022-09-04T00:00:00Z",
|
| 153 |
+
"source_row": 179661
|
| 154 |
+
},
|
| 155 |
+
{
|
| 156 |
+
"storm_id": "2022244N38313",
|
| 157 |
+
"issue_time_utc": "2022-09-02T12:00:00Z",
|
| 158 |
+
"source_row": 179723
|
| 159 |
+
},
|
| 160 |
+
{
|
| 161 |
+
"storm_id": "2022244N38313",
|
| 162 |
+
"issue_time_utc": "2022-09-06T00:00:00Z",
|
| 163 |
+
"source_row": 179751
|
| 164 |
+
},
|
| 165 |
+
{
|
| 166 |
+
"storm_id": "2022244N38313",
|
| 167 |
+
"issue_time_utc": "2022-09-10T00:00:00Z",
|
| 168 |
+
"source_row": 179783
|
| 169 |
+
},
|
| 170 |
+
{
|
| 171 |
+
"storm_id": "2022246N18301",
|
| 172 |
+
"issue_time_utc": "2022-09-04T18:00:00Z",
|
| 173 |
+
"source_row": 179822
|
| 174 |
+
},
|
| 175 |
+
{
|
| 176 |
+
"storm_id": "2022246N18301",
|
| 177 |
+
"issue_time_utc": "2022-09-07T00:00:00Z",
|
| 178 |
+
"source_row": 179840
|
| 179 |
+
},
|
| 180 |
+
{
|
| 181 |
+
"storm_id": "2022246N18301",
|
| 182 |
+
"issue_time_utc": "2022-09-10T00:00:00Z",
|
| 183 |
+
"source_row": 179864
|
| 184 |
+
},
|
| 185 |
+
{
|
| 186 |
+
"storm_id": "2022247N26147",
|
| 187 |
+
"issue_time_utc": "2022-09-05T18:00:00Z",
|
| 188 |
+
"source_row": 179901
|
| 189 |
+
},
|
| 190 |
+
{
|
| 191 |
+
"storm_id": "2022247N26147",
|
| 192 |
+
"issue_time_utc": "2022-09-09T00:00:00Z",
|
| 193 |
+
"source_row": 179927
|
| 194 |
+
},
|
| 195 |
+
{
|
| 196 |
+
"storm_id": "2022247N26147",
|
| 197 |
+
"issue_time_utc": "2022-09-12T00:00:00Z",
|
| 198 |
+
"source_row": 179951
|
| 199 |
+
},
|
| 200 |
+
{
|
| 201 |
+
"storm_id": "2022248N14259",
|
| 202 |
+
"issue_time_utc": "2022-09-06T12:00:00Z",
|
| 203 |
+
"source_row": 179984
|
| 204 |
+
},
|
| 205 |
+
{
|
| 206 |
+
"storm_id": "2022248N14259",
|
| 207 |
+
"issue_time_utc": "2022-09-07T00:00:00Z",
|
| 208 |
+
"source_row": 179988
|
| 209 |
+
},
|
| 210 |
+
{
|
| 211 |
+
"storm_id": "2022248N14259",
|
| 212 |
+
"issue_time_utc": "2022-09-08T00:00:00Z",
|
| 213 |
+
"source_row": 179996
|
| 214 |
+
},
|
| 215 |
+
{
|
| 216 |
+
"storm_id": "2022254N21158",
|
| 217 |
+
"issue_time_utc": "2022-09-12T12:00:00Z",
|
| 218 |
+
"source_row": 180030
|
| 219 |
+
},
|
| 220 |
+
{
|
| 221 |
+
"storm_id": "2022254N21158",
|
| 222 |
+
"issue_time_utc": "2022-09-13T00:00:00Z",
|
| 223 |
+
"source_row": 180034
|
| 224 |
+
},
|
| 225 |
+
{
|
| 226 |
+
"storm_id": "2022254N21158",
|
| 227 |
+
"issue_time_utc": "2022-09-14T00:00:00Z",
|
| 228 |
+
"source_row": 180042
|
| 229 |
+
},
|
| 230 |
+
{
|
| 231 |
+
"storm_id": "2022254N24143",
|
| 232 |
+
"issue_time_utc": "2022-09-13T06:00:00Z",
|
| 233 |
+
"source_row": 180081
|
| 234 |
+
},
|
| 235 |
+
{
|
| 236 |
+
"storm_id": "2022254N24143",
|
| 237 |
+
"issue_time_utc": "2022-09-14T00:00:00Z",
|
| 238 |
+
"source_row": 180087
|
| 239 |
+
},
|
| 240 |
+
{
|
| 241 |
+
"storm_id": "2022254N24143",
|
| 242 |
+
"issue_time_utc": "2022-09-15T00:00:00Z",
|
| 243 |
+
"source_row": 180095
|
| 244 |
+
},
|
| 245 |
+
{
|
| 246 |
+
"storm_id": "2022255N16256",
|
| 247 |
+
"issue_time_utc": "2022-09-13T12:00:00Z",
|
| 248 |
+
"source_row": 180133
|
| 249 |
+
},
|
| 250 |
+
{
|
| 251 |
+
"storm_id": "2022255N16256",
|
| 252 |
+
"issue_time_utc": "2022-09-17T00:00:00Z",
|
| 253 |
+
"source_row": 180161
|
| 254 |
+
},
|
| 255 |
+
{
|
| 256 |
+
"storm_id": "2022255N16256",
|
| 257 |
+
"issue_time_utc": "2022-09-20T00:00:00Z",
|
| 258 |
+
"source_row": 180185
|
| 259 |
+
},
|
| 260 |
+
{
|
| 261 |
+
"storm_id": "2022257N16312",
|
| 262 |
+
"issue_time_utc": "2022-09-16T06:00:00Z",
|
| 263 |
+
"source_row": 180218
|
| 264 |
+
},
|
| 265 |
+
{
|
| 266 |
+
"storm_id": "2022257N16312",
|
| 267 |
+
"issue_time_utc": "2022-09-19T00:00:00Z",
|
| 268 |
+
"source_row": 180242
|
| 269 |
+
},
|
| 270 |
+
{
|
| 271 |
+
"storm_id": "2022257N16312",
|
| 272 |
+
"issue_time_utc": "2022-09-22T00:00:00Z",
|
| 273 |
+
"source_row": 180268
|
| 274 |
+
},
|
| 275 |
+
{
|
| 276 |
+
"storm_id": "2022266N12294",
|
| 277 |
+
"issue_time_utc": "2022-09-24T18:00:00Z",
|
| 278 |
+
"source_row": 180471
|
| 279 |
+
},
|
| 280 |
+
{
|
| 281 |
+
"storm_id": "2022266N12294",
|
| 282 |
+
"issue_time_utc": "2022-09-25T00:00:00Z",
|
| 283 |
+
"source_row": 180473
|
| 284 |
+
},
|
| 285 |
+
{
|
| 286 |
+
"storm_id": "2022266N12294",
|
| 287 |
+
"issue_time_utc": "2022-09-26T00:00:00Z",
|
| 288 |
+
"source_row": 180481
|
| 289 |
+
},
|
| 290 |
+
{
|
| 291 |
+
"storm_id": "2022270N14136",
|
| 292 |
+
"issue_time_utc": "2022-09-28T12:00:00Z",
|
| 293 |
+
"source_row": 180574
|
| 294 |
+
},
|
| 295 |
+
{
|
| 296 |
+
"storm_id": "2022270N14136",
|
| 297 |
+
"issue_time_utc": "2022-09-29T00:00:00Z",
|
| 298 |
+
"source_row": 180578
|
| 299 |
+
},
|
| 300 |
+
{
|
| 301 |
+
"storm_id": "2022270N14136",
|
| 302 |
+
"issue_time_utc": "2022-09-30T00:00:00Z",
|
| 303 |
+
"source_row": 180586
|
| 304 |
+
},
|
| 305 |
+
{
|
| 306 |
+
"storm_id": "2022284N15152",
|
| 307 |
+
"issue_time_utc": "2022-10-13T06:00:00Z",
|
| 308 |
+
"source_row": 180720
|
| 309 |
+
},
|
| 310 |
+
{
|
| 311 |
+
"storm_id": "2022284N15152",
|
| 312 |
+
"issue_time_utc": "2022-10-14T00:00:00Z",
|
| 313 |
+
"source_row": 180726
|
| 314 |
+
},
|
| 315 |
+
{
|
| 316 |
+
"storm_id": "2022284N15152",
|
| 317 |
+
"issue_time_utc": "2022-10-15T00:00:00Z",
|
| 318 |
+
"source_row": 180734
|
| 319 |
+
},
|
| 320 |
+
{
|
| 321 |
+
"storm_id": "2023138N05151",
|
| 322 |
+
"issue_time_utc": "2023-05-20T00:00:00Z",
|
| 323 |
+
"source_row": 182572
|
| 324 |
+
},
|
| 325 |
+
{
|
| 326 |
+
"storm_id": "2023138N05151",
|
| 327 |
+
"issue_time_utc": "2023-05-25T00:00:00Z",
|
| 328 |
+
"source_row": 182612
|
| 329 |
+
},
|
| 330 |
+
{
|
| 331 |
+
"storm_id": "2023138N05151",
|
| 332 |
+
"issue_time_utc": "2023-05-29T00:00:00Z",
|
| 333 |
+
"source_row": 182644
|
| 334 |
+
},
|
| 335 |
+
{
|
| 336 |
+
"storm_id": "2023156N12135",
|
| 337 |
+
"issue_time_utc": "2023-06-06T18:00:00Z",
|
| 338 |
+
"source_row": 182775
|
| 339 |
+
},
|
| 340 |
+
{
|
| 341 |
+
"storm_id": "2023156N12135",
|
| 342 |
+
"issue_time_utc": "2023-06-09T00:00:00Z",
|
| 343 |
+
"source_row": 182793
|
| 344 |
+
},
|
| 345 |
+
{
|
| 346 |
+
"storm_id": "2023156N12135",
|
| 347 |
+
"issue_time_utc": "2023-06-12T00:00:00Z",
|
| 348 |
+
"source_row": 182817
|
| 349 |
+
},
|
| 350 |
+
{
|
| 351 |
+
"storm_id": "2023156N10067",
|
| 352 |
+
"issue_time_utc": "2023-06-07T00:00:00Z",
|
| 353 |
+
"source_row": 182686
|
| 354 |
+
},
|
| 355 |
+
{
|
| 356 |
+
"storm_id": "2023156N10067",
|
| 357 |
+
"issue_time_utc": "2023-06-11T00:00:00Z",
|
| 358 |
+
"source_row": 182718
|
| 359 |
+
},
|
| 360 |
+
{
|
| 361 |
+
"storm_id": "2023156N10067",
|
| 362 |
+
"issue_time_utc": "2023-06-14T00:00:00Z",
|
| 363 |
+
"source_row": 182742
|
| 364 |
+
},
|
| 365 |
+
{
|
| 366 |
+
"storm_id": "2023191N10262",
|
| 367 |
+
"issue_time_utc": "2023-07-12T06:00:00Z",
|
| 368 |
+
"source_row": 182916
|
| 369 |
+
},
|
| 370 |
+
{
|
| 371 |
+
"storm_id": "2023191N10262",
|
| 372 |
+
"issue_time_utc": "2023-07-13T00:00:00Z",
|
| 373 |
+
"source_row": 182922
|
| 374 |
+
},
|
| 375 |
+
{
|
| 376 |
+
"storm_id": "2023191N10262",
|
| 377 |
+
"issue_time_utc": "2023-07-14T00:00:00Z",
|
| 378 |
+
"source_row": 182930
|
| 379 |
+
},
|
| 380 |
+
{
|
| 381 |
+
"storm_id": "2023193N37305",
|
| 382 |
+
"issue_time_utc": "2023-07-13T12:00:00Z",
|
| 383 |
+
"source_row": 182969
|
| 384 |
+
},
|
| 385 |
+
{
|
| 386 |
+
"storm_id": "2023193N37305",
|
| 387 |
+
"issue_time_utc": "2023-07-17T00:00:00Z",
|
| 388 |
+
"source_row": 182997
|
| 389 |
+
},
|
| 390 |
+
{
|
| 391 |
+
"storm_id": "2023193N37305",
|
| 392 |
+
"issue_time_utc": "2023-07-20T00:00:00Z",
|
| 393 |
+
"source_row": 183021
|
| 394 |
+
},
|
| 395 |
+
{
|
| 396 |
+
"storm_id": "2023201N13134",
|
| 397 |
+
"issue_time_utc": "2023-07-22T06:00:00Z",
|
| 398 |
+
"source_row": 183101
|
| 399 |
+
},
|
| 400 |
+
{
|
| 401 |
+
"storm_id": "2023201N13134",
|
| 402 |
+
"issue_time_utc": "2023-07-24T00:00:00Z",
|
| 403 |
+
"source_row": 183115
|
| 404 |
+
},
|
| 405 |
+
{
|
| 406 |
+
"storm_id": "2023201N13134",
|
| 407 |
+
"issue_time_utc": "2023-07-26T00:00:00Z",
|
| 408 |
+
"source_row": 183131
|
| 409 |
+
},
|
| 410 |
+
{
|
| 411 |
+
"storm_id": "2023207N09141",
|
| 412 |
+
"issue_time_utc": "2023-07-28T06:00:00Z",
|
| 413 |
+
"source_row": 183164
|
| 414 |
+
},
|
| 415 |
+
{
|
| 416 |
+
"storm_id": "2023207N09141",
|
| 417 |
+
"issue_time_utc": "2023-08-02T00:00:00Z",
|
| 418 |
+
"source_row": 183202
|
| 419 |
+
},
|
| 420 |
+
{
|
| 421 |
+
"storm_id": "2023207N09141",
|
| 422 |
+
"issue_time_utc": "2023-08-06T00:00:00Z",
|
| 423 |
+
"source_row": 183234
|
| 424 |
+
},
|
| 425 |
+
{
|
| 426 |
+
"storm_id": "2023213N14257",
|
| 427 |
+
"issue_time_utc": "2023-08-02T12:00:00Z",
|
| 428 |
+
"source_row": 183280
|
| 429 |
+
},
|
| 430 |
+
{
|
| 431 |
+
"storm_id": "2023213N14257",
|
| 432 |
+
"issue_time_utc": "2023-08-10T00:00:00Z",
|
| 433 |
+
"source_row": 183340
|
| 434 |
+
},
|
| 435 |
+
{
|
| 436 |
+
"storm_id": "2023213N14257",
|
| 437 |
+
"issue_time_utc": "2023-08-17T00:00:00Z",
|
| 438 |
+
"source_row": 183396
|
| 439 |
+
},
|
| 440 |
+
{
|
| 441 |
+
"storm_id": "2023218N25145",
|
| 442 |
+
"issue_time_utc": "2023-08-08T00:00:00Z",
|
| 443 |
+
"source_row": 183452
|
| 444 |
+
},
|
| 445 |
+
{
|
| 446 |
+
"storm_id": "2023218N25145",
|
| 447 |
+
"issue_time_utc": "2023-08-11T00:00:00Z",
|
| 448 |
+
"source_row": 183476
|
| 449 |
+
},
|
| 450 |
+
{
|
| 451 |
+
"storm_id": "2023218N25145",
|
| 452 |
+
"issue_time_utc": "2023-08-13T00:00:00Z",
|
| 453 |
+
"source_row": 183492
|
| 454 |
+
},
|
| 455 |
+
{
|
| 456 |
+
"storm_id": "2023225N14248",
|
| 457 |
+
"issue_time_utc": "2023-08-14T12:00:00Z",
|
| 458 |
+
"source_row": 183531
|
| 459 |
+
},
|
| 460 |
+
{
|
| 461 |
+
"storm_id": "2023225N14248",
|
| 462 |
+
"issue_time_utc": "2023-08-17T00:00:00Z",
|
| 463 |
+
"source_row": 183551
|
| 464 |
+
},
|
| 465 |
+
{
|
| 466 |
+
"storm_id": "2023225N14248",
|
| 467 |
+
"issue_time_utc": "2023-08-19T00:00:00Z",
|
| 468 |
+
"source_row": 183567
|
| 469 |
+
},
|
| 470 |
+
{
|
| 471 |
+
"storm_id": "2023231N15313",
|
| 472 |
+
"issue_time_utc": "2023-08-21T00:00:00Z",
|
| 473 |
+
"source_row": 183633
|
| 474 |
+
},
|
| 475 |
+
{
|
| 476 |
+
"storm_id": "2023231N15313",
|
| 477 |
+
"issue_time_utc": "2023-08-26T00:00:00Z",
|
| 478 |
+
"source_row": 183673
|
| 479 |
+
},
|
| 480 |
+
{
|
| 481 |
+
"storm_id": "2023231N15313",
|
| 482 |
+
"issue_time_utc": "2023-08-30T00:00:00Z",
|
| 483 |
+
"source_row": 183705
|
| 484 |
+
},
|
| 485 |
+
{
|
| 486 |
+
"storm_id": "2023232N13300",
|
| 487 |
+
"issue_time_utc": "2023-08-21T18:00:00Z",
|
| 488 |
+
"source_row": 183773
|
| 489 |
+
},
|
| 490 |
+
{
|
| 491 |
+
"storm_id": "2023232N13300",
|
| 492 |
+
"issue_time_utc": "2023-08-28T00:00:00Z",
|
| 493 |
+
"source_row": 183824
|
| 494 |
+
},
|
| 495 |
+
{
|
| 496 |
+
"storm_id": "2023232N13300",
|
| 497 |
+
"issue_time_utc": "2023-09-04T00:00:00Z",
|
| 498 |
+
"source_row": 183880
|
| 499 |
+
},
|
| 500 |
+
{
|
| 501 |
+
"storm_id": "2023234N19154",
|
| 502 |
+
"issue_time_utc": "2023-08-23T12:00:00Z",
|
| 503 |
+
"source_row": 184026
|
| 504 |
+
},
|
| 505 |
+
{
|
| 506 |
+
"storm_id": "2023234N19154",
|
| 507 |
+
"issue_time_utc": "2023-08-24T00:00:00Z",
|
| 508 |
+
"source_row": 184030
|
| 509 |
+
},
|
| 510 |
+
{
|
| 511 |
+
"storm_id": "2023234N19154",
|
| 512 |
+
"issue_time_utc": "2023-08-25T00:00:00Z",
|
| 513 |
+
"source_row": 184038
|
| 514 |
+
},
|
| 515 |
+
{
|
| 516 |
+
"storm_id": "2023234N18128",
|
| 517 |
+
"issue_time_utc": "2023-08-24T00:00:00Z",
|
| 518 |
+
"source_row": 183919
|
| 519 |
+
},
|
| 520 |
+
{
|
| 521 |
+
"storm_id": "2023234N18128",
|
| 522 |
+
"issue_time_utc": "2023-08-27T00:00:00Z",
|
| 523 |
+
"source_row": 183943
|
| 524 |
+
},
|
| 525 |
+
{
|
| 526 |
+
"storm_id": "2023234N18128",
|
| 527 |
+
"issue_time_utc": "2023-08-30T00:00:00Z",
|
| 528 |
+
"source_row": 183967
|
| 529 |
+
},
|
| 530 |
+
{
|
| 531 |
+
"storm_id": "2023239N21274",
|
| 532 |
+
"issue_time_utc": "2023-08-28T12:00:00Z",
|
| 533 |
+
"source_row": 184203
|
| 534 |
+
},
|
| 535 |
+
{
|
| 536 |
+
"storm_id": "2023239N21274",
|
| 537 |
+
"issue_time_utc": "2023-08-31T00:00:00Z",
|
| 538 |
+
"source_row": 184224
|
| 539 |
+
},
|
| 540 |
+
{
|
| 541 |
+
"storm_id": "2023239N21274",
|
| 542 |
+
"issue_time_utc": "2023-09-03T00:00:00Z",
|
| 543 |
+
"source_row": 184248
|
| 544 |
+
},
|
| 545 |
+
{
|
| 546 |
+
"storm_id": "2023239N18144",
|
| 547 |
+
"issue_time_utc": "2023-08-29T00:00:00Z",
|
| 548 |
+
"source_row": 184110
|
| 549 |
+
},
|
| 550 |
+
{
|
| 551 |
+
"storm_id": "2023239N18144",
|
| 552 |
+
"issue_time_utc": "2023-09-02T00:00:00Z",
|
| 553 |
+
"source_row": 184142
|
| 554 |
+
},
|
| 555 |
+
{
|
| 556 |
+
"storm_id": "2023239N18144",
|
| 557 |
+
"issue_time_utc": "2023-09-05T00:00:00Z",
|
| 558 |
+
"source_row": 184166
|
| 559 |
+
},
|
| 560 |
+
{
|
| 561 |
+
"storm_id": "2023241N10158",
|
| 562 |
+
"issue_time_utc": "2023-08-31T00:00:00Z",
|
| 563 |
+
"source_row": 184283
|
| 564 |
+
},
|
| 565 |
+
{
|
| 566 |
+
"storm_id": "2023241N10158",
|
| 567 |
+
"issue_time_utc": "2023-09-01T00:00:00Z",
|
| 568 |
+
"source_row": 184291
|
| 569 |
+
},
|
| 570 |
+
{
|
| 571 |
+
"storm_id": "2023241N10158",
|
| 572 |
+
"issue_time_utc": "2023-09-02T00:00:00Z",
|
| 573 |
+
"source_row": 184299
|
| 574 |
+
},
|
| 575 |
+
{
|
| 576 |
+
"storm_id": "2023242N15339",
|
| 577 |
+
"issue_time_utc": "2023-09-01T00:00:00Z",
|
| 578 |
+
"source_row": 184343
|
| 579 |
+
},
|
| 580 |
+
{
|
| 581 |
+
"storm_id": "2023242N15339",
|
| 582 |
+
"issue_time_utc": "2023-09-06T00:00:00Z",
|
| 583 |
+
"source_row": 184383
|
| 584 |
+
},
|
| 585 |
+
{
|
| 586 |
+
"storm_id": "2023242N15339",
|
| 587 |
+
"issue_time_utc": "2023-09-10T00:00:00Z",
|
| 588 |
+
"source_row": 184415
|
| 589 |
+
},
|
| 590 |
+
{
|
| 591 |
+
"storm_id": "2023248N12257",
|
| 592 |
+
"issue_time_utc": "2023-09-06T12:00:00Z",
|
| 593 |
+
"source_row": 184471
|
| 594 |
+
},
|
| 595 |
+
{
|
| 596 |
+
"storm_id": "2023248N12257",
|
| 597 |
+
"issue_time_utc": "2023-09-08T00:00:00Z",
|
| 598 |
+
"source_row": 184483
|
| 599 |
+
},
|
| 600 |
+
{
|
| 601 |
+
"storm_id": "2023248N12257",
|
| 602 |
+
"issue_time_utc": "2023-09-09T00:00:00Z",
|
| 603 |
+
"source_row": 184491
|
| 604 |
+
},
|
| 605 |
+
{
|
| 606 |
+
"storm_id": "2023249N12320",
|
| 607 |
+
"issue_time_utc": "2023-09-07T12:00:00Z",
|
| 608 |
+
"source_row": 184524
|
| 609 |
+
},
|
| 610 |
+
{
|
| 611 |
+
"storm_id": "2023249N12320",
|
| 612 |
+
"issue_time_utc": "2023-09-10T00:00:00Z",
|
| 613 |
+
"source_row": 184544
|
| 614 |
+
},
|
| 615 |
+
{
|
| 616 |
+
"storm_id": "2023249N12320",
|
| 617 |
+
"issue_time_utc": "2023-09-13T00:00:00Z",
|
| 618 |
+
"source_row": 184568
|
| 619 |
+
},
|
| 620 |
+
{
|
| 621 |
+
"storm_id": "2023251N16334",
|
| 622 |
+
"issue_time_utc": "2023-09-09T12:00:00Z",
|
| 623 |
+
"source_row": 184608
|
| 624 |
+
},
|
| 625 |
+
{
|
| 626 |
+
"storm_id": "2023251N16334",
|
| 627 |
+
"issue_time_utc": "2023-09-11T00:00:00Z",
|
| 628 |
+
"source_row": 184620
|
| 629 |
+
},
|
| 630 |
+
{
|
| 631 |
+
"storm_id": "2023251N16334",
|
| 632 |
+
"issue_time_utc": "2023-09-13T00:00:00Z",
|
| 633 |
+
"source_row": 184636
|
| 634 |
+
},
|
| 635 |
+
{
|
| 636 |
+
"storm_id": "2023258N14318",
|
| 637 |
+
"issue_time_utc": "2023-09-17T06:00:00Z",
|
| 638 |
+
"source_row": 184675
|
| 639 |
+
},
|
| 640 |
+
{
|
| 641 |
+
"storm_id": "2023258N14318",
|
| 642 |
+
"issue_time_utc": "2023-09-19T00:00:00Z",
|
| 643 |
+
"source_row": 184689
|
| 644 |
+
},
|
| 645 |
+
{
|
| 646 |
+
"storm_id": "2023258N14318",
|
| 647 |
+
"issue_time_utc": "2023-09-21T00:00:00Z",
|
| 648 |
+
"source_row": 184705
|
| 649 |
+
},
|
| 650 |
+
{
|
| 651 |
+
"storm_id": "2023266N16323",
|
| 652 |
+
"issue_time_utc": "2023-09-25T06:00:00Z",
|
| 653 |
+
"source_row": 184784
|
| 654 |
+
},
|
| 655 |
+
{
|
| 656 |
+
"storm_id": "2023266N16323",
|
| 657 |
+
"issue_time_utc": "2023-09-28T00:00:00Z",
|
| 658 |
+
"source_row": 184806
|
| 659 |
+
},
|
| 660 |
+
{
|
| 661 |
+
"storm_id": "2023266N16323",
|
| 662 |
+
"issue_time_utc": "2023-10-01T00:00:00Z",
|
| 663 |
+
"source_row": 184830
|
| 664 |
+
},
|
| 665 |
+
{
|
| 666 |
+
"storm_id": "2023271N14144",
|
| 667 |
+
"issue_time_utc": "2023-09-29T12:00:00Z",
|
| 668 |
+
"source_row": 184875
|
| 669 |
+
},
|
| 670 |
+
{
|
| 671 |
+
"storm_id": "2023271N14144",
|
| 672 |
+
"issue_time_utc": "2023-10-02T00:00:00Z",
|
| 673 |
+
"source_row": 184895
|
| 674 |
+
},
|
| 675 |
+
{
|
| 676 |
+
"storm_id": "2023271N14144",
|
| 677 |
+
"issue_time_utc": "2023-10-05T00:00:00Z",
|
| 678 |
+
"source_row": 184919
|
| 679 |
+
},
|
| 680 |
+
{
|
| 681 |
+
"storm_id": "2023279N08157",
|
| 682 |
+
"issue_time_utc": "2023-10-08T00:00:00Z",
|
| 683 |
+
"source_row": 185020
|
| 684 |
+
},
|
| 685 |
+
{
|
| 686 |
+
"storm_id": "2023279N08157",
|
| 687 |
+
"issue_time_utc": "2023-10-10T00:00:00Z",
|
| 688 |
+
"source_row": 185036
|
| 689 |
+
},
|
| 690 |
+
{
|
| 691 |
+
"storm_id": "2023279N08157",
|
| 692 |
+
"issue_time_utc": "2023-10-11T00:00:00Z",
|
| 693 |
+
"source_row": 185044
|
| 694 |
+
},
|
| 695 |
+
{
|
| 696 |
+
"storm_id": "2023292N13309",
|
| 697 |
+
"issue_time_utc": "2023-10-20T18:00:00Z",
|
| 698 |
+
"source_row": 185172
|
| 699 |
+
},
|
| 700 |
+
{
|
| 701 |
+
"storm_id": "2023292N13309",
|
| 702 |
+
"issue_time_utc": "2023-10-23T00:00:00Z",
|
| 703 |
+
"source_row": 185191
|
| 704 |
+
},
|
| 705 |
+
{
|
| 706 |
+
"storm_id": "2023292N13309",
|
| 707 |
+
"issue_time_utc": "2023-10-26T00:00:00Z",
|
| 708 |
+
"source_row": 185215
|
| 709 |
+
},
|
| 710 |
+
{
|
| 711 |
+
"storm_id": "2023302N10267",
|
| 712 |
+
"issue_time_utc": "2023-10-30T12:00:00Z",
|
| 713 |
+
"source_row": 185325
|
| 714 |
+
},
|
| 715 |
+
{
|
| 716 |
+
"storm_id": "2023302N10267",
|
| 717 |
+
"issue_time_utc": "2023-11-01T00:00:00Z",
|
| 718 |
+
"source_row": 185337
|
| 719 |
+
},
|
| 720 |
+
{
|
| 721 |
+
"storm_id": "2023302N10267",
|
| 722 |
+
"issue_time_utc": "2023-11-02T00:00:00Z",
|
| 723 |
+
"source_row": 185345
|
| 724 |
+
},
|
| 725 |
+
{
|
| 726 |
+
"storm_id": "2024141N03142",
|
| 727 |
+
"issue_time_utc": "2024-05-22T00:00:00Z",
|
| 728 |
+
"source_row": 186747
|
| 729 |
+
},
|
| 730 |
+
{
|
| 731 |
+
"storm_id": "2024141N03142",
|
| 732 |
+
"issue_time_utc": "2024-05-25T00:00:00Z",
|
| 733 |
+
"source_row": 186771
|
| 734 |
+
},
|
| 735 |
+
{
|
| 736 |
+
"storm_id": "2024141N03142",
|
| 737 |
+
"issue_time_utc": "2024-05-28T00:00:00Z",
|
| 738 |
+
"source_row": 186795
|
| 739 |
+
},
|
| 740 |
+
{
|
| 741 |
+
"storm_id": "2024181N09320",
|
| 742 |
+
"issue_time_utc": "2024-06-30T12:00:00Z",
|
| 743 |
+
"source_row": 186875
|
| 744 |
+
},
|
| 745 |
+
{
|
| 746 |
+
"storm_id": "2024181N09320",
|
| 747 |
+
"issue_time_utc": "2024-07-03T00:00:00Z",
|
| 748 |
+
"source_row": 186897
|
| 749 |
+
},
|
| 750 |
+
{
|
| 751 |
+
"storm_id": "2024181N09320",
|
| 752 |
+
"issue_time_utc": "2024-07-06T00:00:00Z",
|
| 753 |
+
"source_row": 186922
|
| 754 |
+
},
|
| 755 |
+
{
|
| 756 |
+
"storm_id": "2024198N08130",
|
| 757 |
+
"issue_time_utc": "2024-07-17T12:00:00Z",
|
| 758 |
+
"source_row": 186961
|
| 759 |
+
},
|
| 760 |
+
{
|
| 761 |
+
"storm_id": "2024198N08130",
|
| 762 |
+
"issue_time_utc": "2024-07-19T00:00:00Z",
|
| 763 |
+
"source_row": 186973
|
| 764 |
+
},
|
| 765 |
+
{
|
| 766 |
+
"storm_id": "2024198N08130",
|
| 767 |
+
"issue_time_utc": "2024-07-20T00:00:00Z",
|
| 768 |
+
"source_row": 186981
|
| 769 |
+
},
|
| 770 |
+
{
|
| 771 |
+
"storm_id": "2024201N12133",
|
| 772 |
+
"issue_time_utc": "2024-07-21T00:00:00Z",
|
| 773 |
+
"source_row": 187016
|
| 774 |
+
},
|
| 775 |
+
{
|
| 776 |
+
"storm_id": "2024201N12133",
|
| 777 |
+
"issue_time_utc": "2024-07-22T00:00:00Z",
|
| 778 |
+
"source_row": 187024
|
| 779 |
+
},
|
| 780 |
+
{
|
| 781 |
+
"storm_id": "2024201N12133",
|
| 782 |
+
"issue_time_utc": "2024-07-23T00:00:00Z",
|
| 783 |
+
"source_row": 187032
|
| 784 |
+
},
|
| 785 |
+
{
|
| 786 |
+
"storm_id": "2024218N23143",
|
| 787 |
+
"issue_time_utc": "2024-08-07T00:00:00Z",
|
| 788 |
+
"source_row": 187195
|
| 789 |
+
},
|
| 790 |
+
{
|
| 791 |
+
"storm_id": "2024218N23143",
|
| 792 |
+
"issue_time_utc": "2024-08-08T00:00:00Z",
|
| 793 |
+
"source_row": 187203
|
| 794 |
+
},
|
| 795 |
+
{
|
| 796 |
+
"storm_id": "2024218N23143",
|
| 797 |
+
"issue_time_utc": "2024-08-09T00:00:00Z",
|
| 798 |
+
"source_row": 187211
|
| 799 |
+
},
|
| 800 |
+
{
|
| 801 |
+
"storm_id": "2024225N14313",
|
| 802 |
+
"issue_time_utc": "2024-08-13T18:00:00Z",
|
| 803 |
+
"source_row": 187290
|
| 804 |
+
},
|
| 805 |
+
{
|
| 806 |
+
"storm_id": "2024225N14313",
|
| 807 |
+
"issue_time_utc": "2024-08-14T00:00:00Z",
|
| 808 |
+
"source_row": 187293
|
| 809 |
+
},
|
| 810 |
+
{
|
| 811 |
+
"storm_id": "2024225N14313",
|
| 812 |
+
"issue_time_utc": "2024-08-15T00:00:00Z",
|
| 813 |
+
"source_row": 187301
|
| 814 |
+
},
|
| 815 |
+
{
|
| 816 |
+
"storm_id": "2024225N22135",
|
| 817 |
+
"issue_time_utc": "2024-08-13T12:00:00Z",
|
| 818 |
+
"source_row": 187341
|
| 819 |
+
},
|
| 820 |
+
{
|
| 821 |
+
"storm_id": "2024225N22135",
|
| 822 |
+
"issue_time_utc": "2024-08-15T00:00:00Z",
|
| 823 |
+
"source_row": 187353
|
| 824 |
+
},
|
| 825 |
+
{
|
| 826 |
+
"storm_id": "2024225N22135",
|
| 827 |
+
"issue_time_utc": "2024-08-16T00:00:00Z",
|
| 828 |
+
"source_row": 187361
|
| 829 |
+
},
|
| 830 |
+
{
|
| 831 |
+
"storm_id": "2024231N14251",
|
| 832 |
+
"issue_time_utc": "2024-08-20T06:00:00Z",
|
| 833 |
+
"source_row": 187435
|
| 834 |
+
},
|
| 835 |
+
{
|
| 836 |
+
"storm_id": "2024231N14251",
|
| 837 |
+
"issue_time_utc": "2024-08-22T00:00:00Z",
|
| 838 |
+
"source_row": 187449
|
| 839 |
+
},
|
| 840 |
+
{
|
| 841 |
+
"storm_id": "2024231N14251",
|
| 842 |
+
"issue_time_utc": "2024-08-24T00:00:00Z",
|
| 843 |
+
"source_row": 187465
|
| 844 |
+
},
|
| 845 |
+
{
|
| 846 |
+
"storm_id": "2024233N15148",
|
| 847 |
+
"issue_time_utc": "2024-08-22T06:00:00Z",
|
| 848 |
+
"source_row": 187517
|
| 849 |
+
},
|
| 850 |
+
{
|
| 851 |
+
"storm_id": "2024233N15148",
|
| 852 |
+
"issue_time_utc": "2024-08-25T00:00:00Z",
|
| 853 |
+
"source_row": 187539
|
| 854 |
+
},
|
| 855 |
+
{
|
| 856 |
+
"storm_id": "2024233N15148",
|
| 857 |
+
"issue_time_utc": "2024-08-27T00:00:00Z",
|
| 858 |
+
"source_row": 187555
|
| 859 |
+
},
|
| 860 |
+
{
|
| 861 |
+
"storm_id": "2024235N16223",
|
| 862 |
+
"issue_time_utc": "2024-08-24T00:00:00Z",
|
| 863 |
+
"source_row": 187595
|
| 864 |
+
},
|
| 865 |
+
{
|
| 866 |
+
"storm_id": "2024235N16223",
|
| 867 |
+
"issue_time_utc": "2024-08-26T00:00:00Z",
|
| 868 |
+
"source_row": 187611
|
| 869 |
+
},
|
| 870 |
+
{
|
| 871 |
+
"storm_id": "2024235N16223",
|
| 872 |
+
"issue_time_utc": "2024-08-27T00:00:00Z",
|
| 873 |
+
"source_row": 187619
|
| 874 |
+
},
|
| 875 |
+
{
|
| 876 |
+
"storm_id": "2024238N25077",
|
| 877 |
+
"issue_time_utc": "2024-08-27T00:00:00Z",
|
| 878 |
+
"source_row": 187681
|
| 879 |
+
},
|
| 880 |
+
{
|
| 881 |
+
"storm_id": "2024238N25077",
|
| 882 |
+
"issue_time_utc": "2024-08-28T00:00:00Z",
|
| 883 |
+
"source_row": 187689
|
| 884 |
+
},
|
| 885 |
+
{
|
| 886 |
+
"storm_id": "2024238N25077",
|
| 887 |
+
"issue_time_utc": "2024-08-29T00:00:00Z",
|
| 888 |
+
"source_row": 187697
|
| 889 |
+
},
|
| 890 |
+
{
|
| 891 |
+
"storm_id": "2024244N09137",
|
| 892 |
+
"issue_time_utc": "2024-09-01T12:00:00Z",
|
| 893 |
+
"source_row": 187732
|
| 894 |
+
},
|
| 895 |
+
{
|
| 896 |
+
"storm_id": "2024244N09137",
|
| 897 |
+
"issue_time_utc": "2024-09-03T00:00:00Z",
|
| 898 |
+
"source_row": 187744
|
| 899 |
+
},
|
| 900 |
+
{
|
| 901 |
+
"storm_id": "2024244N09137",
|
| 902 |
+
"issue_time_utc": "2024-09-04T00:00:00Z",
|
| 903 |
+
"source_row": 187752
|
| 904 |
+
},
|
| 905 |
+
{
|
| 906 |
+
"storm_id": "2024253N11148",
|
| 907 |
+
"issue_time_utc": "2024-09-10T18:00:00Z",
|
| 908 |
+
"source_row": 187826
|
| 909 |
+
},
|
| 910 |
+
{
|
| 911 |
+
"storm_id": "2024253N11148",
|
| 912 |
+
"issue_time_utc": "2024-09-12T00:00:00Z",
|
| 913 |
+
"source_row": 187836
|
| 914 |
+
},
|
| 915 |
+
{
|
| 916 |
+
"storm_id": "2024253N11148",
|
| 917 |
+
"issue_time_utc": "2024-09-13T00:00:00Z",
|
| 918 |
+
"source_row": 187844
|
| 919 |
+
},
|
| 920 |
+
{
|
| 921 |
+
"storm_id": "2024259N12145",
|
| 922 |
+
"issue_time_utc": "2024-09-17T00:00:00Z",
|
| 923 |
+
"source_row": 187954
|
| 924 |
+
},
|
| 925 |
+
{
|
| 926 |
+
"storm_id": "2024259N12145",
|
| 927 |
+
"issue_time_utc": "2024-09-18T00:00:00Z",
|
| 928 |
+
"source_row": 187962
|
| 929 |
+
},
|
| 930 |
+
{
|
| 931 |
+
"storm_id": "2024259N12145",
|
| 932 |
+
"issue_time_utc": "2024-09-19T00:00:00Z",
|
| 933 |
+
"source_row": 187970
|
| 934 |
+
},
|
| 935 |
+
{
|
| 936 |
+
"storm_id": "2024269N39302",
|
| 937 |
+
"issue_time_utc": "2024-09-26T12:00:00Z",
|
| 938 |
+
"source_row": 188145
|
| 939 |
+
},
|
| 940 |
+
{
|
| 941 |
+
"storm_id": "2024269N39302",
|
| 942 |
+
"issue_time_utc": "2024-09-27T00:00:00Z",
|
| 943 |
+
"source_row": 188149
|
| 944 |
+
},
|
| 945 |
+
{
|
| 946 |
+
"storm_id": "2024269N39302",
|
| 947 |
+
"issue_time_utc": "2024-09-28T00:00:00Z",
|
| 948 |
+
"source_row": 188157
|
| 949 |
+
},
|
| 950 |
+
{
|
| 951 |
+
"storm_id": "2024274N14328",
|
| 952 |
+
"issue_time_utc": "2024-10-01T18:00:00Z",
|
| 953 |
+
"source_row": 188234
|
| 954 |
+
},
|
| 955 |
+
{
|
| 956 |
+
"storm_id": "2024274N14328",
|
| 957 |
+
"issue_time_utc": "2024-10-03T00:00:00Z",
|
| 958 |
+
"source_row": 188244
|
| 959 |
+
},
|
| 960 |
+
{
|
| 961 |
+
"storm_id": "2024274N14328",
|
| 962 |
+
"issue_time_utc": "2024-10-05T00:00:00Z",
|
| 963 |
+
"source_row": 188260
|
| 964 |
+
},
|
| 965 |
+
{
|
| 966 |
+
"storm_id": "2024275N10336",
|
| 967 |
+
"issue_time_utc": "2024-10-03T00:00:00Z",
|
| 968 |
+
"source_row": 188330
|
| 969 |
+
},
|
| 970 |
+
{
|
| 971 |
+
"storm_id": "2024275N10336",
|
| 972 |
+
"issue_time_utc": "2024-10-05T00:00:00Z",
|
| 973 |
+
"source_row": 188346
|
| 974 |
+
},
|
| 975 |
+
{
|
| 976 |
+
"storm_id": "2024275N10336",
|
| 977 |
+
"issue_time_utc": "2024-10-07T00:00:00Z",
|
| 978 |
+
"source_row": 188362
|
| 979 |
+
},
|
| 980 |
+
{
|
| 981 |
+
"storm_id": "2024278N11150",
|
| 982 |
+
"issue_time_utc": "2024-10-06T06:00:00Z",
|
| 983 |
+
"source_row": 188397
|
| 984 |
+
},
|
| 985 |
+
{
|
| 986 |
+
"storm_id": "2024278N11150",
|
| 987 |
+
"issue_time_utc": "2024-10-08T00:00:00Z",
|
| 988 |
+
"source_row": 188411
|
| 989 |
+
},
|
| 990 |
+
{
|
| 991 |
+
"storm_id": "2024278N11150",
|
| 992 |
+
"issue_time_utc": "2024-10-10T00:00:00Z",
|
| 993 |
+
"source_row": 188427
|
| 994 |
+
},
|
| 995 |
+
{
|
| 996 |
+
"storm_id": "2024293N13141",
|
| 997 |
+
"issue_time_utc": "2024-10-20T12:00:00Z",
|
| 998 |
+
"source_row": 188502
|
| 999 |
+
},
|
| 1000 |
+
{
|
| 1001 |
+
"storm_id": "2024293N13141",
|
| 1002 |
+
"issue_time_utc": "2024-10-22T00:00:00Z",
|
| 1003 |
+
"source_row": 188514
|
| 1004 |
+
},
|
| 1005 |
+
{
|
| 1006 |
+
"storm_id": "2024293N13141",
|
| 1007 |
+
"issue_time_utc": "2024-10-24T00:00:00Z",
|
| 1008 |
+
"source_row": 188530
|
| 1009 |
+
},
|
| 1010 |
+
{
|
| 1011 |
+
"storm_id": "2024298N13150",
|
| 1012 |
+
"issue_time_utc": "2024-10-26T00:00:00Z",
|
| 1013 |
+
"source_row": 188624
|
| 1014 |
+
},
|
| 1015 |
+
{
|
| 1016 |
+
"storm_id": "2024298N13150",
|
| 1017 |
+
"issue_time_utc": "2024-10-27T00:00:00Z",
|
| 1018 |
+
"source_row": 188632
|
| 1019 |
+
},
|
| 1020 |
+
{
|
| 1021 |
+
"storm_id": "2024298N13150",
|
| 1022 |
+
"issue_time_utc": "2024-10-28T00:00:00Z",
|
| 1023 |
+
"source_row": 188640
|
| 1024 |
+
},
|
| 1025 |
+
{
|
| 1026 |
+
"storm_id": "2024307N06143",
|
| 1027 |
+
"issue_time_utc": "2024-11-04T06:00:00Z",
|
| 1028 |
+
"source_row": 188682
|
| 1029 |
+
},
|
| 1030 |
+
{
|
| 1031 |
+
"storm_id": "2024307N06143",
|
| 1032 |
+
"issue_time_utc": "2024-11-06T00:00:00Z",
|
| 1033 |
+
"source_row": 188696
|
| 1034 |
+
},
|
| 1035 |
+
{
|
| 1036 |
+
"storm_id": "2024307N06143",
|
| 1037 |
+
"issue_time_utc": "2024-11-08T00:00:00Z",
|
| 1038 |
+
"source_row": 188712
|
| 1039 |
+
},
|
| 1040 |
+
{
|
| 1041 |
+
"storm_id": "2024313N10169",
|
| 1042 |
+
"issue_time_utc": "2024-11-09T18:00:00Z",
|
| 1043 |
+
"source_row": 188862
|
| 1044 |
+
},
|
| 1045 |
+
{
|
| 1046 |
+
"storm_id": "2024313N10169",
|
| 1047 |
+
"issue_time_utc": "2024-11-12T00:00:00Z",
|
| 1048 |
+
"source_row": 188880
|
| 1049 |
+
},
|
| 1050 |
+
{
|
| 1051 |
+
"storm_id": "2024313N10169",
|
| 1052 |
+
"issue_time_utc": "2024-11-15T00:00:00Z",
|
| 1053 |
+
"source_row": 188904
|
| 1054 |
+
},
|
| 1055 |
+
{
|
| 1056 |
+
"storm_id": "2024329N04089",
|
| 1057 |
+
"issue_time_utc": "2024-11-25T18:00:00Z",
|
| 1058 |
+
"source_row": 189139
|
| 1059 |
+
},
|
| 1060 |
+
{
|
| 1061 |
+
"storm_id": "2024329N04089",
|
| 1062 |
+
"issue_time_utc": "2024-11-27T00:00:00Z",
|
| 1063 |
+
"source_row": 189149
|
| 1064 |
+
},
|
| 1065 |
+
{
|
| 1066 |
+
"storm_id": "2024329N04089",
|
| 1067 |
+
"issue_time_utc": "2024-11-29T00:00:00Z",
|
| 1068 |
+
"source_row": 189165
|
| 1069 |
+
},
|
| 1070 |
+
{
|
| 1071 |
+
"storm_id": "2025182N22149",
|
| 1072 |
+
"issue_time_utc": "2025-07-03T00:00:00Z",
|
| 1073 |
+
"source_row": 190688
|
| 1074 |
+
},
|
| 1075 |
+
{
|
| 1076 |
+
"storm_id": "2025182N22149",
|
| 1077 |
+
"issue_time_utc": "2025-07-05T00:00:00Z",
|
| 1078 |
+
"source_row": 190704
|
| 1079 |
+
},
|
| 1080 |
+
{
|
| 1081 |
+
"storm_id": "2025182N22149",
|
| 1082 |
+
"issue_time_utc": "2025-07-06T00:00:00Z",
|
| 1083 |
+
"source_row": 190712
|
| 1084 |
+
},
|
| 1085 |
+
{
|
| 1086 |
+
"storm_id": "2025203N20124",
|
| 1087 |
+
"issue_time_utc": "2025-07-24T00:00:00Z",
|
| 1088 |
+
"source_row": 190874
|
| 1089 |
+
},
|
| 1090 |
+
{
|
| 1091 |
+
"storm_id": "2025203N20124",
|
| 1092 |
+
"issue_time_utc": "2025-07-27T00:00:00Z",
|
| 1093 |
+
"source_row": 190898
|
| 1094 |
+
},
|
| 1095 |
+
{
|
| 1096 |
+
"storm_id": "2025203N20124",
|
| 1097 |
+
"issue_time_utc": "2025-07-29T00:00:00Z",
|
| 1098 |
+
"source_row": 190914
|
| 1099 |
+
},
|
| 1100 |
+
{
|
| 1101 |
+
"storm_id": "2025205N13145",
|
| 1102 |
+
"issue_time_utc": "2025-07-25T12:00:00Z",
|
| 1103 |
+
"source_row": 190949
|
| 1104 |
+
},
|
| 1105 |
+
{
|
| 1106 |
+
"storm_id": "2025205N13145",
|
| 1107 |
+
"issue_time_utc": "2025-07-28T00:00:00Z",
|
| 1108 |
+
"source_row": 190969
|
| 1109 |
+
},
|
| 1110 |
+
{
|
| 1111 |
+
"storm_id": "2025205N13145",
|
| 1112 |
+
"issue_time_utc": "2025-07-31T00:00:00Z",
|
| 1113 |
+
"source_row": 190993
|
| 1114 |
+
},
|
| 1115 |
+
{
|
| 1116 |
+
"storm_id": "2025215N33284",
|
| 1117 |
+
"issue_time_utc": "2025-08-04T18:00:00Z",
|
| 1118 |
+
"source_row": 191117
|
| 1119 |
+
},
|
| 1120 |
+
{
|
| 1121 |
+
"storm_id": "2025215N33284",
|
| 1122 |
+
"issue_time_utc": "2025-08-06T00:00:00Z",
|
| 1123 |
+
"source_row": 191127
|
| 1124 |
+
},
|
| 1125 |
+
{
|
| 1126 |
+
"storm_id": "2025215N33284",
|
| 1127 |
+
"issue_time_utc": "2025-08-08T00:00:00Z",
|
| 1128 |
+
"source_row": 191143
|
| 1129 |
+
},
|
| 1130 |
+
{
|
| 1131 |
+
"storm_id": "2025216N13243",
|
| 1132 |
+
"issue_time_utc": "2025-08-06T06:00:00Z",
|
| 1133 |
+
"source_row": 191178
|
| 1134 |
+
},
|
| 1135 |
+
{
|
| 1136 |
+
"storm_id": "2025216N13243",
|
| 1137 |
+
"issue_time_utc": "2025-08-08T00:00:00Z",
|
| 1138 |
+
"source_row": 191192
|
| 1139 |
+
},
|
| 1140 |
+
{
|
| 1141 |
+
"storm_id": "2025216N13243",
|
| 1142 |
+
"issue_time_utc": "2025-08-09T00:00:00Z",
|
| 1143 |
+
"source_row": 191200
|
| 1144 |
+
},
|
| 1145 |
+
{
|
| 1146 |
+
"storm_id": "2025218N19149",
|
| 1147 |
+
"issue_time_utc": "2025-08-07T18:00:00Z",
|
| 1148 |
+
"source_row": 191235
|
| 1149 |
+
},
|
| 1150 |
+
{
|
| 1151 |
+
"storm_id": "2025218N19149",
|
| 1152 |
+
"issue_time_utc": "2025-08-09T00:00:00Z",
|
| 1153 |
+
"source_row": 191245
|
| 1154 |
+
},
|
| 1155 |
+
{
|
| 1156 |
+
"storm_id": "2025218N19149",
|
| 1157 |
+
"issue_time_utc": "2025-08-10T00:00:00Z",
|
| 1158 |
+
"source_row": 191253
|
| 1159 |
+
},
|
| 1160 |
+
{
|
| 1161 |
+
"storm_id": "2025223N17337",
|
| 1162 |
+
"issue_time_utc": "2025-08-13T00:00:00Z",
|
| 1163 |
+
"source_row": 191307
|
| 1164 |
+
},
|
| 1165 |
+
{
|
| 1166 |
+
"storm_id": "2025223N17337",
|
| 1167 |
+
"issue_time_utc": "2025-08-18T00:00:00Z",
|
| 1168 |
+
"source_row": 191347
|
| 1169 |
+
},
|
| 1170 |
+
{
|
| 1171 |
+
"storm_id": "2025223N17337",
|
| 1172 |
+
"issue_time_utc": "2025-08-22T00:00:00Z",
|
| 1173 |
+
"source_row": 191379
|
| 1174 |
+
},
|
| 1175 |
+
{
|
| 1176 |
+
"storm_id": "2025243N14239",
|
| 1177 |
+
"issue_time_utc": "2025-09-02T00:00:00Z",
|
| 1178 |
+
"source_row": 191506
|
| 1179 |
+
},
|
| 1180 |
+
{
|
| 1181 |
+
"storm_id": "2025243N14239",
|
| 1182 |
+
"issue_time_utc": "2025-09-04T00:00:00Z",
|
| 1183 |
+
"source_row": 191522
|
| 1184 |
+
},
|
| 1185 |
+
{
|
| 1186 |
+
"storm_id": "2025243N14239",
|
| 1187 |
+
"issue_time_utc": "2025-09-06T00:00:00Z",
|
| 1188 |
+
"source_row": 191538
|
| 1189 |
+
},
|
| 1190 |
+
{
|
| 1191 |
+
"storm_id": "2025260N13138",
|
| 1192 |
+
"issue_time_utc": "2025-09-18T18:00:00Z",
|
| 1193 |
+
"source_row": 191710
|
| 1194 |
+
},
|
| 1195 |
+
{
|
| 1196 |
+
"storm_id": "2025260N13138",
|
| 1197 |
+
"issue_time_utc": "2025-09-19T00:00:00Z",
|
| 1198 |
+
"source_row": 191712
|
| 1199 |
+
},
|
| 1200 |
+
{
|
| 1201 |
+
"storm_id": "2025260N13138",
|
| 1202 |
+
"issue_time_utc": "2025-09-20T00:00:00Z",
|
| 1203 |
+
"source_row": 191720
|
| 1204 |
+
},
|
| 1205 |
+
{
|
| 1206 |
+
"storm_id": "2025261N19312",
|
| 1207 |
+
"issue_time_utc": "2025-09-19T18:00:00Z",
|
| 1208 |
+
"source_row": 191757
|
| 1209 |
+
},
|
| 1210 |
+
{
|
| 1211 |
+
"storm_id": "2025261N19312",
|
| 1212 |
+
"issue_time_utc": "2025-09-21T00:00:00Z",
|
| 1213 |
+
"source_row": 191767
|
| 1214 |
+
},
|
| 1215 |
+
{
|
| 1216 |
+
"storm_id": "2025261N19312",
|
| 1217 |
+
"issue_time_utc": "2025-09-23T00:00:00Z",
|
| 1218 |
+
"source_row": 191783
|
| 1219 |
+
},
|
| 1220 |
+
{
|
| 1221 |
+
"storm_id": "2025261N23166",
|
| 1222 |
+
"issue_time_utc": "2025-09-19T12:00:00Z",
|
| 1223 |
+
"source_row": 191822
|
| 1224 |
+
},
|
| 1225 |
+
{
|
| 1226 |
+
"storm_id": "2025261N23166",
|
| 1227 |
+
"issue_time_utc": "2025-09-23T00:00:00Z",
|
| 1228 |
+
"source_row": 191850
|
| 1229 |
+
},
|
| 1230 |
+
{
|
| 1231 |
+
"storm_id": "2025261N23166",
|
| 1232 |
+
"issue_time_utc": "2025-09-26T00:00:00Z",
|
| 1233 |
+
"source_row": 191874
|
| 1234 |
+
},
|
| 1235 |
+
{
|
| 1236 |
+
"storm_id": "2025265N14261",
|
| 1237 |
+
"issue_time_utc": "2025-09-23T18:00:00Z",
|
| 1238 |
+
"source_row": 191907
|
| 1239 |
+
},
|
| 1240 |
+
{
|
| 1241 |
+
"storm_id": "2025265N14261",
|
| 1242 |
+
"issue_time_utc": "2025-09-25T00:00:00Z",
|
| 1243 |
+
"source_row": 191917
|
| 1244 |
+
},
|
| 1245 |
+
{
|
| 1246 |
+
"storm_id": "2025265N14261",
|
| 1247 |
+
"issue_time_utc": "2025-09-26T00:00:00Z",
|
| 1248 |
+
"source_row": 191925
|
| 1249 |
+
},
|
| 1250 |
+
{
|
| 1251 |
+
"storm_id": "2025270N21285",
|
| 1252 |
+
"issue_time_utc": "2025-09-28T18:00:00Z",
|
| 1253 |
+
"source_row": 192030
|
| 1254 |
+
},
|
| 1255 |
+
{
|
| 1256 |
+
"storm_id": "2025270N21285",
|
| 1257 |
+
"issue_time_utc": "2025-09-30T00:00:00Z",
|
| 1258 |
+
"source_row": 192040
|
| 1259 |
+
},
|
| 1260 |
+
{
|
| 1261 |
+
"storm_id": "2025270N21285",
|
| 1262 |
+
"issue_time_utc": "2025-10-01T00:00:00Z",
|
| 1263 |
+
"source_row": 192048
|
| 1264 |
+
},
|
| 1265 |
+
{
|
| 1266 |
+
"storm_id": "2025273N09248",
|
| 1267 |
+
"issue_time_utc": "2025-10-01T18:00:00Z",
|
| 1268 |
+
"source_row": 192081
|
| 1269 |
+
},
|
| 1270 |
+
{
|
| 1271 |
+
"storm_id": "2025273N09248",
|
| 1272 |
+
"issue_time_utc": "2025-10-03T00:00:00Z",
|
| 1273 |
+
"source_row": 192091
|
| 1274 |
+
},
|
| 1275 |
+
{
|
| 1276 |
+
"storm_id": "2025273N09248",
|
| 1277 |
+
"issue_time_utc": "2025-10-04T00:00:00Z",
|
| 1278 |
+
"source_row": 192099
|
| 1279 |
+
},
|
| 1280 |
+
{
|
| 1281 |
+
"storm_id": "2025280N13147",
|
| 1282 |
+
"issue_time_utc": "2025-10-08T12:00:00Z",
|
| 1283 |
+
"source_row": 192259
|
| 1284 |
+
},
|
| 1285 |
+
{
|
| 1286 |
+
"storm_id": "2025280N13147",
|
| 1287 |
+
"issue_time_utc": "2025-10-10T00:00:00Z",
|
| 1288 |
+
"source_row": 192271
|
| 1289 |
+
},
|
| 1290 |
+
{
|
| 1291 |
+
"storm_id": "2025280N13147",
|
| 1292 |
+
"issue_time_utc": "2025-10-11T00:00:00Z",
|
| 1293 |
+
"source_row": 192279
|
| 1294 |
+
},
|
| 1295 |
+
{
|
| 1296 |
+
"storm_id": "2025294N14290",
|
| 1297 |
+
"issue_time_utc": "2025-10-23T06:00:00Z",
|
| 1298 |
+
"source_row": 192400
|
| 1299 |
+
},
|
| 1300 |
+
{
|
| 1301 |
+
"storm_id": "2025294N14290",
|
| 1302 |
+
"issue_time_utc": "2025-10-25T00:00:00Z",
|
| 1303 |
+
"source_row": 192414
|
| 1304 |
+
},
|
| 1305 |
+
{
|
| 1306 |
+
"storm_id": "2025294N14290",
|
| 1307 |
+
"issue_time_utc": "2025-10-27T00:00:00Z",
|
| 1308 |
+
"source_row": 192430
|
| 1309 |
+
},
|
| 1310 |
+
{
|
| 1311 |
+
"storm_id": "2025308N09144",
|
| 1312 |
+
"issue_time_utc": "2025-11-06T06:00:00Z",
|
| 1313 |
+
"source_row": 192525
|
| 1314 |
+
},
|
| 1315 |
+
{
|
| 1316 |
+
"storm_id": "2025308N09144",
|
| 1317 |
+
"issue_time_utc": "2025-11-07T00:00:00Z",
|
| 1318 |
+
"source_row": 192531
|
| 1319 |
+
},
|
| 1320 |
+
{
|
| 1321 |
+
"storm_id": "2025308N09144",
|
| 1322 |
+
"issue_time_utc": "2025-11-08T00:00:00Z",
|
| 1323 |
+
"source_row": 192539
|
| 1324 |
+
},
|
| 1325 |
+
{
|
| 1326 |
+
"storm_id": "2025328N07132",
|
| 1327 |
+
"issue_time_utc": "2025-11-25T12:00:00Z",
|
| 1328 |
+
"source_row": 192611
|
| 1329 |
+
},
|
| 1330 |
+
{
|
| 1331 |
+
"storm_id": "2025328N07132",
|
| 1332 |
+
"issue_time_utc": "2025-11-27T00:00:00Z",
|
| 1333 |
+
"source_row": 192623
|
| 1334 |
+
},
|
| 1335 |
+
{
|
| 1336 |
+
"storm_id": "2025328N07132",
|
| 1337 |
+
"issue_time_utc": "2025-11-28T00:00:00Z",
|
| 1338 |
+
"source_row": 192631
|
| 1339 |
+
},
|
| 1340 |
+
{
|
| 1341 |
+
"storm_id": "2026014N08133",
|
| 1342 |
+
"issue_time_utc": "2026-01-15T18:00:00Z",
|
| 1343 |
+
"source_row": 192940
|
| 1344 |
+
},
|
| 1345 |
+
{
|
| 1346 |
+
"storm_id": "2026014N08133",
|
| 1347 |
+
"issue_time_utc": "2026-01-16T00:00:00Z",
|
| 1348 |
+
"source_row": 192942
|
| 1349 |
+
},
|
| 1350 |
+
{
|
| 1351 |
+
"storm_id": "2026014N08133",
|
| 1352 |
+
"issue_time_utc": "2026-01-17T00:00:00Z",
|
| 1353 |
+
"source_row": 192950
|
| 1354 |
+
}
|
| 1355 |
+
],
|
| 1356 |
+
"leads_hours": [
|
| 1357 |
+
6,
|
| 1358 |
+
12,
|
| 1359 |
+
18,
|
| 1360 |
+
24,
|
| 1361 |
+
30,
|
| 1362 |
+
36,
|
| 1363 |
+
42,
|
| 1364 |
+
48,
|
| 1365 |
+
54,
|
| 1366 |
+
60,
|
| 1367 |
+
66,
|
| 1368 |
+
72,
|
| 1369 |
+
78,
|
| 1370 |
+
84,
|
| 1371 |
+
90,
|
| 1372 |
+
96,
|
| 1373 |
+
102,
|
| 1374 |
+
108,
|
| 1375 |
+
114,
|
| 1376 |
+
120
|
| 1377 |
+
],
|
| 1378 |
+
"member_policy": {
|
| 1379 |
+
"1.1": "saved released causal route pipeline",
|
| 1380 |
+
"1.2": "50 causal historical-input perturbations"
|
| 1381 |
+
},
|
| 1382 |
+
"case_and_truth_alignment": "Exact source-row order and truth-array equality verified",
|
| 1383 |
+
"v11_coordinate_correction": "Archived v11_local held absolute latitude/longitude from build_v11_routes; converted to issue-centred east/north km using the same projection as 1.2. Round-trip back to original coordinates verified. Original archives preserved.",
|
| 1384 |
+
"coordinate_bug_evidence": "benchmark_100_storms_3_days_gpu.py build_v11_routes returns local_to_absolute; benchmark_strict_causal_post2021.py stores and scores that output as local",
|
| 1385 |
+
"source_sha256": {
|
| 1386 |
+
"routes_and_truth.npz": "0eeca56da8ddf0be05ea7f24f6391fa97b44abc6067a7d20e3ed2199948402cb",
|
| 1387 |
+
"v173_e4_causal_ensemble50.npz": "4afc595af1c02096d2cb38563069a9b2fc37c8cff2b439b77eac2ed96e34223e"
|
| 1388 |
+
},
|
| 1389 |
+
"evaluation": "Previously inspected development cohort; not an untouched test",
|
| 1390 |
+
"pressure_comparison": "No verified same-270 1.1 central-pressure predictions in these route artifacts",
|
| 1391 |
+
"metrics": {
|
| 1392 |
+
"1.1": {
|
| 1393 |
+
"mean_direction_error_deg": 56.224109933853484,
|
| 1394 |
+
"direction_valid_case_leads": 5382,
|
| 1395 |
+
"direction_error_by_lead_deg": [
|
| 1396 |
+
35.376735350376315,
|
| 1397 |
+
39.04085642408663,
|
| 1398 |
+
41.84661514271722,
|
| 1399 |
+
45.83975846734542,
|
| 1400 |
+
47.37377074215214,
|
| 1401 |
+
49.327465606399024,
|
| 1402 |
+
50.46348722733851,
|
| 1403 |
+
54.86659740372887,
|
| 1404 |
+
56.30089781182022,
|
| 1405 |
+
57.23358486168399,
|
| 1406 |
+
57.77341299262603,
|
| 1407 |
+
58.61589950857845,
|
| 1408 |
+
59.73200733004693,
|
| 1409 |
+
63.0566298922528,
|
| 1410 |
+
64.31807942714183,
|
| 1411 |
+
65.15121387967757,
|
| 1412 |
+
67.21211258755886,
|
| 1413 |
+
68.75098804532918,
|
| 1414 |
+
69.86318419006498,
|
| 1415 |
+
72.4304439104859
|
| 1416 |
+
],
|
| 1417 |
+
"shape_similarity": 0.7273390579011202,
|
| 1418 |
+
"path_similarity": 0.4982542158756425,
|
| 1419 |
+
"frechet_distance_km": 1846.0660724601532,
|
| 1420 |
+
"mean_track_error_km": 902.3001335283294,
|
| 1421 |
+
"track_error_120h_km": 1833.248050790743,
|
| 1422 |
+
"track_error_by_lead_km": [
|
| 1423 |
+
72.83047798028892,
|
| 1424 |
+
143.7031988997466,
|
| 1425 |
+
218.81520405669625,
|
| 1426 |
+
298.11070353987276,
|
| 1427 |
+
383.2202648240788,
|
| 1428 |
+
468.59663976099824,
|
| 1429 |
+
556.5655286038506,
|
| 1430 |
+
645.2980389540552,
|
| 1431 |
+
737.135072129729,
|
| 1432 |
+
829.6157685725765,
|
| 1433 |
+
926.2267863717025,
|
| 1434 |
+
1023.1843957126057,
|
| 1435 |
+
1120.4391844884701,
|
| 1436 |
+
1215.8258986190094,
|
| 1437 |
+
1311.7024736815893,
|
| 1438 |
+
1409.9824301670455,
|
| 1439 |
+
1512.542524706109,
|
| 1440 |
+
1615.4797405994266,
|
| 1441 |
+
1723.4802881079943,
|
| 1442 |
+
1833.248050790743
|
| 1443 |
+
]
|
| 1444 |
+
},
|
| 1445 |
+
"1.2": {
|
| 1446 |
+
"mean_direction_error_deg": 44.82410582100325,
|
| 1447 |
+
"direction_valid_case_leads": 5382,
|
| 1448 |
+
"direction_error_by_lead_deg": [
|
| 1449 |
+
36.25941228123098,
|
| 1450 |
+
33.88013277907527,
|
| 1451 |
+
34.643787847336824,
|
| 1452 |
+
34.06597703664401,
|
| 1453 |
+
35.423101821901085,
|
| 1454 |
+
36.7642782901153,
|
| 1455 |
+
37.12306177100245,
|
| 1456 |
+
40.465840704159696,
|
| 1457 |
+
41.667017709824904,
|
| 1458 |
+
43.89901651916857,
|
| 1459 |
+
44.237500130825865,
|
| 1460 |
+
47.838901134083436,
|
| 1461 |
+
50.20241821866026,
|
| 1462 |
+
52.139426961020135,
|
| 1463 |
+
53.0625456572982,
|
| 1464 |
+
54.505926115819186,
|
| 1465 |
+
51.702615067231996,
|
| 1466 |
+
54.17702333067101,
|
| 1467 |
+
56.35220917469586,
|
| 1468 |
+
58.13561978499343
|
| 1469 |
+
],
|
| 1470 |
+
"shape_similarity": 0.8248619534359414,
|
| 1471 |
+
"path_similarity": 0.572741072679436,
|
| 1472 |
+
"frechet_distance_km": 1448.9280510782903,
|
| 1473 |
+
"mean_track_error_km": 714.4443964636909,
|
| 1474 |
+
"track_error_120h_km": 1433.386298169391,
|
| 1475 |
+
"track_error_by_lead_km": [
|
| 1476 |
+
74.23278291974508,
|
| 1477 |
+
135.98613318519742,
|
| 1478 |
+
200.51040487908233,
|
| 1479 |
+
264.42285452265423,
|
| 1480 |
+
331.912096438488,
|
| 1481 |
+
398.2936844173551,
|
| 1482 |
+
462.17975918622324,
|
| 1483 |
+
527.1381891567528,
|
| 1484 |
+
592.8904971261559,
|
| 1485 |
+
656.8626751389817,
|
| 1486 |
+
724.6075869478913,
|
| 1487 |
+
794.7504655422908,
|
| 1488 |
+
866.5308324070188,
|
| 1489 |
+
939.3627081466329,
|
| 1490 |
+
1015.0732933879962,
|
| 1491 |
+
1092.8305420515087,
|
| 1492 |
+
1173.491437623694,
|
| 1493 |
+
1258.1433847435899,
|
| 1494 |
+
1346.2823032831702,
|
| 1495 |
+
1433.3862981693903
|
| 1496 |
+
]
|
| 1497 |
+
}
|
| 1498 |
+
},
|
| 1499 |
+
"similarity_definitions": {
|
| 1500 |
+
"direction": "Mean absolute wrapped 6-hour heading difference, common mask: both models and truth move >1 km; issue origin included",
|
| 1501 |
+
"shape": "Mean (1 + cosine similarity)/2 of centered flattened 20-lead routes; translation and scalar scale removed, orientation preserved",
|
| 1502 |
+
"path": "Mean exp(-discrete Frechet distance / truth route length); same 20 forecast points and issue-origin-inclusive truth length",
|
| 1503 |
+
"position": "Euclidean displacement error in the existing benchmark local-km coordinate system"
|
| 1504 |
+
},
|
| 1505 |
+
"mean_track_error_reduction_percent": 20.81965081065129
|
| 1506 |
+
}
|
evaluation/trackformer_1_2_vs_1_1_route_examples.png
ADDED
|
Git LFS Details
|
evaluation/trackformer_1_2_vs_1_1_tip_bars.png
ADDED
|
evaluation/trackformer_1_2_vs_1_1_tip_metrics.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"title": "Trackformer 1.2 versus 1.1 TIP ten-start development diagnostic",
|
| 3 |
+
"issue_times_utc": [
|
| 4 |
+
"1979-10-12T00:00:00", "1979-10-12T06:00:00",
|
| 5 |
+
"1979-10-12T12:00:00", "1979-10-12T18:00:00",
|
| 6 |
+
"1979-10-13T00:00:00", "1979-10-13T06:00:00",
|
| 7 |
+
"1979-10-13T12:00:00", "1979-10-13T18:00:00",
|
| 8 |
+
"1979-10-14T00:00:00", "1979-10-14T06:00:00"
|
| 9 |
+
],
|
| 10 |
+
"lead_hours": [6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, 96, 102, 108, 114, 120],
|
| 11 |
+
"trackformer_1_1": {
|
| 12 |
+
"mean_track_error_km": 383.851708984375,
|
| 13 |
+
"central_pressure_mae_hpa": 20.0993,
|
| 14 |
+
"member_policy": "released prediction pipeline"
|
| 15 |
+
},
|
| 16 |
+
"trackformer_1_2": {
|
| 17 |
+
"mean_track_error_km": 370.4600524902344,
|
| 18 |
+
"central_pressure_mae_hpa": 30.722952880859374,
|
| 19 |
+
"member_policy": "mean of 50 distinct causal historical-input perturbations",
|
| 20 |
+
"inference_weights_sha256": "db49f36e85a3766defc4c172746897a1f783705d1ce8e6f9dfb8e87ae1d902cb"
|
| 21 |
+
},
|
| 22 |
+
"limitations": [
|
| 23 |
+
"Ten overlapping starts of one storm, not ten independent storms",
|
| 24 |
+
"Repeatedly inspected development cohort, not untouched holdout",
|
| 25 |
+
"Different input and member pipelines; this is not a controlled architecture ablation",
|
| 26 |
+
"Trackformer 1.2 improves mean track error slightly but worsens central-pressure MAE"
|
| 27 |
+
]
|
| 28 |
+
}
|
evaluation/trackformer_1_2_yagi_video_poster.png
ADDED
|
Git LFS Details
|
paper/release_data/bavi_coastlines.json
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
[[[126.376814,8.414706],[126.478513,7.750354],[126.537424,7.189381],[126.196773,6.274294],[125.831421,7.293715],[125.363852,6.786485],[125.683161,6.049657],[125.396512,5.581003],[124.219788,6.161355],[123.93872,6.885136],[124.243662,7.36061],[123.610212,7.833527],[123.296071,7.418876],[122.825506,7.457375],[122.085499,6.899424],[121.919928,7.192119],[122.312359,8.034962],[122.942398,8.316237],[123.487688,8.69301],[123.841154,8.240324],[124.60147,8.514158],[124.764612,8.960409],[125.471391,8.986997],[125.412118,9.760335],[126.222714,9.286074],[126.306637,8.782487],[126.376814,8.414706]],[[125.502552,12.162695],[125.783465,11.046122],[125.011884,11.311455],[125.032761,10.975816],[125.277449,10.358722],[124.801819,10.134679],[124.760168,10.837995],[124.459101,10.88993],[124.302522,11.495371],[124.891013,11.415583],[124.87799,11.79419],[124.266762,12.557761],[125.227116,12.535721],[125.502552,12.162695]]]
|
|
|
|
|
|
paper/release_data/bavi_video.json
DELETED
|
@@ -1,55 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"model": "Trackformer 1.2",
|
| 3 |
-
"storm": "BAVI",
|
| 4 |
-
"storm_id": "2026182N09163",
|
| 5 |
-
"issue_time_utc": "2026-07-03T06:00:00Z",
|
| 6 |
-
"members": 50,
|
| 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 |
-
"source_archive_sha256": "96392e7c44e2050b2b67803262ff470b093cf93c0bcd061b59312dc0502bb860",
|
| 30 |
-
"inputs_sha256": "1ca0e8087e5efca02e0f72421fbe5f7aff747cd08172ab4d4c92f0acc8a0926e",
|
| 31 |
-
"observed_csv_sha256": "4348af2679b4be0d53ec630bccda759044663a1f57e2bbd5c1d19428aab562fc",
|
| 32 |
-
"data_sha256": "9251fb82ebde819eced999c3440aa9b0a24251c29a4c2f6a4670f4137b9c5aff",
|
| 33 |
-
"checkpoint_sha256": "f194a23d3f91ea76ad776dfad942fabd669eeae8b3fd665815463095367e9ee0",
|
| 34 |
-
"forecast_source": "Saved 50 smooth historical-input perturbation means from the released checkpoint; no new inference for this video.",
|
| 35 |
-
"route_projection_correction": "Undo the archived predicted-latitude longitude conversion and restore the issue-latitude projection used by ensemble inference. Original route retained; round-trip verified.",
|
| 36 |
-
"observed_route_source": "Exact six-hour LAT/LON from local IBTrACS WP archive, storm 2026182N09163.",
|
| 37 |
-
"observed_pressure_source": "IBTrACS USA_PRES; not JMA/WMO pressure. Missing labels are masked.",
|
| 38 |
-
"field_display": "Unchanged physical member-mean basin field, overlaid with the unchanged regional reconstruction only within its fixed coverage. No synthetic pressure extension or future observed pressure map.",
|
| 39 |
-
"regional_bounds": [
|
| 40 |
-
139.25,
|
| 41 |
-
169.25,
|
| 42 |
-
-2.0,
|
| 43 |
-
28.0
|
| 44 |
-
],
|
| 45 |
-
"qualification": "Requested Bavi development showcase, not an untouched holdout or a claim of typical skill.",
|
| 46 |
-
"video": {
|
| 47 |
-
"frames": 20,
|
| 48 |
-
"duration_seconds": 23,
|
| 49 |
-
"codec": "H.264",
|
| 50 |
-
"encoder": "h264_videotoolbox",
|
| 51 |
-
"file": "docs/trackformer_1_2_bavi.mp4",
|
| 52 |
-
"sha256": "33ecd068f1eee144b10301d6261dfad673557b2b38050e159e39935cccc3872c",
|
| 53 |
-
"playback": "1 second per six-hour lead; final frame held for 3 seconds; no interpolated forecast states"
|
| 54 |
-
}
|
| 55 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
paper/release_data/pressure_showcase.json
DELETED
|
@@ -1,28 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"public_model": "Trackformer 1.2",
|
| 3 |
-
"storm_name": "PRAPIROON",
|
| 4 |
-
"storm_id": "2024198N08130",
|
| 5 |
-
"issue_time_utc": "2024-07-19T00:00:00Z",
|
| 6 |
-
"case_index": 151,
|
| 7 |
-
"source_row": 186973,
|
| 8 |
-
"members": 50,
|
| 9 |
-
"member_policy": "50 smooth historical-input perturbations, not latent samples",
|
| 10 |
-
"selection_rule": "Among the saved 270 cases, require both routes within the fixed regional patch with 1-degree margin and valid basin coverage, shape >=0.90, heading error <=30 degrees, >=18 pressure labels and central-pressure MAE <=15 hPa; choose lowest mean track error. No field values altered.",
|
| 11 |
-
"eligible_cases": 4,
|
| 12 |
-
"selected_best_not_representative": true,
|
| 13 |
-
"metrics": {
|
| 14 |
-
"mean_track_error_km": 133.2238587752683,
|
| 15 |
-
"track_error_120h_km": 305.1292398492091,
|
| 16 |
-
"shape_similarity": 0.9809541562706234,
|
| 17 |
-
"direction_error_deg": 29.459619452579773,
|
| 18 |
-
"direction_valid_steps": 20
|
| 19 |
-
},
|
| 20 |
-
"central_pressure_mae_hpa": 2.908013343811035,
|
| 21 |
-
"native_history_available": false,
|
| 22 |
-
"checkpoint_sha256": "f194a23d3f91ea76ad776dfad942fabd669eeae8b3fd665815463095367e9ee0",
|
| 23 |
-
"archive_sha256": "4afc595af1c02096d2cb38563069a9b2fc37c8cff2b439b77eac2ed96e34223e",
|
| 24 |
-
"data_sha256": "2e271cf728daf219662f3f2f2c519dccb9d63695cd97d2b5e5f2484f3d822648",
|
| 25 |
-
"observed_route_source": "Exact six-hour issue-centre coordinates from the same storm in track_windows_v13, not a reconstruction from cumulative local steps. Retrospective best-track verification only.",
|
| 26 |
-
"field_source": "Unmodified saved ensemble50_native_mslp_hpa: model basin-plus-moving-core reconstruction on the fixed issue-anchored geographic grid. 0.25-degree output sampling is not native forecast resolution.",
|
| 27 |
-
"note": "Mean route and mean central pressure need not equal the minimum of the mean field."
|
| 28 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
release_tools/build_bavi_video.py
DELETED
|
@@ -1,122 +0,0 @@
|
|
| 1 |
-
"""Render saved Trackformer 1.2 Bavi means as an MP4; no new inference.
|
| 2 |
-
|
| 3 |
-
Requires numpy, matplotlib and ffmpeg. --source-root prepares the public subset.
|
| 4 |
-
The active GPU benchmark is not stopped or modified.
|
| 5 |
-
"""
|
| 6 |
-
import argparse,csv,hashlib,json,subprocess
|
| 7 |
-
from datetime import datetime,timedelta,timezone
|
| 8 |
-
from pathlib import Path
|
| 9 |
-
import numpy as np
|
| 10 |
-
import matplotlib
|
| 11 |
-
matplotlib.use('Agg')
|
| 12 |
-
import matplotlib.pyplot as plt
|
| 13 |
-
from matplotlib.patches import Rectangle
|
| 14 |
-
|
| 15 |
-
REPO=Path(__file__).resolve().parents[1]
|
| 16 |
-
DATA=REPO/'paper/release_data'
|
| 17 |
-
|
| 18 |
-
def sha(path):
|
| 19 |
-
h=hashlib.sha256()
|
| 20 |
-
with Path(path).open('rb') as f:
|
| 21 |
-
for b in iter(lambda:f.read(8*1024**2),b''):h.update(b)
|
| 22 |
-
return h.hexdigest()
|
| 23 |
-
|
| 24 |
-
def prepare(root):
|
| 25 |
-
source=root/'benchmark_ensemble50/v173_e4/showcase_four.npz'
|
| 26 |
-
inputs=root/'runs/four_v166_maps/bavi/inputs.npz'
|
| 27 |
-
with np.load(inputs) as z:
|
| 28 |
-
lat,lon,center=z['latitude'],z['longitude'],z['center']
|
| 29 |
-
times=z['time'];issue=int(z['observation_ns'])
|
| 30 |
-
assert int(times[-1])<=issue and len(times)==9
|
| 31 |
-
with np.load(source) as z:
|
| 32 |
-
i=z['storms'].tolist().index('bavi');assert int(z['member_count'])==50
|
| 33 |
-
raw=z['route'][i].astype('float64');p=z['pressure'][i];coarse=z['fields'][i];native=z['native'][i]
|
| 34 |
-
# The old writer converted issue-centred local km back to longitude with
|
| 35 |
-
# predicted latitude. Undo that projection and use the actual issue latitude,
|
| 36 |
-
# recovering the member-mean geographic centres (to stored float precision).
|
| 37 |
-
east=((raw[:,1]-center[1]+180)%360-180)*111.2*np.maximum(np.cos(np.deg2rad(raw[:,0])),.2)
|
| 38 |
-
route=raw.copy();route[:,1]=center[1]+east/(111.2*max(np.cos(np.deg2rad(center[0])),.2))
|
| 39 |
-
roundtrip=center[1]+(route[:,1]-center[1])*max(np.cos(np.deg2rad(center[0])),.2)/np.maximum(np.cos(np.deg2rad(raw[:,0])),.2)
|
| 40 |
-
assert np.allclose(roundtrip,raw[:,1],atol=1e-6)
|
| 41 |
-
rows={}
|
| 42 |
-
csvpath=root/'data/ibtracs/ibtracs.WP.list.v04r01.csv'
|
| 43 |
-
with csvpath.open() as f:
|
| 44 |
-
for r in csv.DictReader(f):
|
| 45 |
-
if r['SID']=='2026182N09163':rows[r['ISO_TIME']]=r
|
| 46 |
-
t=datetime.fromtimestamp(issue/1e9,timezone.utc);obs=[];truthp=[]
|
| 47 |
-
for k in range(21):
|
| 48 |
-
r=rows[(t+timedelta(hours=6*k)).strftime('%Y-%m-%d %H:%M:%S')]
|
| 49 |
-
obs.append([float(r['LAT']),float(r['LON'])]);value=r['USA_PRES'].strip()
|
| 50 |
-
truthp.append(float(value) if value else np.nan)
|
| 51 |
-
assert np.allclose(obs[0],center,atol=.001)
|
| 52 |
-
path=DATA/'bavi_video.npz'
|
| 53 |
-
np.savez_compressed(path,forecast_lat_lon=np.vstack([center,route]),original_archive_route=raw,observed_lat_lon=np.array(obs),central_pressure_hpa=p,observed_pressure_hpa=np.array(truthp)[1:],regional_pressure_hpa=native,basin_pressure_hpa=coarse,latitude=lat,longitude=lon)
|
| 54 |
-
rings=json.loads((root/'trackformer-weatherlab-site/public/data/history/coastlines.json').read_text())
|
| 55 |
-
rings=[r for r in rings if any(125<=x<=161 and 5<=y<=30 for x,y in r)]
|
| 56 |
-
(DATA/'bavi_coastlines.json').write_text(json.dumps(rings,separators=(',',':'))+'\n')
|
| 57 |
-
meta={'model':'Trackformer 1.2','storm':'BAVI','storm_id':'2026182N09163','issue_time_utc':t.isoformat().replace('+00:00','Z'),'members':50,'leads_hours':list(range(6,121,6)),
|
| 58 |
-
'source_archive_sha256':sha(source),'inputs_sha256':sha(inputs),'observed_csv_sha256':sha(csvpath),'data_sha256':sha(path),
|
| 59 |
-
'checkpoint_sha256':'f194a23d3f91ea76ad776dfad942fabd669eeae8b3fd665815463095367e9ee0',
|
| 60 |
-
'forecast_source':'Saved 50 smooth historical-input perturbation means from the released checkpoint; no new inference for this video.',
|
| 61 |
-
'route_projection_correction':'Undo the archived predicted-latitude longitude conversion and restore the issue-latitude projection used by ensemble inference. Original route retained; round-trip verified.',
|
| 62 |
-
'observed_route_source':'Exact six-hour LAT/LON from local IBTrACS WP archive, storm 2026182N09163.',
|
| 63 |
-
'observed_pressure_source':'IBTrACS USA_PRES; not JMA/WMO pressure. Missing labels are masked.',
|
| 64 |
-
'field_display':'Unchanged physical member-mean basin field, overlaid with the unchanged regional reconstruction only within its fixed coverage. No synthetic pressure extension or future observed pressure map.',
|
| 65 |
-
'regional_bounds':[float(lon.min()),float(lon.max()),float(lat.min()),float(lat.max())],
|
| 66 |
-
'qualification':'Requested Bavi development showcase, not an untouched holdout or a claim of typical skill.'}
|
| 67 |
-
(DATA/'bavi_video.json').write_text(json.dumps(meta,indent=2)+'\n')
|
| 68 |
-
|
| 69 |
-
def build(work):
|
| 70 |
-
work.mkdir(parents=True,exist_ok=True)
|
| 71 |
-
meta=json.loads((DATA/'bavi_video.json').read_text());assert sha(DATA/'bavi_video.npz')==meta['data_sha256']
|
| 72 |
-
with np.load(DATA/'bavi_video.npz') as z:a={k:z[k] for k in z.files}
|
| 73 |
-
rings=json.loads((DATA/'bavi_coastlines.json').read_text())
|
| 74 |
-
f,o=a['forecast_lat_lon'],a['observed_lat_lon'];lat,lon=a['latitude'],a['longitude']
|
| 75 |
-
bounds=[127,159,6,27];levels=np.arange(932,1025,2);contours=np.arange(932,1025,4)
|
| 76 |
-
glat=np.linspace(60,0,25);glon=np.linspace(100,180,33);lead=np.arange(6,121,6)
|
| 77 |
-
start=datetime.fromisoformat(meta['issue_time_utc'].replace('Z','+00:00'))
|
| 78 |
-
plt.rcParams.update({'font.size':12,'axes.titlesize':15})
|
| 79 |
-
for k in range(20):
|
| 80 |
-
fig=plt.figure(figsize=(16,10),dpi=100,facecolor='#f8fafb')
|
| 81 |
-
gs=fig.add_gridspec(2,2,width_ratios=[3.9,1.25],height_ratios=[4.5,1.25],left=.055,right=.94,bottom=.10,top=.86,wspace=.25,hspace=.35)
|
| 82 |
-
ax=fig.add_subplot(gs[0,:]);ax.set_facecolor('#f8fafb')
|
| 83 |
-
ax.contourf(glon,glat,a['basin_pressure_hpa'][k],levels=levels,cmap='RdYlBu_r',extend='both')
|
| 84 |
-
ax.contour(glon,glat,a['basin_pressure_hpa'][k],levels=contours,colors='#546971',linewidths=.45)
|
| 85 |
-
im=ax.contourf(lon,lat,a['regional_pressure_hpa'][k],levels=levels,cmap='RdYlBu_r',extend='both')
|
| 86 |
-
cs=ax.contour(lon,lat,a['regional_pressure_hpa'][k],levels=contours,colors='#354b58',linewidths=.65)
|
| 87 |
-
ax.clabel(cs,levels=np.arange(936,1025,12),fmt='%d',fontsize=9)
|
| 88 |
-
for ring in rings:
|
| 89 |
-
xy=np.asarray(ring);ax.plot(xy[:,0],xy[:,1],c='#66716b',lw=.8)
|
| 90 |
-
ax.add_patch(Rectangle((lon.min(),lat.min()),np.ptp(lon),np.ptp(lat),fill=False,edgecolor='#265b61',lw=1.2,ls=':'))
|
| 91 |
-
for points,color,label,style in [(o,'#182f42','Observed best track','--'),(f,'#b31565','Trackformer 1.2 mean of 50','-')]:
|
| 92 |
-
ax.plot(points[:,1],points[:,0],ls=style,c=color,alpha=.25,lw=1.6)
|
| 93 |
-
ax.plot(points[:k+2,1],points[:k+2,0],ls=style,c=color,lw=2.8,label=label)
|
| 94 |
-
ax.scatter(points[k+1,1],points[k+1,0],s=75,c=color,edgecolors='white',linewidths=1.8,zorder=6)
|
| 95 |
-
ax.set(xlim=bounds[:2],ylim=bounds[2:],xlabel='Longitude °E',ylabel='Latitude °N');ax.grid(alpha=.13);ax.set_aspect(1/np.cos(np.deg2rad(16.5)))
|
| 96 |
-
ax.legend(loc='lower left',fontsize=11,framealpha=.95)
|
| 97 |
-
ax.text(.985,.03,'Dotted boundary: fixed regional reconstruction\nOutside: 2.5° basin pressure only',transform=ax.transAxes,ha='right',va='bottom',fontsize=10,bbox={'facecolor':'white','alpha':.9,'edgecolor':'none','pad':5})
|
| 98 |
-
cax=fig.add_axes([.952,.35,.014,.45]);fig.colorbar(im,cax=cax,label='Model mean sea-level pressure (hPa)')
|
| 99 |
-
curve=fig.add_subplot(gs[1,0]);curve.plot(lead,a['central_pressure_hpa'],c='#b31565',lw=2,label='Model central pressure');curve.plot(lead,a['observed_pressure_hpa'],'--',c='#182f42',lw=2,label='Observed pressure (IBTrACS USA)')
|
| 100 |
-
curve.axvline(lead[k],c='#688e98',lw=1.5);curve.scatter([lead[k]],[a['central_pressure_hpa'][k]],c='#b31565',s=40,zorder=4)
|
| 101 |
-
curve.set(xlim=(6,120),xlabel='Forecast lead (hours)',ylabel='Central pressure (hPa)',xticks=[6,24,48,72,96,120]);curve.grid(alpha=.2);curve.legend(loc='upper right',fontsize=10,ncol=2)
|
| 102 |
-
info=fig.add_subplot(gs[1,1]);info.axis('off');p=a['central_pressure_hpa'][k];op=a['observed_pressure_hpa'][k]
|
| 103 |
-
inside=lon.min()<=f[k+1,1]<=lon.max() and lat.min()<=f[k+1,0]<=lat.max()
|
| 104 |
-
msg=f'Model centre: {p:.1f} hPa\nObserved: {op:.0f} hPa\n\n'+('Centre within regional field' if inside else 'Centre outside regional patch\nDetailed core is not shown here')
|
| 105 |
-
info.text(0,1,msg,va='top',fontsize=13,color='#244754')
|
| 106 |
-
valid=start+timedelta(hours=int(lead[k]));fig.suptitle(f'Trackformer 1.2 / BAVI / +{lead[k]:03d} h',x=.055,y=.97,ha='left',fontsize=24,fontweight='bold',color='#173947')
|
| 107 |
-
fig.text(.055,.915,f'Issue: {start:%d %b %Y %H:%M} UTC | Valid: {valid:%d %b %Y %H:%M} UTC | 50-member mean',fontsize=14,color='#385865')
|
| 108 |
-
fig.text(.055,.035,'Actual model pressure fields; observed route is verification only. Mean central pressure is not the minimum of the mean map.',fontsize=11,color='#47636d')
|
| 109 |
-
fig.savefig(work/f'frame_{k:03d}.png',dpi=100);
|
| 110 |
-
if k==9:fig.savefig(REPO/'paper/trackformer_1_2_bavi_video_poster.png',dpi=100)
|
| 111 |
-
plt.close(fig)
|
| 112 |
-
output=REPO/'docs/trackformer_1_2_bavi.mp4'
|
| 113 |
-
cmd=['ffmpeg','-y','-hide_banner','-loglevel','warning','-framerate','1','-i',str(work/'frame_%03d.png'),'-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)]
|
| 114 |
-
subprocess.run(cmd,check=True)
|
| 115 |
-
meta['video']={'frames':20,'duration_seconds':23,'codec':'H.264','encoder':'h264_videotoolbox','file':'docs/trackformer_1_2_bavi.mp4','sha256':sha(output),'playback':'1 second per six-hour lead; final frame held for 3 seconds; no interpolated forecast states'}
|
| 116 |
-
(DATA/'bavi_video.json').write_text(json.dumps(meta,indent=2)+'\n')
|
| 117 |
-
print('Saved',output,output.stat().st_size,'bytes')
|
| 118 |
-
|
| 119 |
-
if __name__=='__main__':
|
| 120 |
-
p=argparse.ArgumentParser();p.add_argument('--source-root',type=Path);p.add_argument('--work',type=Path,required=True);args=p.parse_args()
|
| 121 |
-
if args.source_root:prepare(args.source_root)
|
| 122 |
-
build(args.work)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
release_tools/build_pressure_showcase.py
DELETED
|
@@ -1,112 +0,0 @@
|
|
| 1 |
-
"""Build an offline interactive map from saved physical 50-member fields.
|
| 2 |
-
|
| 3 |
-
--source-root prepares the public data subset; otherwise use published subset.
|
| 4 |
-
No model inference, GPU allocation, training, or weather retrieval is performed.
|
| 5 |
-
"""
|
| 6 |
-
import argparse, base64, csv, hashlib, io, json
|
| 7 |
-
from pathlib import Path
|
| 8 |
-
import numpy as np
|
| 9 |
-
import matplotlib
|
| 10 |
-
matplotlib.use('Agg')
|
| 11 |
-
import matplotlib.pyplot as plt
|
| 12 |
-
|
| 13 |
-
REPO=Path(__file__).resolve().parents[1]
|
| 14 |
-
DATA=REPO/'paper/release_data'
|
| 15 |
-
|
| 16 |
-
def sha(path):
|
| 17 |
-
h=hashlib.sha256()
|
| 18 |
-
with Path(path).open('rb') as f:
|
| 19 |
-
for b in iter(lambda:f.read(8*1024**2),b''):h.update(b)
|
| 20 |
-
return h.hexdigest()
|
| 21 |
-
|
| 22 |
-
def absolute(local,lat,lon):
|
| 23 |
-
return np.stack([lat+local[...,1]/111.2,lon+local[...,0]/(111.2*max(np.cos(np.deg2rad(lat)),.2))],-1)
|
| 24 |
-
|
| 25 |
-
def prepare(root):
|
| 26 |
-
archive=root/'benchmark_ensemble50/v173_e4/v173_e4_causal_ensemble50.npz'
|
| 27 |
-
cases=json.loads((REPO/'paper/trackformer_1_2_showcase_selection.json').read_text())['all_case_metrics']
|
| 28 |
-
patches={r['track_archive_row']:r for r in json.loads((root/'data/v164_reuse/plan.json').read_text())['rows']}
|
| 29 |
-
with np.load(root/'track_build/track_windows_v13.npz') as w:
|
| 30 |
-
target,mask=w['target'],w['target_mask']
|
| 31 |
-
times,ids=w['base_time'],w['storm_id'].astype(str)
|
| 32 |
-
lats,lons=w['base_lat'],w['base_lon']%360
|
| 33 |
-
with np.load(archive) as z:
|
| 34 |
-
routes=z['ensemble50_local'];truth=z['truth_local'];pressure=z['ensemble50_pressure_hpa']
|
| 35 |
-
eligible=[]
|
| 36 |
-
for c in cases:
|
| 37 |
-
i=c['case_index'];r=c['source_row'];lat,lon=c['base_lat'],c['base_lon']
|
| 38 |
-
patch=patches.get(r)
|
| 39 |
-
anchor=np.array([patch['center_lat'],patch['center_lon']]) if patch else np.round(np.array([lat,lon])*4)/4
|
| 40 |
-
p,t=absolute(routes[i],lat,lon),absolute(truth[i],lat,lon)
|
| 41 |
-
points=np.vstack([[lat,lon],p,t])
|
| 42 |
-
fits=(np.abs(points-anchor)<14).all() and (points[:,0]>0).all() and (points[:,0]<60).all() and (points[:,1]>100).all() and (points[:,1]<180).all()
|
| 43 |
-
pm=mask[r,:20,3].astype(bool)&np.isfinite(target[r,:20,3])&(target[r,:20,3]>800)&(target[r,:20,3]<1100)
|
| 44 |
-
pe=float(np.abs(pressure[i]-target[r,:20,3])[pm].mean()) if pm.any() else None
|
| 45 |
-
m=c['models']['1.2']
|
| 46 |
-
if fits and pm.sum()>=18 and pe<=15 and m['shape_similarity']>=.9 and m['direction_error_deg'] is not None and m['direction_error_deg']<=30:
|
| 47 |
-
eligible.append((m['mean_track_error_km'],i,anchor,pe))
|
| 48 |
-
_,i,anchor,pe=min(eligible,key=lambda x:(x[0],x[1]));c=cases[i];r=c['source_row']
|
| 49 |
-
lookup={int(times[j]):int(j) for j in np.flatnonzero(ids==c['storm_id'])}
|
| 50 |
-
issue=int(times[r]);future=[lookup[issue+k*6*3600*10**9] for k in range(21)]
|
| 51 |
-
observed=np.stack([lats[future],lons[future]],-1)
|
| 52 |
-
forecast=np.vstack([[c['base_lat'],c['base_lon']],absolute(routes[i],c['base_lat'],c['base_lon'])])
|
| 53 |
-
assert (np.abs(np.vstack([observed,forecast])-anchor)<15).all()
|
| 54 |
-
field=z['ensemble50_native_mslp_hpa'][i].copy()
|
| 55 |
-
assert field.shape==(20,121,121) and np.isfinite(field).all()
|
| 56 |
-
pm=mask[r,:20,3].astype(bool)&(target[r,:20,3]>800)&(target[r,:20,3]<1100)
|
| 57 |
-
np.savez_compressed(DATA/'pressure_showcase.npz',pressure_hpa=field,latitude=anchor[0]+np.linspace(15,-15,121),longitude=anchor[1]+np.linspace(-15,15,121),forecast_lat_lon=forecast,observed_lat_lon=observed,central_pressure_hpa=pressure[i],observed_pressure_hpa=target[r,:20,3],pressure_mask=pm)
|
| 58 |
-
names={}
|
| 59 |
-
with (root/'data/ibtracs/ibtracs.WP.list.v04r01.csv').open() as f:
|
| 60 |
-
for row in csv.DictReader(f):names[row['SID']]=row['NAME']
|
| 61 |
-
rule='Among the saved 270 cases, require both routes within the fixed regional patch with 1-degree margin and valid basin coverage, shape >=0.90, heading error <=30 degrees, >=18 pressure labels and central-pressure MAE <=15 hPa; choose lowest mean track error. No field values altered.'
|
| 62 |
-
meta={'public_model':'Trackformer 1.2','storm_name':names[c['storm_id']],'storm_id':c['storm_id'],'issue_time_utc':c['issue_time_utc'],'case_index':i,'source_row':r,'members':50,'member_policy':'50 smooth historical-input perturbations, not latent samples','selection_rule':rule,'eligible_cases':len(eligible),'selected_best_not_representative':True,'metrics':c['models']['1.2'],'central_pressure_mae_hpa':pe,'native_history_available':r in patches,'checkpoint_sha256':'f194a23d3f91ea76ad776dfad942fabd669eeae8b3fd665815463095367e9ee0','archive_sha256':sha(archive),'data_sha256':sha(DATA/'pressure_showcase.npz'),'observed_route_source':'Exact six-hour issue-centre coordinates from the same storm in track_windows_v13, not a reconstruction from cumulative local steps. Retrospective best-track verification only.','field_source':'Unmodified saved ensemble50_native_mslp_hpa: model basin-plus-moving-core reconstruction on the fixed issue-anchored geographic grid. 0.25-degree output sampling is not native forecast resolution.','note':'Mean route and mean central pressure need not equal the minimum of the mean field.'}
|
| 63 |
-
rings=json.loads((root/'trackformer-weatherlab-site/public/data/history/coastlines.json').read_text())
|
| 64 |
-
rings=[ring for ring in rings if any(anchor[1]-15<=x<=anchor[1]+15 and max(0,anchor[0]-15)<=y<=anchor[0]+15 for x,y in ring)]
|
| 65 |
-
(DATA/'pressure_showcase_coastlines.json').write_text(json.dumps(rings,separators=(',',':'))+'\n')
|
| 66 |
-
(DATA/'pressure_showcase.json').write_text(json.dumps(meta,indent=2)+'\n')
|
| 67 |
-
print('Selected',meta['storm_name'],meta['issue_time_utc'],'case',i,'track',meta['metrics']['mean_track_error_km'],'pressure',pe)
|
| 68 |
-
|
| 69 |
-
def build():
|
| 70 |
-
meta=json.loads((DATA/'pressure_showcase.json').read_text())
|
| 71 |
-
rings=json.loads((DATA/'pressure_showcase_coastlines.json').read_text())
|
| 72 |
-
with np.load(DATA/'pressure_showcase.npz') as z: a={k:z[k] for k in z.files}
|
| 73 |
-
assert sha(DATA/'pressure_showcase.npz')==meta['data_sha256']
|
| 74 |
-
lat,lon=a['latitude'],a['longitude'];tracks=np.concatenate([a['forecast_lat_lon'],a['observed_lat_lon']])
|
| 75 |
-
bounds=[max(100,float(lon.min()),float(tracks[:,1].min()-3)),min(180,float(lon.max()),float(tracks[:,1].max()+3)),max(0,float(lat.min()),float(tracks[:,0].min()-3)),min(60,float(lat.max()),float(tracks[:,0].max()+3))]
|
| 76 |
-
ratio=(bounds[3]-bounds[2])/((bounds[1]-bounds[0])*np.cos(np.deg2rad((bounds[2]+bounds[3])/2)))
|
| 77 |
-
fields=a['pressure_hpa'];valid=(lat[:,None]>=0)&(lat[:,None]<=60)&(lon[None,:]>=100)&(lon[None,:]<=180)
|
| 78 |
-
lo=int(np.floor(fields[:,valid].min()/4)*4);hi=int(np.ceil(fields[:,valid].max()/4)*4)
|
| 79 |
-
levels=np.arange(lo,hi+2,2);frames=[]
|
| 80 |
-
for field in fields:
|
| 81 |
-
fig=plt.figure(figsize=(9,9*ratio));ax=fig.add_axes([0,0,1,1])
|
| 82 |
-
f=np.ma.masked_where(~valid,field)
|
| 83 |
-
ax.contourf(lon,lat,f,levels=levels,cmap='RdYlBu_r',extend='both')
|
| 84 |
-
contour=ax.contour(lon,lat,f,levels=np.arange(lo,hi+4,4),colors='#314656',linewidths=.65)
|
| 85 |
-
ax.clabel(contour,levels=np.arange(lo,hi+4,8),fontsize=8,fmt='%d',inline_spacing=5)
|
| 86 |
-
for ring in rings:
|
| 87 |
-
xy=np.asarray(ring);ax.plot(xy[:,0],xy[:,1],c='#4f6164',lw=.8)
|
| 88 |
-
ax.set(xlim=bounds[:2],ylim=bounds[2:]);ax.set_axis_off()
|
| 89 |
-
buf=io.BytesIO();fig.savefig(buf,format='png',dpi=115);plt.close(fig)
|
| 90 |
-
frames.append('data:image/png;base64,'+base64.b64encode(buf.getvalue()).decode())
|
| 91 |
-
packet={'meta':meta,'bounds':bounds,'ratio':ratio,'range':[lo,hi],'frames':frames,'fields':fields.round(2).tolist(),'latitude':lat.tolist(),'longitude':lon.tolist(),'forecast':a['forecast_lat_lon'].tolist(),'observed':a['observed_lat_lon'].tolist(),'pressure':a['central_pressure_hpa'].tolist(),'observedPressure':[float(v) if ok else None for v,ok in zip(a['observed_pressure_hpa'],a['pressure_mask'])]}
|
| 92 |
-
template=(REPO/'release_tools/pressure_showcase_template.html').read_text()
|
| 93 |
-
html=template.replace('/*__DATA__*/',json.dumps(packet,separators=(',',':'),allow_nan=False))
|
| 94 |
-
(REPO/'docs/trackformer_1_2_pressure.html').write_text(html)
|
| 95 |
-
# A real, clickable README preview; it is not a fabricated map.
|
| 96 |
-
fig,ax=plt.subplots(figsize=(10,8),layout='constrained');k=11
|
| 97 |
-
im=ax.contourf(lon,lat,np.ma.masked_where(~valid,fields[k]),levels=levels,cmap='RdYlBu_r')
|
| 98 |
-
cs=ax.contour(lon,lat,np.ma.masked_where(~valid,fields[k]),levels=np.arange(lo,hi+4,4),colors='#314656',linewidths=.6);ax.clabel(cs,levels=np.arange(lo,hi+4,8),fmt='%d',fontsize=8)
|
| 99 |
-
for ring in rings:
|
| 100 |
-
xy=np.asarray(ring);ax.plot(xy[:,0],xy[:,1],c='#4f6164',lw=.8)
|
| 101 |
-
for key,color,label,style in [('observed_lat_lon','#162437','Observed route','--'),('forecast_lat_lon','#b01467','1.2 mean of 50','-')]:
|
| 102 |
-
p=a[key];ax.plot(p[:,1],p[:,0],style,c=color,lw=2.3,label=label);ax.scatter(p[k+1,1],p[k+1,0],c=color,s=50,edgecolors='white',zorder=6)
|
| 103 |
-
ax.set(xlim=bounds[:2],ylim=bounds[2:],xlabel='Longitude °E',ylabel='Latitude °N',title='Trackformer 1.2 · PRAPIROON · +72 h\nModel pressure + forecast and observed routes')
|
| 104 |
-
ax.set_aspect(1/np.cos(np.deg2rad((bounds[2]+bounds[3])/2)));ax.legend();fig.colorbar(im,ax=ax,label='Model mean sea-level pressure (hPa)',shrink=.75)
|
| 105 |
-
fig.text(.5,-.015,'Click to explore +6 to +120 h · Selected best-performing example, not typical skill',ha='center',fontsize=10)
|
| 106 |
-
fig.savefig(REPO/'paper/trackformer_1_2_interactive_pressure_preview.png',dpi=150,bbox_inches='tight');plt.close(fig)
|
| 107 |
-
print('Built offline interactive map and README preview:',len(html),'bytes')
|
| 108 |
-
|
| 109 |
-
if __name__=='__main__':
|
| 110 |
-
p=argparse.ArgumentParser();p.add_argument('--source-root',type=Path);args=p.parse_args()
|
| 111 |
-
if args.source_root:prepare(args.source_root)
|
| 112 |
-
build()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
release_tools/build_yagi_video.py
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Render the selected saved Yagi 50-member forecast, without model inference.
|
| 2 |
+
|
| 3 |
+
Requires NumPy, Matplotlib and ffmpeg; --source-root prepares the public subset.
|
| 4 |
+
Never shift the model field or route to improve alignment with observations.
|
| 5 |
+
"""
|
| 6 |
+
import argparse
|
| 7 |
+
import csv
|
| 8 |
+
import hashlib
|
| 9 |
+
import json
|
| 10 |
+
import subprocess
|
| 11 |
+
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.patches import Rectangle
|
| 19 |
+
|
| 20 |
+
REPO = Path(__file__).resolve().parents[1]
|
| 21 |
+
DATA = REPO / 'evaluation/release_data'
|
| 22 |
+
CHECKPOINT = 'f194a23d3f91ea76ad776dfad942fabd669eeae8b3fd665815463095367e9ee0'
|
| 23 |
+
|
| 24 |
+
|
| 25 |
+
def sha(path):
|
| 26 |
+
with Path(path).open('rb') as stream:
|
| 27 |
+
return hashlib.file_digest(stream, 'sha256').hexdigest()
|
| 28 |
+
|
| 29 |
+
|
| 30 |
+
def distances(a, b):
|
| 31 |
+
a, b = np.deg2rad(a), np.deg2rad(b)
|
| 32 |
+
d = b - a
|
| 33 |
+
h = np.sin(d[:, 0]/2)**2 + np.cos(a[:, 0])*np.cos(b[:, 0])*np.sin(d[:, 1]/2)**2
|
| 34 |
+
return 6371.0088 * 2 * np.arcsin(np.sqrt(np.clip(h, 0, 1)))
|
| 35 |
+
|
| 36 |
+
|
| 37 |
+
def prepare(root):
|
| 38 |
+
source = root / 'benchmark_ensemble50/v173_e4/v173_e4_causal_ensemble50.npz'
|
| 39 |
+
report_path = source.parent / 'report.json'
|
| 40 |
+
report = json.loads(report_path.read_text())
|
| 41 |
+
assert report['checkpoint_sha256'] == CHECKPOINT
|
| 42 |
+
assert report['ensemble_policy']['member_count'] == 50
|
| 43 |
+
assert len(set(report['ensemble_policy']['member_ids'])) == 50
|
| 44 |
+
case = json.loads((DATA/'cohort_270.json').read_text())['cases'][178]
|
| 45 |
+
assert case['storm_id'] == '2024244N09137' and case['issue_time_utc'] == '2024-09-03T00:00:00Z'
|
| 46 |
+
with np.load(source, allow_pickle=False) as z:
|
| 47 |
+
assert int(z['source_rows'][178]) == case['source_row']
|
| 48 |
+
center = np.array([z['base_lat'][178], z['base_lon'][178]], dtype=float)
|
| 49 |
+
local = z['ensemble50_local'][178].astype(float)
|
| 50 |
+
route = np.column_stack((center[0]+local[:, 1]/111.2,
|
| 51 |
+
center[1]+local[:, 0]/(111.2*max(np.cos(np.deg2rad(center[0])), .2))))
|
| 52 |
+
pressure = z['ensemble50_pressure_hpa'][178].copy()
|
| 53 |
+
native = z['ensemble50_native_mslp_hpa'][178].copy()
|
| 54 |
+
coarse = z['ensemble50_mslp_hpa'][178].copy()
|
| 55 |
+
plans = json.loads((root/'data/v164_reuse/plan.json').read_text())['rows']
|
| 56 |
+
assert not any(p['track_archive_row'] == case['source_row'] for p in plans)
|
| 57 |
+
# No stored native-detail history for this issue. Match the evaluator's
|
| 58 |
+
# quarter-degree issue anchor; output sampling is not native resolution.
|
| 59 |
+
anchor = np.round(center*4)/4
|
| 60 |
+
lat, lon = anchor[0]+np.linspace(15, -15, 121), anchor[1]+np.linspace(-15, 15, 121)
|
| 61 |
+
csvpath = root/'data/ibtracs/ibtracs.WP.list.v04r01.csv'
|
| 62 |
+
with csvpath.open() as stream:
|
| 63 |
+
rows = {r['ISO_TIME']: r for r in csv.DictReader(stream) if r['SID'] == case['storm_id']}
|
| 64 |
+
issue = datetime.fromisoformat(case['issue_time_utc'].replace('Z', '+00:00'))
|
| 65 |
+
obs, obs_pressure = [], []
|
| 66 |
+
for k in range(21):
|
| 67 |
+
row = rows[(issue+timedelta(hours=6*k)).strftime('%Y-%m-%d %H:%M:%S')]
|
| 68 |
+
obs.append([float(row['LAT']), float(row['LON'])])
|
| 69 |
+
value = row['TOKYO_PRES'].strip()
|
| 70 |
+
obs_pressure.append(float(value) if value else np.nan)
|
| 71 |
+
obs = np.asarray(obs)
|
| 72 |
+
assert np.allclose(obs[0], center, atol=.001)
|
| 73 |
+
truth_pressure = np.array(obs_pressure[1:])
|
| 74 |
+
errors = distances(route, obs[1:])
|
| 75 |
+
mask = np.isfinite(truth_pressure) & (truth_pressure > 800) & (truth_pressure < 1100)
|
| 76 |
+
path = DATA/'yagi_video.npz'
|
| 77 |
+
np.savez_compressed(path, forecast_lat_lon=np.vstack([center, route]), observed_lat_lon=obs,
|
| 78 |
+
central_pressure_hpa=pressure, observed_pressure_hpa=truth_pressure,
|
| 79 |
+
regional_pressure_hpa=native, basin_pressure_hpa=coarse, latitude=lat, longitude=lon,
|
| 80 |
+
track_error_km=errors, original_local_route_km=local)
|
| 81 |
+
rings = json.loads((root/'trackformer-weatherlab-site/public/data/history/coastlines.json').read_text())
|
| 82 |
+
rings = [r for r in rings if any(100 <= x <= 125 and 12 <= y <= 26 for x, y in r)]
|
| 83 |
+
(DATA/'yagi_coastlines.json').write_text(json.dumps(rings, separators=(',', ':'))+'\n')
|
| 84 |
+
meta = {'model': 'Trackformer 1.2', 'storm': 'YAGI', **case, 'case_index': 178,
|
| 85 |
+
'members': 50, 'ensemble_policy': report['ensemble_policy'], 'leads_hours': list(range(6, 121, 6)),
|
| 86 |
+
'source_archive_sha256': sha(source), 'source_report_sha256': sha(report_path),
|
| 87 |
+
'observed_csv_sha256': sha(csvpath), 'data_sha256': sha(path), 'checkpoint_sha256': CHECKPOINT,
|
| 88 |
+
'observed_route_source': 'Exact six-hour IBTrACS LAT/LON for the same storm and valid timestamps.',
|
| 89 |
+
'observed_pressure_source': 'IBTrACS TOKYO_PRES (JMA best-track central pressure), not an official forecast.',
|
| 90 |
+
'route_projection': 'Saved mean local east/north km converted using issue latitude; no fitting, translation, rotation or scaling to observed route.',
|
| 91 |
+
'field_source': 'Unmodified saved ensemble50_native_mslp_hpa and ensemble50_mslp_hpa on their common fixed grids.',
|
| 92 |
+
'native_history_available': False, 'grid_note': 'Regional reconstruction sampled at 0.25 degrees; native-detail history unavailable for this case. Outside regional coverage use only saved 2.5-degree basin field.',
|
| 93 |
+
'metrics': {'mean_track_error_km': float(errors.mean()), 'track_error_120h_km': float(errors[-1]),
|
| 94 |
+
'maximum_track_error_km': float(errors.max()), 'within_200km_leads': int((errors<200).sum()),
|
| 95 |
+
'central_pressure_mae_hpa': float(np.abs(pressure[mask]-truth_pressure[mask]).mean()),
|
| 96 |
+
'pressure_valid_leads': int(mask.sum())},
|
| 97 |
+
'selection': 'User-selected Yagi issue after inspecting geographic track alignment among saved development cases. Selected good route example, not representative performance or an untouched holdout. Pressure skill is assessed separately.'}
|
| 98 |
+
(DATA/'yagi_video.json').write_text(json.dumps(meta, indent=2)+'\n')
|
| 99 |
+
print(json.dumps(meta['metrics'], indent=2), flush=True)
|
| 100 |
+
|
| 101 |
+
|
| 102 |
+
def build(work):
|
| 103 |
+
work.mkdir(parents=True, exist_ok=True)
|
| 104 |
+
meta = json.loads((DATA/'yagi_video.json').read_text())
|
| 105 |
+
assert sha(DATA/'yagi_video.npz') == meta['data_sha256']
|
| 106 |
+
with np.load(DATA/'yagi_video.npz', allow_pickle=False) as z:
|
| 107 |
+
a = {k: z[k] for k in z.files}
|
| 108 |
+
rings = json.loads((DATA/'yagi_coastlines.json').read_text())
|
| 109 |
+
f, o, lat, lon = (a[k] for k in ('forecast_lat_lon', 'observed_lat_lon', 'latitude', 'longitude'))
|
| 110 |
+
bounds = [102, 123, 14, 24]
|
| 111 |
+
levels, contours = np.arange(976, 1017, 2), np.arange(976, 1017, 4)
|
| 112 |
+
glat, glon, leads = np.linspace(60, 0, 25), np.linspace(100, 180, 33), np.arange(6, 121, 6)
|
| 113 |
+
start = datetime.fromisoformat(meta['issue_time_utc'].replace('Z', '+00:00'))
|
| 114 |
+
plt.rcParams.update({'font.size': 12, 'axes.titlesize': 15})
|
| 115 |
+
for k, lead in enumerate(leads):
|
| 116 |
+
fig = plt.figure(figsize=(16, 10), dpi=100, facecolor='#f8fafb')
|
| 117 |
+
gs = fig.add_gridspec(2, 2, width_ratios=[3.9, 1.25], height_ratios=[4.5, 1.4],
|
| 118 |
+
left=.055, right=.93, bottom=.155, top=.85, wspace=.25, hspace=.38)
|
| 119 |
+
ax = fig.add_subplot(gs[0, :])
|
| 120 |
+
ax.contourf(glon, glat, a['basin_pressure_hpa'][k], levels=levels, cmap='RdYlBu_r', extend='both')
|
| 121 |
+
ax.contour(glon, glat, a['basin_pressure_hpa'][k], levels=contours, colors='#546971', linewidths=.45)
|
| 122 |
+
im = ax.contourf(lon, lat, a['regional_pressure_hpa'][k], levels=levels, cmap='RdYlBu_r', extend='both')
|
| 123 |
+
cs = ax.contour(lon, lat, a['regional_pressure_hpa'][k], levels=contours, colors='#354b58', linewidths=.65)
|
| 124 |
+
ax.clabel(cs, levels=contours[::2], fmt='%d', fontsize=9)
|
| 125 |
+
for ring in rings:
|
| 126 |
+
xy = np.asarray(ring); ax.plot(xy[:, 0], xy[:, 1], c='#66716b', lw=.8)
|
| 127 |
+
ax.add_patch(Rectangle((lon.min(), lat.min()), np.ptp(lon), np.ptp(lat), fill=False, edgecolor='#265b61', lw=1.2, ls=':'))
|
| 128 |
+
for points, color, label, style in [(o, '#182f42', 'Observed best track', '--'), (f, '#b31565', 'Trackformer 1.2 mean of 50', '-')]:
|
| 129 |
+
ax.plot(points[:, 1], points[:, 0], ls=style, c=color, alpha=.2, lw=1.6)
|
| 130 |
+
ax.plot(points[:k+2, 1], points[:k+2, 0], ls=style, c=color, lw=2.8, label=label)
|
| 131 |
+
ax.scatter(points[k+1, 1], points[k+1, 0], s=75, c=color, edgecolors='white', linewidths=1.8, zorder=6)
|
| 132 |
+
ax.plot([f[k+1, 1], o[k+1, 1]], [f[k+1, 0], o[k+1, 0]], ':', c='#7a5a85', lw=1.4)
|
| 133 |
+
ax.set(xlim=bounds[:2], ylim=bounds[2:], xlabel='Longitude °E', ylabel='Latitude °N')
|
| 134 |
+
ax.set_aspect(1/np.cos(np.deg2rad(19))); ax.grid(alpha=.13)
|
| 135 |
+
ax.legend(loc='lower left', fontsize=11, framealpha=.95)
|
| 136 |
+
ax.text(.985, .035, 'Same map / same valid time\nNo route shifting or rescaling', transform=ax.transAxes,
|
| 137 |
+
ha='right', va='bottom', fontsize=10, bbox={'facecolor': 'white', 'alpha': .9, 'edgecolor': 'none', 'pad': 5})
|
| 138 |
+
fig.colorbar(im, cax=fig.add_axes([.952, .40, .014, .40]), label='Model mean sea-level pressure (hPa)')
|
| 139 |
+
curve = fig.add_subplot(gs[1, 0])
|
| 140 |
+
curve.plot(leads, a['central_pressure_hpa'], c='#b31565', lw=2, label='Model')
|
| 141 |
+
curve.plot(leads, a['observed_pressure_hpa'], '--', c='#182f42', lw=2, label='Observed (JMA best track)')
|
| 142 |
+
curve.axvline(lead, c='#688e98', lw=1.5)
|
| 143 |
+
curve.scatter([lead], [a['central_pressure_hpa'][k]], c='#b31565', s=40, zorder=4)
|
| 144 |
+
curve.set(xlim=(6, 120), xlabel='Forecast lead (hours)', ylabel='Central pressure (hPa)', xticks=[6, 24, 48, 72, 96, 120])
|
| 145 |
+
curve.grid(alpha=.2); curve.legend(loc='lower left', fontsize=10)
|
| 146 |
+
info = fig.add_subplot(gs[1, 1]); info.axis('off')
|
| 147 |
+
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\nSelected good-route example\nPressure intensity is too weak", va='top', fontsize=12, color='#244754')
|
| 148 |
+
valid = start+timedelta(hours=int(lead))
|
| 149 |
+
fig.suptitle(f'Trackformer 1.2 / YAGI / +{lead:03d} h', x=.055, y=.97, ha='left', fontsize=24, fontweight='bold', color='#173947')
|
| 150 |
+
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')
|
| 151 |
+
fig.text(.055, .067, 'Actual model pressure with 4 hPa isobars. Observations are verification only; selected example, not typical skill.', fontsize=11, color='#47636d')
|
| 152 |
+
fig.text(.055, .040, 'Dotted boundary: fixed regional reconstruction (no native-detail history). Outside: coarse basin field only.', fontsize=10, color='#47636d')
|
| 153 |
+
fig.savefig(work/f'frame_{k:03d}.png', dpi=100)
|
| 154 |
+
if k == 9: fig.savefig(REPO/'evaluation/trackformer_1_2_yagi_video_poster.png', dpi=100)
|
| 155 |
+
plt.close(fig)
|
| 156 |
+
output = REPO/'docs/trackformer_1_2_yagi.mp4'
|
| 157 |
+
subprocess.run(['ffmpeg', '-y', '-hide_banner', '-loglevel', 'warning', '-framerate', '1', '-i', str(work/'frame_%03d.png'),
|
| 158 |
+
'-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)
|
| 159 |
+
meta['video'] = {'file': 'docs/trackformer_1_2_yagi.mp4', 'duration_seconds': 23, 'forecast_states': 20,
|
| 160 |
+
'codec': 'H.264', 'encoder': 'h264_videotoolbox', 'sha256': sha(output),
|
| 161 |
+
'playback': 'Each six-hour state held for 1 second; final frame held 3 seconds extra. No interpolated forecast states.'}
|
| 162 |
+
(DATA/'yagi_video.json').write_text(json.dumps(meta, indent=2)+'\n')
|
| 163 |
+
print('Saved', output, output.stat().st_size, 'bytes', flush=True)
|
| 164 |
+
|
| 165 |
+
|
| 166 |
+
if __name__ == '__main__':
|
| 167 |
+
p = argparse.ArgumentParser(description=__doc__)
|
| 168 |
+
p.add_argument('--source-root', type=Path)
|
| 169 |
+
p.add_argument('--work', type=Path, required=True)
|
| 170 |
+
args = p.parse_args()
|
| 171 |
+
if args.source_root: prepare(args.source_root)
|
| 172 |
+
build(args.work)
|
release_tools/export_field_1_2.py
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Export a verified training checkpoint as inference-only Trackformer 1.2 weights."""
|
| 2 |
+
from __future__ import annotations
|
| 3 |
+
|
| 4 |
+
import argparse
|
| 5 |
+
import hashlib
|
| 6 |
+
import json
|
| 7 |
+
from pathlib import Path
|
| 8 |
+
|
| 9 |
+
import torch
|
| 10 |
+
|
| 11 |
+
|
| 12 |
+
EXPECTED_SHA256 = "f194a23d3f91ea76ad776dfad942fabd669eeae8b3fd665815463095367e9ee0"
|
| 13 |
+
EXPECTED_ARCH = "v173-moving-core-multiscale-attention"
|
| 14 |
+
|
| 15 |
+
|
| 16 |
+
def sha256(path: Path) -> str:
|
| 17 |
+
digest = hashlib.sha256()
|
| 18 |
+
with path.open("rb") as stream:
|
| 19 |
+
for block in iter(lambda: stream.read(8 * 1024 * 1024), b""):
|
| 20 |
+
digest.update(block)
|
| 21 |
+
return digest.hexdigest()
|
| 22 |
+
|
| 23 |
+
|
| 24 |
+
def main() -> None:
|
| 25 |
+
parser = argparse.ArgumentParser(description=__doc__)
|
| 26 |
+
parser.add_argument("checkpoint", type=Path)
|
| 27 |
+
parser.add_argument("output_dir", type=Path)
|
| 28 |
+
args = parser.parse_args()
|
| 29 |
+
if sha256(args.checkpoint) != EXPECTED_SHA256:
|
| 30 |
+
raise ValueError("Checkpoint SHA-256 does not match the selected release source")
|
| 31 |
+
payload = torch.load(args.checkpoint, map_location="cpu", weights_only=False)
|
| 32 |
+
if (payload.get("version"), payload.get("architecture"), payload.get("epoch")) != (
|
| 33 |
+
"1.2.73", EXPECTED_ARCH, 4
|
| 34 |
+
):
|
| 35 |
+
raise ValueError("Checkpoint identity does not match the selected release source")
|
| 36 |
+
if len(payload.get("history", [])) != 4:
|
| 37 |
+
raise ValueError("Expected four completed epochs in checkpoint history")
|
| 38 |
+
args.output_dir.mkdir(parents=True, exist_ok=True)
|
| 39 |
+
weights = args.output_dir / "weights.pt"
|
| 40 |
+
torch.save(payload["model"], weights)
|
| 41 |
+
source = args.output_dir
|
| 42 |
+
manifest = {
|
| 43 |
+
"public_version": "1.2",
|
| 44 |
+
"release_status": "research_candidate_not_operational",
|
| 45 |
+
"source_checkpoint_version": payload["version"],
|
| 46 |
+
"source_checkpoint_epoch": payload["epoch"],
|
| 47 |
+
"architecture": payload["architecture"],
|
| 48 |
+
"source_checkpoint_sha256": EXPECTED_SHA256,
|
| 49 |
+
"inference_weights_sha256": sha256(weights),
|
| 50 |
+
"dataset_sha256": payload["dataset_sha256"],
|
| 51 |
+
"source_module_sha256": {name: sha256(source / name) for name in (
|
| 52 |
+
"model.py", "baseline_model.py", "v165_base.py")},
|
| 53 |
+
"data_contract": payload["data_contract"],
|
| 54 |
+
}
|
| 55 |
+
(args.output_dir / "manifest.json").write_text(json.dumps(manifest, indent=2) + "\n")
|
| 56 |
+
print(json.dumps({key: manifest[key] for key in (
|
| 57 |
+
"public_version", "architecture", "inference_weights_sha256")}, indent=2))
|
| 58 |
+
|
| 59 |
+
|
| 60 |
+
if __name__ == "__main__":
|
| 61 |
+
main()
|
release_tools/plot_field_1_2.py
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Render saved TIP comparison bars and a real Trackformer 1.2 pressure map."""
|
| 2 |
+
from __future__ import annotations
|
| 3 |
+
|
| 4 |
+
import argparse
|
| 5 |
+
import json
|
| 6 |
+
from pathlib import Path
|
| 7 |
+
|
| 8 |
+
import matplotlib.pyplot as plt
|
| 9 |
+
import numpy as np
|
| 10 |
+
|
| 11 |
+
|
| 12 |
+
def main() -> None:
|
| 13 |
+
parser = argparse.ArgumentParser(description=__doc__)
|
| 14 |
+
parser.add_argument("v11_tip", type=Path)
|
| 15 |
+
parser.add_argument("v12_tip", type=Path)
|
| 16 |
+
parser.add_argument("showcase_four", type=Path)
|
| 17 |
+
parser.add_argument("output_dir", type=Path)
|
| 18 |
+
args = parser.parse_args()
|
| 19 |
+
old = json.loads(args.v11_tip.read_text())
|
| 20 |
+
new = json.loads(args.v12_tip.read_text())
|
| 21 |
+
assert old["case_count"] == new["case_count"] == 10
|
| 22 |
+
assert [c["issue"] for c in old["cases"]] == [c["issue"] for c in new["cases"]]
|
| 23 |
+
args.output_dir.mkdir(parents=True, exist_ok=True)
|
| 24 |
+
|
| 25 |
+
fig, axes = plt.subplots(1, 2, figsize=(11, 4.3), layout="constrained")
|
| 26 |
+
for ax, key, title, unit in (
|
| 27 |
+
(axes[0], "mean_track_error_km", "Mean track error", "km"),
|
| 28 |
+
(axes[1], "central_pressure_mae_hpa", "Central-pressure MAE", "hPa"),
|
| 29 |
+
):
|
| 30 |
+
values = [old[key], new[key]]
|
| 31 |
+
bars = ax.barh(["1.1", "1.2 · 50 input members"], values,
|
| 32 |
+
color=["#708396", "#0d827b"], height=0.52)
|
| 33 |
+
ax.invert_yaxis()
|
| 34 |
+
ax.set_xlim(0, max(values) * 1.25)
|
| 35 |
+
ax.set_title(title, fontweight="bold")
|
| 36 |
+
ax.set_xlabel(f"{unit} · lower is better")
|
| 37 |
+
ax.spines[["top", "right"]].set_visible(False)
|
| 38 |
+
for bar, value in zip(bars, values):
|
| 39 |
+
ax.text(bar.get_width() + max(values) * .025, bar.get_y() + bar.get_height()/2,
|
| 40 |
+
f"{value:.1f}", va="center", fontweight="bold")
|
| 41 |
+
fig.suptitle("TIP: same ten overlapping issue times, +6 to +120 h", fontweight="bold")
|
| 42 |
+
fig.text(.5, -.07, "Development diagnostic, not ten independent storms or untouched validation.",
|
| 43 |
+
ha="center", fontsize=9)
|
| 44 |
+
fig.savefig(args.output_dir / "trackformer_1_2_vs_1_1_tip_bars.png", dpi=175, bbox_inches="tight")
|
| 45 |
+
plt.close(fig)
|
| 46 |
+
|
| 47 |
+
with np.load(args.showcase_four, allow_pickle=False) as z:
|
| 48 |
+
storm = str(z["storms"][0])
|
| 49 |
+
fields = z["fields"][0]
|
| 50 |
+
route = z["route"][0]
|
| 51 |
+
fig, axes = plt.subplots(1, 3, figsize=(12, 4.1), layout="constrained")
|
| 52 |
+
for ax, lead_index in zip(axes, (3, 11, 19)):
|
| 53 |
+
image = ax.imshow(fields[lead_index], origin="upper", extent=(100, 180, 0, 60),
|
| 54 |
+
cmap="viridis_r", vmin=960, vmax=1025, aspect="auto")
|
| 55 |
+
ax.plot(route[:lead_index+1, 1], route[:lead_index+1, 0],
|
| 56 |
+
color="#ffed9a", linewidth=1.8, marker="o", markersize=2)
|
| 57 |
+
ax.set_title(f"{storm.title()} · +{(lead_index+1)*6} h")
|
| 58 |
+
ax.set_xlabel("Longitude °E")
|
| 59 |
+
ax.set_ylabel("Latitude °N")
|
| 60 |
+
ax.set_xlim(100, 180)
|
| 61 |
+
ax.set_ylim(0, 60)
|
| 62 |
+
fig.colorbar(image, ax=axes, label="Forecast basin MSLP (hPa)", shrink=.76)
|
| 63 |
+
fig.suptitle("Trackformer 1.2 · model-generated pressure-field example", fontweight="bold")
|
| 64 |
+
fig.savefig(args.output_dir / "trackformer_1_2_pressure_map_example.png", dpi=175, bbox_inches="tight")
|
| 65 |
+
plt.close(fig)
|
| 66 |
+
|
| 67 |
+
|
| 68 |
+
if __name__ == "__main__":
|
| 69 |
+
main()
|
release_tools/plot_release_270.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
"""Reproduce the public 270-case chart and recent isobar example.
|
| 2 |
|
| 3 |
Use --source-root to prepare plot data from the local research archives. Without
|
| 4 |
-
it, only the small published arrays under
|
| 5 |
"""
|
| 6 |
from __future__ import annotations
|
| 7 |
|
|
@@ -267,7 +267,7 @@ def plot_pressure(data, output):
|
|
| 267 |
def main():
|
| 268 |
parser = argparse.ArgumentParser(description=__doc__)
|
| 269 |
parser.add_argument("--source-root", type=Path)
|
| 270 |
-
parser.add_argument("--output-dir", type=Path, default=Path(__file__).resolve().parents[1] / "
|
| 271 |
args = parser.parse_args()
|
| 272 |
data = args.output_dir / "release_data"
|
| 273 |
data.mkdir(parents=True, exist_ok=True)
|
|
|
|
| 1 |
"""Reproduce the public 270-case chart and recent isobar example.
|
| 2 |
|
| 3 |
Use --source-root to prepare plot data from the local research archives. Without
|
| 4 |
+
it, only the small published arrays under evaluation/release_data are required.
|
| 5 |
"""
|
| 6 |
from __future__ import annotations
|
| 7 |
|
|
|
|
| 267 |
def main():
|
| 268 |
parser = argparse.ArgumentParser(description=__doc__)
|
| 269 |
parser.add_argument("--source-root", type=Path)
|
| 270 |
+
parser.add_argument("--output-dir", type=Path, default=Path(__file__).resolve().parents[1] / "evaluation")
|
| 271 |
args = parser.parse_args()
|
| 272 |
data = args.output_dir / "release_data"
|
| 273 |
data.mkdir(parents=True, exist_ok=True)
|
release_tools/pressure_showcase_template.html
DELETED
|
@@ -1,42 +0,0 @@
|
|
| 1 |
-
<!doctype html>
|
| 2 |
-
<html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Trackformer 1.2 · Interactive pressure forecast</title>
|
| 3 |
-
<style>
|
| 4 |
-
:root{color-scheme:light;--ink:#182f3b;--muted:#526c75;--line:#d4e1e5;--accent:#0c6870;--pink:#ac145f}*{box-sizing:border-box}body{margin:0;background:#f3f7f8;color:var(--ink);font:16px/1.5 system-ui,sans-serif}main{max-width:1200px;margin:auto;padding:30px 24px}header{display:flex;justify-content:space-between;align-items:start;gap:25px}h1{font-size:32px;line-height:1.15;margin:6px 0 14px;letter-spacing:-1px}p{margin:8px 0}.eyebrow{font-size:12px;letter-spacing:2px;text-transform:uppercase;color:var(--accent);font-weight:700}.sub{color:var(--muted);max-width:780px;font-size:14px}a{color:var(--accent)}.tag{border:1px solid var(--line);padding:5px 10px;border-radius:5px;white-space:nowrap;font-size:13px}.controls{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin:22px 0 14px;padding:16px;background:white;border:1px solid var(--line);border-radius:10px}button,select{font:inherit;color:var(--ink);border:1px solid #b6ced4;background:white;border-radius:6px;padding:8px 14px;cursor:pointer}button:focus-visible,input:focus-visible{outline:3px solid #158790;outline-offset:3px}#play{background:var(--accent);color:white;border-color:var(--accent);min-width:84px}input[type=range]{flex:1;min-width:140px;accent-color:var(--accent)}.date{min-width:195px;font-size:14px;font-variant-numeric:tabular-nums}.layout{display:grid;grid-template-columns:minmax(0,1fr) 265px;gap:20px}.mapcard,.aside{background:white;border:1px solid var(--line);border-radius:10px;overflow:hidden}#map{display:block;width:100%;height:auto;touch-action:pan-y}.legend{display:flex;gap:16px;flex-wrap:wrap;padding:12px 16px;border-bottom:1px solid var(--line);font-size:14px}.legend label{display:flex;align-items:center;gap:6px}.legend input{accent-color:var(--accent)}.key{display:inline-block;width:22px;border-top:3px solid var(--pink)}.key.obs{border-color:#162437;border-top-style:dashed}.bar{height:12px;background:linear-gradient(90deg,#313695,#74add1,#e0f3f8,#ffffbf,#fdae61,#d73027,#a50026)}.scale{padding:10px 16px 14px;font-size:12px;display:grid;gap:5px}.ticks{display:flex;justify-content:space-between}#hover{margin:0;padding:10px 16px;background:#f7fafb;color:#355762;font-size:13px;min-height:45px}.aside{padding:18px;height:max-content}h2{font-size:16px;margin:0 0 12px}.stat{padding:12px 0;border-bottom:1px solid #e8eff1;font-size:13px}.stat strong{display:block;font-size:23px;font-variant-numeric:tabular-nums;line-height:1.3}.stat span{color:var(--muted)}#curve{width:100%;margin:15px 0}details{margin-top:24px;font-size:14px}summary{cursor:pointer;font-weight:600}.note{background:#eaf2f4;border-left:3px solid #779daa;padding:12px 16px;margin:20px 0;font-size:13px;color:#35545c}footer{font-size:12px;color:var(--muted);margin:22px 0}.maptext{font-size:12px;fill:#294650}.touch{font-size:12px;color:var(--muted)}@media(max-width:800px){.layout{grid-template-columns:1fr}.aside{display:grid;grid-template-columns:1fr 1fr;gap:12px}.aside h2,.aside .touch,#curve{grid-column:1/-1}.stat{padding:3px 0}h1{font-size:25px}main{padding:20px 12px}header{display:block}.tag{display:inline-block;margin-top:10px}.date{min-width:0;width:100%}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto}}
|
| 5 |
-
</style></head><body><main>
|
| 6 |
-
<header><div><div class="eyebrow">Trackformer 1.2 / field forecast</div><h1 id="title">Pressure, motion and the observed route</h1><p class="sub" id="subtitle"></p></div><span class="tag">50-member mean · selected showcase</span></header>
|
| 7 |
-
<div class="controls"><button id="back" aria-label="Previous six-hour forecast">−6 h</button><button id="play" aria-pressed="false">Play</button><button id="next" aria-label="Next six-hour forecast">+6 h</button><label for="lead" class="sr" style="font-size:13px">Lead</label><input id="lead" type="range" min="0" max="19" value="3" aria-label="Forecast lead time"><div class="date"><strong id="leadLabel"></strong><br><span id="valid"></span></div><label style="font-size:13px">Speed <select id="speed"><option value="1000">1×</option><option value="500">2×</option><option value="250">4×</option></select></label></div>
|
| 8 |
-
<div class="layout"><section class="mapcard" aria-label="Interactive model pressure and routes"><div class="legend"><label><input id="showForecast" type="checkbox" checked><span class="key"></span>1.2 forecast</label><label><input id="showObserved" type="checkbox" checked><span class="key obs"></span>Observed route</label><label><input id="full" type="checkbox" checked>Full 120 h paths</label></div><svg id="map" role="img" aria-label="Forecast sea-level pressure with forecast and observed storm paths"></svg><p id="hover" role="status">Hover or tap the map to inspect model pressure, position and valid time.</p><div class="scale"><div>Model mean sea-level pressure · hPa · isobars every 4 hPa</div><div class="bar"></div><div class="ticks"><span id="low"></span><span id="mid"></span><span id="high"></span></div></div></section>
|
| 9 |
-
<aside class="aside"><h2>At the selected lead</h2><div class="stat"><span>Forecast central pressure</span><strong id="pressure"></strong></div><div class="stat"><span>Observed central pressure</span><strong id="truthPressure"></strong></div><div class="stat"><span>Position error · great-circle</span><strong id="error"></strong></div><svg id="curve" viewBox="0 0 240 155" role="img" aria-label="Forecast and observed central pressure from 6 to 120 hours"></svg><p class="touch">Map markers and the chart cursor share the same valid time. Central pressure is the mean of member core samples, not the minimum of the mean map.</p></aside></div>
|
| 10 |
-
<p class="note" id="selection"></p><details><summary>Data, selection rule and model-field provenance</summary><p id="rule"></p><p id="fieldNote"></p><p id="routeNote"></p><p id="sourceHash" style="overflow-wrap:anywhere"></p><p>Observed routes and pressures are retrospective verification labels. They are not inputs to future forecast steps. This is a selected development example, not an untouched test or an operational warning.</p></details>
|
| 11 |
-
<footer>Research only. The colours and contours represent saved model-generated physical pressure; the field has not been moved to fit observations. <a href="https://github.com/yu314-coder/typhoon-predict">Source and paper</a> · <a href="https://huggingface.co/euler314/typhoon-predict">Model weights</a></footer>
|
| 12 |
-
</main><script>
|
| 13 |
-
const D=/*__DATA__*/;
|
| 14 |
-
const $=id=>document.getElementById(id),NS='http://www.w3.org/2000/svg';let k=3,timer=null;
|
| 15 |
-
function el(tag,attrs,parent){const e=document.createElementNS(NS,tag);for(const [a,v]of Object.entries(attrs))e.setAttribute(a,v);if(parent)parent.appendChild(e);return e}
|
| 16 |
-
const W=900,L=54,T=24,PW=820,PH=PW*D.ratio,H=PH+72;const map=$('map');map.setAttribute('viewBox',`0 0 ${W} ${H}`);
|
| 17 |
-
const [west,east,south,north]=D.bounds,x=lon=>L+(lon-west)/(east-west)*PW,y=lat=>T+(north-lat)/(north-south)*PH;
|
| 18 |
-
const image=el('image',{x:L,y:T,width:PW,height:PH,preserveAspectRatio:'none'},map);
|
| 19 |
-
const defs=el('defs',{},map),clip=el('clipPath',{id:'area'},defs);el('rect',{x:L,y:T,width:PW,height:PH},clip);
|
| 20 |
-
const grid=el('g',{},map);for(let lon=Math.ceil(west/5)*5;lon<=east;lon+=5){el('line',{x1:x(lon),x2:x(lon),y1:T,y2:T+PH,stroke:'#456878','stroke-opacity':.16},grid);el('text',{x:x(lon),y:T+PH+23,'text-anchor':'middle',class:'maptext'},grid).textContent=lon+'°E'}
|
| 21 |
-
for(let lat=Math.ceil(south/5)*5;lat<=north;lat+=5){el('line',{x1:L,x2:L+PW,y1:y(lat),y2:y(lat),stroke:'#456878','stroke-opacity':.16},grid);el('text',{x:L-9,y:y(lat)+4,'text-anchor':'end',class:'maptext'},grid).textContent=lat+'°N'}
|
| 22 |
-
el('rect',{x:L,y:T,width:PW,height:PH,fill:'none',stroke:'#a7bec4'},map);
|
| 23 |
-
const group=el('g',{'clip-path':'url(#area)'},map);
|
| 24 |
-
function route(color,dash){const halo=el('path',{fill:'none',stroke:'white','stroke-width':6,'stroke-opacity':.85},group),p=el('path',{fill:'none',stroke:color,'stroke-width':3,'stroke-dasharray':dash},group),marker=el('circle',{r:7,fill:color,stroke:'white','stroke-width':2},group);return {halo,p,marker}}
|
| 25 |
-
const truth=route('#162437','8 5'),pred=route('#ac145f','');
|
| 26 |
-
const hit=el('rect',{x:L,y:T,width:PW,height:PH,fill:'transparent','pointer-events':'all'},map);
|
| 27 |
-
const path=p=>p.map((v,i)=>(i?'L':'M')+x(v[1]).toFixed(2)+','+y(v[0]).toFixed(2)).join(' ');
|
| 28 |
-
function date(n){return new Date(Date.parse(D.meta.issue_time_utc)+n*3600000).toISOString().slice(0,16).replace('T',' ')+' UTC'}
|
| 29 |
-
function hav(a,b){const r=Math.PI/180,p=(b[0]-a[0])*r,q=(b[1]-a[1])*r,z=Math.sin(p/2)**2+Math.cos(a[0]*r)*Math.cos(b[0]*r)*Math.sin(q/2)**2;return 6371*2*Math.asin(Math.sqrt(Math.min(1,z)))}
|
| 30 |
-
function drawCurve(){const svg=$('curve');svg.replaceChildren();const vals=[...D.pressure,...D.observedPressure.filter(v=>v!==null)],min=Math.floor(Math.min(...vals)/5)*5-5,max=Math.ceil(Math.max(...vals)/5)*5+5;const cx=i=>35+i/19*192,cy=v=>115-(v-min)/(max-min)*90;
|
| 31 |
-
for(let v=min;v<=max;v+=10){el('line',{x1:35,x2:227,y1:cy(v),y2:cy(v),stroke:'#dde7ea'},svg);el('text',{x:31,y:cy(v)+3,'text-anchor':'end',fill:'#506873','font-size':10},svg).textContent=v}
|
| 32 |
-
for(const [values,color,dash]of [[D.pressure,'#ac145f',''],[D.observedPressure,'#162437','4 3']]){let p='',gap=true;values.forEach((v,i)=>{if(v===null){gap=true;return}p+=(gap?'M':'L')+cx(i)+','+cy(v);gap=false});el('path',{d:p,fill:'none',stroke:color,'stroke-width':2,'stroke-dasharray':dash},svg)}
|
| 33 |
-
el('line',{x1:cx(k),x2:cx(k),y1:20,y2:120,stroke:'#377782','stroke-width':1.5},svg);for(const i of [0,9,19])el('text',{x:cx(i),y:137,'text-anchor':'middle',fill:'#506873','font-size':11},svg).textContent='+'+(i+1)*6+'h';el('text',{x:35,y:12,fill:'#506873','font-size':11},svg).textContent='Central pressure · hPa'}
|
| 34 |
-
function render(){const lead=(k+1)*6;image.setAttribute('href',D.frames[k]);$('lead').value=k;$('leadLabel').textContent='+'+lead+' hours';$('valid').textContent=date(lead);$('pressure').textContent=D.pressure[k].toFixed(1)+' hPa';$('truthPressure').textContent=D.observedPressure[k]===null?'Not available':D.observedPressure[k].toFixed(0)+' hPa';$('error').textContent=hav(D.forecast[k+1],D.observed[k+1]).toFixed(1)+' km';
|
| 35 |
-
for(const [obj,coords,id]of [[pred,D.forecast,'showForecast'],[truth,D.observed,'showObserved']]){let d=path($('full').checked?coords:coords.slice(0,k+2));obj.p.setAttribute('d',d);obj.halo.setAttribute('d',d);obj.marker.setAttribute('cx',x(coords[k+1][1]));obj.marker.setAttribute('cy',y(coords[k+1][0]));for(const e of Object.values(obj))e.style.display=$(id).checked?'':'none'}drawCurve();$('back').disabled=k===0;$('next').disabled=k===19;$('hover').textContent='Hover or tap: model pressure on the fixed grid · '+date(lead)}
|
| 36 |
-
function stop(){if(timer)clearInterval(timer);timer=null;$('play').textContent='Play';$('play').setAttribute('aria-pressed','false')}
|
| 37 |
-
function play(){if(k===19)k=0;render();$('play').textContent='Pause';$('play').setAttribute('aria-pressed','true');timer=setInterval(()=>{if(k===19){stop();return}k++;render()},Number($('speed').value))}
|
| 38 |
-
$('play').onclick=()=>timer?stop():play();$('speed').onchange=()=>{if(timer){stop();play()}};$('back').onclick=()=>{stop();k=Math.max(0,k-1);render()};$('next').onclick=()=>{stop();k=Math.min(19,k+1);render()};$('lead').oninput=e=>{stop();k=+e.target.value;render()};for(const id of ['showForecast','showObserved','full'])$(id).onchange=render;document.addEventListener('visibilitychange',()=>{if(document.hidden)stop()});
|
| 39 |
-
function inspect(event){const pt=map.createSVGPoint();pt.x=event.clientX;pt.y=event.clientY;const p=pt.matrixTransform(map.getScreenCTM().inverse());const lon=west+(p.x-L)/PW*(east-west),lat=north-(p.y-T)/PH*(north-south);const ix=Math.max(0,Math.min(120,Math.round((lon-D.longitude[0])/.25))),iy=Math.max(0,Math.min(120,Math.round((D.latitude[0]-lat)/.25)));let text=lat.toFixed(2)+'°N, '+lon.toFixed(2)+'°E · model mean '+D.fields[k][iy][ix].toFixed(1)+' hPa';for(const [coords,label,id]of [[D.forecast,'1.2 forecast','showForecast'],[D.observed,'Observed route','showObserved']])if($(id).checked){const end=$('full').checked?21:k+2;for(let i=0;i<end;i++)if(Math.hypot(x(coords[i][1])-p.x,y(coords[i][0])-p.y)<14){text=label+' · +'+i*6+' h · '+coords[i][0].toFixed(2)+'°N, '+coords[i][1].toFixed(2)+'°E · '+date(i*6);break}}$('hover').textContent=text}
|
| 40 |
-
hit.addEventListener('pointermove',inspect);hit.addEventListener('pointerdown',inspect);
|
| 41 |
-
$('title').textContent='PRAPIROON · pressure and route';$('subtitle').textContent='Issue '+date(0)+' · Actual model pressure fields against the observed best-track route.';$('low').textContent=D.range[0];$('mid').textContent=(D.range[0]+D.range[1])/2;$('high').textContent=D.range[1];$('selection').textContent='Selected best-performing example from the saved 270-case development benchmark: '+D.meta.metrics.mean_track_error_km.toFixed(1)+' km mean local-coordinate track error and '+D.meta.central_pressure_mae_hpa.toFixed(2)+' hPa central-pressure MAE. This selection is not typical performance.';$('rule').textContent=D.meta.selection_rule;$('fieldNote').textContent=D.meta.field_source+' Native regional history available: '+D.meta.native_history_available+'.';$('routeNote').textContent=D.meta.observed_route_source;$('sourceHash').textContent='Checkpoint SHA-256: '+D.meta.checkpoint_sha256;render();
|
| 42 |
-
</script></body></html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|