Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"Dependent parameters" feature for FreeParameters #269

Closed
glwagner opened this issue May 20, 2022 · 1 comment · Fixed by #271
Closed

"Dependent parameters" feature for FreeParameters #269

glwagner opened this issue May 20, 2022 · 1 comment · Fixed by #271
Labels
🤥 enhancement New feature or request feature 🗽

Comments

@glwagner
Copy link
Member

glwagner commented May 20, 2022

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 glwagner added 🤥 enhancement New feature or request feature 🗽 labels May 21, 2022
@glwagner
Copy link
Member Author

We can implement this by extending the behavior of tupify_parameters:

tupify_parameters(ip, θ) = NamedTuple{ip.free_parameters.names}(Tuple(θ))

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🤥 enhancement New feature or request feature 🗽
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant