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
[Question] Modelling of closure models #412
Comments
Hey JR, thanks for your question! Using pysindy to get an explainable counterpart to a NN is a cool use case! I am not super familiar with closure models, so it would help to share how you expect IIUC, you're looking for the
|
Hi @Jacob-Stevens-Haas, thanks for the quick answer! Happy to elaborate the use case. I've created a theoretical model of a chemo-enzymatic reaction network and used conventional fitting algorithms to achieve a good fit. However, there are still some residuals to the experimental data that I've addressed by modeling them with a neural network. The neural network has discovered something the theoretical model needs to include. My objective now is to use PySindy to recover these relationships symbolically. The closure model can be expressed as follows: where I want to symbolically regress
The theoretical model includes latent states, which are not observable but can be expressed in terms of the features using Steady-State assumptions. I tried using PySindy directly, but the outcomes did not make physical sense or were hard to interpret. Thus, my thought was to stay with the model, which has a good fit already, and use the NN to find out what's missing as I imagine the results are less complex. Thanks for the other suggestions! I tested the control input, but it seems that it is distributed across all features. For instance, I receive something like x0'(t) = 0.2 u0 + 0.01 x0
x1'(t) = 0.2 u1 + 0.01 x0 Is it possible to use the 'ConstrainedS3' optimizer to achieve this? I have only found documentation for the input vector thus far and would appreciate learning how to extend it to the control input. Thanks for the help already! :-) |
Applying control additivelyYou can use a
lib = GeneralizedLibrary(
[PolynomialLibrary(degree=1, include_bias=False), <other_library for f_nn>],
inputs_per_library = [[2, 3], [0, 1]]
) Of course, this relies on knowing that when control inputs are concatenated, control coordinates become inputs 2 and 3 and original coordinates become inputs 0 and 1. Constraining coefficients also requires knowing the internal shape that pysindy produces for features: Constraining control feature coefficients
|
Hello! I'm new to PySindy and I'm really impressed with the library so far.
I'm trying to recover a symbolic expression of a closure model that was found by a neural network. I have access to the rates for the original symbolic model$\dot{y}$ , closure $\dot{y_{nn}}$ and combined model $\dot{y_{full}}$ . My plan is to create a "biased" model in PySindy, where the objective is to find an expression that predicts the rates of the combined model $\dot{y_{full}}$ with the addition/bias of the original model rates $\dot{y}$ .
I am not sure how to proceed with this approach as I don't have much experience using PySindy. Could you please let me know if there is a way or a feature library that I can use to incorporate these rates as zero-order terms? I have already looked into the identity library, but it hasn't helped me yet.
Thank you in advance for your assistance!
The text was updated successfully, but these errors were encountered: