Open ChrisRackauckas opened 10 months ago
Bump. @ararslan are you the maintainer now? It doesn't look like this has had any commits in over two years other than a CI bump?
I initially wrote the package for simple day to day use in my work . I was thinking about overhauling the package. What would migrating to SciML entail? If this is good for the community I would gladly do this.
Can keep you on as admin. I think there's a few things that come to mind:
But finally, I think in general the highest level API should be as much of a "just work" interface as possible, and then people can manually set things up with the solvers if they want to tweak things around. The current situation is that both LsqFit.jl is the most widely used and it fails on almost every problem it tries on (see the Discourse threads and the DataInterpolations.jl tests on that) and it's just not a good look for Julia. So we wanted to get something with trust region line search methods out there, get a bunch of benchmarks, blog posts, JuliaCon talks on it etc., and really make a new package front and center for curve fitting. During that discussion I found this package and not only did it have a good name but it also had a good API, but was just missing the guts for the nonlinear part and all of the docs/blog posts/tutorials/workshops/benchmarks to make it a standard. Rather than trying to make a "RobustCurveFit.jl" or something that branches off from these bones, we thought it would be best to start by seeing if we could collaborate using your foundation.
@avik-pal anything to add?
Gonna bump this to chime in that I would love to see a simple curve fit interface to supplant my use of LsqFit.jl. The syntax there is great, but dealing (frequently) with failed fits is not.
Friendly bump to revive the conversation
@ararslan are you the maintainer now?
I am not, though I can see why one might think I am based on my extremely impressive commit history
I'm going to bump this as well. I've also found LsqFit.jl to be inaccurate and have mostly moved to setting up general nonlinear least squares problems using NonlinearSolve.jl. I think it's pretty crucial to have nonlinear curve fitting (Levenberg-Marquardt) available. Or just some function like curve_fit(f, xdata, ydata, p0, sigma, bounds, jacobian)
. Maybe also support ydata
being a matrix as well with the accompanying f
matrix output from xdata for multi-observational data.
@ChrisRackauckas It sounds like your team has done a lot of work towards this. It would be nice to be able to use and give feedback. I personally don't care if there is an LsqFit.jl
, CurveFit.jl
and CurveFitting.jl
package. Or if this is just some functionality within NonlinearSolve.jl
.
I'll try to revive some conversations here as it would be nice to have this all under the SciML org.
We can fork this library to CurveFitting.jl if there's not a response. Might as well wait for @avik-pal to have a second after his summer internship since he has the code for this already.
Any reason to not overhaul LsqFit.jl instead, since that's the more well-known package? In any case, I'd be willing to contribute to this effort if I can.
Any reason to not overhaul LsqFit.jl instead, since that's the more well-known package?
LsqFit.jl
and Optim.jl
are maintained under the same org. It might be a bit rude to replace Optim with NonlinearSolve there :sweat_smile:
Ah, right that's fair :sweat_smile:
We're doing a lot in SciML towards a new curve fit interface, but I think this package has good bones. We're really focused on the nonlinear fitting aspect, and I think it would be a shame to have the more robust nonlinear parts separated from the nice linear fitting interface you have here. Would you be interested in migrating this over to SciML and letting us continue https://github.com/SciML/NonlinearSolve.jl/pull/339 as part of the nonlinear part here? We are looking to do a lot around the confidence intervals and that part, using the newest tooling in NonlinearSolve.jl under the hood.