Skip to main content

High-performance computational acceleration library for CANNS, providing optimized implementations for topological data analysis and neural network computations

Project description

canns-lib

CI PyPI version License PyPI - Python Version

DOI

PyPI Downloads Ask DeepWiki

High-performance computational acceleration library for CANNs (Continuous Attractor Neural Networks), providing optimized Rust implementations for computationally intensive tasks in neuroscience and topological data analysis.

Overview

canns-lib is a modular library designed to provide high-performance computational backends for the CANNS Python package. It currently includes the Ripser module for topological data analysis, with plans for additional modules covering approximate nearest neighbors, dynamics computation, and other performance-critical operations.

Modules

🔬 Ripser - Topological Data Analysis

High-performance implementation of the Ripser algorithm for computing Vietoris-Rips persistence barcodes.

Performance Highlights

  • Mean speedup: 1.13x across 54 benchmarks vs ripser.py
  • Peak speedup: Up to 1.82x on certain datasets
  • Memory efficiency: 1.01x memory ratio (stable usage)
  • Perfect accuracy: 100% match with ripser.py results

Performance by Category

Top Performing Scenarios

Dataset Type Configuration Speedup
Random N(0,I) d=2, n=500, maxdim=2 1.82x
Two moons n=400, noise=0.08, maxdim=2 1.77x
Random N(0,I) d=2, n=200, maxdim=2 1.72x

Features

  • Algorithmic improvements: Row-by-row edge generation, binary search for sparse matrices
  • Memory optimization: Structure-of-Arrays layout, intelligent buffer reuse
  • Parallel processing: Multi-threading with Rayon (enabled by default)
  • Full Compatibility: Drop-in replacement for ripser.py with identical API
  • Multiple Metrics: Support for Euclidean, Manhattan, Cosine, and custom distance metrics
  • Sparse Matrices: Efficient handling of sparse distance matrices
  • Cocycle Computation: Optional computation of representative cocycles

🧭 Spatial Navigation (RatInABox parity)

Accelerated reimplementation of RatInABox environments and agents with PyO3/ Rust. Supports solid and periodic boundaries, arbitrary polygons, holes, and thigmotaxis wall-following.

Performance Snapshot

The spatial backend delivers ~700× runtime speedups vs. the pure-Python reference when integrating long trajectories. Benchmarked with benchmarks/spatial/step_scaling_benchmark.py (dt=0.02, repeats=1).

Steps RatInABox Runtime canns-lib Runtime Speedup
10² 0.020 s <0.001 s 477×
10³ 0.190 s <0.001 s 713×
10⁴ 1.928 s 0.003 s 732×
10⁵ 19.481 s 0.027 s 718×
10⁶ 192.775 s 0.266 s 726×

Spatial Runtime Scaling

Spatial Speedup Scaling

Plots and CSV summaries are emitted to benchmarks/spatial/outputs/.

Highlights

  • Full parity with RatInABox API (Environment, Agent, trajectory import/export)
  • Polygon & hole support with adaptive projection and wall vectors
  • Parity comparison tools in example/trajectory_comparison.py
  • Visualization utilities: drop-in replacements for RatInABox's plotting helpers (trajectory, heatmaps, histograms)
  • Benchmark scripts for long-step drift and speedup under benchmarks/spatial/

Visualization Helpers

from canns_lib import spatial

env = spatial.Environment(dimensionality="2D", boundary_conditions="solid")
agent = spatial.Agent(env, rng_seed=2025)

for _ in range(2_000):
    agent.update(dt=0.02)

# Trajectory with RatInABox-style colour fading and agent marker
agent.plot_trajectory(color="changing", colorbar=True)

# Other helpers mirror RatInABox naming
agent.plot_position_heatmap()
agent.plot_histogram_of_speeds()
agent.plot_histogram_of_rotational_velocities()

See example/spatial_plotting_demo.py for a full script that produces the trajectory, heatmap, and histogram figures showcased above.

Drift Velocity Control

Guide agent movement toward target directions while maintaining natural stochastic motion (matches RatInABox API):

# Basic drift usage
agent.update(
    dt=0.02,
    drift_velocity=[0.05, 0.02],  # Target velocity vector
    drift_to_random_strength_ratio=5.0  # Drift strength relative to random motion
)

Parameters:

  • drift_velocity: Target velocity vector (must match environment dimensionality)
  • drift_to_random_strength_ratio: Controls balance between drift and randomness
    • 0.0 = pure random motion (no drift)
    • 1.0 = equal weighting (default)
    • > 1.0 = stronger drift toward target

Use cases: Goal-directed navigation, reinforcement learning, biased exploration.

See example/drift_velocity_demo.py for detailed examples with visualizations.

🚀 Coming Soon

  • Dynamics: High-performance dynamics computation for neural networks
  • And more...

Installation

From PyPI (Recommended)

pip install canns-lib

From Source

git clone https://github.com/Routhleck/canns-lib.git
cd canns-lib
pip install maturin
maturin develop --release

Quick Start

Using the Ripser Module

import numpy as np
from canns_lib.ripser import ripser

# Generate sample data
data = np.random.rand(100, 3)

# Compute persistence diagrams
result = ripser(data, maxdim=2)
diagrams = result['dgms']

print(f"H0: {len(diagrams[0])} features")
print(f"H1: {len(diagrams[1])} features")
print(f"H2: {len(diagrams[2])} features")

Advanced Options

# High-performance computation with progress tracking
result = ripser(
    data,
    maxdim=2,
    thresh=1.0,                    # Distance threshold
    coeff=2,                       # Coefficient field Z/2Z
    do_cocycles=True,              # Compute representative cycles
    verbose=True,                  # Detailed output
    progress_bar=True,             # Show progress
    progress_update_interval=1.0   # Update every second
)

# Access results
diagrams = result['dgms']          # Persistence diagrams
cocycles = result['cocycles']      # Representative cocycles
num_edges = result['num_edges']    # Number of edges in complex

Sparse Matrix Support

from scipy import sparse

# Create sparse distance matrix
row = [0, 1, 2]
col = [1, 2, 0]
data = [1.0, 1.5, 2.0]
sparse_dm = sparse.coo_matrix((data, (row, col)), shape=(3, 3))

# Compute with sparse matrix (automatically detected)
result = ripser(sparse_dm, distance_matrix=True, maxdim=1)

Compatibility

The ripser module maintains 100% API compatibility with ripser.py:

# These work identically
import ripser as original_ripser
from canns_lib.ripser import ripser

result1 = original_ripser.ripser(data, maxdim=2)
result2 = ripser(data, maxdim=2)

# Results are numerically identical
assert np.allclose(result1['dgms'][0], result2['dgms'][0])

Development

Building from Source

# Prerequisites
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
pip install maturin

# Build and install
git clone https://github.com/Routhleck/canns-lib.git
cd canns-lib
maturin develop --release --features parallel

# Run tests
python -m pytest tests/ -v

Running Benchmarks

cd benchmarks
python compare_ripser.py --n-points 100 --maxdim 2 --trials 5

Technical Details

Ripser Module Architecture

  • Dual API paths: High-performance versions and full-featured versions with progress tracking
  • Memory optimization: Structure-of-Arrays layout, intelligent buffer reuse
  • Sparse matrix support: Efficient handling via neighbor intersection algorithms
  • Progress tracking: Built-in progress bars using tqdm when available
  • Parallel processing: Multi-threading with Rayon

Algorithmic Optimizations

  • Dense edge enumeration: O(n²) row-by-row generation vs O(n³) vertex decoding
  • Sparse queries: O(log k) binary search vs O(k) linear scan
  • Cache-friendly data structures: SoA matrix layout, k-major binomial tables
  • Zero-apparent pairs: Skip redundant column reductions in higher dimensions

License

Licensed under the Apache License, Version 2.0. See LICENSE for details.

Citation

If you use canns-lib in your research, please cite:

@software{canns_lib,
  title={canns-lib: High-Performance Computational Acceleration Library for CANNS},
  author={He, Sichao},
  url={https://github.com/Routhleck/canns-lib},
  year={2025}
}

Acknowledgments

Ripser Module

  • Ulrich Bauer: Original Ripser algorithm and C++ implementation
  • Christopher Tralie & Nathaniel Saul: ripser.py Python implementation
  • Rust community: Amazing ecosystem of high-performance libraries

Related Projects

  • Ripser: Original C++ implementation
  • ripser.py: Python bindings for Ripser
  • CANNS: Continuous Attractor Neural Networks
  • scikit-tda: Topological Data Analysis in Python

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

canns_lib-0.6.5.tar.gz (341.4 kB view details)

Uploaded Source

Built Distributions

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

canns_lib-0.6.5-cp313-cp313-win_amd64.whl (398.9 kB view details)

Uploaded CPython 3.13Windows x86-64

canns_lib-0.6.5-cp313-cp313-musllinux_1_2_x86_64.whl (574.9 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

canns_lib-0.6.5-cp313-cp313-musllinux_1_2_aarch64.whl (524.0 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

canns_lib-0.6.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (508.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

canns_lib-0.6.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (472.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

canns_lib-0.6.5-cp313-cp313-macosx_11_0_arm64.whl (429.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

canns_lib-0.6.5-cp313-cp313-macosx_10_13_x86_64.whl (478.8 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

canns_lib-0.6.5-cp312-cp312-win_amd64.whl (399.1 kB view details)

Uploaded CPython 3.12Windows x86-64

canns_lib-0.6.5-cp312-cp312-musllinux_1_2_x86_64.whl (575.2 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

canns_lib-0.6.5-cp312-cp312-musllinux_1_2_aarch64.whl (524.4 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

canns_lib-0.6.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (509.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

canns_lib-0.6.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (472.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

canns_lib-0.6.5-cp312-cp312-macosx_11_0_arm64.whl (429.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

canns_lib-0.6.5-cp312-cp312-macosx_10_13_x86_64.whl (478.7 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

canns_lib-0.6.5-cp311-cp311-win_amd64.whl (401.2 kB view details)

Uploaded CPython 3.11Windows x86-64

canns_lib-0.6.5-cp311-cp311-musllinux_1_2_x86_64.whl (576.9 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

canns_lib-0.6.5-cp311-cp311-musllinux_1_2_aarch64.whl (526.7 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

canns_lib-0.6.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (511.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

canns_lib-0.6.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (474.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

canns_lib-0.6.5-cp311-cp311-macosx_11_0_arm64.whl (430.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

canns_lib-0.6.5-cp311-cp311-macosx_10_12_x86_64.whl (479.2 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

File details

Details for the file canns_lib-0.6.5.tar.gz.

File metadata

  • Download URL: canns_lib-0.6.5.tar.gz
  • Upload date:
  • Size: 341.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for canns_lib-0.6.5.tar.gz
Algorithm Hash digest
SHA256 386e33c8fd2672688e5c10408489493b0fd3741703d18fa87b1426f6faf1e390
MD5 934c7aa004c35b715eb2cb0bc8806651
BLAKE2b-256 741680e4ff72029e12eb1dbf0650f5a52186c7d59a9bf66765e6be2106a875c8

See more details on using hashes here.

File details

Details for the file canns_lib-0.6.5-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: canns_lib-0.6.5-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 398.9 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for canns_lib-0.6.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 12a45636f778601be74b1d6623c4b77dd925cb34358d4b94fe510beb76042991
MD5 c68b6b64e97150a585239aab2298974b
BLAKE2b-256 936657b7c95f369711d56c1e42acd9f1a3fc8bcd35be71a4f8996c8d80f6df0e

See more details on using hashes here.

File details

Details for the file canns_lib-0.6.5-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for canns_lib-0.6.5-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4ffb905336c07c3c8dde28e930986356dec1677a90b904b98610402600b5b743
MD5 e67247c515ea752510a727eacdb864d0
BLAKE2b-256 751ca600c7f3796fb623dc69a40e5103faa783e7f324ae03d3672f5c82b29a43

See more details on using hashes here.

File details

Details for the file canns_lib-0.6.5-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for canns_lib-0.6.5-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 46ff60882de60e6b29c2a1ac3e325701f6fbe7930c9d1fdc647d6bf743e46460
MD5 d3d3f11748695017bf8bf3943d8292e4
BLAKE2b-256 d02bc16f8e316e9015f24ab471bc68ec43bfbe182759eacd1a12c78dc63825db

See more details on using hashes here.

File details

Details for the file canns_lib-0.6.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for canns_lib-0.6.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 717dfafe68f0dd0ecabb591c50cbe48a008d1920688e8dfd73e923af40830462
MD5 c5e188dc5c0ea52eed7434738048c2ff
BLAKE2b-256 9b8628b83df95e52e546f5336fbccef763970e6797bb3d87f27e57564a4a8451

See more details on using hashes here.

File details

Details for the file canns_lib-0.6.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for canns_lib-0.6.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d3ca218c1e226fb65de8640d06a591a9a6c10a69c7b4f403c196682922fe8458
MD5 233a5b128b9ce823f88b2d96c501f236
BLAKE2b-256 d8b3d6561293c4944387d25ea4d41dda221fa50bc34024c7e3b6ff9e84e1468b

See more details on using hashes here.

File details

Details for the file canns_lib-0.6.5-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for canns_lib-0.6.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 973ad6c8efead4fe51a1b60b56837dd8e2cfa5e099f934c20107d2d01db93686
MD5 43045b5b247d21de7585c78f801b33bc
BLAKE2b-256 b02e73888a6e3eddee4181dd16a570615cf55fc0577fcafe2dfcde3916a81c58

See more details on using hashes here.

File details

Details for the file canns_lib-0.6.5-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for canns_lib-0.6.5-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 95a2a72ea14ef388a7ccfd15669db1a4f929bf50089a4c41ff8f73a874610aaf
MD5 74ffc4b0e6560a03013de19dc5830941
BLAKE2b-256 1518f32235932b756bf4689bd39cc73212a1a1fdf0c3dce05a6c0df0b3b9cefb

See more details on using hashes here.

File details

Details for the file canns_lib-0.6.5-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: canns_lib-0.6.5-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 399.1 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for canns_lib-0.6.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 5aebbce09e290fbc4d11d28bdffa9cb7691e310d12e7d64501265e550505d072
MD5 dbbdf50083b5144dd5ec99785aeddec2
BLAKE2b-256 617ce79e2ee371ca1ff884fe30069dd058e475416f6f5d1b0078237b16a34ef3

See more details on using hashes here.

File details

Details for the file canns_lib-0.6.5-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for canns_lib-0.6.5-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c2f0df2491803d460839a5eae08108a1f2a79b9139f0e2875d05a53076c89651
MD5 cfabf1cc9768017a353405d499b52b93
BLAKE2b-256 a9c3c4d66c71cb84d5cf6a6ececdaf3b28c67bd89d07220fce2582931a7a4362

See more details on using hashes here.

File details

Details for the file canns_lib-0.6.5-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for canns_lib-0.6.5-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f6ea535331d965b1b20e2e134f34fee19bc9d29034adac07d8430c488f46bee9
MD5 710f38d971168d86eeac71ebc0e66d78
BLAKE2b-256 f7ec117dd22ec2390f4234fdd1764c2b0b8dd299a4b3d4cbee4d471cc4348f33

See more details on using hashes here.

File details

Details for the file canns_lib-0.6.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for canns_lib-0.6.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d66ccd3ba45b754fcb37446c666e2695398d9119b30724d0d0325e68b843da40
MD5 c03a92917e2b8e7cd68bfb89822dc163
BLAKE2b-256 d82cbbdb19cbacedab783ccbb5af59c92cc1166f4623ce186872371b43937452

See more details on using hashes here.

File details

Details for the file canns_lib-0.6.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for canns_lib-0.6.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1e7cfe00d7932779dff1278f7bd80a51aec9e487ec06c8bdf7f8d639f8491dc7
MD5 e2c019bfbb7d5e291dfefd96aff1d1c2
BLAKE2b-256 ec326cb3c7ecef4632593026208dbe1bc1689f4a48018fdb235099d3d2ceecbf

See more details on using hashes here.

File details

Details for the file canns_lib-0.6.5-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for canns_lib-0.6.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 af580b099ee173250d80001b9b848d6549a48926d5dd9d29eadb752725780283
MD5 136771cd67b6b66d75fd9af58daf8860
BLAKE2b-256 ee3d454ccf7298f961f7cdf8b01389d90d64a1e73416c85cb83c17fab9af549d

See more details on using hashes here.

File details

Details for the file canns_lib-0.6.5-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for canns_lib-0.6.5-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 6c2c056c1b2b859463aaf2428a635625c91722e27db04db4658e3e92129940c3
MD5 57e3d94705441b1df8647b875d9efa56
BLAKE2b-256 c2be4441cf398ddc9796532aa6a215cb42e744f19a5f8a9683e14e87f8069b0d

See more details on using hashes here.

File details

Details for the file canns_lib-0.6.5-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: canns_lib-0.6.5-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 401.2 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for canns_lib-0.6.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 856ab321a6717485647d412bcbb95cdc15cfde4ba3d154b07d8c9c6ee1b1218b
MD5 eaf4e1e2736a975779e9b2536dfd4e3c
BLAKE2b-256 65d45cc64f51fe8e1bf33a8dd8aeb072f9ea2d9bae852be6b7a52f2772a169d4

See more details on using hashes here.

File details

Details for the file canns_lib-0.6.5-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for canns_lib-0.6.5-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6e666a57ea8ad95352d7343588a9826554df3a9680bd0ae36beb3d9bb4d20ab6
MD5 af92d93881d334d935f1aa7a7d3e9233
BLAKE2b-256 0a18313eb56eb60d888ba75c6293414d9dabff3f8d18fd2f72b0c3e120613f76

See more details on using hashes here.

File details

Details for the file canns_lib-0.6.5-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for canns_lib-0.6.5-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 3428e99fdd0a76fb39d88ecc01972f4799a70e5fdb01a81ebf7fa38f22cffb1a
MD5 dc6bd6f574742d9af5d0283a027c738f
BLAKE2b-256 fd01bee3c1884bcf8922b6141bfcdeaa6b041e98467f022fd7d206b694803d52

See more details on using hashes here.

File details

Details for the file canns_lib-0.6.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for canns_lib-0.6.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 750e2528ad4eb9e1ed25b009859ebfdcab66939970657d9ab7f6a933d0816191
MD5 c1ccefcde1e1528b9be6bc40fc78844b
BLAKE2b-256 a41ca209870bdad4889f7dd9fb753696084e7879b4bbba634d5ccb76dbb69bc9

See more details on using hashes here.

File details

Details for the file canns_lib-0.6.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for canns_lib-0.6.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0bfe39604ffa3bd364516fdab09d29eb816dfc2b97774592e50585e4e1a32b3c
MD5 23ad99b70f49cdee6ee55023b397b64a
BLAKE2b-256 36691748c555fb8a526b181d736822b637848570f16bdd6b451157e6f74f2ad2

See more details on using hashes here.

File details

Details for the file canns_lib-0.6.5-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for canns_lib-0.6.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1d199a01cfc4000331c5261096aed79fc5bd4f84c618a3fde831b87f89601069
MD5 5314219e10eea6f502e97f67ea8fd120
BLAKE2b-256 081c8ff018aec5c6c5b6669874d8786b333f9478b1bcbe52bc384d8c04ee522a

See more details on using hashes here.

File details

Details for the file canns_lib-0.6.5-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for canns_lib-0.6.5-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 26747e7c06d8d1f83c3e8c087c6eb5e87911e935234727db987ada77e25f4d63
MD5 47ab975eb6490c3b4362e0038ab86bed
BLAKE2b-256 3521833aa260d12376a00f3c57a356ca3b00574d4196ce623af78435eaab453c

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