Skip to main content

Distance measures for time series

Project description

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

Installation

Run make build or python setup.py build_ext --inplace to be able to use the fast c-based versions of the algorithms.

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

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.2.tar.gz (143.3 kB view details)

Uploaded Source

Built Distribution

dtaidistance-0.1.2-cp36-cp36m-macosx_10_12_x86_64.whl (93.5 kB view details)

Uploaded CPython 3.6m macOS 10.12+ x86-64

File details

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

File metadata

File hashes

Hashes for dtaidistance-0.1.2.tar.gz
Algorithm Hash digest
SHA256 ff85e1d028872e16623f2926d3be5a59e06d21303d31bdcb7d624f290b07a011
MD5 ff7db9fb46f5544327a319a170fe8dfc
BLAKE2b-256 507da5dd1aa0f45b31ae8550e4851bafe158db6a0b5b5acc3b571ce9239e7d99

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtaidistance-0.1.2-cp36-cp36m-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0606755ef322b9aa423784fd9e3a9a8b5014d1cd1324171190fa4e49d1d3e5d4
MD5 afce852b2e7771f4cf334c9066a968a0
BLAKE2b-256 f75c26b3a09ec858e0c4163661af26e18150c3fd732c9a26a26f8fc9e2f67d6d

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