Skip to main content

Distance measures for time series (Dynamic Time Warping, fast C implementation)

Project description

PyPi Version Conda Version Documentation Status DOI

Time Series Distances

Library for time series distances (e.g. Dynamic Time Warping) used in the DTAI Research Group. The library offers a pure Python implementation and a fast implementation in C. The C implementation has only Cython as a dependency. It is compatible with Numpy and Pandas and implemented such that unnecessary data copy operations are avoided.

Documentation: http://dtaidistance.readthedocs.io

Example:

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

Citing this work:

Wannes Meert, Kilian Hendrickx, Toon Van Craenendonck, Pieter Robberechts, Hendrik Blockeel & Jesse Davis.
DTAIDistance (Version v2). Zenodo.
http://doi.org/10.5281/zenodo.5901139

New in v2:

  • Numpy is now an optional dependency, also to compile the C library (only Cython is required).
  • Small optimizations throughout the C code to improve speed.
  • The consistent use of ssize_t instead of int allows for larger data structures on 64 bit machines and be more compatible with Numpy.
  • The parallelization is now implemented directly in C (included if OpenMP is installed).
  • The max_dist argument turned out to be similar to Silva and Batista's work on PrunedDTW [7]. The toolbox now implements a version that is equal to PrunedDTW since it prunes more partial distances. Additionally, a use_pruning argument is added to automatically set max_dist to the Euclidean distance, as suggested by Silva and Batista, to speed up the computation (a new method ub_euclidean is available).
  • Support in the C library for multi-dimensional sequences in the dtaidistance.dtw_ndim package.
  • DTW Barycenter Averaging for clustering (v2.2).
  • Subsequence search and local concurrences (v2.3).
  • Support for N-dimensional time series (v2.3.7).

Installation

$ pip install dtaidistance

or

$ conda install -c conda-forge dtaidistance

The pip installation requires Numpy as a dependency to compile Numpy-compatible C code (using Cython). However, this dependency is optional and can be removed.

The source code is available at github.com/wannesm/dtaidistance.

If you encounter any problems during compilation (e.g. the C-based implementation or OpenMP is not available), see the documentation for more options.

Usage

Dynamic Time Warping (DTW) Distance Measure

from dtaidistance import dtw
from dtaidistance import dtw_visualisation as dtwvis
import numpy as np
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])
path = dtw.warping_path(s1, s2)
dtwvis.plot_warping(s1, s2, path, filename="warp.png")

Dynamic Time Warping (DTW) Example

DTW Distance Measure Between Two Series

Only the distance measure 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)

The fastest version (30-300 times) uses c directly but requires an array as input (with the double type), and (optionally) also prunes computations by setting max_dist to the Euclidean upper bound:

from dtaidistance import dtw
import array
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, use_pruning=True)

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

from dtaidistance import dtw
import numpy as np
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, use_pruning=True)

Check the __doc__ for information about the available arguments:

print(dtw.distance.__doc__)

A number of options are foreseen to early stop some paths the dynamic programming algorithm is exploring or tune the distance measure computation:

  • window: Only allow for shifts up to this amount away from the two diagonals.
  • max_dist: Stop if the returned distance measure will be larger than this value.
  • max_step: Do not allow steps larger than this value.
  • max_length_diff: Return infinity if difference in length of two series is larger.
  • penalty: Penalty to add if compression or expansion is applied (on top of the distance).
  • psi: Psi relaxation to ignore begin and/or end of sequences (for cylical sequences) [2].
  • use_pruning: Prune computations based on the Euclidean upper bound.

DTW Distance Measure all warping paths

If, next to the distance, you also want the full matrix to see all possible warping paths:

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, paths = dtw.warping_paths(s1, s2)
print(distance)
print(paths)

The matrix with all warping paths can be visualised as follows:

from dtaidistance import dtw
from dtaidistance import dtw_visualisation as dtwvis
import random
import numpy as np
x = np.arange(0, 20, .5)
s1 = np.sin(x)
s2 = np.sin(x - 1)
random.seed(1)
for idx in range(len(s2)):
    if random.random() < 0.05:
        s2[idx] += (random.random() - 0.5) / 2
d, paths = dtw.warping_paths(s1, s2, window=25, psi=2)
best_path = dtw.best_path(paths)
dtwvis.plot_warpingpaths(s1, s2, paths, best_path)

DTW Example

Notice the psi parameter that relaxes the matching at the beginning and end. In this example this results in a perfect match even though the sine waves are slightly shifted.

DTW Distance Measures Between Set of Series

To compute the DTW distance measures 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:

from dtaidistance import dtw
import numpy as np
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(series)

or a matrix (in case all series have the same length):

from dtaidistance import dtw
import numpy as np
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(series)

DTW Distance Measures Between Set of Series, limited to block

You can instruct the computation to only fill part of the distance measures matrix. For example to distribute the computations over multiple nodes, or to only compare source series to target series.

from dtaidistance import dtw
import numpy as np
series = np.matrix([
     [0., 0, 1, 2, 1, 0, 1, 0, 0],
     [0., 1, 2, 0, 0, 0, 0, 0, 0],
     [1., 2, 0, 0, 0, 0, 0, 1, 1],
     [0., 0, 1, 2, 1, 0, 1, 0, 0],
     [0., 1, 2, 0, 0, 0, 0, 0, 0],
     [1., 2, 0, 0, 0, 0, 0, 1, 1]])
ds = dtw.distance_matrix_fast(series, block=((1, 4), (3, 5)))

The output in this case will be:

#  0     1    2    3       4       5
[[ inf   inf  inf     inf     inf  inf]    # 0
 [ inf   inf  inf  1.4142  0.0000  inf]    # 1
 [ inf   inf  inf  2.2360  1.7320  inf]    # 2
 [ inf   inf  inf     inf  1.4142  inf]    # 3
 [ inf   inf  inf     inf     inf  inf]    # 4
 [ inf   inf  inf     inf     inf  inf]]   # 5

Clustering

A distance matrix can be used for time series clustering. You can use existing methods such as scipy.cluster.hierarchy.linkage or one of two included clustering methods (the latter is a wrapper for the SciPy linkage method).

from dtaidistance import clustering
# Custom Hierarchical clustering
model1 = clustering.Hierarchical(dtw.distance_matrix_fast, {})
cluster_idx = model1.fit(series)
# Augment Hierarchical object to keep track of the full tree
model2 = clustering.HierarchicalTree(model1)
cluster_idx = model2.fit(series)
# SciPy linkage clustering
model3 = clustering.LinkageTree(dtw.distance_matrix_fast, {})
cluster_idx = model3.fit(series)

For models that keep track of the full clustering tree (HierarchicalTree or LinkageTree), the tree can be visualised:

model.plot("myplot.png")

Dynamic Time Warping (DTW) hierarchical clusteringt

Dependencies

Optional:

Development:

Contact

References

  1. T. K. Vintsyuk, Speech discrimination by dynamic programming. Kibernetika, 4:81–88, 1968.
  2. H. Sakoe and S. Chiba, Dynamic programming algorithm optimization for spoken word recognition. IEEE Transactions on Acoustics, Speech and Signal Processing, 26(1):43–49, 1978.
  3. C. S. Myers and L. R. Rabiner, A comparative study of several dynamic time-warping algorithms for connected-word recognition. The Bell System Technical Journal, 60(7):1389–1409, Sept 1981.
  4. Mueen, A and Keogh, E, Extracting Optimal Performance from Dynamic Time Warping, Tutorial, KDD 2016
  5. D. F. Silva, G. E. A. P. A. Batista, and E. Keogh. On the effect of endpoints on dynamic time warping, In SIGKDD Workshop on Mining and Learning from Time Series, II. Association for Computing Machinery-ACM, 2016.
  6. C. Yanping, K. Eamonn, H. Bing, B. Nurjahan, B. Anthony, M. Abdullah and B. Gustavo. The UCR Time Series Classification Archive, 2015.
  7. D. F. Silva and G. E. Batista. Speeding up all-pairwise dynamic time warping matrix calculation, In Proceedings of the 2016 SIAM International Conference on Data Mining, pages 837–845. SIAM, 2016.

License

DTAI distance code.

Copyright 2016-2022 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-2.3.12.tar.gz (1.0 MB view details)

Uploaded Source

Built Distributions

dtaidistance-2.3.12-cp312-cp312-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.12 Windows x86-64

dtaidistance-2.3.12-cp312-cp312-macosx_10_9_universal2.whl (1.6 MB view details)

Uploaded CPython 3.12 macOS 10.9+ universal2 (ARM64, x86-64)

dtaidistance-2.3.12-cp311-cp311-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.11 Windows x86-64

dtaidistance-2.3.12-cp311-cp311-macosx_14_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.11 macOS 14.0+ ARM64

dtaidistance-2.3.12-cp311-cp311-macosx_10_9_universal2.whl (1.6 MB view details)

Uploaded CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)

dtaidistance-2.3.12-cp310-cp310-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.10 Windows x86-64

dtaidistance-2.3.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

dtaidistance-2.3.12-cp310-cp310-macosx_11_0_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.10 macOS 11.0+ x86-64

dtaidistance-2.3.12-cp310-cp310-macosx_10_9_universal2.whl (1.6 MB view details)

Uploaded CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)

dtaidistance-2.3.12-cp39-cp39-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.9 Windows x86-64

dtaidistance-2.3.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

dtaidistance-2.3.12-cp39-cp39-macosx_11_0_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.9 macOS 11.0+ x86-64

dtaidistance-2.3.12-cp39-cp39-macosx_10_9_universal2.whl (1.6 MB view details)

Uploaded CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)

dtaidistance-2.3.12-cp38-cp38-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.8 Windows x86-64

dtaidistance-2.3.12-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

dtaidistance-2.3.12-cp38-cp38-macosx_11_0_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.8 macOS 11.0+ x86-64

dtaidistance-2.3.12-cp38-cp38-macosx_11_0_universal2.whl (1.6 MB view details)

Uploaded CPython 3.8 macOS 11.0+ universal2 (ARM64, x86-64)

dtaidistance-2.3.12-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

File details

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

File metadata

  • Download URL: dtaidistance-2.3.12.tar.gz
  • Upload date:
  • Size: 1.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.4

File hashes

Hashes for dtaidistance-2.3.12.tar.gz
Algorithm Hash digest
SHA256 f239f83783d92f9da3a9597a79d93e3d2f3fb81d972fd4703241f9bffe7dbb3d
MD5 705b0534f012c4a9c705f5403425e4f3
BLAKE2b-256 66016326251d8088cc11286a24a9999c8ffb5a7b0d22826ecd0e710cfb2f1028

See more details on using hashes here.

File details

Details for the file dtaidistance-2.3.12-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for dtaidistance-2.3.12-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b55d0a1ca980348e4ddb81bb6992a60d4e718d52714e3bd6e27cbf9dd55c505a
MD5 cf603810b07e74d0eeadf8d5fa338609
BLAKE2b-256 9550bcb0dc617c304f78848c0ea8de04620d1c7745d690335dc5440f14b4f26f

See more details on using hashes here.

File details

Details for the file dtaidistance-2.3.12-cp312-cp312-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for dtaidistance-2.3.12-cp312-cp312-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 b800db8e924e8c62e1e037aa52a731bd1c1e9421bf8baf0148fb1b304a490395
MD5 4c186fa86303659b755daa459814a7d1
BLAKE2b-256 d7952e1cc2cd65a9e31b8b20e78678f207e39387910a21e2769f8a163952b191

See more details on using hashes here.

File details

Details for the file dtaidistance-2.3.12-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for dtaidistance-2.3.12-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 182e1c0fca4fe994caf3798d32ad2c28c45d6303fca38d91816e88fe1ccbd83f
MD5 252edf59a41bc5bf9cca29def38bf1df
BLAKE2b-256 d62ff94056f217a034fe9ab222b0b520181f1019bb2c8623e4244c87fe83fbdb

See more details on using hashes here.

File details

Details for the file dtaidistance-2.3.12-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for dtaidistance-2.3.12-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 4d3b45c269db4d2d855b8ecf242bdbca9a362fd811f50610a8ca236713a888d4
MD5 2ce226284414d053482a9bc315ed4593
BLAKE2b-256 391f3223b1b080810003ba77902916e1dac5ab4ae36426c6fb3d812338954cd8

See more details on using hashes here.

File details

Details for the file dtaidistance-2.3.12-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for dtaidistance-2.3.12-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 881e7056d112f11ebf22b9bc57447220faa7c32690b35e818c94e2ddad170705
MD5 793b35fe5631331f482be311e1d2197a
BLAKE2b-256 3ea53ca169ab07438b3edc0cb9d0a5018547c716630b0ea4dac4feec3103bb20

See more details on using hashes here.

File details

Details for the file dtaidistance-2.3.12-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for dtaidistance-2.3.12-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ea8dd3f56becbb74fbf45239683dce17aa666ef8ccb078c03399d77fdb8994aa
MD5 bc593ae519cbc6e3e3d00b934c8c7c75
BLAKE2b-256 690947069c55d8fc057d7f6c3fc5e60ba5562c9766fc1043cc116b5212b6cb0f

See more details on using hashes here.

File details

Details for the file dtaidistance-2.3.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dtaidistance-2.3.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a5adf6d2be006afc1b56bd6319236b9a8f6a2f50243af06dd9325f4e09bc41b4
MD5 815f9e943308b5688f1323dfb61b6670
BLAKE2b-256 a25473896e2d6f5af10250322221ae9c0bc845a70d7c34b07ad81c9b09cc41f7

See more details on using hashes here.

File details

Details for the file dtaidistance-2.3.12-cp310-cp310-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for dtaidistance-2.3.12-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 d61cdc5656be065ddbc2bab502ac2125a8c931ec076693d4986fecb46bf720b7
MD5 7ff83cff53f3a5a48a9a20449d0efbaa
BLAKE2b-256 efc78ea9b36a92b727f0f497ccdf6be1706527ff7aa7515c044c437056441c4b

See more details on using hashes here.

File details

Details for the file dtaidistance-2.3.12-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for dtaidistance-2.3.12-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 c11618383363d9625f2ae08a40658589023c088d558ec9d25f103d077c53f1a6
MD5 8f13b964436d9032ad43f86899e85023
BLAKE2b-256 89dbe0030a55a6f0a3fc97faf27b1e15c366be9ca56fd7a8e20a25163b0d2f26

See more details on using hashes here.

File details

Details for the file dtaidistance-2.3.12-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for dtaidistance-2.3.12-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 0bc99ba6b33d7c5ca460c95fb1528c6c910d858effd64fa41051c35ebb70ae8f
MD5 afa840cc0a0b86eed92fc5b32251facc
BLAKE2b-256 a6420e841d9e43362f39b8c453471cd25402a3eec5c050165fa15bdc2075ea84

See more details on using hashes here.

File details

Details for the file dtaidistance-2.3.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dtaidistance-2.3.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7fe309b5d693dc068c67995722b89f3cecf845e8642c2d060b8f4b1773db2542
MD5 fef4521fe6753e17e090dc59468896ed
BLAKE2b-256 3250e5dd704870b85cb81719df95981efdb7ec177ac80f0941cc7bb391af33bb

See more details on using hashes here.

File details

Details for the file dtaidistance-2.3.12-cp39-cp39-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for dtaidistance-2.3.12-cp39-cp39-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 df471c2cd9ee7244e1810d5b8ee2cb301af5b142cd4988fe15f3e9aa15795537
MD5 3544fd763e2c4028f0b6544a46301e4d
BLAKE2b-256 1958c45e01f412621bb3660d99069f1abf2f2906938824b81bff91fd5b56c650

See more details on using hashes here.

File details

Details for the file dtaidistance-2.3.12-cp39-cp39-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for dtaidistance-2.3.12-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 9008074bb3c1ccfbf9149924630a2e6cf57466c69241766bd89dbdeb1f9c3da6
MD5 98e227579c1af2bca6536fa108a0a957
BLAKE2b-256 1a4a7179a67f25b4d71d81565e6196340ac3a634895cac8398e191f9214ab0b4

See more details on using hashes here.

File details

Details for the file dtaidistance-2.3.12-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for dtaidistance-2.3.12-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 dbf7472eee3d4a4ae45951ef21c7b97b393c3f906e77b8a19aaffd79e418d440
MD5 3fcdc8c54b0488ca771fe98faa6c19db
BLAKE2b-256 e5996cebf6e0146200e2195fc1f0a2b4aece9033e01d35e68bd9130ad329477b

See more details on using hashes here.

File details

Details for the file dtaidistance-2.3.12-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dtaidistance-2.3.12-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 502b1da5b5f6fa8d04730202839cf38e428f399b12cd7f1caf84047e5e9beb0d
MD5 92db1c2910e0e46a9b1cde80b7263d22
BLAKE2b-256 9bc0976bb77fb144d4093b1ad07b00362459b813b6907e52ec1ecc0948ade1ab

See more details on using hashes here.

File details

Details for the file dtaidistance-2.3.12-cp38-cp38-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for dtaidistance-2.3.12-cp38-cp38-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 7b5db221aba2dee932ffae0b230c2ee015a9993cee0f5e3bb3dae5f188de46d0
MD5 7b29028f27c53e14f85f9316b461b0d6
BLAKE2b-256 27030635e026f94d2c47b1b2aa104ee776ac7d35bd803f7322d471db89f455fc

See more details on using hashes here.

File details

Details for the file dtaidistance-2.3.12-cp38-cp38-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for dtaidistance-2.3.12-cp38-cp38-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 79a9163748bda3b46e90a9634513c1ac5f157c1df2487f06ba951e3ddeef885d
MD5 700c32cc15111e50d251c753ba081cee
BLAKE2b-256 995a3bb694001604694a3f6178007d99497691c40434b5485ef26258d744b116

See more details on using hashes here.

File details

Details for the file dtaidistance-2.3.12-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dtaidistance-2.3.12-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a606043f86562d18476d570f040838b24e7c42506181e454d44df55b9421b4a6
MD5 2cf86f93093636ad0c322a7885d3fb1f
BLAKE2b-256 a2149afd54ca3c262ffaf080cfe573798745c6741950a609183e112283e5950b

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