ces-eki-const method

#9
by odunbar - opened
.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` β€” an
98
- ensemble whose members are coupled through a shared update each iteration.
 
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` β€” a (possibly
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` β€” the full posterior / parameter
110
- uncertainty. Can still be scored on the Optimization leaderboard, but tends to
111
- be less competitive there since it's not optimizing for speed-to-target.
 
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 surrogate (e.g. a GP) once, after
118
- calibration finishes, and samples the posterior through it.
 
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(