odunbar commited on
Commit Β·
c828b31
1
Parent(s): 7593ec0
framework for gboed
Browse files- CLAUDE.md +3 -0
- src/common/method_registry.py +10 -0
- src/data_store.py +1 -0
- src/pages/MethodDetails.py +5 -0
CLAUDE.md
CHANGED
|
@@ -72,6 +72,8 @@ calibration_benchmark/
|
|
| 72 |
β β filenames follow `ces-eki-dmc_<benchmark-tag>_ensemble_results_<date>[_minimal].nc`;
|
| 73 |
β β benchmark tags: `l63` β L63, `l96` (no suffix) β L96,
|
| 74 |
β β `l96_nn_forcing` β L96_NN_FORCING, `l96_spatial_forcing` β L96_SPATIAL_FORCING
|
|
|
|
|
|
|
| 75 |
β βββ gnki-uq_results/ IEKF (a.k.a GNKI) ensemble-results files (UQ source)
|
| 76 |
β filenames follow `leaderboard_gnki_<benchmark-tag>_<date>[_minimal].nc`;
|
| 77 |
β benchmark tags: `l63` β L63, `l96_const-force` β L96,
|
|
@@ -191,6 +193,7 @@ A quick taxonomy tree is rendered on the home page (`src/streamlit_app.py`).
|
|
| 191 |
| `ces-eki-dmc` | CES-EKI-DMC | parallel-interacting | kalman | uq | after-optimize | β |
|
| 192 |
| `adam` | ADAM | serial | gradient | optimization | none | β |
|
| 193 |
| `lm` | LM | serial | gradient | optimization | none | gradient_descent |
|
|
|
|
| 194 |
|
| 195 |
## How to extend
|
| 196 |
|
|
|
|
| 72 |
β β filenames follow `ces-eki-dmc_<benchmark-tag>_ensemble_results_<date>[_minimal].nc`;
|
| 73 |
β β benchmark tags: `l63` β L63, `l96` (no suffix) β L96,
|
| 74 |
β β `l96_nn_forcing` β L96_NN_FORCING, `l96_spatial_forcing` β L96_SPATIAL_FORCING
|
| 75 |
+
β βββ gboed-uq_results/ GBOED ensemble-results files (UQ source; L63 only so far)
|
| 76 |
+
β β filenames follow `boed_<benchmark-tag>_ensemble_results_<date>[_minimal].nc`
|
| 77 |
β βββ gnki-uq_results/ IEKF (a.k.a GNKI) ensemble-results files (UQ source)
|
| 78 |
β filenames follow `leaderboard_gnki_<benchmark-tag>_<date>[_minimal].nc`;
|
| 79 |
β benchmark tags: `l63` β L63, `l96_const-force` β L96,
|
|
|
|
| 193 |
| `ces-eki-dmc` | CES-EKI-DMC | parallel-interacting | kalman | uq | after-optimize | β |
|
| 194 |
| `adam` | ADAM | serial | gradient | optimization | none | β |
|
| 195 |
| `lm` | LM | serial | gradient | optimization | none | gradient_descent |
|
| 196 |
+
| `gboed` | GBOED | parallel-interacting | general | uq | within-optimize | boed |
|
| 197 |
|
| 198 |
## How to extend
|
| 199 |
|
src/common/method_registry.py
CHANGED
|
@@ -134,6 +134,15 @@ KNOWN_METHODS = {
|
|
| 134 |
"emulator_use": "none",
|
| 135 |
"aliases": ["lm", "levenberg_marquardt", "levenberg-marquardt", "gradient_descent"],
|
| 136 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 137 |
}
|
| 138 |
|
| 139 |
|
|
@@ -142,6 +151,7 @@ KNOWN_METHODS = {
|
|
| 142 |
_METHOD_PALETTE = [
|
| 143 |
"#4c78a8", "#f58518", "#e45756", "#72b7b2", "#54a24b",
|
| 144 |
"#eeca3b", "#b279a2", "#ff9da6", "#9d755d", "#bab0ac",
|
|
|
|
| 145 |
]
|
| 146 |
|
| 147 |
# Stable abbreviation β hex color mapping. Import this wherever Altair charts are built
|
|
|
|
| 134 |
"emulator_use": "none",
|
| 135 |
"aliases": ["lm", "levenberg_marquardt", "levenberg-marquardt", "gradient_descent"],
|
| 136 |
},
|
| 137 |
+
"gboed": {
|
| 138 |
+
"abbreviation": "GBOED",
|
| 139 |
+
"Method": "Goal-oriented Bayesian Optimal Experimental Design",
|
| 140 |
+
"parallelism": "parallel-interacting",
|
| 141 |
+
"update_type": "general",
|
| 142 |
+
"method_goal": "uq",
|
| 143 |
+
"emulator_use": "within-optimize",
|
| 144 |
+
"aliases": ["gboed", "boed"],
|
| 145 |
+
},
|
| 146 |
}
|
| 147 |
|
| 148 |
|
|
|
|
| 151 |
_METHOD_PALETTE = [
|
| 152 |
"#4c78a8", "#f58518", "#e45756", "#72b7b2", "#54a24b",
|
| 153 |
"#eeca3b", "#b279a2", "#ff9da6", "#9d755d", "#bab0ac",
|
| 154 |
+
"#5254a3", "#8ca252",
|
| 155 |
]
|
| 156 |
|
| 157 |
# Stable abbreviation β hex color mapping. Import this wherever Altair charts are built
|
src/data_store.py
CHANGED
|
@@ -93,6 +93,7 @@ UQ_BUDGET_FILES: dict[str, list[tuple[str, str]]] = {
|
|
| 93 |
("ces-eki-const", "ces-eki-const_results/ces-eki-const_l63_ensemble_results_2026-07-09_minimal.nc"),
|
| 94 |
("ces-iekf-const", "ces-iekf-const_results/ces-iekf-const_l63_ensemble_results_2026-07-17_minimal.nc"),
|
| 95 |
("hm", "history-matching-uq_results/history-matching_l63_ensemble_results_2026-07-20_minimal.nc"),
|
|
|
|
| 96 |
],
|
| 97 |
"L96": [
|
| 98 |
("ces-eki-dmc", "ces-eki-dmc_results/ces-eki-dmc_l96_ensemble_results_2026-06-15_minimal.nc"),
|
|
|
|
| 93 |
("ces-eki-const", "ces-eki-const_results/ces-eki-const_l63_ensemble_results_2026-07-09_minimal.nc"),
|
| 94 |
("ces-iekf-const", "ces-iekf-const_results/ces-iekf-const_l63_ensemble_results_2026-07-17_minimal.nc"),
|
| 95 |
("hm", "history-matching-uq_results/history-matching_l63_ensemble_results_2026-07-20_minimal.nc"),
|
| 96 |
+
("gboed", "gboed-uq_results/boed_l63_ensemble_results_2026-07-27_minimal.nc"),
|
| 97 |
],
|
| 98 |
"L96": [
|
| 99 |
("ces-eki-dmc", "ces-eki-dmc_results/ces-eki-dmc_l96_ensemble_results_2026-06-15_minimal.nc"),
|
src/pages/MethodDetails.py
CHANGED
|
@@ -94,6 +94,11 @@ method_meta = {
|
|
| 94 |
"url": "https://doi.org/10.1090/qam/10666",
|
| 95 |
"summary": "Levenberg-Marquardt β damped least-squares algorithm that interpolates between gradient descent and Gauss-Newton steps for efficient nonlinear least-squares minimization.",
|
| 96 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 97 |
}
|
| 98 |
|
| 99 |
# Selection UI (defaults to query param if valid)
|
|
|
|
| 94 |
"url": "https://doi.org/10.1090/qam/10666",
|
| 95 |
"summary": "Levenberg-Marquardt β damped least-squares algorithm that interpolates between gradient descent and Gauss-Newton steps for efficient nonlinear least-squares minimization.",
|
| 96 |
},
|
| 97 |
+
"GBOED": {
|
| 98 |
+
"citation": "Holthuijzen et al. 2026",
|
| 99 |
+
"url": "https://arxiv.org/abs/2508.13071",
|
| 100 |
+
"summary": "Goal-oriented Bayesian Optimal Experimental Design β selects each batch of forward-model evaluations by maximizing an expected-information-gain criterion targeted at the quantity of interest, refitting the surrogate used by the criterion at every iteration.",
|
| 101 |
+
},
|
| 102 |
}
|
| 103 |
|
| 104 |
# Selection UI (defaults to query param if valid)
|