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

Uploaded CPython 3.13Windows x86-64

traj_dist_rs-1.0.0b2-cp313-cp313-manylinux_2_28_x86_64.whl (504.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

traj_dist_rs-1.0.0b2-cp313-cp313-manylinux_2_28_aarch64.whl (486.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

traj_dist_rs-1.0.0b2-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.0b2-cp313-cp313-macosx_11_0_arm64.whl (442.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

traj_dist_rs-1.0.0b2-cp312-cp312-win_amd64.whl (323.9 kB view details)

Uploaded CPython 3.12Windows x86-64

traj_dist_rs-1.0.0b2-cp312-cp312-manylinux_2_28_x86_64.whl (504.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

traj_dist_rs-1.0.0b2-cp312-cp312-manylinux_2_28_aarch64.whl (487.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

traj_dist_rs-1.0.0b2-cp312-cp312-macosx_11_0_x86_64.whl (454.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ x86-64

traj_dist_rs-1.0.0b2-cp312-cp312-macosx_11_0_arm64.whl (442.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

traj_dist_rs-1.0.0b2-cp311-cp311-win_amd64.whl (324.7 kB view details)

Uploaded CPython 3.11Windows x86-64

traj_dist_rs-1.0.0b2-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.0b2-cp311-cp311-manylinux_2_28_aarch64.whl (488.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

traj_dist_rs-1.0.0b2-cp311-cp311-macosx_11_0_x86_64.whl (456.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ x86-64

traj_dist_rs-1.0.0b2-cp311-cp311-macosx_11_0_arm64.whl (440.0 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

traj_dist_rs-1.0.0b2-cp310-cp310-win_amd64.whl (325.2 kB view details)

Uploaded CPython 3.10Windows x86-64

traj_dist_rs-1.0.0b2-cp310-cp310-manylinux_2_28_x86_64.whl (508.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

traj_dist_rs-1.0.0b2-cp310-cp310-manylinux_2_28_aarch64.whl (489.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

traj_dist_rs-1.0.0b2-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.0b2-cp310-cp310-macosx_11_0_arm64.whl (442.5 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: traj_dist_rs-1.0.0b2.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.0b2.tar.gz
Algorithm Hash digest
SHA256 3ca7bf2164a29be60b06d3b082f1e50e306666f662edd6b9887053092b388e43
MD5 59c7bfb38c69ba9c4998b3b659a6de9c
BLAKE2b-256 ac203378f6b3fe6c8a5236b0bc6b90411d3d25fef8e666eee02841e3e8729971

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 eb76083b7fa462b8ecbb070e78e1bc0fc9fe64089b4203cdc0a01b4c239fedce
MD5 d017f3d8c64be60afc816b9dd0b1e979
BLAKE2b-256 44ea26cc847e79b5a82ea3d06af618e138758e6bda366089ca90edff436cc60f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b2-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 44ea7fa447163f3ab71e78a28474b351b8213bc82820baf70180591a4571e338
MD5 565285592172512bfa518a282bb28d5b
BLAKE2b-256 032835c17ed82ab849b193f519879515184b4a5cc5b4a0a45635e31e7b817421

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b2-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d5fb56ceb7f96605475c313917d043bbbc4eceb4248012d54ec53d2c6eeea820
MD5 bb1e49edf4a8e1d252ad8d7f425d2a8e
BLAKE2b-256 16a2a9d2edaec12d272c930121ec914563b0a2b7f6fad9eefc94f6ef5f5e7080

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b2-cp313-cp313-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 b58db72939a59256df875989380e3580bdc3184c586efa2f19f5f52451b3702b
MD5 2dfa14ac258f5bce23dc2b13ee12ec68
BLAKE2b-256 b29128d15509a885ce8e88342d41bf5cf2c33bde0ae45edcc4d14f99c8f8cab3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 db0a6411014a0293f341462b07861f6a7f43db2eeed9fe8e631d448292dedc23
MD5 1625f69315112bd35dc2003ddb06808c
BLAKE2b-256 21fa556372918ebebc69bcfc279012d821b8ef50310c3eda00950d93c0bcbe56

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 06f8f3386b4cdb580ed00dc302c277ca1d03e703c86360b56e24303d39f355ae
MD5 6c0458d9093bc07656786f0d43e625dc
BLAKE2b-256 43b5eaaeb8145b7505647e56ab5775b6b45722a967a98ea1d6c66ba9666f8fe7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b2-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4aadc684754c69d158894d4fef10ba797594af5661e11b4716213f5f134a6217
MD5 c04ec5128e23611e03dbfe8ce1000c60
BLAKE2b-256 7ba45f2a9eec1394cafe984afab34dc22a55335de49ac3d3a8e29c3efaf0459f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b2-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f8e45b6362c3ac7e312e72f4617a0452e49cbf738d1b91586f99acfbff70d2a4
MD5 9bc8e48edab5420edf3f4426c9608b29
BLAKE2b-256 59b5d0b77332509c7d649ddcffd98bd0fb606b9f24fbd6203411a3c057fdb25d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b2-cp312-cp312-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 e5d007496e16f074efc7eedab2d31d24b1cec1c1522ae194bb0203c0c288e8e2
MD5 19c1e615223e477d67740b1fb30e8937
BLAKE2b-256 c79b5f391cabea60e70acf16ace3afe729cebff32a42d49d6f5649165ab0e343

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 60dc5fa700075cc2de1ae607a25ea25ea81193a888a8d3bbefbea0ccee7617cf
MD5 696055ae9777ca3c06ba413ef4942ca7
BLAKE2b-256 404e94aff1590fb4d83af437a6fb495067d8b0c9fd163c952d1d31ff32e3e279

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 dd15c22ea588d94aee3fd30cdc9517395e33891548e7d4e03f0005cb7ce8d277
MD5 c898c13b23224217850fde7a18b8e7ae
BLAKE2b-256 e5f85b5aa87b05aa12f66fe04ace88d2f9312f4a0a1c6d9d18789f88ad1cc7f1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 aae8b9abd83f5299c8c44682881fd10b468bc1ea343f8c258a6821e39843ee4d
MD5 aa18cbc21d92676a968037d0e0c6a0bb
BLAKE2b-256 f48e65e267c97b0192b665a2e3c25d58201ddc4433ca6aab41a499d3e17b05f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b2-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 97f69e5db7b6f6b367e757b1e864dd3fbc53801f7f3842a9357afd1e2909a169
MD5 a5253f8f50dff8c4b52c5c027a6dabf1
BLAKE2b-256 59aad500db34ca8ad1eb238a162fa8497a4a73f6b088e7833fad8df1707261a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b2-cp311-cp311-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 2b483e5f69a958bac3840080248f1a1acafb641d091bf3f04cb9c31f0567500d
MD5 948b2ca6055452811ffd8edba41f4356
BLAKE2b-256 b733970aa97c2975e754b6098fd7a3220e68229fdad6f592b9a9e562d43df677

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 28033fbda1abd09afa6c6a4769b41c08dd917e1c95f6002b11ab940aa2755eaa
MD5 e797f468b850088e4ba78686d7fc8f17
BLAKE2b-256 8df3499bcae15874c51ddfe3b1275b2af921650cbeef853381996f5928328483

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 282d3f43c010e69504e425d1ea98ed1b1e62b86bdbbba418cee90efd95e55d48
MD5 266f4e4926468433303b712ef8cce143
BLAKE2b-256 6c541e82b88091d8dac99ea7eb45e9a4dd526d472597b0c48c8ff87f06b1aae3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b2-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 24dd93211cb212e4cfa5ee856d84f24b51a71a2cbd9927be1b9840a58b2d672c
MD5 262b08038d56fdc41466c194937f0fa3
BLAKE2b-256 52d7ffbafc89efbfc08218ece72f7cd7ceb2a41ccd70957834a9914d7b7765f7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b2-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d58226a500b7048917739b7323a0e87fd760b02d8d04b2e03e64baa4e54e3e76
MD5 9d31823d3471b81dfa8ebda6b79826eb
BLAKE2b-256 8bd3d8c853cac4014c9e5b81f35ee3202f8c7e14a83e4c85101e47816fd3eeb1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b2-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 5b06f1b184812f0b7e0d56ccfa7cb67e47f7fddf77c30a6b97536fc4e5349fa5
MD5 0ca6d896dcd2438ae8b6cdf207aab016
BLAKE2b-256 f4c64395b77ab69b655ed5c5277d4a7107233266e9826f194f07a20b9926bb38

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0b2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 71a35e2b56ccc3ceb7a6f102138b4f40383c5c204a5a9fd0b50c714f845b6307
MD5 c131bcc49c0f8f6dc078761d82e7a3e0
BLAKE2b-256 40cfa7fcc986f6227453abe6440c60838da2c0366774ac9f18b60f014e565d3d

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