Hi ggggg
You and I have discussed this privately and decided to work up a DynamicTimeWarp package in Julia ourselves, because we couldn't find one. It's not nearly ready for real-world use, I think, but it can be found at GitHub:
https://github.com/joefowler/DynamicTimeWarp.jl
Our goals for the package include:
- Performing Dynamic Time Warping between 2 time series.
- Performing DTW with the solution path restricted to a specified "window". This restriction speeds up the computation but can fail to find the global optimum.
- The FastDTW algorithm (Salvador & Chan, 2007), which effectively chooses a window by downsampling the original problem and running FastDTW on that (or as a base case, running DTW once the down sampled problem is small enough). Also faster but potentially misses the full DTW solution.
- DTW Barycenter Averaging (Petitjean, Ketterlin, and Gancarski, _Pattern Recognition_ 44, 2011). This algorithm aims to create a "consensus sequence" iteratively from 2 or more sequences, using the identification of samples that DTW generates between the latest consensus and the constituent sequences.
- Tools for using DTW to align spectra. In our work, this would mean calibration to unify uncalibrated energy spectra from x-ray spectrometers. This is not a well-defined goal yet, but it's the reason that you and I actually care about DTW.
- Demonstrations, documentation, good tests, and the usual things like that.
Peak-finding, e.g. by continuous wavelet transforms or any other method, is a separate issue.
--Joe