Make PolyDiff work with variable step size and missing data
In principle a polynomial fit can be performed to data spaced wherever, and NaNs can simply be ignored. But np.polyfit loses its mind and returns all NaNs if given a NaN input, and the way slide_function is implemented presently doesn't smoothly account for data points that might be nonuniformly spaced. These are both completely addressable, but in practice require some thinking, NaN-checking, and probably some light refactoring. Cursor can probably come up with some useful ideas, but it may still take a human hand to properly integrate and polish, especially because polydiff isn't the only one dependent on slide_function or the kernel functions.
This one may be more complicated still, because as I write in the taxonomy paper's last table, "When frequency of points can vary, optimal degree and window size can fluctuate across domain." That could make this thing a mess to try to parameterize and optimize in the general case, or make it so that we're significantly under-parameterizing and under-exploring if we enforce common choices across the domain. For slight nonequispacedness this wouldn't matter too much, though, and it would be nice if it just worked$^\text{TM}$.
Some ideas from Cursor. Not sure I totally agree with its design choices, but this change will reach a couple layers of utility functions deep.
I set Claude Code loose on this one, and it actually did a pretty bang-up job. It even had the key insight that we could make the sliding window approach work if we keep our window in index-space rather than dependent-variable space. (With constant dt these align, but with jitter they don't necessarily.) That allows us to use weights as we were before and to fit with constant polynomial degree across windows, versus maybe under- or overfitting points depending on how many fall in a window.
I'm going to pull its progress and make finishing touches myself to make sure all tests pass and such.