CI/CD Pipeline - Northern Thailand Ping River Monitor / Deploy to Production (push) Skipped
CI/CD Pipeline - Northern Thailand Ping River Monitor / Performance Test (push) Skipped
CI/CD Pipeline - Northern Thailand Ping River Monitor / Code Quality (push) Successful in 13s
Documentation / Validate Documentation (push) Failing after 7s
Documentation / Generate API Documentation (push) Successful in 8s
Documentation / Build Sphinx Documentation (push) Successful in 17s
CI/CD Pipeline - Northern Thailand Ping River Monitor / Cleanup (push) Successful in 0s
Documentation / Documentation Summary (push) Successful in 2s
CI/CD Pipeline - Northern Thailand Ping River Monitor / Test Suite (3.11) (push) Failing after 24s
CI/CD Pipeline - Northern Thailand Ping River Monitor / Build Docker Image (push) Skipped
CI/CD Pipeline - Northern Thailand Ping River Monitor / Integration Test with Services (push) Skipped
CI/CD Pipeline - Northern Thailand Ping River Monitor / Deploy to Staging (push) Skipped
The rolling-origin harness (models/eval_rain.json) showed catchment rain halving flood-year Brier scores, cutting flood-regime MAE 20-40%, and extending the hard 2024 leads (+6h -> +11h at P.1, +10h -> +19h at P.103). Ported: train_all loads the catchment-mean series (use_rain / --no-rain to opt out; without it bundles train as v2), predict fetches live rain hourly and passes an empty series on failure so rain-trained bundles serve with NaN features instead of tripping the feature guard, and the leader worker persists hourly per-point + catchment-mean rows to a new openmeteo_rain table. Regenerated backtest: the 2024 record flood now gets a 13-HOUR WARNING (alert 04:00 vs 17:00 crossing, river at 2.9m at alert time) — the >=12h acceptance gate PASSES for the first time. Journey on that crossing: v1 -18h, v2 +6h, v3 +13h. The marginal 2025 double-crest trades its artifact +46h latch for a calibrated +2h with zero false alarms. P.1 MAE 4.9/7.2/8.7 cm at 6/12/24h. Docs updated throughout.
439 lines
9.8 KiB
JSON
439 lines
9.8 KiB
JSON
[
|
|
{
|
|
"station": "P.1",
|
|
"warn_thr": 3.7,
|
|
"folds": [
|
|
{
|
|
"year": 2021,
|
|
"n_train": 20024,
|
|
"n_test": 4392,
|
|
"events": [],
|
|
"variants": {
|
|
"rise": {
|
|
"mae": 0.070970681677648,
|
|
"mae_above_2p5": null,
|
|
"brier_warn": 0.0,
|
|
"events": [],
|
|
"false_alarm_episodes": 0
|
|
},
|
|
"rise_rain": {
|
|
"mae": 0.07247641391827915,
|
|
"mae_above_2p5": null,
|
|
"brier_warn": 0.0,
|
|
"events": [],
|
|
"false_alarm_episodes": 0
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"year": 2022,
|
|
"n_train": 28782,
|
|
"n_test": 4392,
|
|
"events": [
|
|
{
|
|
"crossing": "2022-10-02T19:00:00",
|
|
"peak_ts": "2022-10-03T15:00:00",
|
|
"peak_level": 4.65
|
|
}
|
|
],
|
|
"variants": {
|
|
"rise": {
|
|
"mae": 0.08489734638010188,
|
|
"mae_above_2p5": 0.24517428534843191,
|
|
"brier_warn": 0.004136576477574926,
|
|
"events": [
|
|
{
|
|
"crossing": "2022-10-02T19:00:00",
|
|
"lead_h": 6.0,
|
|
"peak_level": 4.65,
|
|
"peak_pred_24h_before": 3.870617057762467
|
|
}
|
|
],
|
|
"false_alarm_episodes": 0
|
|
},
|
|
"rise_rain": {
|
|
"mae": 0.08491621780630447,
|
|
"mae_above_2p5": 0.24539225527181602,
|
|
"brier_warn": 0.004209435091817237,
|
|
"events": [
|
|
{
|
|
"crossing": "2022-10-02T19:00:00",
|
|
"lead_h": 5.0,
|
|
"peak_level": 4.65,
|
|
"peak_pred_24h_before": 3.844081593978701
|
|
}
|
|
],
|
|
"false_alarm_episodes": 0
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"year": 2023,
|
|
"n_train": 37537,
|
|
"n_test": 4392,
|
|
"events": [],
|
|
"variants": {
|
|
"rise": {
|
|
"mae": 0.07647507344443248,
|
|
"mae_above_2p5": 0.12593127745781565,
|
|
"brier_warn": 3.19529506149809e-11,
|
|
"events": [],
|
|
"false_alarm_episodes": 0
|
|
},
|
|
"rise_rain": {
|
|
"mae": 0.07491688056430452,
|
|
"mae_above_2p5": 0.09506457784884237,
|
|
"brier_warn": 6.639993512164624e-14,
|
|
"events": [],
|
|
"false_alarm_episodes": 0
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"year": 2024,
|
|
"n_train": 46321,
|
|
"n_test": 4392,
|
|
"events": [
|
|
{
|
|
"crossing": "2024-09-24T17:00:00",
|
|
"peak_ts": "2024-09-26T02:00:00",
|
|
"peak_level": 4.93
|
|
},
|
|
{
|
|
"crossing": "2024-10-03T09:00:00",
|
|
"peak_ts": "2024-10-05T12:00:00",
|
|
"peak_level": 5.3
|
|
}
|
|
],
|
|
"variants": {
|
|
"rise": {
|
|
"mae": 0.10075626719251345,
|
|
"mae_above_2p5": 0.26384939692286363,
|
|
"brier_warn": 0.011608221543810462,
|
|
"events": [
|
|
{
|
|
"crossing": "2024-09-24T17:00:00",
|
|
"lead_h": 6.0,
|
|
"peak_level": 4.93,
|
|
"peak_pred_24h_before": 4.534709676862131
|
|
},
|
|
{
|
|
"crossing": "2024-10-03T09:00:00",
|
|
"lead_h": 3.0,
|
|
"peak_level": 5.3,
|
|
"peak_pred_24h_before": 5.056619694027486
|
|
}
|
|
],
|
|
"false_alarm_episodes": 0
|
|
},
|
|
"rise_rain": {
|
|
"mae": 0.08874847709708966,
|
|
"mae_above_2p5": 0.20967242138010514,
|
|
"brier_warn": 0.005862181747890141,
|
|
"events": [
|
|
{
|
|
"crossing": "2024-09-24T17:00:00",
|
|
"lead_h": 11.0,
|
|
"peak_level": 4.93,
|
|
"peak_pred_24h_before": 4.863137825109792
|
|
},
|
|
{
|
|
"crossing": "2024-10-03T09:00:00",
|
|
"lead_h": 21.0,
|
|
"peak_level": 5.3,
|
|
"peak_pred_24h_before": 5.557547530221961
|
|
}
|
|
],
|
|
"false_alarm_episodes": 0
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"year": 2025,
|
|
"n_train": 55081,
|
|
"n_test": 4392,
|
|
"events": [
|
|
{
|
|
"crossing": "2025-09-27T18:00:00",
|
|
"peak_ts": "2025-09-27T22:00:00",
|
|
"peak_level": 3.93
|
|
}
|
|
],
|
|
"variants": {
|
|
"rise": {
|
|
"mae": 0.13102686839694494,
|
|
"mae_above_2p5": 0.2729944665011028,
|
|
"brier_warn": 0.010889835530782944,
|
|
"events": [
|
|
{
|
|
"crossing": "2025-09-27T18:00:00",
|
|
"lead_h": 46.0,
|
|
"peak_level": 3.93,
|
|
"peak_pred_24h_before": 3.232029710676319
|
|
}
|
|
],
|
|
"false_alarm_episodes": 1
|
|
},
|
|
"rise_rain": {
|
|
"mae": 0.11160288394028639,
|
|
"mae_above_2p5": 0.24838881498904114,
|
|
"brier_warn": 0.005150122823202273,
|
|
"events": [
|
|
{
|
|
"crossing": "2025-09-27T18:00:00",
|
|
"lead_h": 2.0,
|
|
"peak_level": 3.93,
|
|
"peak_pred_24h_before": 3.239754736790134
|
|
}
|
|
],
|
|
"false_alarm_episodes": 0
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"station": "P.103",
|
|
"warn_thr": 5.95,
|
|
"folds": [
|
|
{
|
|
"year": 2021,
|
|
"n_train": 20009,
|
|
"n_test": 4392,
|
|
"events": [],
|
|
"variants": {
|
|
"rise": {
|
|
"mae": 0.15279228710793116,
|
|
"mae_above_2p5": null,
|
|
"brier_warn": 0.0,
|
|
"events": [],
|
|
"false_alarm_episodes": 0
|
|
},
|
|
"rise_rain": {
|
|
"mae": 0.15114584578006643,
|
|
"mae_above_2p5": null,
|
|
"brier_warn": 0.0,
|
|
"events": [],
|
|
"false_alarm_episodes": 0
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"year": 2022,
|
|
"n_train": 28769,
|
|
"n_test": 4392,
|
|
"events": [
|
|
{
|
|
"crossing": "2022-08-14T04:00:00",
|
|
"peak_ts": "2022-08-14T08:00:00",
|
|
"peak_level": 6.09
|
|
},
|
|
{
|
|
"crossing": "2022-10-02T16:00:00",
|
|
"peak_ts": "2022-10-03T16:00:00",
|
|
"peak_level": 7.54
|
|
}
|
|
],
|
|
"variants": {
|
|
"rise": {
|
|
"mae": 0.15389446229226025,
|
|
"mae_above_2p5": 0.41887094569113953,
|
|
"brier_warn": 0.007740077230532647,
|
|
"events": [
|
|
{
|
|
"crossing": "2022-08-14T04:00:00",
|
|
"lead_h": 6.0,
|
|
"peak_level": 6.09,
|
|
"peak_pred_24h_before": 4.837975953559253
|
|
},
|
|
{
|
|
"crossing": "2022-10-02T16:00:00",
|
|
"lead_h": 9.0,
|
|
"peak_level": 7.54,
|
|
"peak_pred_24h_before": 7.168225721504108
|
|
}
|
|
],
|
|
"false_alarm_episodes": 0
|
|
},
|
|
"rise_rain": {
|
|
"mae": 0.15303667736579823,
|
|
"mae_above_2p5": 0.38833713105646916,
|
|
"brier_warn": 0.0074511589478895475,
|
|
"events": [
|
|
{
|
|
"crossing": "2022-08-14T04:00:00",
|
|
"lead_h": 6.0,
|
|
"peak_level": 6.09,
|
|
"peak_pred_24h_before": 4.8804746828604815
|
|
},
|
|
{
|
|
"crossing": "2022-10-02T16:00:00",
|
|
"lead_h": 10.0,
|
|
"peak_level": 7.54,
|
|
"peak_pred_24h_before": 7.226685294045882
|
|
}
|
|
],
|
|
"false_alarm_episodes": 0
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"year": 2023,
|
|
"n_train": 37524,
|
|
"n_test": 4392,
|
|
"events": [],
|
|
"variants": {
|
|
"rise": {
|
|
"mae": 0.16106550376855028,
|
|
"mae_above_2p5": null,
|
|
"brier_warn": 0.0001779564366636896,
|
|
"events": [],
|
|
"false_alarm_episodes": 1
|
|
},
|
|
"rise_rain": {
|
|
"mae": 0.15541158498896382,
|
|
"mae_above_2p5": null,
|
|
"brier_warn": 4.103077380009017e-09,
|
|
"events": [],
|
|
"false_alarm_episodes": 0
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"year": 2024,
|
|
"n_train": 46308,
|
|
"n_test": 4058,
|
|
"events": [
|
|
{
|
|
"crossing": "2024-09-24T10:00:00",
|
|
"peak_ts": "2024-09-26T00:00:00",
|
|
"peak_level": 8.27
|
|
},
|
|
{
|
|
"crossing": "2024-09-30T03:00:00",
|
|
"peak_ts": "2024-09-30T06:00:00",
|
|
"peak_level": 5.99
|
|
},
|
|
{
|
|
"crossing": "2024-10-03T06:00:00",
|
|
"peak_ts": "2024-10-05T07:00:00",
|
|
"peak_level": 9.93
|
|
}
|
|
],
|
|
"variants": {
|
|
"rise": {
|
|
"mae": 0.17314177863843333,
|
|
"mae_above_2p5": 0.48294427141283425,
|
|
"brier_warn": 0.016091510788709233,
|
|
"events": [
|
|
{
|
|
"crossing": "2024-09-24T10:00:00",
|
|
"lead_h": 10.0,
|
|
"peak_level": 8.27,
|
|
"peak_pred_24h_before": 7.167139790234238
|
|
},
|
|
{
|
|
"crossing": "2024-09-30T03:00:00",
|
|
"lead_h": 10.0,
|
|
"peak_level": 5.99,
|
|
"peak_pred_24h_before": 5.618725525893519
|
|
},
|
|
{
|
|
"crossing": "2024-10-03T06:00:00",
|
|
"lead_h": 69.0,
|
|
"peak_level": 9.93,
|
|
"peak_pred_24h_before": 7.889819144742388
|
|
}
|
|
],
|
|
"false_alarm_episodes": 0
|
|
},
|
|
"rise_rain": {
|
|
"mae": 0.1400555603272253,
|
|
"mae_above_2p5": 0.2920105854094151,
|
|
"brier_warn": 0.007294262727198402,
|
|
"events": [
|
|
{
|
|
"crossing": "2024-09-24T10:00:00",
|
|
"lead_h": 19.0,
|
|
"peak_level": 8.27,
|
|
"peak_pred_24h_before": 8.04142923647258
|
|
},
|
|
{
|
|
"crossing": "2024-09-30T03:00:00",
|
|
"lead_h": 10.0,
|
|
"peak_level": 5.99,
|
|
"peak_pred_24h_before": 5.42
|
|
},
|
|
{
|
|
"crossing": "2024-10-03T06:00:00",
|
|
"lead_h": 55.0,
|
|
"peak_level": 9.93,
|
|
"peak_pred_24h_before": 8.655375706947945
|
|
}
|
|
],
|
|
"false_alarm_episodes": 0
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"year": 2025,
|
|
"n_train": 54577,
|
|
"n_test": 4392,
|
|
"events": [
|
|
{
|
|
"crossing": "2025-09-26T06:00:00",
|
|
"peak_ts": "2025-09-27T21:00:00",
|
|
"peak_level": 6.64
|
|
},
|
|
{
|
|
"crossing": "2025-10-03T06:00:00",
|
|
"peak_ts": "2025-10-03T12:00:00",
|
|
"peak_level": 6.14
|
|
}
|
|
],
|
|
"variants": {
|
|
"rise": {
|
|
"mae": 0.21617454799997243,
|
|
"mae_above_2p5": 0.406245211140301,
|
|
"brier_warn": 0.012587550711857222,
|
|
"events": [
|
|
{
|
|
"crossing": "2025-09-26T06:00:00",
|
|
"lead_h": 14.0,
|
|
"peak_level": 6.64,
|
|
"peak_pred_24h_before": 5.73
|
|
},
|
|
{
|
|
"crossing": "2025-10-03T06:00:00",
|
|
"lead_h": 47.0,
|
|
"peak_level": 6.14,
|
|
"peak_pred_24h_before": 5.953951787788988
|
|
}
|
|
],
|
|
"false_alarm_episodes": 1
|
|
},
|
|
"rise_rain": {
|
|
"mae": 0.17651730883692462,
|
|
"mae_above_2p5": 0.38926658786456825,
|
|
"brier_warn": 0.015873258461498164,
|
|
"events": [
|
|
{
|
|
"crossing": "2025-09-26T06:00:00",
|
|
"lead_h": 6.0,
|
|
"peak_level": 6.64,
|
|
"peak_pred_24h_before": 5.760150202082536
|
|
},
|
|
{
|
|
"crossing": "2025-10-03T06:00:00",
|
|
"lead_h": 8.0,
|
|
"peak_level": 6.14,
|
|
"peak_pred_24h_before": 5.605274163405912
|
|
}
|
|
],
|
|
"false_alarm_episodes": 2
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
] |