Skip to content

Commit 92ed633

Browse files
ev-brj-bowhay
andauthored
DOC: update the interpolate roadmap (scipy#22116)
* DOC: update the interpolate roadmap --------- Co-authored-by: Jake Bowhay <[email protected]>
1 parent 3251f58 commit 92ed633

File tree

1 file changed

+33
-15
lines changed

1 file changed

+33
-15
lines changed

doc/source/dev/roadmap-detailed.rst

Lines changed: 33 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -147,26 +147,44 @@ complex-valued functions and integrating multiple intervals (see `gh-3325
147147
interpolate
148148
```````````
149149

150-
*Spline fitting*: we need spline fitting routines with better user control. This
151-
includes
152150

153-
- user-selectable alternatives for the smoothing criteria (manual,
154-
cross-validation etc); gh-16653 makes a start in this direction;
151+
*FITPACK replacements*
155152

156-
- several strategies for knot placement, both manual and automatic (using
157-
algorithms by Dierckx, de Boor, possibly other).
153+
We need to finish providing functional equivalents of the FITPACK Fortran library.
154+
The aim is to reimplement the algorithmic content of the FITPACK monolith in a
155+
modular fashion, to allow better user control and extensibility.
156+
To this end, we need
158157

159-
Once we have a reasonably feature complete set, we can start taking a long look
160-
at the future of the venerable FITPACK Fortran library, which currently is the
161-
only way of constructing smoothing splines in SciPy.
158+
- 1D splines: add the periodic spline fitting to `make_splrep` function.
159+
- 2D splines: provide functional replacements of the `BivariateSpline` family
160+
of classes for scattered and gridded data.
162161

163-
*Scalability and performance*: For the FITPACK-based functionality, the data
164-
size is limited by 32-bit Fortran integer size (for non-ILP64 builds).
165-
For N-D scattered interpolators (which are QHull based) and N-D regular grid
166-
interpolators we need to check performance on large data sets and improve
167-
where lacking (gh-16483 makes progress in this direction).
162+
Once we have a feature-complete set of replacements, we can gracefully sunset
163+
our use of FITPACK.
168164

169-
*Ideas for new features*: NURBS support could be added.
165+
*Ideas for new features*
166+
167+
168+
- add the ability to construct smoothing splines with variable number of knots
169+
to `make_smoothing_spline`. Currently, `make_smoothing_spline` always uses all
170+
data points for the knot vector.
171+
- experiment with user-selectable smoothing criteria: add the P-splines penalty
172+
form to complement the 2nd derivative penalty of `make_smoothing_spline` and
173+
jumps of the 3rd derivative of `make_splrep`
174+
- investigate ways of vectorizing the spline construction for batches of the
175+
independent variable. This class of features has been requested by
176+
`scipy.stats` developers
177+
- allow specifying the boundary conditions for spline fitting.
178+
- investigate constrained spline fitting problems which the FITPACK library was
179+
providing in Fortran, but were never exposed to the python interfaces
180+
- NURBS support can be added if there is sufficient user interest
181+
182+
*Scalability and performance*
183+
184+
We need to check performance on large data sets and improve where lacking. This
185+
is relevant for both regular grid N-D interpolators and QHull-based scattered
186+
N-D interpolators. For the latter ones, we additionally need to investigate if
187+
we can improve on the 32-bit integer limitations of the QHull library.
170188

171189

172190
io

0 commit comments

Comments
 (0)