@@ -147,26 +147,44 @@ complex-valued functions and integrating multiple intervals (see `gh-3325
147
147
interpolate
148
148
```````````
149
149
150
- *Spline fitting *: we need spline fitting routines with better user control. This
151
- includes
152
150
153
- - user-selectable alternatives for the smoothing criteria (manual,
154
- cross-validation etc); gh-16653 makes a start in this direction;
151
+ *FITPACK replacements *
155
152
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
158
157
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.
162
161
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.
168
164
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.
170
188
171
189
172
190
io
0 commit comments