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.8.0.tar.gz (340.2 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.8.0-cp313-cp313-win_amd64.whl (408.4 kB view details)

Uploaded CPython 3.13Windows x86-64

canns_lib-0.8.0-cp313-cp313-musllinux_1_2_x86_64.whl (581.2 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

canns_lib-0.8.0-cp313-cp313-musllinux_1_2_aarch64.whl (535.9 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

canns_lib-0.8.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (517.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

canns_lib-0.8.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (484.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

canns_lib-0.8.0-cp313-cp313-macosx_11_0_arm64.whl (437.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

canns_lib-0.8.0-cp313-cp313-macosx_10_13_x86_64.whl (482.4 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

canns_lib-0.8.0-cp312-cp312-win_amd64.whl (408.8 kB view details)

Uploaded CPython 3.12Windows x86-64

canns_lib-0.8.0-cp312-cp312-musllinux_1_2_x86_64.whl (581.6 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

canns_lib-0.8.0-cp312-cp312-musllinux_1_2_aarch64.whl (536.3 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

canns_lib-0.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (517.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

canns_lib-0.8.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (484.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

canns_lib-0.8.0-cp312-cp312-macosx_11_0_arm64.whl (437.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

canns_lib-0.8.0-cp312-cp312-macosx_10_13_x86_64.whl (482.6 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

canns_lib-0.8.0-cp311-cp311-win_amd64.whl (410.8 kB view details)

Uploaded CPython 3.11Windows x86-64

canns_lib-0.8.0-cp311-cp311-musllinux_1_2_x86_64.whl (583.2 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

canns_lib-0.8.0-cp311-cp311-musllinux_1_2_aarch64.whl (538.8 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

canns_lib-0.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (519.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

canns_lib-0.8.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (487.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

canns_lib-0.8.0-cp311-cp311-macosx_11_0_arm64.whl (437.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

canns_lib-0.8.0-cp311-cp311-macosx_10_12_x86_64.whl (483.1 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for canns_lib-0.8.0.tar.gz
Algorithm Hash digest
SHA256 febc4a850da71f7dd0794fd7165ef164bd571e20ac4cee92a75b7161bee5df75
MD5 344a2e07e9f5862dde8168169d94934f
BLAKE2b-256 b5af8e41dd9480adc49d1dae44346fd849ee4a4dacccfe1762c7707301af478a

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for canns_lib-0.8.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 28c1b9301884e60520dc1736d505b7f309a87b186bb7a70ae7d02a8ed9c296a2
MD5 124ffcf502ae811aee3769093aa9065a
BLAKE2b-256 579f16f5db47088bc1fc43a9143f5b749b4df07e83871050c69e90c1d048e3b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.8.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 933a80a387cb5ebe396d9294e948d9a1b5be3d5a0ca8e24dfc80888b61cfd8ac
MD5 778bf85d745d358ad939604ef08597b7
BLAKE2b-256 deb9b8b20c40c40aae89f5ff259cb7143b7ec68418fba63d83a3c2fc16e9673f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.8.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 02a50491b118cbe2cb0a570591d1751da5c3cb00537960765f04529efdb5fa67
MD5 c234fff1352ff62dec08f14d6c185eae
BLAKE2b-256 83abed885f7875ed85018fbb77b7d142803a807aef0440c2b94d2cf504c30b28

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.8.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 29057229500b82d3c69cc4fdd4e993f0b1c79d0b94e4576f260f9da74aa03802
MD5 a9060d8c555349e61811eb60f45f5c3b
BLAKE2b-256 9537b0d659461b9844c6c89723ebd564c5a17cd89416cace32f9a241f13c7f8e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.8.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5360f7358d61bbe56952c8a2694673aeabb4736bd48d5158341c2f3588e43fcc
MD5 8f9931d3e4f7c71f4a4f26bdb1ec1562
BLAKE2b-256 32db4a83e7132414f1675354c5ebe0fbd170e641014d3db81c3117878776600c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.8.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ff373a6b99426cb651d30a7bd8e80405bf62428270cdff808128d551ac3e3fae
MD5 1b25b85445d894abd9b35f2ea91436db
BLAKE2b-256 cbe05cf841c69063ae038df19a0daa3bad2727ae037f3f86fbe06d6afac1af5c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.8.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 5bb5423912b3baa8d4c96718ce48165f7e85c2c932162546496419dcedd322f9
MD5 2fa94d5ed289867341786936c793b351
BLAKE2b-256 f653b6fab5270550fc74e195ec8047f0331abb76206f60181a9bf49da7ecedb3

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for canns_lib-0.8.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8f9aa270d340223c7336903541abaf1ca2931137a104b592fcdd878f98df4986
MD5 8733b959742a9d5236a4342a505f4f0b
BLAKE2b-256 cb195cc1a49c08d68ed71c7181ede07dffe9d9b0cf255f752ca859863d9d82b7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.8.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e82fde9035f90a833e6178861af358c0cac53f4310ec121a4fa03f047d60bd1b
MD5 3e0f745812281bb6cc0477a528b52f9f
BLAKE2b-256 1fd724cd4efce43a3664fee202c3c65f8dd0f0401ebd25f28b37fa3697a32c9b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.8.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 26d423d162f0cef30b15c494cfeabb7954cd60470ecc510663f9b60f029aac27
MD5 eb427cc1b5f71ccfc7f458a267c0eca0
BLAKE2b-256 ce517dd50b92c7fd80a5810b720ed69c45a1ac134be78044c0adc74495dd2652

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5936331be8eb64ae04ad6c8dfa21254fd74de62c3e7fa9fc72c280d8853b87aa
MD5 b83ae52a2513af291e20a643eef9d622
BLAKE2b-256 dbd346dc238cc2fae4b43177b5efc2bc54830901cdc4c451826dea1aa7805c0e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.8.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f4755488f9a15de7e5edeb12871fff5d68846fbd3aff2369eaca9a5d0d96a032
MD5 94d85f55e94709b4cc77a3aca021d11d
BLAKE2b-256 556ba08e90d5b4deb96697fc6dff40e8a9a9d716735260ed0809dddeeb44c771

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.8.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d16c86de24ad695b882b153f549604a3f7a58ca931395cc6c4c98a8f24586d7a
MD5 2759d264780ddd9de249e0c76bc9a1ad
BLAKE2b-256 f9f2688251d25c0004c5c57e44cb6875876ee89a4c1ede6032a30fe9311955e2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.8.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 8de3695df1c3fab20f406771b83a24d569fca96deeaa3f049707260d0986f8a5
MD5 dbd250b180c62ce34a9a565f8d42543d
BLAKE2b-256 ef1f6732e1e1e185437aaf3eac2bd3e7b4ae58bd9f16525225465f4895ecff8a

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for canns_lib-0.8.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 5233db913215a2bd1906795404d75d64fcd37fe40a9d0d6d4c8ab6845e1cfce7
MD5 5b6e28a40d7120a7e71b2daef086f06d
BLAKE2b-256 df732f67aaca203b50d1a71edefc254597bf3480a4ff7414fda9ebf15ef9b09c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.8.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b5211f1d908fe817ba6c8e6565169fbf5a24ce82e4f70679d181d961e04aadce
MD5 07964799da2ae824a59b47235d995370
BLAKE2b-256 6fa19ba93b072c34a9f69abd62d8b30a2e5a2fd69fe47ca9bd3cd4e8a4bd4e68

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.8.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6afe98b5963099bc2797e25a44ceea19cbf12fb87c2364d6f520f1d3fa98130b
MD5 7d9b3af1fe613c3fbdf7fa4a774cab7e
BLAKE2b-256 e8c796ce1b6a34f52a6874f661945abc9609f3ab75a981ff0067d0aed37fc765

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 58dbfc60521f9e240587723b61de56c795799bf5e4b1651ae0d84f87dd5de49a
MD5 07cc550c848e196dccb55d4b8d6d7a40
BLAKE2b-256 f0aec079e630e19f9487f19f9ca08b49156f2d18014244bf2a24aa893e5ff151

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.8.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 64b713785794a2677edf9f117c77fab5f2a75677c37bf258c8175984ad6cc42b
MD5 69504c6f39f491d7bb634c2795a8729a
BLAKE2b-256 43a68cba3441f50c52681f1d7ff38eb6b33968b3530b8fe01dc34ca8f2500822

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.8.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ebdffc65f076ab17b4153af6eae49d20dccfc9b1bb843d3d259f6f372ff40a53
MD5 3ea7cd9823f645fe1cd9c1e34d299d1e
BLAKE2b-256 737ebd18ef6c86595c18060d3e50b97ea4de2ee391b15f75f4169b7301d631ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.8.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6608b9fb8d6e9707a9372ff0f7eb41c072a8d005098147076524f8eea1925af5
MD5 50f82a2efe333638bb2e92fc13d2016e
BLAKE2b-256 fc576a9c1ec9d09cf141b335eb48e7cd26c6cd49adcebe0cbecc7478608a9805

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