EKS
#20
by odunbar - opened
- .cache/known_methods_snapshot.json +35 -0
- CLAUDE.md +7 -1
- data/ces-eks_results/ces-eks-pca_l63_ensemble_results_2026-10-30_minimal.nc +3 -0
- data/ces-eks_results/ces-eks-pca_l96_ensemble_results_2026-10-30_minimal.nc +3 -0
- data/ces-eks_results/ces-eks-pca_l96_nn_forcing_ensemble_results_2026-11-01_minimal.nc +3 -0
- data/ces-eks_results/ces-eks-pca_l96_spatial_forcing_ensemble_results_2026-10-30_minimal.nc +3 -0
- data/eks_results/leaderboard_sampler_l63_2026-10-28_minimal.nc +3 -0
- data/eks_results/leaderboard_sampler_l96_const-force_2026-10-28_minimal.nc +3 -0
- data/eks_results/leaderboard_sampler_l96_flux-force_2026-10-28_minimal.nc +3 -0
- data/eks_results/leaderboard_sampler_l96_vec-force_2026-10-28_minimal.nc +3 -0
- data/gboed-uq_results/boed-eks-eig_l63_ensemble_results_2026-11-01_minimal.nc +3 -0
- data/gboed-uq_results/boed-eks-eig_l96_const-force_2026-11-01_minimal.nc +3 -0
- data/gboed-uq_results/boed-eks-eig_l96_flux-force_2026-11-01_minimal.nc +3 -0
- data/gboed-uq_results/boed-eks-eig_l96_vec-force_2026-11-01_minimal.nc +3 -0
- data/gboed-uq_results/boed-eks_l63_ensemble_results_2026-10-30_minimal.nc +3 -0
- data/gboed-uq_results/boed-eks_l96_const-force_2026-10-30_minimal.nc +3 -0
- data/gboed-uq_results/boed-eks_l96_flux-force_2026-10-30_minimal.nc +3 -0
- data/gboed-uq_results/boed-eks_l96_vec-force_2026-10-30_minimal.nc +3 -0
- src/common/method_registry.py +40 -4
- src/data_store.py +16 -0
- src/pages/MethodDetails.py +153 -0
.cache/known_methods_snapshot.json
CHANGED
|
@@ -276,6 +276,41 @@
|
|
| 276 |
"ies-tmcmc",
|
| 277 |
"boed-tmcmc"
|
| 278 |
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 279 |
}
|
| 280 |
},
|
| 281 |
"observed_methods": [
|
|
|
|
| 276 |
"ies-tmcmc",
|
| 277 |
"boed-tmcmc"
|
| 278 |
]
|
| 279 |
+
},
|
| 280 |
+
"eks": {
|
| 281 |
+
"abbreviation": "EKS",
|
| 282 |
+
"Method": "Ensemble Kalman Sampler",
|
| 283 |
+
"parallelism": "parallel-interacting",
|
| 284 |
+
"update_type": "gradient (Kalman)",
|
| 285 |
+
"method_goal": "uq",
|
| 286 |
+
"emulator_use": "none",
|
| 287 |
+
"aliases": [
|
| 288 |
+
"eks",
|
| 289 |
+
"sampler"
|
| 290 |
+
]
|
| 291 |
+
},
|
| 292 |
+
"ces-eks": {
|
| 293 |
+
"abbreviation": "CES-EKS",
|
| 294 |
+
"Method": "Calibrate Emulate Sample (Ensemble Kalman Sampler)",
|
| 295 |
+
"parallelism": "parallel-interacting",
|
| 296 |
+
"update_type": "gradient (Kalman)",
|
| 297 |
+
"method_goal": "uq",
|
| 298 |
+
"emulator_use": "after-optimize",
|
| 299 |
+
"aliases": [
|
| 300 |
+
"ces-eks"
|
| 301 |
+
]
|
| 302 |
+
},
|
| 303 |
+
"ies-eks": {
|
| 304 |
+
"abbreviation": "IES-EKS",
|
| 305 |
+
"Method": "Iterated Emulate-Sample (EKS)",
|
| 306 |
+
"parallelism": "parallel-interacting",
|
| 307 |
+
"update_type": "general",
|
| 308 |
+
"method_goal": "uq",
|
| 309 |
+
"emulator_use": "within-optimize",
|
| 310 |
+
"aliases": [
|
| 311 |
+
"ies-eks",
|
| 312 |
+
"boed-eks"
|
| 313 |
+
]
|
| 314 |
}
|
| 315 |
},
|
| 316 |
"observed_methods": [
|
CLAUDE.md
CHANGED
|
@@ -83,7 +83,9 @@ calibration_benchmark/
|
|
| 83 |
│ ├── rl-td3/ RL-TD3-SHORT / RL-TD3 (TD3 variant of the RL experiments; RL-TD3 files are `rl-td3-long` in the NetCDF) results (per-benchmark files)
|
| 84 |
│ ├── rl-ddpg/ RL-DDPG-SHORT / RL-DDPG (DDPG actor-critic; short RL step / standard-window RL step; RL-DDPG files are `rl-ddpg-long` in the NetCDF) results (per-benchmark files)
|
| 85 |
│ ├── ces-eki-dmc_results/ CES-EKI-DMC ensemble-results files (UQ source)
|
| 86 |
-
│ ├── gboed-uq_results/ GBOED ensemble-results files (UQ source; 2026-10-16 GBOED-TMCMC/IES-TMCMC and 2026-10-19 IEKF-based variants, all four benchmarks; files are named `boed-*`: `tmcmc-eig` = GBOED-TMCMC, `iekf-eig` = GBOED-IEKF, `iekf` = IES-IEKF, `tmcmc` = IES-TMCMC; IES = Iterated Emulate-Sample)
|
|
|
|
|
|
|
| 87 |
│ ├── gnki-uq_results/ IEKF (a.k.a GNKI) ensemble-results files (UQ source)
|
| 88 |
│ └── abc/ ABC ensemble-results files (UQ source; per-benchmark files)
|
| 89 |
├── offline-plots/ leaderboard_plot.py — matplotlib replica of the leaderboard charts
|
|
@@ -220,6 +222,10 @@ A quick taxonomy tree is rendered on the home page (`src/streamlit_app.py`).
|
|
| 220 |
| `ies-iekf` | IES-IEKF | parallel-interacting | general | uq | within-optimize | boed-iekf |
|
| 221 |
| `gboed-iekf` | GBOED-IEKF | parallel-interacting | general | uq | within-optimize | gboed-iekf-eig, boed-iekf-eig |
|
| 222 |
| `ies-tmcmc` | IES-TMCMC | parallel-interacting | general | uq | within-optimize | boed-tmcmc |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 223 |
| `lm-kgmm` | LM-KGMM | serial | gradient (score) | optimization | none | — |
|
| 224 |
| `lm-dsm` | LM-DSM | serial | gradient (score) | optimization | none | — |
|
| 225 |
| `adam-kgmm` | ADAM-KGMM | serial | gradient (score) | optimization | none | — |
|
|
|
|
| 83 |
│ ├── rl-td3/ RL-TD3-SHORT / RL-TD3 (TD3 variant of the RL experiments; RL-TD3 files are `rl-td3-long` in the NetCDF) results (per-benchmark files)
|
| 84 |
│ ├── rl-ddpg/ RL-DDPG-SHORT / RL-DDPG (DDPG actor-critic; short RL step / standard-window RL step; RL-DDPG files are `rl-ddpg-long` in the NetCDF) results (per-benchmark files)
|
| 85 |
│ ├── ces-eki-dmc_results/ CES-EKI-DMC ensemble-results files (UQ source)
|
| 86 |
+
│ ├── gboed-uq_results/ GBOED ensemble-results files (UQ source; 2026-10-16 GBOED-TMCMC/IES-TMCMC and 2026-10-19 IEKF-based variants, all four benchmarks; files are named `boed-*`: `tmcmc-eig` = GBOED-TMCMC, `iekf-eig` = GBOED-IEKF, `iekf` = IES-IEKF, `tmcmc` = IES-TMCMC, `eks` = IES-EKS (2026-10-30), `eks-eig` = GBOED-EKS (2026-11-01); IES = Iterated Emulate-Sample)
|
| 87 |
+
│ ├── ces-eks_results/ CES-EKS ensemble-results files (UQ source; 2026-10-29, all four benchmarks)
|
| 88 |
+
│ ├── eks_results/ EKS (Ensemble Kalman Sampler) ensemble-results files (UQ source; 2026-10-28, all four benchmarks; files are named `leaderboard_sampler_*`)
|
| 89 |
│ ├── gnki-uq_results/ IEKF (a.k.a GNKI) ensemble-results files (UQ source)
|
| 90 |
│ └── abc/ ABC ensemble-results files (UQ source; per-benchmark files)
|
| 91 |
├── offline-plots/ leaderboard_plot.py — matplotlib replica of the leaderboard charts
|
|
|
|
| 222 |
| `ies-iekf` | IES-IEKF | parallel-interacting | general | uq | within-optimize | boed-iekf |
|
| 223 |
| `gboed-iekf` | GBOED-IEKF | parallel-interacting | general | uq | within-optimize | gboed-iekf-eig, boed-iekf-eig |
|
| 224 |
| `ies-tmcmc` | IES-TMCMC | parallel-interacting | general | uq | within-optimize | boed-tmcmc |
|
| 225 |
+
| `eks` | EKS | parallel-interacting | gradient (Kalman) | uq | none | sampler |
|
| 226 |
+
| `ces-eks` | CES-EKS | parallel-interacting | gradient (Kalman) | uq | after-optimize | — |
|
| 227 |
+
| `ies-eks` | IES-EKS | parallel-interacting | general | uq | within-optimize | boed-eks |
|
| 228 |
+
| `gboed-eks` | GBOED-EKS | parallel-interacting | general | uq | within-optimize | gboed-eks-eig, boed-eks-eig |
|
| 229 |
| `lm-kgmm` | LM-KGMM | serial | gradient (score) | optimization | none | — |
|
| 230 |
| `lm-dsm` | LM-DSM | serial | gradient (score) | optimization | none | — |
|
| 231 |
| `adam-kgmm` | ADAM-KGMM | serial | gradient (score) | optimization | none | — |
|
data/ces-eks_results/ces-eks-pca_l63_ensemble_results_2026-10-30_minimal.nc
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:fb6d32018c883b3652104527746a798bef2355ec5cc2347e63aec70641b0c115
|
| 3 |
+
size 672937
|
data/ces-eks_results/ces-eks-pca_l96_ensemble_results_2026-10-30_minimal.nc
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e96cf92aa9d933c2e6d3e1abb0329087263c90e3c0ce67b887a9985714930d37
|
| 3 |
+
size 809737
|
data/ces-eks_results/ces-eks-pca_l96_nn_forcing_ensemble_results_2026-11-01_minimal.nc
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:608018d111d4c00bdcf133d6d45ad86cd83bc74a44c71cbf187874e45a7f7f85
|
| 3 |
+
size 809737
|
data/ces-eks_results/ces-eks-pca_l96_spatial_forcing_ensemble_results_2026-10-30_minimal.nc
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:68424661fd8612e9178599e350f2abc7782539358c4d0a30c9afeee538b326d1
|
| 3 |
+
size 809737
|
data/eks_results/leaderboard_sampler_l63_2026-10-28_minimal.nc
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a8b96f84b51998c56a380eaceb304bbb27b8d1005f95f8ef3286282a0170945f
|
| 3 |
+
size 673072
|
data/eks_results/leaderboard_sampler_l96_const-force_2026-10-28_minimal.nc
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:d00156b43f62ee59e61af56e4c87efc67bafe2e3471517686dd70ac79c099a8a
|
| 3 |
+
size 809872
|
data/eks_results/leaderboard_sampler_l96_flux-force_2026-10-28_minimal.nc
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:1269d153307b862a3e7011c626e97a2a8cb6305517c224a27de19846816ada9d
|
| 3 |
+
size 809872
|
data/eks_results/leaderboard_sampler_l96_vec-force_2026-10-28_minimal.nc
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:d55149224ecc0a0181501b4568814ac59a3b61bf3ae00db1800160caffefb5bf
|
| 3 |
+
size 809872
|
data/gboed-uq_results/boed-eks-eig_l63_ensemble_results_2026-11-01_minimal.nc
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:27bb192846d29dfaee2e8379ab88608f5075a4b2c795174def83e2131bd2f0fb
|
| 3 |
+
size 728527
|
data/gboed-uq_results/boed-eks-eig_l96_const-force_2026-11-01_minimal.nc
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8354299ffb06e72e4fe2b3f12289d5676cba0df42e3c90483a00e8e2da4677cc
|
| 3 |
+
size 728527
|
data/gboed-uq_results/boed-eks-eig_l96_flux-force_2026-11-01_minimal.nc
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ab1a4d0a6d69d8c24dd725c252bddbbb4066dcb954561106e4526930825752d3
|
| 3 |
+
size 728527
|
data/gboed-uq_results/boed-eks-eig_l96_vec-force_2026-11-01_minimal.nc
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:f73d7f32d1f2a6ea7536b302ea946a0a238dc62949f74653a98cb391b476904c
|
| 3 |
+
size 728527
|
data/gboed-uq_results/boed-eks_l63_ensemble_results_2026-10-30_minimal.nc
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:6af49c52fedd18cda9910f9d93d5e66fb8e556f9c999245c8a0906fd76701704
|
| 3 |
+
size 728523
|
data/gboed-uq_results/boed-eks_l96_const-force_2026-10-30_minimal.nc
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:462bd26fabfcea29f555ccc6be209cb496f4a9ddf8af87c081b095d1b40dcb5c
|
| 3 |
+
size 728523
|
data/gboed-uq_results/boed-eks_l96_flux-force_2026-10-30_minimal.nc
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:6b5cfb7ca902844e4404203f2ad3a37fbca49ce9959377f839bf6f39ccc76742
|
| 3 |
+
size 728523
|
data/gboed-uq_results/boed-eks_l96_vec-force_2026-10-30_minimal.nc
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:b443a24e75a968905ee0a97f83171ce9a32779d392859c697854185ee6cedfd1
|
| 3 |
+
size 728523
|
src/common/method_registry.py
CHANGED
|
@@ -264,6 +264,42 @@ KNOWN_METHODS = {
|
|
| 264 |
"emulator_use": "within-optimize",
|
| 265 |
"aliases": ["ies-tmcmc", "boed-tmcmc"],
|
| 266 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 267 |
}
|
| 268 |
|
| 269 |
|
|
@@ -326,13 +362,13 @@ METHOD_COLORS: dict[str, str] = {
|
|
| 326 |
# family. A family only appears on a board if one of its methods has data there.
|
| 327 |
# Every method that can appear in a suitability table must be listed here.
|
| 328 |
SUITABILITY_FAMILIES: dict[str, list[str]] = {
|
| 329 |
-
"CES": ["CES-EKI-CONST", "CES-EKI-DMC", "CES-IEKF-CONST"],
|
| 330 |
-
"Kalman": ["ETKI", "IEKF", "TEKI", "UKI"],
|
| 331 |
"Gradient": ["LM", "ADAM"],
|
| 332 |
"GFDT": ["LM-DSM", "ADAM-DSM", "LM-KGMM", "ADAM-KGMM"],
|
| 333 |
"RL": ["RL-DDPG", "RL-TD3", "RL-DDPG-SHORT", "RL-TD3-SHORT"],
|
| 334 |
-
"IES": ["IES-IEKF", "IES-TMCMC"],
|
| 335 |
-
"GBOED": ["GBOED-IEKF", "GBOED-TMCMC"],
|
| 336 |
"General": ["ABC", "HM"],
|
| 337 |
}
|
| 338 |
|
|
|
|
| 264 |
"emulator_use": "within-optimize",
|
| 265 |
"aliases": ["ies-tmcmc", "boed-tmcmc"],
|
| 266 |
},
|
| 267 |
+
"eks": {
|
| 268 |
+
"abbreviation": "EKS",
|
| 269 |
+
"Method": "Ensemble Kalman Sampler (EKS a.k.a ALDI)",
|
| 270 |
+
"parallelism": "parallel-interacting",
|
| 271 |
+
"update_type": "gradient (Kalman)",
|
| 272 |
+
"method_goal": "uq",
|
| 273 |
+
"emulator_use": "none",
|
| 274 |
+
"aliases": ["eks", "sampler"],
|
| 275 |
+
},
|
| 276 |
+
"ces-eks": {
|
| 277 |
+
"abbreviation": "CES-EKS",
|
| 278 |
+
"Method": "Calibrate Emulate Sample (EKS)",
|
| 279 |
+
"parallelism": "parallel-interacting",
|
| 280 |
+
"update_type": "gradient (Kalman)",
|
| 281 |
+
"method_goal": "uq",
|
| 282 |
+
"emulator_use": "after-optimize",
|
| 283 |
+
"aliases": ["ces-eks"],
|
| 284 |
+
},
|
| 285 |
+
"ies-eks": {
|
| 286 |
+
"abbreviation": "IES-EKS",
|
| 287 |
+
"Method": "Iterated Emulate-Sample (EKS)",
|
| 288 |
+
"parallelism": "parallel-interacting",
|
| 289 |
+
"update_type": "general",
|
| 290 |
+
"method_goal": "uq",
|
| 291 |
+
"emulator_use": "within-optimize",
|
| 292 |
+
"aliases": ["ies-eks", "boed-eks"],
|
| 293 |
+
},
|
| 294 |
+
"gboed-eks": {
|
| 295 |
+
"abbreviation": "GBOED-EKS",
|
| 296 |
+
"Method": "Goal-oriented Bayesian Optimal Experimental Design (EKS)",
|
| 297 |
+
"parallelism": "parallel-interacting",
|
| 298 |
+
"update_type": "general",
|
| 299 |
+
"method_goal": "uq",
|
| 300 |
+
"emulator_use": "within-optimize",
|
| 301 |
+
"aliases": ["gboed-eks", "gboed-eks-eig", "boed-eks-eig"],
|
| 302 |
+
},
|
| 303 |
}
|
| 304 |
|
| 305 |
|
|
|
|
| 362 |
# family. A family only appears on a board if one of its methods has data there.
|
| 363 |
# Every method that can appear in a suitability table must be listed here.
|
| 364 |
SUITABILITY_FAMILIES: dict[str, list[str]] = {
|
| 365 |
+
"CES": ["CES-EKI-CONST", "CES-EKI-DMC", "CES-EKS", "CES-IEKF-CONST"],
|
| 366 |
+
"Kalman": ["EKS", "ETKI", "IEKF", "TEKI", "UKI"],
|
| 367 |
"Gradient": ["LM", "ADAM"],
|
| 368 |
"GFDT": ["LM-DSM", "ADAM-DSM", "LM-KGMM", "ADAM-KGMM"],
|
| 369 |
"RL": ["RL-DDPG", "RL-TD3", "RL-DDPG-SHORT", "RL-TD3-SHORT"],
|
| 370 |
+
"IES": ["IES-EKS", "IES-IEKF", "IES-TMCMC"],
|
| 371 |
+
"GBOED": ["GBOED-EKS", "GBOED-IEKF", "GBOED-TMCMC"],
|
| 372 |
"General": ["ABC", "HM"],
|
| 373 |
}
|
| 374 |
|
src/data_store.py
CHANGED
|
@@ -135,7 +135,11 @@ UQ_BUDGET_FILES: dict[str, list[tuple[str, str]]] = {
|
|
| 135 |
("ies-iekf", "gboed-uq_results/boed-iekf_l63_ensemble_results_2026-10-19_minimal.nc"),
|
| 136 |
("gboed-iekf", "gboed-uq_results/boed-iekf-eig_l63_ensemble_results_2026-10-19_minimal.nc"),
|
| 137 |
("ies-tmcmc", "gboed-uq_results/boed-tmcmc_l63_ensemble_results_2026-10-16_minimal.nc"),
|
|
|
|
|
|
|
| 138 |
("abc", "abc/leaderboard_abc_l63_2026-09-10_minimal.nc"),
|
|
|
|
|
|
|
| 139 |
],
|
| 140 |
"L96": [
|
| 141 |
("ces-eki-dmc", "ces-eki-dmc_results/ces-eki-dmc_l96_ensemble_results_2026-06-15_minimal.nc"),
|
|
@@ -147,7 +151,11 @@ UQ_BUDGET_FILES: dict[str, list[tuple[str, str]]] = {
|
|
| 147 |
("ies-iekf", "gboed-uq_results/boed-iekf_l96_const-force_2026-10-19_minimal.nc"),
|
| 148 |
("gboed-iekf", "gboed-uq_results/boed-iekf-eig_l96_const-force_2026-10-19_minimal.nc"),
|
| 149 |
("ies-tmcmc", "gboed-uq_results/boed-tmcmc_l96_const-force_2026-10-16_minimal.nc"),
|
|
|
|
|
|
|
| 150 |
("abc", "abc/leaderboard_abc_l96_const-force_2026-09-10_minimal.nc"),
|
|
|
|
|
|
|
| 151 |
],
|
| 152 |
"L96_NN_FORCING": [
|
| 153 |
("ces-eki-dmc", "ces-eki-dmc_results/ces-eki-dmc_l96_nn_forcing_ensemble_results_2026-06-15_minimal.nc"),
|
|
@@ -159,7 +167,11 @@ UQ_BUDGET_FILES: dict[str, list[tuple[str, str]]] = {
|
|
| 159 |
("ies-iekf", "gboed-uq_results/boed-iekf_l96_flux-force_2026-10-19_minimal.nc"),
|
| 160 |
("gboed-iekf", "gboed-uq_results/boed-iekf-eig_l96_flux-force_2026-10-19_minimal.nc"),
|
| 161 |
("ies-tmcmc", "gboed-uq_results/boed-tmcmc_l96_flux-force_2026-10-16_minimal.nc"),
|
|
|
|
|
|
|
| 162 |
("abc", "abc/leaderboard_abc_l96_flux-force_2026-09-10_minimal.nc"),
|
|
|
|
|
|
|
| 163 |
],
|
| 164 |
"L96_SPATIAL_FORCING": [
|
| 165 |
("ces-eki-dmc", "ces-eki-dmc_results/ces-eki-dmc_l96_spatial_forcing_ensemble_results_2026-06-15_minimal.nc"),
|
|
@@ -171,7 +183,11 @@ UQ_BUDGET_FILES: dict[str, list[tuple[str, str]]] = {
|
|
| 171 |
("ies-iekf", "gboed-uq_results/boed-iekf_l96_vec-force_2026-10-19_minimal.nc"),
|
| 172 |
("gboed-iekf", "gboed-uq_results/boed-iekf-eig_l96_vec-force_2026-10-19_minimal.nc"),
|
| 173 |
("ies-tmcmc", "gboed-uq_results/boed-tmcmc_l96_vec-force_2026-10-16_minimal.nc"),
|
|
|
|
|
|
|
| 174 |
("abc", "abc/leaderboard_abc_l96_vec-force_2026-09-10_minimal.nc"),
|
|
|
|
|
|
|
| 175 |
],
|
| 176 |
}
|
| 177 |
|
|
|
|
| 135 |
("ies-iekf", "gboed-uq_results/boed-iekf_l63_ensemble_results_2026-10-19_minimal.nc"),
|
| 136 |
("gboed-iekf", "gboed-uq_results/boed-iekf-eig_l63_ensemble_results_2026-10-19_minimal.nc"),
|
| 137 |
("ies-tmcmc", "gboed-uq_results/boed-tmcmc_l63_ensemble_results_2026-10-16_minimal.nc"),
|
| 138 |
+
("ies-eks", "gboed-uq_results/boed-eks_l63_ensemble_results_2026-10-30_minimal.nc"),
|
| 139 |
+
("gboed-eks", "gboed-uq_results/boed-eks-eig_l63_ensemble_results_2026-11-01_minimal.nc"),
|
| 140 |
("abc", "abc/leaderboard_abc_l63_2026-09-10_minimal.nc"),
|
| 141 |
+
("eks", "eks_results/leaderboard_sampler_l63_2026-10-28_minimal.nc"),
|
| 142 |
+
("ces-eks", "ces-eks_results/ces-eks-pca_l63_ensemble_results_2026-10-30_minimal.nc"),
|
| 143 |
],
|
| 144 |
"L96": [
|
| 145 |
("ces-eki-dmc", "ces-eki-dmc_results/ces-eki-dmc_l96_ensemble_results_2026-06-15_minimal.nc"),
|
|
|
|
| 151 |
("ies-iekf", "gboed-uq_results/boed-iekf_l96_const-force_2026-10-19_minimal.nc"),
|
| 152 |
("gboed-iekf", "gboed-uq_results/boed-iekf-eig_l96_const-force_2026-10-19_minimal.nc"),
|
| 153 |
("ies-tmcmc", "gboed-uq_results/boed-tmcmc_l96_const-force_2026-10-16_minimal.nc"),
|
| 154 |
+
("ies-eks", "gboed-uq_results/boed-eks_l96_const-force_2026-10-30_minimal.nc"),
|
| 155 |
+
("gboed-eks", "gboed-uq_results/boed-eks-eig_l96_const-force_2026-11-01_minimal.nc"),
|
| 156 |
("abc", "abc/leaderboard_abc_l96_const-force_2026-09-10_minimal.nc"),
|
| 157 |
+
("eks", "eks_results/leaderboard_sampler_l96_const-force_2026-10-28_minimal.nc"),
|
| 158 |
+
("ces-eks", "ces-eks_results/ces-eks-pca_l96_ensemble_results_2026-10-30_minimal.nc"),
|
| 159 |
],
|
| 160 |
"L96_NN_FORCING": [
|
| 161 |
("ces-eki-dmc", "ces-eki-dmc_results/ces-eki-dmc_l96_nn_forcing_ensemble_results_2026-06-15_minimal.nc"),
|
|
|
|
| 167 |
("ies-iekf", "gboed-uq_results/boed-iekf_l96_flux-force_2026-10-19_minimal.nc"),
|
| 168 |
("gboed-iekf", "gboed-uq_results/boed-iekf-eig_l96_flux-force_2026-10-19_minimal.nc"),
|
| 169 |
("ies-tmcmc", "gboed-uq_results/boed-tmcmc_l96_flux-force_2026-10-16_minimal.nc"),
|
| 170 |
+
("ies-eks", "gboed-uq_results/boed-eks_l96_flux-force_2026-10-30_minimal.nc"),
|
| 171 |
+
("gboed-eks", "gboed-uq_results/boed-eks-eig_l96_flux-force_2026-11-01_minimal.nc"),
|
| 172 |
("abc", "abc/leaderboard_abc_l96_flux-force_2026-09-10_minimal.nc"),
|
| 173 |
+
("eks", "eks_results/leaderboard_sampler_l96_flux-force_2026-10-28_minimal.nc"),
|
| 174 |
+
("ces-eks", "ces-eks_results/ces-eks-pca_l96_nn_forcing_ensemble_results_2026-11-01_minimal.nc"),
|
| 175 |
],
|
| 176 |
"L96_SPATIAL_FORCING": [
|
| 177 |
("ces-eki-dmc", "ces-eki-dmc_results/ces-eki-dmc_l96_spatial_forcing_ensemble_results_2026-06-15_minimal.nc"),
|
|
|
|
| 183 |
("ies-iekf", "gboed-uq_results/boed-iekf_l96_vec-force_2026-10-19_minimal.nc"),
|
| 184 |
("gboed-iekf", "gboed-uq_results/boed-iekf-eig_l96_vec-force_2026-10-19_minimal.nc"),
|
| 185 |
("ies-tmcmc", "gboed-uq_results/boed-tmcmc_l96_vec-force_2026-10-16_minimal.nc"),
|
| 186 |
+
("ies-eks", "gboed-uq_results/boed-eks_l96_vec-force_2026-10-30_minimal.nc"),
|
| 187 |
+
("gboed-eks", "gboed-uq_results/boed-eks-eig_l96_vec-force_2026-11-01_minimal.nc"),
|
| 188 |
("abc", "abc/leaderboard_abc_l96_vec-force_2026-09-10_minimal.nc"),
|
| 189 |
+
("eks", "eks_results/leaderboard_sampler_l96_vec-force_2026-10-28_minimal.nc"),
|
| 190 |
+
("ces-eks", "ces-eks_results/ces-eks-pca_l96_spatial_forcing_ensemble_results_2026-10-30_minimal.nc"),
|
| 191 |
],
|
| 192 |
}
|
| 193 |
|
src/pages/MethodDetails.py
CHANGED
|
@@ -258,6 +258,41 @@ method_meta = {
|
|
| 258 |
],
|
| 259 |
"notes": "Same after-optimize emulator caveat as CES-EKI-DMC, with the Gauss-Newton calibrate step's usual small-ensemble sensitivity (see IEKF).",
|
| 260 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 261 |
"ADAM": {
|
| 262 |
"citation": "Kingma & Ba, ICLR, 2015",
|
| 263 |
"url": "https://doi.org/10.48550/arXiv.1412.6980",
|
|
@@ -667,6 +702,124 @@ method_meta = {
|
|
| 667 |
"(vec-force and NN flux-force) it fails on at least 35% and 40% of seeds, respectively, at every ensemble size."
|
| 668 |
),
|
| 669 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 670 |
"GBOED-IEKF": {
|
| 671 |
"citation": "Holthuijzen et al. 2026 (EIG acquisition); IEKF posterior sampler replaces ST-MCMC",
|
| 672 |
"url": "https://arxiv.org/abs/2508.13071",
|
|
|
|
| 258 |
],
|
| 259 |
"notes": "Same after-optimize emulator caveat as CES-EKI-DMC, with the Gauss-Newton calibrate step's usual small-ensemble sensitivity (see IEKF).",
|
| 260 |
},
|
| 261 |
+
"CES-EKS": {
|
| 262 |
+
"citation": "Cleary et al., J. Comput. Phys., 2021; Garbuno-Inigo, Nüsken and Reich, SIAM J. Appl. Dyn. Syst., 2020",
|
| 263 |
+
"url": "https://doi.org/10.1016/j.jcp.2020.109716",
|
| 264 |
+
"source": "`uq_experiments/calibrate_emulate_sample` — `CALIBRATE_METHOD=eks` (calibrate stage `Sampler(prior)` + `EKSStableScheduler()`), `DIM_REDUCTION=PCA` (leaderboard key `ces-eks-pca`).",
|
| 265 |
+
"math": (
|
| 266 |
+
"Calibrate-Emulate-Sample whose calibrate stage runs the Ensemble Kalman Sampler (see the EKS entry) instead of "
|
| 267 |
+
"plain EKI. Calibrate: run the sampler to generate `(θ, G(θ))` training pairs; iteration `k` trains on "
|
| 268 |
+
"the pairs from the first `k` steps. Emulate: fit a scalar random-feature surrogate `Ĝ(θ)` on those "
|
| 269 |
+
"pairs. Sample: draw from `π(θ|y) ∝ exp(-½‖y-Ĝ(θ)‖²_Γ)·π(θ)` against the cheap surrogate using "
|
| 270 |
+
"preconditioned Crank-Nicolson Metropolis-Hastings (pCN-MH), rather than the true forward model."
|
| 271 |
+
),
|
| 272 |
+
"guardrails": (
|
| 273 |
+
"Calibrate stage: `Sampler(prior)` with the data-dependent `EKSStableScheduler()`. The random-feature "
|
| 274 |
+
"kernel has a `1e-6` diagonal nugget. The nullspace-noise injector is switched off for this variant, so directions dropped by the "
|
| 275 |
+
"input PCA are decoded at the prior mean rather than filled with prior noise (the experiment config "
|
| 276 |
+
"notes that injecting noise inflated the posterior on L96 flux-force, with output spread about 2x too "
|
| 277 |
+
"wide and no contraction with `k`). Sample stage auto-tunes the pCN step size (`optimize_stepsize`, "
|
| 278 |
+
"2,000-sample dry run) before the full chain."
|
| 279 |
+
),
|
| 280 |
+
"params": [
|
| 281 |
+
{"Parameter": "calibrate sampler / scheduler", "Value": "Sampler(prior) / EKSStableScheduler()"},
|
| 282 |
+
{"Parameter": "n_features / n_features_opt", "Value": "100/60 (L63), 200/160 (L96 variants)"},
|
| 283 |
+
{"Parameter": "kernel nugget", "Value": "1e-6"},
|
| 284 |
+
{"Parameter": "MCMC samples / burn-in", "Value": "100,000 / 2,000 (pCN-MH)"},
|
| 285 |
+
{"Parameter": "init_stepsize", "Value": "0.2 (L63) / 0.01 (L96), auto-tuned before the full chain"},
|
| 286 |
+
{"Parameter": "nullspace noise injector", "Value": "off (threshold Inf)"},
|
| 287 |
+
],
|
| 288 |
+
"notes": (
|
| 289 |
+
"The emulator is fit once per iteration `k` on the sampler's first `k` steps, so quality depends on "
|
| 290 |
+
"how well the calibrate-stage ensemble covers the posterior region. In the current UQ data "
|
| 291 |
+
"(c = 1.5, best reliable ensemble size) the mean budget is 5.3 on L63, 6.0 on L96 const-force, 87.5 "
|
| 292 |
+
"on vec-force (0% failures) and 207 on NN flux-force, which fails on at least 5% of seeds at every "
|
| 293 |
+
"size (15% at the best one)."
|
| 294 |
+
),
|
| 295 |
+
},
|
| 296 |
"ADAM": {
|
| 297 |
"citation": "Kingma & Ba, ICLR, 2015",
|
| 298 |
"url": "https://doi.org/10.48550/arXiv.1412.6980",
|
|
|
|
| 702 |
"(vec-force and NN flux-force) it fails on at least 35% and 40% of seeds, respectively, at every ensemble size."
|
| 703 |
),
|
| 704 |
},
|
| 705 |
+
"EKS": {
|
| 706 |
+
"citation": "Garbuno-Inigo, Nüsken and Reich, SIAM J. Appl. Dyn. Syst., 2020 (ALDI); Garbuno-Inigo, Hoffmann, Li and Stuart, SIAM J. Appl. Dyn. Syst., 2020 (original EKS)",
|
| 707 |
+
"url": "https://doi.org/10.1137/19M1304891",
|
| 708 |
+
"source": "`uq_experiments/KalmanSampler` — `calibrate_l63.jl`/`calibrate_l96.jl`, `experiment_config.jl` (`METHOD=sampler`, leaderboard key `sampler`); `EKP.Sampler(prior)` with EnsembleKalmanProcesses' default `sampler_type = \"aldi\"`.",
|
| 709 |
+
"math": (
|
| 710 |
+
"EKS (a.k.a ALDI): the Ensemble Kalman Sampler in its affine-invariant Langevin form (ALDI). It is a "
|
| 711 |
+
"derivative-free interacting-particle system that approximately samples the posterior. Each iteration "
|
| 712 |
+
"moves every member with an ensemble-Kalman drift (parameter/output ensemble covariances stand in for "
|
| 713 |
+
"a simulator Jacobian), a prior term applied implicitly, a finite-sample correction `(d+1)/J` times "
|
| 714 |
+
"the member's deviation from the ensemble mean, and noise built from the ensemble square root. Unlike "
|
| 715 |
+
"EKI the noise keeps the ensemble from collapsing, so the ensemble approximates the posterior rather "
|
| 716 |
+
"than a point estimate. There is no emulator: the ensemble at each iteration is itself the posterior "
|
| 717 |
+
"estimate."
|
| 718 |
+
),
|
| 719 |
+
"math_eq": r"\theta^{(j)}_{n+1} = \left(I + \Delta t_n C_n \Gamma_\theta^{-1}\right)^{-1}\left[\theta^{(j)}_n - \frac{\Delta t_n}{J}\sum_{k=1}^J \langle \mathcal{G}(\theta^{(k)}_n) - \bar{\mathcal{G}}_n,\, \Gamma_y^{-1}(\mathcal{G}(\theta^{(j)}_n) - y)\rangle (\theta^{(k)}_n - \bar\theta_n) + \Delta t_n C_n \Gamma_\theta^{-1} m_\theta + \Delta t_n \frac{d+1}{J}(\theta^{(j)}_n - \bar\theta_n)\right] + \sqrt{\frac{2\Delta t_n}{J}}\sum_{k=1}^J \xi_{jk}\,(\theta^{(k)}_n - \bar\theta_n)",
|
| 720 |
+
"guardrails": (
|
| 721 |
+
"The step size comes from `EKSStableScheduler()` (numerator 1, nugget `eps()`), so it is adaptive and "
|
| 722 |
+
"data-dependent, `Δt = 1/(‖D‖ + eps)` with `D` the ensemble-weighted data-misfit matrix, and needs "
|
| 723 |
+
"no hand-tuned schedule."
|
| 724 |
+
),
|
| 725 |
+
"params": [
|
| 726 |
+
{"Parameter": "sampler_type", "Value": "\"aldi\" (EKP default)"},
|
| 727 |
+
{"Parameter": "scheduler", "Value": "EKSStableScheduler() (numerator 1, nugget eps())"},
|
| 728 |
+
],
|
| 729 |
+
"notes": (
|
| 730 |
+
"**No emulator and no MCMC; each iteration costs `N_ens` forward runs.** In the current UQ data "
|
| 731 |
+
"(c = 1.5, best reliable ensemble size) it needs a mean budget of 4.2 on L63 (15% failures) and 4.2 "
|
| 732 |
+
"on L96 const-force, taking only about one iteration. On the two high-dimensional cases it needs "
|
| 733 |
+
"7 to 8 iterations, so the budget grows with ensemble size: 353 at size 50 on NN flux-force and "
|
| 734 |
+
"460 at size 55 on vec-force (5% failures each); the largest sizes fail on up to 25-30% of seeds."
|
| 735 |
+
),
|
| 736 |
+
},
|
| 737 |
+
"IES-EKS": {
|
| 738 |
+
"citation": "Elsaesser et al., J. Adv. Model. Earth Syst., 2025; Garbuno-Inigo, Hoffmann, Li and Stuart, SIAM J. Appl. Dyn. Syst., 2020 (EKS)",
|
| 739 |
+
"url": "https://doi.org/10.1029/2024MS004713",
|
| 740 |
+
"source": "`uq_experiments/BayesianOptimalExperimentalDesign` — `boed_core.jl` (`run_eks`, `acquire_batch`), variant `:eks` (leaderboard key `boed-eks`); `experiment_config.jl` sets `eks_sampler_type = \"eks\"`.",
|
| 741 |
+
"math": (
|
| 742 |
+
"The same iterated emulate-sample loop as IES-IEKF and IES-TMCMC (see those entries), with the "
|
| 743 |
+
"posterior sampler swapped for the Ensemble Kalman Sampler (EKP `Sampler`). Iteration 1 "
|
| 744 |
+
"forward-evaluates an `N_ens`-point Latin-hypercube design in the truncated, prior-whitened space. "
|
| 745 |
+
"Each later iteration: (i) refits one GP per whitened output mode on all `(θ, G(θ))` pairs so far; "
|
| 746 |
+
"(ii) draws an approximate posterior by running the sampler on the GP-mean forward map (no true "
|
| 747 |
+
"forward evaluations), from a 200-member Latin-hypercube standard-normal start with the prior "
|
| 748 |
+
"N(0, I) and identity noise; (iii) takes the next `N_ens` forward-model evaluation points as a random "
|
| 749 |
+
"subsample of that ensemble."
|
| 750 |
+
),
|
| 751 |
+
"guardrails": (
|
| 752 |
+
"The sampler is `EKP.Sampler` with `sampler_type = \"eks\"` (the original EKS of Garbuno-Inigo, "
|
| 753 |
+
"Hoffmann, Li and Stuart, not the ALDI variant used by the EKS and CES-EKS entries), driven by "
|
| 754 |
+
"`EKSStableScheduler(alpha = 0.25)` for a fixed 500 steps. `alpha = 0.25` was chosen because it "
|
| 755 |
+
"sat closer to the ST-MCMC reference than the default 1, and `alpha >= 3` is unstable. Like the IEKF "
|
| 756 |
+
"variant it ignores the GP predictive variance. GP fits use the same data-relative hyperparameter "
|
| 757 |
+
"bounds and iteration caps as IES-IEKF. The posterior has 200 draws rather than 1000; the "
|
| 758 |
+
"shortfall is padded with NaN rows that the leaderboard stage drops."
|
| 759 |
+
),
|
| 760 |
+
"params": [
|
| 761 |
+
{"Parameter": "sampler_type", "Value": "\"eks\" (original EKS)"},
|
| 762 |
+
{"Parameter": "EKS particles (eks_n_particles)", "Value": "200"},
|
| 763 |
+
{"Parameter": "scheduler", "Value": "EKSStableScheduler(alpha = 0.25)"},
|
| 764 |
+
{"Parameter": "steps (eks_max_iters / eks_T)", "Value": "500 / Inf (fixed step count)"},
|
| 765 |
+
{"Parameter": "batch size per iteration", "Value": "N_ens (random subsample of the EKS ensemble)"},
|
| 766 |
+
{"Parameter": "gp_optim_iters / gp_outer_iters", "Value": "50 / 3"},
|
| 767 |
+
],
|
| 768 |
+
"notes": (
|
| 769 |
+
"**Cheap in forward runs but with a fixed 500-step sampler cost per iteration** (GP-mean evaluations "
|
| 770 |
+
"only). In the current UQ data (c = 1.5, best ensemble size) its mean budget is 5.4 on L63, 4.2 on "
|
| 771 |
+
"L96 const-force and 112 on NN flux-force (size 80), all with 0% failures. On vec-force it fails on "
|
| 772 |
+
"at least 20% of seeds at every ensemble size, so it is not suitable there under the 20% threshold."
|
| 773 |
+
),
|
| 774 |
+
},
|
| 775 |
+
"GBOED-EKS": {
|
| 776 |
+
"citation": "Holthuijzen et al. 2026 (EIG acquisition); Garbuno-Inigo, Hoffmann, Li and Stuart, SIAM J. Appl. Dyn. Syst., 2020 (EKS posterior sampler)",
|
| 777 |
+
"url": "https://arxiv.org/abs/2508.13071",
|
| 778 |
+
"source": "`uq_experiments/BayesianOptimalExperimentalDesign` — `boed_core.jl` (`run_eks`, `optimize_batch`, `acquire_batch`), variant `:eks_eig` (leaderboard key `boed-eks-eig`); `experiment_config.jl` sets `eks_sampler_type = \"eks\"`.",
|
| 779 |
+
"math": (
|
| 780 |
+
"GBOED with the posterior sampler swapped for the Ensemble Kalman Sampler (see the GBOED-IEKF and "
|
| 781 |
+
"IES-EKS entries). Iteration 1 forward-evaluates an `N_ens`-point Latin-hypercube design in the "
|
| 782 |
+
"truncated prior-whitened space. Each later iteration: (i) refits one GP per whitened output mode on "
|
| 783 |
+
"all `(θ, G(θ))` pairs so far; (ii) draws an approximate posterior by running the sampler on the "
|
| 784 |
+
"GP-mean forward map (no true forward evaluations); (iii) chooses the next `N_ens` evaluation "
|
| 785 |
+
"points by jointly maximizing the closed-form Expected Information Gain (EIG) of the whole batch "
|
| 786 |
+
"against a 50-member random subsample of the EKS ensemble, starting from a random subsample of "
|
| 787 |
+
"the full ensemble."
|
| 788 |
+
),
|
| 789 |
+
"math_eq": r"\mathrm{EIG}(X) = \frac{1}{k}\sum_j \frac{1}{2}\log\frac{\det K_{pp}^{(j)}}{\det \Sigma'^{(j)}}, \quad \Sigma'^{(j)} = K_{pp}^{(j)} - K_{pc}^{(j)}\left(K_{cc}^{(j)}\right)^{-1}K_{cp}^{(j)}",
|
| 790 |
+
"guardrails": (
|
| 791 |
+
"The sampler is `EKP.Sampler` with `sampler_type = \"eks\"` (original EKS, not ALDI), run for a "
|
| 792 |
+
"fixed 500 steps of `EKSStableScheduler(alpha = 0.25)` with 200 particles, ignoring the GP "
|
| 793 |
+
"predictive variance. The batch is optimized with `Optim.jl`'s `LBFGS` inside the χ² ball of the "
|
| 794 |
+
"prior-whitened space (radial `tanh` squash, so every candidate has radius below √χ²_k(0.999)), with "
|
| 795 |
+
"a hard cap on raw EIG evaluations (`eig_call_limit`) and an outer-iteration cap "
|
| 796 |
+
"(`eig_outer_iters`), logging a warning that the returned batch may be \"under-optimized\" if either "
|
| 797 |
+
"is hit; a diagonal jitter (`eig_jitter`, relative to the GP signal variance) stabilizes the "
|
| 798 |
+
"covariance solves and log-determinants. GP fits use the same data-relative bounds and iteration "
|
| 799 |
+
"caps as IES-IEKF."
|
| 800 |
+
),
|
| 801 |
+
"params": [
|
| 802 |
+
{"Parameter": "sampler_type", "Value": "\"eks\" (original EKS)"},
|
| 803 |
+
{"Parameter": "EKS particles (eks_n_particles)", "Value": "200"},
|
| 804 |
+
{"Parameter": "scheduler", "Value": "EKSStableScheduler(alpha = 0.25)"},
|
| 805 |
+
{"Parameter": "steps (eks_max_iters / eks_T)", "Value": "500 / Inf (fixed step count)"},
|
| 806 |
+
{"Parameter": "n_eig_posterior_samples (EIG subsample X')", "Value": "50"},
|
| 807 |
+
{"Parameter": "eig_region / eig_ball_quantile", "Value": ":ball / 0.999 (χ² ball in prior-whitened space)"},
|
| 808 |
+
{"Parameter": "eig_optim_iters / eig_outer_iters", "Value": "500 / 20"},
|
| 809 |
+
{"Parameter": "eig_call_limit", "Value": "2000 EIG evaluations"},
|
| 810 |
+
{"Parameter": "eig_g_tol / eig_f_reltol", "Value": "1e-3 / 1e-6"},
|
| 811 |
+
{"Parameter": "eig_jitter", "Value": "1e-6 × GP signal variance"},
|
| 812 |
+
{"Parameter": "gp_optim_iters / gp_outer_iters", "Value": "50 / 3"},
|
| 813 |
+
{"Parameter": "batch_init_strategy", "Value": ":posterior_subsample"},
|
| 814 |
+
],
|
| 815 |
+
"notes": (
|
| 816 |
+
"**Adds the EIG batch optimization to IES-EKS**, so it pays for the inner EIG-maximization loop on "
|
| 817 |
+
"top of the 500-step sampler; hitting its call or outer-iteration limits gives \"under-optimized\" "
|
| 818 |
+
"batches. In the current UQ data (c = 1.5, best ensemble size) its mean budget is 5.2 on L63, 4.2 on "
|
| 819 |
+
"L96 const-force and 105 on NN flux-force (size 80, 5% failures). On vec-force it fails on at least "
|
| 820 |
+
"25% of seeds at every ensemble size, so it is not suitable there under the 20% failure threshold."
|
| 821 |
+
),
|
| 822 |
+
},
|
| 823 |
"GBOED-IEKF": {
|
| 824 |
"citation": "Holthuijzen et al. 2026 (EIG acquisition); IEKF posterior sampler replaces ST-MCMC",
|
| 825 |
"url": "https://arxiv.org/abs/2508.13071",
|