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.85 or later
  • uv

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

Uploaded CPython 3.13Windows x86-64

traj_dist_rs-1.0.0rc1-cp313-cp313-manylinux_2_28_x86_64.whl (506.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

traj_dist_rs-1.0.0rc1-cp313-cp313-manylinux_2_28_aarch64.whl (486.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

traj_dist_rs-1.0.0rc1-cp313-cp313-macosx_11_0_x86_64.whl (455.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

traj_dist_rs-1.0.0rc1-cp312-cp312-manylinux_2_28_x86_64.whl (507.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

traj_dist_rs-1.0.0rc1-cp312-cp312-manylinux_2_28_aarch64.whl (487.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

traj_dist_rs-1.0.0rc1-cp312-cp312-macosx_11_0_x86_64.whl (455.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

traj_dist_rs-1.0.0rc1-cp311-cp311-manylinux_2_28_x86_64.whl (505.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

traj_dist_rs-1.0.0rc1-cp311-cp311-manylinux_2_28_aarch64.whl (489.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

traj_dist_rs-1.0.0rc1-cp311-cp311-macosx_11_0_x86_64.whl (456.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ x86-64

traj_dist_rs-1.0.0rc1-cp311-cp311-macosx_11_0_arm64.whl (439.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

traj_dist_rs-1.0.0rc1-cp310-cp310-manylinux_2_28_x86_64.whl (504.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

traj_dist_rs-1.0.0rc1-cp310-cp310-manylinux_2_28_aarch64.whl (490.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: traj_dist_rs-1.0.0rc1.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.0rc1.tar.gz
Algorithm Hash digest
SHA256 55f123dd15e163688333e1172fa9a7921af89677115f2ae801b2d68cd5ff9731
MD5 5cf7f01e2d572a00d1bd7a9e5d210187
BLAKE2b-256 99f4b32085d33ff7ca0d49841737af03a7d885a0c54122745e0e17380aabc8f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0rc1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 882dddcb88f3b3cec08b7db3151223ae94f3f1e0873d2547ef1d303bf4b9d183
MD5 f1c5c19a7a533f19e893872855893d2e
BLAKE2b-256 341463c4eb5f028c7893b4bd02be102f7fcb644074aebebe25a8f945239445cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0rc1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f795532a8e382ea32efc29dabb3f23741968d380c229bf1c1b0d7e9508a93187
MD5 d0aadec2a580d67059b8b744f3361ed5
BLAKE2b-256 b375b5083d414cf8225b9c10eb2a1d9b787c349032e855fe5630939f54197662

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0rc1-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fd657fedb7de92b0abb2ea2a91eef431432608a21c9702d9af382822694e27a7
MD5 c0a92598f0a8ab21741b266751da5a16
BLAKE2b-256 c6ef65e6c034360dcd24e479759912e1b19e5552ecf6a24ecfb01b06697bafa7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0rc1-cp313-cp313-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 a444006f4f2981d073ca2ebad2a405ab386e4513dd271b78ea2a96b7b0d75431
MD5 b0fa2c259941d461852aaeaec42c24ea
BLAKE2b-256 23d0696ef3e33e672b30eff88204d93f695cbb68da5a971193c3f862f01b40c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0rc1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6928ea3aa8889a326d975318709e98dca67f19a495285d39ba43be9b6f45f3b4
MD5 ed2e3f80856732783928780b5feb56f5
BLAKE2b-256 27dbfac1efbc4e666c14035755c960bfaf33843e1f6be16433c56708fa08e418

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0rc1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 50175fc34e7b3d81ab877b60a5d9c4e11695da4c1820bcd5928243195b28a035
MD5 528f13c8892082785d08e638041c2409
BLAKE2b-256 00e32823ecb60ea43de58f5ae922df9f69b624221a85f2a83f71e85bfa1896d0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0rc1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8c2438d5573d0b01f495d281ef13a8212577eb9f0c7a61c5defb356b959d722b
MD5 40c42a3d1bebb604fdafd6dcc6599d6d
BLAKE2b-256 96a98646148bd2fee9c7b44bffa593b3ce27c78912704377edde65260f721237

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0rc1-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b004296579bea3b0f9c79fa0002d5061eb6163dce85298d9dbc0ba4363084964
MD5 2a5a10acaa80d4673928f0ca8a6723de
BLAKE2b-256 fe6bde4528222b7bb61e2360624adb158ecd6ecee1150b8c44b7f54991a15a90

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0rc1-cp312-cp312-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 9e6eaf3e9563754e8706f657a54457791ce0fd15fee948b1a7333722466d0fc1
MD5 331dd320a55d939f8c258246c2048dcc
BLAKE2b-256 302fb4f80e92105a0f09d191065caf349826e6a0e63c4fd788036f3a0d304bf3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0rc1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e7c949c2a779c1b66188ac61609b3a90b08e84226aecdb65e9cc8051b17bb84b
MD5 84524cb716558b1477b06168f7881713
BLAKE2b-256 f108983dae22ffbac83ab4c34a3dddee0c8e661a8f7255ae2eb659a2187fdd43

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0rc1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 cd88d36fa01b689f15571ff9773723ba06e6a719cde23f1b6f281f674bb7ff63
MD5 ccbaf4fbf6098026102fde6e02c45e38
BLAKE2b-256 5ae7038a1285a798aacc3e2104d89e982f53c3914c4c213d634e2b8812719d01

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0rc1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 846c8f0e7a8bf7afe34595487770e2cb1b255c240830b78d53c59bc9624e63b8
MD5 0138cbac433b80880d5cbcf6a8d63129
BLAKE2b-256 fc6988cf04af466b9be60557e6654f161be17b5d06d45111a15c7c7cd22d4bca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0rc1-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7ccbeaea946265f0fc95991671056fccca30baff136d88489f26c5697dc1992d
MD5 ece659f1f4e8472e64703a24eb492cb6
BLAKE2b-256 a805e01dbb4a0aef1ed821fdefc43d94964117aa623042be1273d522ea689f6d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0rc1-cp311-cp311-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 46100193c76a7026fea00082b4ae3eae102b08b8f8bd3af105b7874116be9fc4
MD5 120acad3ceb4c6e7232ec918e396127e
BLAKE2b-256 43fd32659a846f500beebbe1e9781a8ae53d187df87f4687548265d332776ed2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0rc1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8a1e0892c4031531fdb232f965f56064cd20ed95a99f4f260aec5292f5e13421
MD5 25f88aaba9e56e345e7afeb5d1e9d003
BLAKE2b-256 1103fa42c2439f57ca3e5fcfdb3a08c0702e1bcfa830b18e6fa746dcfda2cbdb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0rc1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 7324b0a13df11bb27de351d9c5cab1d3ab89c26de08202b9fb24543d76475635
MD5 1feaec573dcf5c6b34fb09767a30e8df
BLAKE2b-256 7214d1ef083b2de98a67e4e83c351bb60e03aa14a8e3a53b884414aa8f761296

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0rc1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 599a7cea5eb51a1ea0f30a654fbb78ed720e0115655b7e77c470f0ef52e30156
MD5 46fa0769142ed08bc4dd6f4a7e86c1d3
BLAKE2b-256 ef7552f1421db0eac4af516fbfb47009a1c84d86ee460471462ab742bb7bb00b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0rc1-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 106f4b67faa5d786373dc93dfc1421a7823ba3a9273f83ddc9f968a5ae914dea
MD5 0527c00ac8ac6427b62a3353a97e4a01
BLAKE2b-256 eb3a8a5ce73873a3128dcf3e9aba9d61bec0fb84e452723aa54fe5ee10847814

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0rc1-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 5d47716de90fc96693dcf69b195f4bc6bb1e669d2296379fc0aeb32e52a8bf99
MD5 73524a38c8853594af6b694bf8515156
BLAKE2b-256 e685ffd6658c91752f788b6b126896dc485da4ce7c5d7ae5c8173228b80b2ce5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for traj_dist_rs-1.0.0rc1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f99f433fd4d9fdee3476fe690698ebcc31678aaf64aa7b42c798860f55537349
MD5 48c5bea677293f1085c1d38af13c7250
BLAKE2b-256 daabd8069d2a86c45d8be1713e35809723bff5c8f9b8e4d38801b21d9ff93c70

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