Skip to main content

Distance measures for time series

Project description

Experimental library for time series distances used in the DTAI Research Group.

Installation

The library can be used as a pure Python implementation. If you need a faster version of the algorithms you can make use of the included C algorithms. You might need to run make build or python setup.py build_ext --inplace to compile the included library first.

Usage

Dynamic Time Warping (DTW) Distance

from dtaidistance import dtw
s1 = np.array([0., 0, 1, 2, 1, 0, 1, 0, 0, 2, 1, 0, 0])
s2 = np.array([0., 1, 2, 3, 1, 0, 0, 0, 2, 1, 0, 0, 0])
dtw.plot_warping(s1, s2)
DTW Example

DTW Example

DTW Distance Between Two Series

Only the distance based on two sequences of numbers:

from dtaidistance import dtw
s1 = [0, 0, 1, 2, 1, 0, 1, 0, 0]
s2 = [0, 1, 2, 0, 0, 0, 0, 0, 0]
distance = dtw.distance(s1, s2)
print(distance)

Check the __doc__ for information about the available arguments:

print(dtw.distance.__doc__)

If, next to the distance, you also want the full distance matrix:

from dtaidistance import dtw
s1 = [0, 0, 1, 2, 1, 0, 1, 0, 0]
s2 = [0, 1, 2, 0, 0, 0, 0, 0, 0]
distance, matrix = dtw.distances(s1, s2)
print(distance)
print(matrix)

The fastest version (30-300 times) uses c directly but requires an array as input (with the double type):

from dtaidistance import dtw
s1 = array.array('d',[0, 0, 1, 2, 1, 0, 1, 0, 0])
s2 = array.array('d',[0, 1, 2, 0, 0, 0, 0, 0, 0])
d = dtw.distance_fast(s1, s2)

Or you can use a numpy array (with dtype double or float):

from dtaidistance import dtw
s1 = np.array([0, 0, 1, 2, 1, 0, 1, 0, 0], dtype=np.double)
s2 = np.array([0.0, 1, 2, 0, 0, 0, 0, 0, 0])
d = dtw.distance_fast(s1, s2)

DTW Distances Between Set of Series

To compute the DTW distances between all sequences in a list of sequences, use the method dtw.distance_matrix. You can set variables to use more or less c code (use_c and use_nogil) and parallel or serial execution (parallel).

The distance_matrix method expects a list of lists/arrays or a matrix (in case all series have the same length).

from dtaidistance import dtw
series = [
    np.array([0, 0, 1, 2, 1, 0, 1, 0, 0], dtype=np.double),
    np.array([0.0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0]),
    np.array([0.0, 0, 1, 2, 1, 0, 0, 0])]
ds = dtw.distance_matrix_fast(s)

from dtaidistance import dtw
series = np.matrix([
    [0.0, 0, 1, 2, 1, 0, 1, 0, 0],
    [0.0, 1, 2, 0, 0, 0, 0, 0, 0],
    [0.0, 0, 1, 2, 1, 0, 0, 0, 0]])
ds = dtw.distance_matrix_fast(s)

Dependencies

Optional: - Cython - tqdm

Development: - pytest - pytest-benchmark

Contact

References

  1. Mueen, A and Keogh, E, Extracting Optimal Performance from Dynamic Time Warping, Tutorial, KDD 2016

License

DTAI distance code.

Copyright 2016 KU Leuven, DTAI Research Group

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dtaidistance-0.1.3.tar.gz (144.4 kB view details)

Uploaded Source

Built Distribution

dtaidistance-0.1.3-cp36-cp36m-macosx_10_12_x86_64.whl (94.5 kB view details)

Uploaded CPython 3.6m macOS 10.12+ x86-64

File details

Details for the file dtaidistance-0.1.3.tar.gz.

File metadata

File hashes

Hashes for dtaidistance-0.1.3.tar.gz
Algorithm Hash digest
SHA256 2444d7dd3a436abf9840bb694075f5485f9a18f8e97733a1204b7a73147d5e73
MD5 f5b49e067de5a7474c69a2e0049ddc9e
BLAKE2b-256 b4e38bdb5e19848433e24c746603431314557da32b8dc989aa05c389ca1e3ebd

See more details on using hashes here.

File details

Details for the file dtaidistance-0.1.3-cp36-cp36m-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for dtaidistance-0.1.3-cp36-cp36m-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f3d4bce6ec91ff74958577a3a6b66c044a9fd93ceb1f04394309a5e50f30638d
MD5 77f756874a9236f053f64b8b16032137
BLAKE2b-256 82f2f0b943bebbe409dd407e7b64f0f1167b99616aa2c8f657a1e03a704954c8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page