-
-
Notifications
You must be signed in to change notification settings - Fork 130
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
Additive SDE throws error with SRK style solvers #474
Comments
The error was fixed by specifying |
Definitely agreed that the error message could be improved. I'd be happy to take a PR on that! As for performance, you appear to be including the compile time as well. |
I would love to submit a PR for this! Lines 1025 to 1031 in a37a276
Should this be caught as a different error or is it better to augment this error message with a suggestion to check the levy area? |
I think let's augment this error message. Probably we should write out something quite verbose -- in particular, what structure we actually got! And if it's the vector field / control type that goes wrong, we should call that out explicitly. (Probably we don't need to mention Levy area anywhere, that will naturally come out of a message of the form |
That sounds like a great idea, it would make that error more useful even outside the scope of SDE solvers! |
Augmenting the error message is definitely a good idea (related issues: #461, #446), the core issue currently is that the message isn't very informative about why the terms are failing. To that end, I think a straightforward augmentation would be to characterize the errors specifically inside the term checker (https://github.com/patrick-kidger/diffrax/blob/main/diffrax/_integrate.py#L119) and generate error messages based on that characterization, which would help people narrow down where the error is. Additionally, poorly formed shapes (preventing even drift.vf from running correctly) is a not uncommon error that results in this message (esp. for scalar/1D systems where you have some squeezing and unsqueezing), so raising specific errors based on if the eval_shape checks fail could be an option to. For the levy area stuff, in general they are caught in the "expect but got format", but I think its worth making extra clear, since the default expected got would look not too dissimilar from the above where you have something like Tangentially, the Levy Area docs could also probably be improved, they are printing a bunch of default attributes that aren't important and also some explanation of what a Levy Area is (and why they are integrals of space time or space time and time) would probably be beneficial. Happy to take a crack at the above to show what I mean, or if you want to @ParticularlyPythonicBS also works. |
@lockwo you seem to have expertise with the library that will let you do this much faster than I could. So I would be happy to just follow along. |
My sort of idea: #478 |
Hi,
Can you help me debug why this SDE would throw errors for SRK solvers, but works and integrates fine with ERK and Milstein?
Here is a simplified version of the code:
throws this error:
but I am already using the multiTerm(odeTerm, controlTerm) format unless I am misunderstanding something.
Also this same simulation runs much faster in Mathematica(KloedenPlatenSchurz method), any suggestions on how to speed this up would be very helpful
Thanks for this great library!
The text was updated successfully, but these errors were encountered: