Skip to main content

A Python module implemented in Rust for efficient calculations

Project description

Rust Functions for Metric Space Analysis

This repository contains a set of functions implemented in Rust for the purpose of metric space analysis. These functions aim to provide superior performance by taking advantage of Rust's efficient memory management and computational capabilities.


CI version implementation license format



For a full walkthrough of cost-based metrics, see Jonathon Victor's website:


Installation

This package is bundled with the metricspace repository. It can also be installed separately using the following command:

pip install rs-distances

Note: Be sure to activate your virtual environment with Python 3.7 or higher before installing this package via pip.

Performance

The functions provided in this package are written in Rust and compiled into a shared library that can be utilized within Python. This approach is intended to boost the computational efficiency of metric space analysis operations.

Below is a comparative performance table of the spike-train iterator function implemented in Matlab, Python, and Rust. It should be noted that the Matlab version is not optimized using MEX (which would be comparable to Python's numba @jit), and the translations from Matlab to Python to Rust are not exact 1:1.

Spike-train iterator Matlab Python Rust
raw function 30.235s 64.992s 2.028s
with numba @jit 30.235s 25.119s 2.028s
with @jit + parralel 24.050s 18.067s 0.945s

Advantages of Rust Implementation

Array manipulations, particularly those performed within computationally intensive tasks, are highly sensitive to memory allocation and cleanup. Rust, with its ownership model and automatic memory management, excels in this area. Rust automatically reclaims the memory when an object (like an array or a slice) goes out of scope. This is a stark contrast to languages like Python, where a garbage collector is relied upon to perform memory cleanup. This difference provides Rust implementations with a distinct edge in performance, which is reflected in the comparative analysis shown above.

With these Rust implementations, you can achieve the high-level expressiveness of Python while benefiting from the superior performance and efficiency of Rust.

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

rs_distances-1.0.0.tar.gz (25.6 kB view details)

Uploaded Source

Built Distribution

rs_distances-1.0.0-cp310-none-win_amd64.whl (163.3 kB view details)

Uploaded CPython 3.10 Windows x86-64

File details

Details for the file rs_distances-1.0.0.tar.gz.

File metadata

  • Download URL: rs_distances-1.0.0.tar.gz
  • Upload date:
  • Size: 25.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.0.1

File hashes

Hashes for rs_distances-1.0.0.tar.gz
Algorithm Hash digest
SHA256 de227a7994a41b5f5471bab00c6b1d7d6cc3f301cbad08c162a614f288dc1b06
MD5 ba12aa925ddc9716458cc683bef5f6bd
BLAKE2b-256 f738143cadbaaa5492424a57327bd4af09ffc166cceb679d209c46992c18ca62

See more details on using hashes here.

File details

Details for the file rs_distances-1.0.0-cp310-none-win_amd64.whl.

File metadata

File hashes

Hashes for rs_distances-1.0.0-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 53c893c885fa17791408042bd3e5830a7cd8debf61b499143d2873abc6f0e2fa
MD5 eb961ae877d6a1e78671c33e2c3dc5ba
BLAKE2b-256 b5d4fdd5cbbded7b10928a01e17f16642f41a0702af4c94768458751c86adc45

See more details on using hashes here.

Supported by

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