SimplePCHIP might be a good reference for a Julia Hermite interpolation package, but it is a bit out of date and the implementation looks rather Pythonic (not very type generic, and some potential performance problems).
Thanks. This is good to know, but for my present purpose the PCHIP is too flat inbetween the control points. I really do prefer the regular spline in this case.
I agree that Interpolations.jl should be reworked to be easier to use. It could really use a dedicated maintainer. It’s a nicely-isolated package (it doesn’t require you to maintain an entire ecosystem), mathematically interesting, and has huge implications for the community. Volunteers wanted!
I would like to contribute more to the Julia community but I’m not sure I would be qualified to be a maintainer. I wouldn’t mind focusing my extra time on contributing to the package rework though.
That would be awesome. I’ve been trying to review PRs to Interpolations when I can find the time; if you submit a few, not only will you be helping make it better but you’ll be in training for having more authority over the direction of the package.
If there are some small issues easy to fix, that might be a great place to start.
My own vision looks something like this:
better documentation. Right now I think the documentation has been written by the same people who wrote the code, and that usually gives mixed results.
The conundrum is that one could document the API and then it might change, so it’s a bit of a question of how much effort to throw in here.
One fairly safe step might be to improve documenting the internals in a manner that teaches how the package works. (Obviously start by checking the current writeups and seeing whether you think they’re adequate or not; maybe it’s better than I think.) There are certain parts of the package that I think are solid, notably the WeightedIndex infrastructure and probably the prefiltering. The closer one gets to the user level, though, the more likely I think some of it will change in the long run.
check to see if the benchmarks work and whether we need more. See if work needs to be done to make running them easy, possibly as part of CI. This would allow us to detect whether future changes cause performance regressions.
start thinking about reworking the API. Can we take useful inspiration from other interpolation packages? Can we leverage inferrable keyword arguments (which Julia didn’t have when Interpolations was designed) to deliver a more convenient interface? The whole OnGrid/OnCell issue has added a lot of complexity, can that be simplified? https://github.com/JuliaMath/Interpolations.jl/issues/227 and https://github.com/JuliaMath/Interpolations.jl/issues/242 represent probably the biggest architectural changes but both serve as roadmaps for important changes.