-
Notifications
You must be signed in to change notification settings - Fork 3
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
Thoughts on 1.0 #95
Comments
Some thoughts: Working with
|
Thanks very much for the input @TorkelE! I'll try to keep it in mind once I eventually get into the rework. Regarding Plots.jl: I've never used Plots.jl, so I probably won't be the one to make that extension, but I do agree that it'd be nice to have. |
If we get there, and if you don't min having one, I would be happy to write the Plots extension. |
Some additional thoughts (I maintain PEtab.jl which allows users to set up likelihood parameter estimation problems for ODE models, and currently a key functionality lacking in the modeling pipeline is practical identifiability analysis, and this package looks great for this purpose!) Working with
|
Would this be covered by just making the user provide the
Currently it is all just equally spaced. I did try and get some adaptive stepping working but never got it working. Some help here would be very good - indeed, simple stepping is incredibly slow for large ODEs... |
Providing a custom gradient is covered by providing Yes, would be happy to help with the adaptive part once the code gets closer to 1.0 :) |
Sorry for the lack of progress here @sebapersson and @TorkelE. Still not sure I'll ever be able to find much time to get to these changes. I don't really have much use for this package anymore unfortunately. If either of you still had a need for this package, and are still interested in some of these changes, I'm happy to give you permissions and help with any changes / questions. Things might get stale otherwise. No worries if not but figured I'd give you a heads up rather than disappearing from the discussion entirely even longer 😅 |
The package needs a bit of love to get it to 1.0. No guarantees on when all of the below can be accomplished, but it should be written down. In addition to the below, the code just needs to be simplified so much - I wrote this package right around when I first started getting serious about Julia, so there are some weird things in the code.
Simplifying `ProfileLikelihoodSolution
I think the result of
profile
should return someProfileLikelihoodSolution
(or whatever) type object (like there is now), but this object should not have so much contained in it. Instead, users can query it to compute e.g. confidence intervals. Currently, I haveI think we can remove
splines
andconfidence_intervals
, leavingI think the types should also not be so generic, simplifying the design a bit. The confidence intervals and splines can then be computed using some other function like
get_confidence_interval(sol, ...)
, which wouldn't be a breaking change necessarily since that is already the interface (which I have failed to properly define, though). Similarly forsplines
.Simplifying individual steps
There should also be some
Profiler
struct (or some better name) which is used to take individual steps when profiling. This would make it easier to debug, and to also solve problems like #91 much easier. This would still be a bit restrictive though, since what if eventually we want to implement a method that returns only the confidence limits rather than the complete profile. I won't worry about this last point, though, since that's not on the horizon - let's worry about that when (or if) it gets there.Simplifying the main functions
mle
andprofile
profile
takes quite a lot of keyword arguments. I think I can simplify it down a lot and just enforce some specific defaults. I worry it might be a bit overwhelming the way it is currently.Simplifying how
LikelihoodProblem
is definedCurrently,
LikelihoodProblem
s are constructed with an awkward mix of ProfileLikelihood.jl specific kwargs and Optimization.jl kwargs (viaf_kwargs
andprob_kwargs
). Maybe I should just require that users define their ownOptimizationProblem
within Optimization.jl? Perhaps aLikelihoodFunction
is needed so that I can use dispatch onOptimizationProblem
to make the appropriate conversion.Simplifying how likelihoods from ODEs are defined
The method for constructing a
LikelihoodProblem
for a differential equation is a bit wack. I designed it before I properly understood the SciML interface - I should just be implementing aninit
method or something.The text was updated successfully, but these errors were encountered: