CliMA / ParameterEstimocean.jl

🎲 Parameter estimation for Oceananigans using EnsembleKalmanProcesses
https://clima.github.io/ParameterEstimoceanDocumentation/dev/
MIT License
21 stars 6 forks source link

"Dependent parameters" feature for `FreeParameters` #269

Closed glwagner closed 2 years ago

glwagner commented 2 years ago

A desirable feature for parameterization development is the ability to specify "dependent parameters": model parameters that are specified via some deterministic function of the free parameters. These parameters thus vary during the EKI calibration, but are not free parameters.

I think could somehow be a feature we add to FreeParameters (maybe we'd have to change the name of the struct). Somehow we'll give a list of the names of the free parameters, and then in addition we'll give a list of the "dependent parameters", which would be a NamedTuple of name-function pairs. The function will take in the NamedTuple of free parameters and return the dependent parameter.

Having this feature will importantly allow us to simplify the implementation of "experimental" closures. Right now, we have to implement experimental closures in a way that allows them to be simplified via judicious parameter choices for the purpose of exploring the trade-off between model complexity and bias. If we have a "dependent parameter" feature, this relaxes some of those constrains on closure design.

glwagner commented 2 years ago

We can implement this by extending the behavior of tupify_parameters:

https://github.com/CliMA/ParameterEstimocean.jl/blob/11e197d9ea88950b8d260e92f8ab0ca862e3ab8a/src/InverseProblems.jl#L123

Basically, we'll generate a second NamedTuple from dependent_parameters and the merge that one with the NamedTuple for the free parameters.