ces-eki-const method
#9
by odunbar - opened
- .cache/known_methods_snapshot.json +22 -0
- data/ces-eki-const_results/ces-eki-const_l63_ensemble_results_2026-07-09_minimal.nc +3 -0
- data/ces-eki-const_results/ces-eki-const_l96_ensemble_results_2026-07-09_minimal.nc +3 -0
- data/ces-eki-const_results/ces-eki-const_l96_nn_forcing_ensemble_results_2026-07-09_minimal.nc +3 -0
- data/ces-eki-const_results/ces-eki-const_l96_spatial_forcing_ensemble_results_2026-07-09_minimal.nc +3 -0
- data/ces-iekf-const_results/ces-iekf-const_l63_ensemble_results_2026-07-17_minimal.nc +3 -0
- data/ces-iekf-const_results/ces-iekf-const_l96_ensemble_results_2026-07-17_minimal.nc +3 -0
- data/ces-iekf-const_results/ces-iekf-const_l96_nn_forcing_ensemble_results_2026-07-17_minimal.nc +3 -0
- data/ces-iekf-const_results/ces-iekf-const_l96_spatial_forcing_ensemble_results_2026-07-17_minimal.nc +3 -0
- src/common/method_registry.py +18 -0
- src/data_store.py +8 -0
- src/pages/MethodDetails.py +10 -0
- src/streamlit_app.py +12 -9
.cache/known_methods_snapshot.json
CHANGED
|
@@ -79,6 +79,28 @@
|
|
| 79 |
"ces-eki-dmc"
|
| 80 |
]
|
| 81 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 82 |
"adam": {
|
| 83 |
"abbreviation": "ADAM",
|
| 84 |
"Method": "Adaptive Moment Estimation",
|
|
|
|
| 79 |
"ces-eki-dmc"
|
| 80 |
]
|
| 81 |
},
|
| 82 |
+
"ces-eki-const": {
|
| 83 |
+
"abbreviation": "CES-EKI-CONST",
|
| 84 |
+
"Method": "Calibrate Emulate Sample (EKI-Constant Scheduler)",
|
| 85 |
+
"parallelism": "parallel-interacting",
|
| 86 |
+
"update_type": "kalman",
|
| 87 |
+
"method_goal": "uq",
|
| 88 |
+
"emulator_use": "after-optimize",
|
| 89 |
+
"aliases": [
|
| 90 |
+
"ces-eki-const"
|
| 91 |
+
]
|
| 92 |
+
},
|
| 93 |
+
"ces-iekf-const": {
|
| 94 |
+
"abbreviation": "CES-IEKF-CONST",
|
| 95 |
+
"Method": "Calibrate Emulate Sample (IEKF-Constant Scheduler)",
|
| 96 |
+
"parallelism": "parallel-interacting",
|
| 97 |
+
"update_type": "kalman",
|
| 98 |
+
"method_goal": "uq",
|
| 99 |
+
"emulator_use": "after-optimize",
|
| 100 |
+
"aliases": [
|
| 101 |
+
"ces-iekf-const"
|
| 102 |
+
]
|
| 103 |
+
},
|
| 104 |
"adam": {
|
| 105 |
"abbreviation": "ADAM",
|
| 106 |
"Method": "Adaptive Moment Estimation",
|
data/ces-eki-const_results/ces-eki-const_l63_ensemble_results_2026-07-09_minimal.nc
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:d0fa6d71f8392a285333cbfdb7c9e8f166a45fa4daaff573d89e4c254371bfdd
|
| 3 |
+
size 672937
|
data/ces-eki-const_results/ces-eki-const_l96_ensemble_results_2026-07-09_minimal.nc
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:c32fcb778c650815415574c4de51ba5569bc65c2773fbd1aa1e0e2be52a603ff
|
| 3 |
+
size 809737
|
data/ces-eki-const_results/ces-eki-const_l96_nn_forcing_ensemble_results_2026-07-09_minimal.nc
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:90bcb0da3058b7adf3f3c93f3d196b3f94360269a4ec7a7f3fbca4989a7528a3
|
| 3 |
+
size 809737
|
data/ces-eki-const_results/ces-eki-const_l96_spatial_forcing_ensemble_results_2026-07-09_minimal.nc
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:4665e8a50bb32de9f6d51b9332d105e3430d66c6545ff3bcebf2d39b28fc48e7
|
| 3 |
+
size 809737
|
data/ces-iekf-const_results/ces-iekf-const_l63_ensemble_results_2026-07-17_minimal.nc
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:34cbaa8b1fca2cce61f1c1b1b47ae7e175a282b64f5725f4c6ff5fecb376c8cf
|
| 3 |
+
size 672937
|
data/ces-iekf-const_results/ces-iekf-const_l96_ensemble_results_2026-07-17_minimal.nc
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:c530515a97613472903b1f47fa4d2e1a5cd15955222553b73ccd5db74fa51c21
|
| 3 |
+
size 809737
|
data/ces-iekf-const_results/ces-iekf-const_l96_nn_forcing_ensemble_results_2026-07-17_minimal.nc
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:c25dad11f5b277584938dd0cbb400c8fe4a416d597c6156821059abd39129d1a
|
| 3 |
+
size 809737
|
data/ces-iekf-const_results/ces-iekf-const_l96_spatial_forcing_ensemble_results_2026-07-17_minimal.nc
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:dfc68524a29a1bf75b91d4124dbb01f7011bdb084e9706ec079560b701504228
|
| 3 |
+
size 809737
|
src/common/method_registry.py
CHANGED
|
@@ -98,6 +98,24 @@ KNOWN_METHODS = {
|
|
| 98 |
"emulator_use": "after-optimize",
|
| 99 |
"aliases": ["ces-eki-dmc"]
|
| 100 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 101 |
"adam": {
|
| 102 |
"abbreviation": "ADAM",
|
| 103 |
"Method": "Adaptive Moment Estimation",
|
|
|
|
| 98 |
"emulator_use": "after-optimize",
|
| 99 |
"aliases": ["ces-eki-dmc"]
|
| 100 |
},
|
| 101 |
+
"ces-eki-const": {
|
| 102 |
+
"abbreviation": "CES-EKI-CONST",
|
| 103 |
+
"Method": "Calibrate Emulate Sample (EKI-Constant Scheduler)",
|
| 104 |
+
"parallelism": "parallel-interacting",
|
| 105 |
+
"update_type": "kalman",
|
| 106 |
+
"method_goal": "uq",
|
| 107 |
+
"emulator_use": "after-optimize",
|
| 108 |
+
"aliases": ["ces-eki-const"]
|
| 109 |
+
},
|
| 110 |
+
"ces-iekf-const": {
|
| 111 |
+
"abbreviation": "CES-IEKF-CONST",
|
| 112 |
+
"Method": "Calibrate Emulate Sample (IEKF-Constant Scheduler)",
|
| 113 |
+
"parallelism": "parallel-interacting",
|
| 114 |
+
"update_type": "kalman",
|
| 115 |
+
"method_goal": "uq",
|
| 116 |
+
"emulator_use": "after-optimize",
|
| 117 |
+
"aliases": ["ces-iekf-const"]
|
| 118 |
+
},
|
| 119 |
"adam": {
|
| 120 |
"abbreviation": "ADAM",
|
| 121 |
"Method": "Adaptive Moment Estimation",
|
src/data_store.py
CHANGED
|
@@ -90,18 +90,26 @@ UQ_BUDGET_FILES: dict[str, list[tuple[str, str]]] = {
|
|
| 90 |
"L63": [
|
| 91 |
("ces-eki-dmc", "ces-eki-dmc_results/ces-eki-dmc_l63_ensemble_results_2026-06-15_minimal.nc"),
|
| 92 |
("iekf", "gnki-uq_results/leaderboard_gnki_l63_2026-07-07_minimal.nc"),
|
|
|
|
|
|
|
| 93 |
],
|
| 94 |
"L96": [
|
| 95 |
("ces-eki-dmc", "ces-eki-dmc_results/ces-eki-dmc_l96_ensemble_results_2026-06-15_minimal.nc"),
|
| 96 |
("iekf", "gnki-uq_results/leaderboard_gnki_l96_const-force_2026-07-07_minimal.nc"),
|
|
|
|
|
|
|
| 97 |
],
|
| 98 |
"L96_NN_FORCING": [
|
| 99 |
("ces-eki-dmc", "ces-eki-dmc_results/ces-eki-dmc_l96_nn_forcing_ensemble_results_2026-06-15_minimal.nc"),
|
| 100 |
("iekf", "gnki-uq_results/leaderboard_gnki_l96_flux-force_2026-07-07_minimal.nc"),
|
|
|
|
|
|
|
| 101 |
],
|
| 102 |
"L96_SPATIAL_FORCING": [
|
| 103 |
("ces-eki-dmc", "ces-eki-dmc_results/ces-eki-dmc_l96_spatial_forcing_ensemble_results_2026-06-15_minimal.nc"),
|
| 104 |
("iekf", "gnki-uq_results/leaderboard_gnki_l96_vec-force_2026-07-07_minimal.nc"),
|
|
|
|
|
|
|
| 105 |
],
|
| 106 |
}
|
| 107 |
|
|
|
|
| 90 |
"L63": [
|
| 91 |
("ces-eki-dmc", "ces-eki-dmc_results/ces-eki-dmc_l63_ensemble_results_2026-06-15_minimal.nc"),
|
| 92 |
("iekf", "gnki-uq_results/leaderboard_gnki_l63_2026-07-07_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 |
],
|
| 96 |
"L96": [
|
| 97 |
("ces-eki-dmc", "ces-eki-dmc_results/ces-eki-dmc_l96_ensemble_results_2026-06-15_minimal.nc"),
|
| 98 |
("iekf", "gnki-uq_results/leaderboard_gnki_l96_const-force_2026-07-07_minimal.nc"),
|
| 99 |
+
("ces-eki-const", "ces-eki-const_results/ces-eki-const_l96_ensemble_results_2026-07-09_minimal.nc"),
|
| 100 |
+
("ces-iekf-const", "ces-iekf-const_results/ces-iekf-const_l96_ensemble_results_2026-07-17_minimal.nc"),
|
| 101 |
],
|
| 102 |
"L96_NN_FORCING": [
|
| 103 |
("ces-eki-dmc", "ces-eki-dmc_results/ces-eki-dmc_l96_nn_forcing_ensemble_results_2026-06-15_minimal.nc"),
|
| 104 |
("iekf", "gnki-uq_results/leaderboard_gnki_l96_flux-force_2026-07-07_minimal.nc"),
|
| 105 |
+
("ces-eki-const", "ces-eki-const_results/ces-eki-const_l96_nn_forcing_ensemble_results_2026-07-09_minimal.nc"),
|
| 106 |
+
("ces-iekf-const", "ces-iekf-const_results/ces-iekf-const_l96_nn_forcing_ensemble_results_2026-07-17_minimal.nc"),
|
| 107 |
],
|
| 108 |
"L96_SPATIAL_FORCING": [
|
| 109 |
("ces-eki-dmc", "ces-eki-dmc_results/ces-eki-dmc_l96_spatial_forcing_ensemble_results_2026-06-15_minimal.nc"),
|
| 110 |
("iekf", "gnki-uq_results/leaderboard_gnki_l96_vec-force_2026-07-07_minimal.nc"),
|
| 111 |
+
("ces-eki-const", "ces-eki-const_results/ces-eki-const_l96_spatial_forcing_ensemble_results_2026-07-09_minimal.nc"),
|
| 112 |
+
("ces-iekf-const", "ces-iekf-const_results/ces-iekf-const_l96_spatial_forcing_ensemble_results_2026-07-17_minimal.nc"),
|
| 113 |
],
|
| 114 |
}
|
| 115 |
|
src/pages/MethodDetails.py
CHANGED
|
@@ -74,6 +74,16 @@ method_meta = {
|
|
| 74 |
"url": "https://doi.org/10.1016/j.jcp.2020.109716",
|
| 75 |
"summary": "Calibrate-Emulate-Sample: uses EKI with a DataMisfitController to select training points, builds a GP emulator of the forward model, then samples the posterior via MCMC.",
|
| 76 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 77 |
"ADAM": {
|
| 78 |
"citation": "Kingma & Ba, ICLR, 2015",
|
| 79 |
"url": "https://doi.org/10.48550/arXiv.1412.6980",
|
|
|
|
| 74 |
"url": "https://doi.org/10.1016/j.jcp.2020.109716",
|
| 75 |
"summary": "Calibrate-Emulate-Sample: uses EKI with a DataMisfitController to select training points, builds a GP emulator of the forward model, then samples the posterior via MCMC.",
|
| 76 |
},
|
| 77 |
+
"CES-EKI-CONST": {
|
| 78 |
+
"citation": "Cleary et al., J. Comput. Phys., 2021",
|
| 79 |
+
"url": "https://doi.org/10.1016/j.jcp.2020.109716",
|
| 80 |
+
"summary": "Calibrate-Emulate-Sample: uses EKI with a constant (fixed) timestep scheduler to select training points, builds a GP emulator of the forward model, then samples the posterior via MCMC.",
|
| 81 |
+
},
|
| 82 |
+
"CES-IEKF-CONST": {
|
| 83 |
+
"citation": "Cleary et al., J. Comput. Phys., 2021; Iglesias, Inverse Problems, 2016",
|
| 84 |
+
"url": "https://doi.org/10.1016/j.jcp.2020.109716",
|
| 85 |
+
"summary": "Calibrate-Emulate-Sample: uses IEKF with a constant (fixed) timestep scheduler to select training points, builds a GP emulator of the forward model, then samples the posterior via MCMC.",
|
| 86 |
+
},
|
| 87 |
"ADAM": {
|
| 88 |
"citation": "Kingma & Ba, ICLR, 2015",
|
| 89 |
"url": "https://doi.org/10.48550/arXiv.1412.6980",
|
src/streamlit_app.py
CHANGED
|
@@ -94,28 +94,31 @@ st.markdown(
|
|
| 94 |
- **Serial** β `ADAM`, `LM` β a single point estimate advanced step by step.
|
| 95 |
- **Parallel-independent** β `ABC`, `HM` β a population of candidates updated
|
| 96 |
with no coupling between members (accepted samples / per-wave resampling).
|
| 97 |
-
- **Parallel-interacting** β `TEKI`, `ETKI`, `IEKF`, `UKI`, `CES-EKI-DMC`
|
| 98 |
-
ensemble whose members are coupled through a shared update
|
|
|
|
| 99 |
- **Update type** β the mechanism driving each update step
|
| 100 |
- **Gradient** β `ADAM`, `LM` β follow the loss gradient (or a Gauss-Newton
|
| 101 |
approximation of it) directly.
|
| 102 |
-
- **Kalman** β `TEKI`, `ETKI`, `IEKF`, `UKI`, `CES-EKI-DMC`
|
| 103 |
-
linearized or unscented) Kalman-style ensemble update.
|
| 104 |
- **General** β `ABC`, `HM` β neither gradient- nor Kalman-based (rejection
|
| 105 |
sampling, implausibility cuts).
|
| 106 |
- **Method goal** β what the method is built to report
|
| 107 |
- **Optimization** β `TEKI`, `ETKI`, `UKI`, `ADAM`, `LM` β a single best-fit
|
| 108 |
parameter estimate.
|
| 109 |
-
- **UQ** β `IEKF`, `ABC`, `HM`, `CES-EKI-DMC`
|
| 110 |
-
uncertainty. Can still be scored on the Optimization
|
| 111 |
-
be less competitive there since it's not optimizing for
|
|
|
|
| 112 |
- **Emulator use** β when/whether a surrogate model of the forward model is used
|
| 113 |
- **None** β `TEKI`, `ETKI`, `IEKF`, `UKI`, `ADAM`, `LM`, `ABC` β samples/evaluates
|
| 114 |
the true forward model throughout.
|
| 115 |
- **Within-optimize** β `HM` β refits a surrogate at each iteration (wave) of the
|
| 116 |
search itself.
|
| 117 |
-
- **After-optimize** β `CES-EKI-DMC` β fits a
|
| 118 |
-
calibration finishes, and samples the posterior
|
|
|
|
| 119 |
"""
|
| 120 |
)
|
| 121 |
st.caption(
|
|
|
|
| 94 |
- **Serial** β `ADAM`, `LM` β a single point estimate advanced step by step.
|
| 95 |
- **Parallel-independent** β `ABC`, `HM` β a population of candidates updated
|
| 96 |
with no coupling between members (accepted samples / per-wave resampling).
|
| 97 |
+
- **Parallel-interacting** β `TEKI`, `ETKI`, `IEKF`, `UKI`, `CES-EKI-DMC`, `CES-EKI-CONST`,
|
| 98 |
+
`CES-IEKF-CONST` β an ensemble whose members are coupled through a shared update
|
| 99 |
+
each iteration.
|
| 100 |
- **Update type** β the mechanism driving each update step
|
| 101 |
- **Gradient** β `ADAM`, `LM` β follow the loss gradient (or a Gauss-Newton
|
| 102 |
approximation of it) directly.
|
| 103 |
+
- **Kalman** β `TEKI`, `ETKI`, `IEKF`, `UKI`, `CES-EKI-DMC`, `CES-EKI-CONST`,
|
| 104 |
+
`CES-IEKF-CONST` β a (possibly linearized or unscented) Kalman-style ensemble update.
|
| 105 |
- **General** β `ABC`, `HM` β neither gradient- nor Kalman-based (rejection
|
| 106 |
sampling, implausibility cuts).
|
| 107 |
- **Method goal** β what the method is built to report
|
| 108 |
- **Optimization** β `TEKI`, `ETKI`, `UKI`, `ADAM`, `LM` β a single best-fit
|
| 109 |
parameter estimate.
|
| 110 |
+
- **UQ** β `IEKF`, `ABC`, `HM`, `CES-EKI-DMC`, `CES-EKI-CONST`, `CES-IEKF-CONST` β the
|
| 111 |
+
full posterior / parameter uncertainty. Can still be scored on the Optimization
|
| 112 |
+
leaderboard, but tends to be less competitive there since it's not optimizing for
|
| 113 |
+
speed-to-target.
|
| 114 |
- **Emulator use** β when/whether a surrogate model of the forward model is used
|
| 115 |
- **None** β `TEKI`, `ETKI`, `IEKF`, `UKI`, `ADAM`, `LM`, `ABC` β samples/evaluates
|
| 116 |
the true forward model throughout.
|
| 117 |
- **Within-optimize** β `HM` β refits a surrogate at each iteration (wave) of the
|
| 118 |
search itself.
|
| 119 |
+
- **After-optimize** β `CES-EKI-DMC`, `CES-EKI-CONST`, `CES-IEKF-CONST` β fits a
|
| 120 |
+
surrogate (e.g. a GP) once, after calibration finishes, and samples the posterior
|
| 121 |
+
through it.
|
| 122 |
"""
|
| 123 |
)
|
| 124 |
st.caption(
|