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

Subsequence search

DTAIDistance supports various subsequence search algorithms like Subsequence Alignment, Subsequence KNN Search and Local Concurrences. See the documentation for more information.

Motif Discovery

While methods such as dtw.distance_matrix and subsequence.subsequencesearch can be used for motif discovery in time series (after windowing), a more efficient and effective algorithm based on time warping is available in the LoCoMotif package.

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.4.0.tar.gz (1.3 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

dtaidistance-2.4.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

dtaidistance-2.4.0-cp314-cp314-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.14Windows x86-64

dtaidistance-2.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

dtaidistance-2.4.0-cp314-cp314-macosx_26_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.14macOS 26.0+ ARM64

dtaidistance-2.4.0-cp314-cp314-macosx_10_15_universal2.whl (2.1 MB view details)

Uploaded CPython 3.14macOS 10.15+ universal2 (ARM64, x86-64)

dtaidistance-2.4.0-cp313-cp313-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.13Windows x86-64

dtaidistance-2.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

dtaidistance-2.4.0-cp313-cp313-macosx_15_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

dtaidistance-2.4.0-cp313-cp313-macosx_10_13_universal2.whl (2.1 MB view details)

Uploaded CPython 3.13macOS 10.13+ universal2 (ARM64, x86-64)

dtaidistance-2.4.0-cp312-cp312-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.12Windows x86-64

dtaidistance-2.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

dtaidistance-2.4.0-cp312-cp312-macosx_11_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

dtaidistance-2.4.0-cp312-cp312-macosx_10_13_universal2.whl (2.1 MB view details)

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

dtaidistance-2.4.0-cp311-cp311-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.11Windows x86-64

dtaidistance-2.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

dtaidistance-2.4.0-cp311-cp311-macosx_15_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

dtaidistance-2.4.0-cp311-cp311-macosx_10_9_universal2.whl (2.1 MB view details)

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

File details

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

File metadata

  • Download URL: dtaidistance-2.4.0.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dtaidistance-2.4.0.tar.gz
Algorithm Hash digest
SHA256 bd4066800254fbd5b620e6462bb759c9d85b79ac2080b354cedc901f446b6c82
MD5 fede09885e08b741c6cd67f22fdc9c10
BLAKE2b-256 cd01aa26cc97b64d397ff03b9576b0a04cc79d0e3bae512eb087cfab7d98f4ec

See more details on using hashes here.

File details

Details for the file dtaidistance-2.4.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dtaidistance-2.4.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e083a5163c780a5b711d970c190d3eca83ebc0ec86e453e6f56d63b1d6d78139
MD5 c56807b90df8bb83d4530d08c89533b6
BLAKE2b-256 a70216088a7bd17340a4e600f49bf4da16a9741ddbb737202a91363407e993b2

See more details on using hashes here.

File details

Details for the file dtaidistance-2.4.0-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for dtaidistance-2.4.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 3a35f2957bbf50b068b0b90f5cc9b442bf9b2a90b855e713811b8badf89a668d
MD5 07d50bf429e80966395927518d233867
BLAKE2b-256 2c89da956340797c0ea022a35b6b0df9a118cc4427401d9a8119dc104d4b48de

See more details on using hashes here.

File details

Details for the file dtaidistance-2.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dtaidistance-2.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a2d7d26b9023788f62e5f245db5b78b68aacde67e5aeaa75906ce7ddb251da7f
MD5 e0c330af9ab437c6c329448e501a79f6
BLAKE2b-256 b982b805e66d3b05e2cfc4e209b7d7f62ac31fb7e72615c3532c7edb0bf1943a

See more details on using hashes here.

File details

Details for the file dtaidistance-2.4.0-cp314-cp314-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for dtaidistance-2.4.0-cp314-cp314-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 b5aa878c57f779cb9e141c0b4b1bc6b5be9c1721b349d153758112854a1b24cf
MD5 e2a2757e56f2becf5814bfcd348c4b6f
BLAKE2b-256 303060f941b3fed3d8b94e7315a71b8f87294f2e053c1f3c19e53f7b6cc33689

See more details on using hashes here.

File details

Details for the file dtaidistance-2.4.0-cp314-cp314-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for dtaidistance-2.4.0-cp314-cp314-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 bda9849cd22800cd8b3c6abf29574db241458823814cd37302d01df99474175a
MD5 ced433cf4e97c8ad282e2ec1f69c2cb8
BLAKE2b-256 0572ac72a2e196c66c627c1f51684ffa2fd782e9cb042baa29898206f79b0d86

See more details on using hashes here.

File details

Details for the file dtaidistance-2.4.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for dtaidistance-2.4.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 b8c9ef4c7270d1a192e8f1b481c2e10e63c33c6e7edfc507acac7f3fdc19949f
MD5 243b12b1a6e590d9dd6996e9f72db8cc
BLAKE2b-256 9fb67f77c6773380742660d09f379d43814b448296fc24c3fb1de15a3d813311

See more details on using hashes here.

File details

Details for the file dtaidistance-2.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dtaidistance-2.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b0f2a65628aea82175e7f8c5e96faf5372c933ed40e2e39a84957d8fe305158d
MD5 3911e2078a2568fac2cd14aafea46a45
BLAKE2b-256 db8e6c8a5c7710f9f5e3805281974ce8fea4ad0334c00a1e0f977977c045a594

See more details on using hashes here.

File details

Details for the file dtaidistance-2.4.0-cp313-cp313-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for dtaidistance-2.4.0-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 94b841d6575e3ad715b4e213f0f04de25e23c2da3ac21ee9c6775b38f5bdfecf
MD5 17ca81325b9ca3e2ca852bff98f7c7ff
BLAKE2b-256 ed7f06ce3d5ce51a959be0534584ad2556e6c8be966ef1218a866c6c3d62e3c5

See more details on using hashes here.

File details

Details for the file dtaidistance-2.4.0-cp313-cp313-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for dtaidistance-2.4.0-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 4cf41f3edcc4c1b94ebbc1de029ee9b58da28f33f7bf3af89212cc05e35ec8f1
MD5 593b5b613dd88f8480f93e3cc5d2bb68
BLAKE2b-256 8789c64eea692eae3b269719ee5173bf5008b5c165280248e3fad1948c765a2b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtaidistance-2.4.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6ab9431a5b66aafd37ab4dfcfe563b66694ed192019c1632d2de7a431a883bcd
MD5 9313bd1d1ac73d68f131948995d660c5
BLAKE2b-256 00cfef215e8864c21eb14872f98987d9736ebbbe5049d429039e2a93adcacad4

See more details on using hashes here.

File details

Details for the file dtaidistance-2.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dtaidistance-2.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 349d6765e10ddbb5e22e937cf1bc42394f5f8d36bc127f8af24a0cd0259f4804
MD5 e46eb30c2d8e8225002feb5a6376ab2a
BLAKE2b-256 f58eccdd057e4ff71cf0b6fe34220cbd214d469f831b45acbbb4366fdfef6330

See more details on using hashes here.

File details

Details for the file dtaidistance-2.4.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dtaidistance-2.4.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3afb229f4524f8bbf835a5dc3e07abcee9b6b9c6af4f14436cad19639102243c
MD5 f60effbbc6220e0af1b94834bed65359
BLAKE2b-256 ad9a4c0cb726c3c93436c993f55fc59d5fd2142c1a0fe6fe9ec06cc7bf25ab15

See more details on using hashes here.

File details

Details for the file dtaidistance-2.4.0-cp312-cp312-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for dtaidistance-2.4.0-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 64d54f910b53cd7a56b215e06d2b24b22090af836102d48558d3e9569ded2b66
MD5 b775ef04de5d15c86459c822e46e488f
BLAKE2b-256 ec63c1546dc5a4a98f77ca044206e8d8b7604349d36d0b76d5c03ab393a55e60

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtaidistance-2.4.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b17f853aa274bf02e00f9461013ec50882d7ea093587c126c74f38b119f5a1dc
MD5 fc180ee45e309b8280b9d7e8ec3d9848
BLAKE2b-256 e9942fa6f8c637685369a5b9c4b9efe3c414207f74c6fa02525f58a1b6369a1c

See more details on using hashes here.

File details

Details for the file dtaidistance-2.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dtaidistance-2.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bc756c0b305f72357aae2c48d52f6c80a651c43b06dfb740bfaf76a3fd97a114
MD5 f14921b8e7f41d57a1fcaa9444597eff
BLAKE2b-256 66ffe9f7ce427d45171a78104e785ba25ddc1d112d7a695741ef6609d8c51d99

See more details on using hashes here.

File details

Details for the file dtaidistance-2.4.0-cp311-cp311-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for dtaidistance-2.4.0-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 3838dbcc0a9b5f513aa5f1a158ac82f924651a163801cb63f5dc6c1999e6e6b6
MD5 da012956bbd3ff751f0207d7530c260a
BLAKE2b-256 bcf391ecf5ae5321ee14236c394fb673db5d64bccfa643c17ec889e72b5b75fa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dtaidistance-2.4.0-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 b7e054baadcd4ae54ec87b0ecb0d9aa0d41682ccc376ffd9b57ee29ff5e615f4
MD5 cb5ea177fc9d960d5eb4044e111ca328
BLAKE2b-256 47ecfa410cb539ce29bc324140ecc6079890b9d7def5056d4595318988314054

See more details on using hashes here.

Supported by

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