Skip to main content

High-performance trajectory distance & similarity measures in Rust with Python bindings

Project description

traj-dist-rs

High-performance trajectory distance & similarity measures in Rust and Python.

A high-performance Rust implementation of trajectory distance algorithms with Python bindings, offering significant speed improvements over the original traj-dist library.

License: MIT Python Version Rust Version

About

traj-dist-rs is a high-performance trajectory distance calculation library written in Rust, providing both native Rust APIs and Python bindings via PyO3. It is a complete rewrite of the original traj-dist library, focusing on performance optimization and modern language features.

Why traj-dist-rs?

  • Performance: ~82x faster than Python implementation and ~3x faster than Cython implementation on average
  • Batch Computation: Native pdist and cdist functions with parallel support up to 130x faster than traj-dist
  • Zero Dependencies: Only requires numpy >= 1.21 - no heavy dependencies like polars, pyarrow, pandas, or shapely
  • Safety: Rust's memory safety guarantees eliminate common runtime errors
  • Cross-platform: Supports Linux, macOS, and Windows with native binaries
  • Dual API: Use it from Python or Rust with minimal overhead
  • Accuracy: All algorithms verified against original implementation with < 1e-8 error margin

Features

Supported Distance Algorithms

Algorithm Full Name Best For
SSPD Symmetric Segment-Path Distance General similarity, noise tolerance
DTW Dynamic Time Warping Similarity with time warping, flexible alignment
Discret Frechet Discrete Fréchet Distance Geometric similarity, path-based matching
Hausdorff Hausdorff Distance Maximum distance, outlier-sensitive similarity
LCSS Longest Common Subsequence Robust similarity with noise tolerance
EDR Edit Distance on Real sequence Similarity with noise and outlier tolerance
ERP Edit distance with Real Penalty Robust similarity with gap handling

Distance Types

  • Euclidean - 2D Euclidean distance
  • Spherical - Haversine distance for geographic coordinates

Batch Computation

  • pdist - Pairwise distance matrix for trajectory collections (compressed format)
  • cdist - Cross-distance matrix between two trajectory collections
  • Parallel processing - Automatic parallelization using Rayon for large datasets
  • Metric API - Type-safe configuration with factory methods

Additional Features

  • Matrix return for DP-based algorithms (DTW, LCSS, EDR, ERP, Discret Frechet)
  • Precomputed distance matrix support for efficient batch computations
  • Zero-copy NumPy array support for optimal performance
  • Pickle serialization for DpResult objects (compatible with joblib)
  • Comprehensive error handling for invalid inputs
  • Full Python type hints for better IDE support

Keywords / Search Terms

Common search terms related to this library:

  • Core concepts: trajectory similarity, trajectory distance, similarity measures, trajectory analysis
  • Algorithms: DTW, LCSS, EDR, ERP, Fréchet distance, Hausdorff distance, SSPD
  • Applications: trajectory clustering, trajectory similarity search, nearest neighbor retrieval, mobility data analysis, GPS trace analysis
  • Domains: time series similarity, spatiotemporal data, movement pattern mining, anomaly detection

Migration from traj-dist

If you used the original traj-dist library for trajectory similarity measurement, this library is compatible and offers significant performance improvements:

  • Algorithm compatibility: Core algorithms (SSPD, DTW, Hausdorff, LCSS, EDR, ERP) supported
  • Performance: 3-10x faster than Cython implementation

Quick Start

Python

import numpy as np
import traj_dist_rs

# Define trajectories as list of [x, y] coordinates or numpy arrays
traj1 = [[0.0, 0.0], [1.0, 1.0], [2.0, 2.0]]
traj2 = [[0.1, 0.1], [1.1, 1.1], [2.1, 2.1]]

# Calculate SSPD distance
distance = traj_dist_rs.sspd(traj1, traj2, dist_type="euclidean")
print(f"SSPD distance: {distance}")

# Calculate DTW distance (returns DpResult with distance and optional matrix)
result = traj_dist_rs.dtw(traj1, traj2, dist_type="euclidean", use_full_matrix=False)
print(f"DTW distance: {result.distance}")

# Calculate Hausdorff distance
distance = traj_dist_rs.hausdorff(traj1, traj2, dist_type="spherical")
print(f"Hausdorff distance: {distance}")

# Batch computation with pdist (pairwise distances)
trajectories = [np.array([[0.0, 0.0], [1.0, 1.0]]) for _ in range(10)]
metric = traj_dist_rs.Metric.sspd(type_d="euclidean")
distances = traj_dist_rs.pdist(trajectories, metric=metric, parallel=True)
print(f"Computed {len(distances)} pairwise distances")

# Cross-distance computation with cdist
dist_matrix = traj_dist_rs.cdist(trajectories[:5], trajectories[5:], metric=metric)
print(f"Distance matrix shape: {dist_matrix.shape}")

Rust

use traj_dist_rs::distance::sspd::sspd;
use traj_dist_rs::distance::dtw::dtw;
use traj_dist_rs::distance::base::TrajectoryCalculator;
use traj_dist_rs::distance::distance_type::DistanceType;
use traj_dist_rs::distance::batch::{pdist, Metric, DistanceAlgorithm};

fn main() {
    let traj1 = vec![[0.0, 0.0], [1.0, 1.0], [2.0, 2.0]];
    let traj2 = vec![[0.1, 0.1], [1.1, 1.1], [2.1, 2.1]];

    // Calculate SSPD distance
    let dist = sspd(&traj1, &traj2, DistanceType::Euclidean);
    println!("SSPD distance: {}", dist);

    // Calculate DTW distance
    let calculator = TrajectoryCalculator::new(&traj1, &traj2, DistanceType::Euclidean);
    let result = dtw(&calculator, false);
    println!("DTW distance: {}", result.distance);

    // Batch computation with pdist
    let trajectories = vec![
        vec![[0.0, 0.0], [1.0, 1.0]],
        vec![[0.0, 1.0], [1.0, 0.0]],
        vec![[0.5, 0.5], [1.5, 1.5]],
    ];
    let metric = Metric::new(DistanceAlgorithm::SSPD, DistanceType::Euclidean);
    let distances = pdist(&trajectories, &metric, true).unwrap();
    println!("Computed {} pairwise distances", distances.len());
}

Installation

From PyPI (Python)

pip install traj-dist-rs

Minimal Dependencies: traj-dist-rs only requires numpy >= 1.21 to function. This makes it extremely lightweight and easy to install compared to alternatives that depend on pandas, shapely, or other heavy libraries.

Requirements

  • Python: 3.10, 3.11, 3.12, or 3.13
  • NumPy: >= 1.21 (the only runtime dependency)
  • Platform: Linux, macOS, or Windows

From crates.io (Python)

cargo add traj-dist-rs --features parallel

Installation Options

Basic Installation (minimal dependencies):

pip install traj-dist-rs

Installation with Test Dependencies (for development):

pip install traj-dist-rs[test]

From Source (requires Rust toolchain):

Prerequisites:

  • Rust 1.70 or later
  • Python 3.10, 3.11, 3.12, or 3.13
  • maturin

Build and install:

# Clone the repository
git clone https://github.com/Davidham3/traj-dist-rs.git
cd traj-dist-rs

# Compile and install via uv
uv pip install .

Rust-only build:

cargo build --release --features parallel

Performance

Compared to the original traj-dist implementation (based on median values from K=1000 trajectory pairs):

Overall Performance

Implementation Average Speedup
Rust vs Python ~82x faster
Rust vs Cython ~3x faster

By Distance Type

Euclidean Distance:

  • Rust vs Python: ~388x faster (range: 169x - 612x)
  • Rust vs Cython: ~9.7x faster (range: 6.2x - 13.7x)

Spherical Distance:

  • Rust vs Python: ~87x faster (range: 47x - 194x)
  • Rust vs Cython: ~3.5x faster (range: 1.8x - 8.6x)

Batch Computation Performance

pdist (DTW, 5 trajectories, varying lengths):

Trajectory Length Rust Seq vs traj-dist Rust Par vs traj-dist
10 points 8.02x 0.14x (parallel overhead)
100 points 15.55x 10.52x
1000 points 15.76x 83.41x

cdist (DTW, 5×5, varying lengths):

Trajectory Length Rust Seq vs traj-dist Rust Par vs traj-dist
10 points 15.85x 1.00x (parallel overhead)
100 points 15.21x 15.15x
1000 points 15.20x 60.97x

Real-world Example: TrajCL Data Preprocessing

  • Dataset: 7,000 trajectories (Porto dataset)
  • Task: DTW distance matrix computation
  • Performance: 31.8x faster than traj-dist baseline (2933s → 92s)

For detailed performance analysis with statistics, see performance.md.

Documentation

Testing

Run comprehensive integration tests:

bash scripts/pre_build.sh

Contributing

We welcome contributions! Please see our contributing guidelines:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Run tests and ensure they pass via bash scripts/pre_build.sh
  5. Commit your changes (git commit -m 'Add amazing feature')
  6. Push to the branch (git push origin feature/amazing-feature)
  7. Open a Pull Request

Development Workflow

For daily development, use the pre-build script:

bash scripts/pre_build.sh

This script will:

  • Format Rust and Python code
  • Run linting (clippy, ruff)
  • Run all tests (Rust + Python)
  • Generate Python stub files
  • Build Python bindings

Project Structure

traj-dist-rs/
├── src/
│   ├── distance/       # Distance algorithm implementations
│   ├── binding/        # Python bindings (PyO3)
│   └── lib.rs          # Library entry point
├── tests/              # Rust integration tests
├── py_tests/           # Python integration tests
├── python/             # Python package source
├── docs/               # Documentation
└── scripts/            # Build and utility scripts

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

  • Original traj-dist library for algorithm reference
  • PyO3 for Python bindings
  • The Rust community for excellent tooling and libraries

Support

  • Issues: Report bugs and request features via GitHub Issues
  • Discussions: Join discussions about usage and development
  • Documentation: Check the docs directory for detailed guides

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

traj_dist_rs-1.0.0b1.tar.gz (2.9 MB view details)

Uploaded Source

Built Distributions

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

traj_dist_rs-1.0.0b1-cp313-cp313-win_amd64.whl (323.5 kB view details)

Uploaded CPython 3.13Windows x86-64

traj_dist_rs-1.0.0b1-cp313-cp313-manylinux_2_28_x86_64.whl (504.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

traj_dist_rs-1.0.0b1-cp313-cp313-manylinux_2_28_aarch64.whl (487.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

traj_dist_rs-1.0.0b1-cp313-cp313-macosx_11_0_x86_64.whl (454.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ x86-64

traj_dist_rs-1.0.0b1-cp313-cp313-macosx_11_0_arm64.whl (442.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

traj_dist_rs-1.0.0b1-cp312-cp312-win_amd64.whl (323.8 kB view details)

Uploaded CPython 3.12Windows x86-64

traj_dist_rs-1.0.0b1-cp312-cp312-manylinux_2_28_x86_64.whl (504.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

traj_dist_rs-1.0.0b1-cp312-cp312-manylinux_2_28_aarch64.whl (487.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

traj_dist_rs-1.0.0b1-cp312-cp312-macosx_11_0_x86_64.whl (454.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ x86-64

traj_dist_rs-1.0.0b1-cp312-cp312-macosx_11_0_arm64.whl (442.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

traj_dist_rs-1.0.0b1-cp311-cp311-win_amd64.whl (325.7 kB view details)

Uploaded CPython 3.11Windows x86-64

traj_dist_rs-1.0.0b1-cp311-cp311-manylinux_2_28_x86_64.whl (509.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

traj_dist_rs-1.0.0b1-cp311-cp311-manylinux_2_28_aarch64.whl (488.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

traj_dist_rs-1.0.0b1-cp311-cp311-macosx_11_0_x86_64.whl (456.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ x86-64

traj_dist_rs-1.0.0b1-cp311-cp311-macosx_11_0_arm64.whl (440.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

traj_dist_rs-1.0.0b1-cp310-cp310-win_amd64.whl (324.0 kB view details)

Uploaded CPython 3.10Windows x86-64

traj_dist_rs-1.0.0b1-cp310-cp310-manylinux_2_28_x86_64.whl (508.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

traj_dist_rs-1.0.0b1-cp310-cp310-manylinux_2_28_aarch64.whl (489.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

traj_dist_rs-1.0.0b1-cp310-cp310-macosx_11_0_x86_64.whl (457.1 kB view details)

Uploaded CPython 3.10macOS 11.0+ x86-64

traj_dist_rs-1.0.0b1-cp310-cp310-macosx_11_0_arm64.whl (442.9 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file traj_dist_rs-1.0.0b1.tar.gz.

File metadata

  • Download URL: traj_dist_rs-1.0.0b1.tar.gz
  • Upload date:
  • Size: 2.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for traj_dist_rs-1.0.0b1.tar.gz
Algorithm Hash digest
SHA256 d1c6331034fe63f703fb2912be05ca1a8907e0a7fa4d200675963901d572f0e3
MD5 870a1bd521cfb0d8f0c15a2a984da98b
BLAKE2b-256 ddc356e08e9f429d71a8e9678e46ddee4b3881f6a5e437209d3dac7ac4d6b126

See more details on using hashes here.

File details

Details for the file traj_dist_rs-1.0.0b1-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 3eb0d8163f24e6e6624366b277fc674b77d01daa9807ad4bdfce08b263f94aca
MD5 4366dd730721c8fc2d10b6091b8d85db
BLAKE2b-256 f19a24c2aecb1c81f5be1587399e6e6108265459b6ddd9eb896aa3b674fd2b35

See more details on using hashes here.

File details

Details for the file traj_dist_rs-1.0.0b1-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cd5c62317e589ed7ae4a5c9948dc9de799dae43214db8edf6f4683ee9c49dd30
MD5 b25029bcbec09cc0588d009bd78d1161
BLAKE2b-256 f33881e242f15885da0fde7398c25aa77c68a6717804cd9d9b63bb3b6966a73f

See more details on using hashes here.

File details

Details for the file traj_dist_rs-1.0.0b1-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b1-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 77e05ca45a554c201cbf83be66099294e3965852aed770143c3d0616475cce75
MD5 5ad3e369e6a5366d05abd013758663ee
BLAKE2b-256 17f1b5d274ee7c70e42e5be8c2d76ed9dabe4fee21a55f5921cff8185876252f

See more details on using hashes here.

File details

Details for the file traj_dist_rs-1.0.0b1-cp313-cp313-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b1-cp313-cp313-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 cc5891f3efc41e6e735212f6d843c7486338da4b1096ce7d55c77661859e5936
MD5 6f33d4946557b4fe3aafa7c3fe8cf7e1
BLAKE2b-256 fcde5aa8287be06d81a3116eac74e20a75d558f0197beb1a0d5e1aaf9e2f5918

See more details on using hashes here.

File details

Details for the file traj_dist_rs-1.0.0b1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fd9a86c25bc244e34eb1b06924d2d117dbbaa28f35f2e9ea1a233349e9d2b3d8
MD5 ad2ab9fc2cf2c622465f240664f245b2
BLAKE2b-256 d02b93a1cc291b4d2acaf924b34c54dbaa6d710c33c501cd2c3f582ddd3266ce

See more details on using hashes here.

File details

Details for the file traj_dist_rs-1.0.0b1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 04c04bf14634318a371d5eb24b436e681bd9c20caa367ade525408f423c3c2e4
MD5 f6c86c145672a91a9eba795235db6e91
BLAKE2b-256 32b911a65307c3f630c555f5c6d8111581030a257a82f8b35872ca2d175c1cb2

See more details on using hashes here.

File details

Details for the file traj_dist_rs-1.0.0b1-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1aba538cb49d0e47fa5f73dd1cee93144394b3f930e7f6ef63c7583633920808
MD5 815d3070205b28c86806009fc89f8c69
BLAKE2b-256 459faf806347e089cc961523e78d4a44716a791c4af5b642ae471ef7b31374ce

See more details on using hashes here.

File details

Details for the file traj_dist_rs-1.0.0b1-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b1-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 538ace2f41919ec77413c52366a7708ed3c529780c86942a11163287b854bf1e
MD5 eaa4b467b5e646f948d32f2d4ea7f172
BLAKE2b-256 7f9c41e6c01b792e1c17293247d23adbb8514298a004109c0e5729b0618f8de5

See more details on using hashes here.

File details

Details for the file traj_dist_rs-1.0.0b1-cp312-cp312-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b1-cp312-cp312-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 b0926846886e6f24f4dd73a3b8c934ec41bc2e6e9011b91b13fca8703389090f
MD5 bf54f7f3d8231c17d833937f318b6a29
BLAKE2b-256 a95030bb22ff6111eb99e1fadbf53c061bb23194a52c0476e8df869f70c24d83

See more details on using hashes here.

File details

Details for the file traj_dist_rs-1.0.0b1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3d29e917d307e779975eccf02f6c7177308aaf20fef63b1879c9effce8409162
MD5 26af9f2a3adb6709a422870942927b1b
BLAKE2b-256 503fa3e33920b85cae5ce1ec7b3aeeca49b1ebae19fa6d80c1fa3f29b046e023

See more details on using hashes here.

File details

Details for the file traj_dist_rs-1.0.0b1-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 78ada06e5071b9eae5f0ebe7036c3940ac24f6cdfcdc80fc859609e4e01dc248
MD5 d8c77d4cbc79b64dddc901800dfa107a
BLAKE2b-256 b5b836e55ddb7581d589295237ec76664bc58ca5a4c857ba835eec91ee624baa

See more details on using hashes here.

File details

Details for the file traj_dist_rs-1.0.0b1-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d575a61ffa3e07391c0702d487d9a9538dde71f187edca4fea0d4381d30cea16
MD5 2cc019da6be37bf08529db15f20c2a7f
BLAKE2b-256 a711e66e5911449b958167513b7e6e267bcd63587a88ce28063d6d6f25b8e8a7

See more details on using hashes here.

File details

Details for the file traj_dist_rs-1.0.0b1-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b1-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f9d2eba76d3efea83e57bbd585f56f0c60550e0922859caaa414a231f6ae9f68
MD5 fc8353b8e8c33f92734f4115f9e3c864
BLAKE2b-256 8cdd95ef89f2afe19c80be007eee7c9a135f96930fc5095c3f184edf1f7c6253

See more details on using hashes here.

File details

Details for the file traj_dist_rs-1.0.0b1-cp311-cp311-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b1-cp311-cp311-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 72a403f117c4c60963618cc37d8850ba07a7be0e47d00ff5d5151aedc36afd5d
MD5 e957c6738d818389af8ea3a02445f275
BLAKE2b-256 4b6a63dc844c324b984e29fbbe50376ba45d8d4fd398feb46c6c49d654410591

See more details on using hashes here.

File details

Details for the file traj_dist_rs-1.0.0b1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0ca0ee53824451268792bd92c3c4855007743ccd7d1969b720ac67575228127e
MD5 960902b537b4c069b6d975867892b5e6
BLAKE2b-256 5052901c114cc8875240e5b0f202900323eb831900df5b4113103534c04aa3c8

See more details on using hashes here.

File details

Details for the file traj_dist_rs-1.0.0b1-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 8e49c990aeb8b53009f54055b1d32237b1ed77028d1bbaccaf1dca4341fa787d
MD5 192e45679106a8cf0da1761ef6877ce4
BLAKE2b-256 15c9ff091367a50e208be3ce653510f8836632359dfc8836fb6db8158282ec45

See more details on using hashes here.

File details

Details for the file traj_dist_rs-1.0.0b1-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 096e9cec6148b2448553e87a51f59c2cbea4536a1b500e823af29ad1c9a45b56
MD5 e02146115b1b9f746b4a9e7e2935a931
BLAKE2b-256 a5825884d806dce5e714ed06ce2833a55d686df0565f5743d527dea78cd09c47

See more details on using hashes here.

File details

Details for the file traj_dist_rs-1.0.0b1-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b1-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1b2c9ef940ae3d726f02d08f1038d18cbf6be138cba8b63bf76cd0702de2697e
MD5 28c6fbb7cb4e641c7c43e440da03337d
BLAKE2b-256 8c62e090750aafb7271752993e372490523a1c8a8fdfd28a5abe4816c5b8b3a8

See more details on using hashes here.

File details

Details for the file traj_dist_rs-1.0.0b1-cp310-cp310-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b1-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 a51efec640ac67889f3eaa8a5b3100c52dd47ff68b3f9480c8c1f76552f2beec
MD5 4addb6f1723839e5b7c765532b7dee62
BLAKE2b-256 03dcd8f4eb31638e34ebbb04316905d8d6e07c9b66395d77c2a2e1cd99db4d7d

See more details on using hashes here.

File details

Details for the file traj_dist_rs-1.0.0b1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2cd385ac0d19dc5dcdad28fd6187638f0d25f2008953cd09970141dc0f286dbe
MD5 9287dbfb52f47d228f5048f25802c0e0
BLAKE2b-256 8cebdf264d741650164dd74b6a7a57d45e66c3be34aab909192ed7f8fc634aa9

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