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.0b3.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.0b3-cp313-cp313-win_amd64.whl (323.4 kB view details)

Uploaded CPython 3.13Windows x86-64

traj_dist_rs-1.0.0b3-cp313-cp313-manylinux_2_28_x86_64.whl (505.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

traj_dist_rs-1.0.0b3-cp313-cp313-manylinux_2_28_aarch64.whl (487.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

traj_dist_rs-1.0.0b3-cp313-cp313-macosx_11_0_x86_64.whl (454.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ x86-64

traj_dist_rs-1.0.0b3-cp313-cp313-macosx_11_0_arm64.whl (442.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

traj_dist_rs-1.0.0b3-cp312-cp312-win_amd64.whl (323.7 kB view details)

Uploaded CPython 3.12Windows x86-64

traj_dist_rs-1.0.0b3-cp312-cp312-manylinux_2_28_x86_64.whl (506.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

traj_dist_rs-1.0.0b3-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.0b3-cp312-cp312-macosx_11_0_x86_64.whl (455.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ x86-64

traj_dist_rs-1.0.0b3-cp312-cp312-macosx_11_0_arm64.whl (442.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

traj_dist_rs-1.0.0b3-cp311-cp311-win_amd64.whl (325.6 kB view details)

Uploaded CPython 3.11Windows x86-64

traj_dist_rs-1.0.0b3-cp311-cp311-manylinux_2_28_x86_64.whl (509.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

traj_dist_rs-1.0.0b3-cp311-cp311-manylinux_2_28_aarch64.whl (489.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

traj_dist_rs-1.0.0b3-cp311-cp311-macosx_11_0_x86_64.whl (455.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ x86-64

traj_dist_rs-1.0.0b3-cp311-cp311-macosx_11_0_arm64.whl (440.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

traj_dist_rs-1.0.0b3-cp310-cp310-win_amd64.whl (323.9 kB view details)

Uploaded CPython 3.10Windows x86-64

traj_dist_rs-1.0.0b3-cp310-cp310-manylinux_2_28_x86_64.whl (509.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

traj_dist_rs-1.0.0b3-cp310-cp310-manylinux_2_28_aarch64.whl (489.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

traj_dist_rs-1.0.0b3-cp310-cp310-macosx_11_0_x86_64.whl (457.7 kB view details)

Uploaded CPython 3.10macOS 11.0+ x86-64

traj_dist_rs-1.0.0b3-cp310-cp310-macosx_11_0_arm64.whl (442.6 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: traj_dist_rs-1.0.0b3.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.0b3.tar.gz
Algorithm Hash digest
SHA256 1ba02f31618dd8b89a961774a7c149cad3a069c97c55972b8d3045a3c2442599
MD5 3852905c31d797603d6ac32a5e4a83e5
BLAKE2b-256 f3a266c8c080dcedf5eb9fbb4b4f359c3a5dedf8640d686e4edd2eb17b720791

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 6a326852dfb2836b1647d80d0dac06eb4cf5124c7a609a121167bc58e4c8c3bb
MD5 19bc93baf93aa8126bc476fb9d2ce75a
BLAKE2b-256 dbb1b480f0ff243efa8ee6aece8baa54af9c2ab95035c172f9ca47d79ab8bb70

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b3-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a01c5ae40db315ee12929215e1b21c09a212426fec0c1b80f838b567fa8a3b9d
MD5 e04161859954f1faf7870e88458f0fab
BLAKE2b-256 dd0cc669a8f925070bf7b9fadf8f4d7bd6433fc119f667192df86e37faf701ea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b3-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ba1b01722616073a4f04311c5921ed3873ef1061b0ba14023126603f2011eac4
MD5 0072da76362b6c1d012f78ae934d0dfe
BLAKE2b-256 04b1cdc7e7580799a4821aff94862952b596e04002cbe197de163d612c25406d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b3-cp313-cp313-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 9d21e5655a30cc47f3761cc60b0ee8f4e1714fc98d7e65f34e0926ad22df9fdc
MD5 490d840c65dcf07457d4d43b9fd01317
BLAKE2b-256 e18a479608599a2702276991c78fa690324d4a089b44d7c3dd08726deebd71e5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d9fd86752ee25bfeaa4276cc338dcf8887f2b65468d8bdef381ba19cfae1281a
MD5 75a6e29253b60c23ca147970cd68f111
BLAKE2b-256 70634db906e5bf64a3e21156798cb0972224ca86babef78e50991848e1324959

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b21a98a51605ed3a108e3fc0a0721eda7db33cfe4e3fcd8e231e53e50c3a69fc
MD5 fbe940c1cd9c127662257c2cd731c669
BLAKE2b-256 c11004d830f6a3601a4b79eeb688648b22eaf77bc7faf19831d217efe949dbbb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b3-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fbf2efd72713a6a165e5a275adbebb8695bc0c167c519e7b761cd6acd3a5be88
MD5 d559706336fdceb3a4d75b17c4726684
BLAKE2b-256 9a4fb1b04f323f54278e1481ae6bc5cbc774e6e81d8e269e5256889a95676388

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b3-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3ac7569b6a204f41df81bb767dc714a8c2dfe3b345133d4a6aab5c3231e6002a
MD5 ca8d3a6f451050c63a46b544cebd2dcd
BLAKE2b-256 82db49727cfc3cc6afa87143dd6ad49c6cfe7ba8eed47e2c9214546a71914510

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b3-cp312-cp312-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 8653f3fa530c6bfeaead4097bbac1ad88c786363afe3c49097c0a7e7f0a1fe6e
MD5 06b8b1614dee6dba830240b0c889978d
BLAKE2b-256 6471e2f41eeee5795216d0d180947f1adb6ff7119004d2a7a43d8eefcead595e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 377dd254c757162784fddbf173f6b34da2be3c3b3d835ab6cccf47245e65575c
MD5 78b931b99401b9bbd3f2f3f3be200305
BLAKE2b-256 185a6e64cc1e25421e4a35c6822d4d8a5dd961112f3db37f50aca8e258fa4504

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e045dec5fcee787682440ee85ea4d27be6963c9b3bde4822fea14db74fc28012
MD5 6151f735863fb8957fbf03f5f4b69694
BLAKE2b-256 72caa2b9fa5e32d791301018afcc7208020c4ae8a27d77a671a53d0f050d06f1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b3-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5ed2044cda71927d19096853ce9cd1a46a2abb16de287895deded004b3e217b9
MD5 11eca0172c0e30f2b769200779d32bc5
BLAKE2b-256 bba4ed18233ab786e23dbbb1c1bfe802617cefc2853d4e706c0f67dc0201851b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b3-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5025e7f00ea244ce938cd3d38f78777a29ee6d0bd98789da98d53c39f7c1ff6a
MD5 94761b4648d72ed525da5fb49c08bccd
BLAKE2b-256 d9b1da5e9089600abcfbb65c64a5d88a76b2a5592f81b751728b36800bca1f7c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b3-cp311-cp311-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 12d1eb67dff01ec5b7975a89d6089e8e223da1622d1e1c78002da40b43535d98
MD5 f3d229ab3e70122cc557dd370c5987b9
BLAKE2b-256 5b5d3e8703dedfdb8511475cadd4a087ca5507c56b72a379ba07cbbb858ca300

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d783dc62b952111486cf2b3a207190b566b08a535454f1ba01f4afcc70380ebb
MD5 4fd08ff6cc36f48c2f37e258ba4b7aad
BLAKE2b-256 3db7210e81b106cd21d31f18e68e1783451eab581828a32efac96c10b0186e1a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 6f7eb281c866849511af9a017252fe3f033b0aa515cb0128bfeea329b406ff28
MD5 2cd914dba66b3bff60c6d1ec35e9cbec
BLAKE2b-256 deee50294248412f24e62194e973466bc3cf166f6c8665d571a6d263712e826f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b3-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 09af83c1876b5502f146d83222a7144ef7982ee7d711170e21146688fada48bb
MD5 47d76846d38c7c2c7d3ab6f651c63125
BLAKE2b-256 e0bf0cb87301b85ca4a3e8b96c3dd8599e2173006c1a0654bfd15392712bbff3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b3-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 23b6e38a64581a8d2aea37007c6205c4d5d9a4ce050946208d78ed8e80edc3eb
MD5 6f228e5d05dc33e161a061d7fcfdf3c2
BLAKE2b-256 cc642ca1082488d0171e843c85b0ff13b78907ab42fa1b3700fd05959756a873

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b3-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 2f860e11a4ed85518bf28bfc799677e8fffa4661cb7e47ed4b5532e7ba30f1dc
MD5 cb492b4c825a10f75818c504954d78cc
BLAKE2b-256 2214b12fbf8e0dcb16573f9a42cd4623618ffd6e951cef91625ccfad7f93634a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 194d0f9d4611febb6a884949e478a24680065f06f93687f2c6330c221f10ee48
MD5 baf8ae8f97a4175896b121a87d7dd593
BLAKE2b-256 2c591ab14953e517915743295acd865e3d34455b3c457969167ae2bfdaf6e155

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