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.7.0.tar.gz (352.0 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.7.0-cp313-cp313-win_amd64.whl (401.6 kB view details)

Uploaded CPython 3.13Windows x86-64

canns_lib-0.7.0-cp313-cp313-musllinux_1_2_x86_64.whl (577.9 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

canns_lib-0.7.0-cp313-cp313-musllinux_1_2_aarch64.whl (527.2 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

canns_lib-0.7.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (512.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

canns_lib-0.7.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (475.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

canns_lib-0.7.0-cp313-cp313-macosx_11_0_arm64.whl (432.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

canns_lib-0.7.0-cp313-cp313-macosx_10_13_x86_64.whl (482.2 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

canns_lib-0.7.0-cp312-cp312-win_amd64.whl (401.8 kB view details)

Uploaded CPython 3.12Windows x86-64

canns_lib-0.7.0-cp312-cp312-musllinux_1_2_x86_64.whl (578.3 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

canns_lib-0.7.0-cp312-cp312-musllinux_1_2_aarch64.whl (527.3 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

canns_lib-0.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (512.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

canns_lib-0.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (476.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

canns_lib-0.7.0-cp312-cp312-macosx_11_0_arm64.whl (432.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

canns_lib-0.7.0-cp312-cp312-macosx_10_13_x86_64.whl (482.0 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

canns_lib-0.7.0-cp311-cp311-win_amd64.whl (403.8 kB view details)

Uploaded CPython 3.11Windows x86-64

canns_lib-0.7.0-cp311-cp311-musllinux_1_2_x86_64.whl (580.0 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

canns_lib-0.7.0-cp311-cp311-musllinux_1_2_aarch64.whl (529.8 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

canns_lib-0.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (514.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

canns_lib-0.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (478.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

canns_lib-0.7.0-cp311-cp311-macosx_11_0_arm64.whl (433.0 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

canns_lib-0.7.0-cp311-cp311-macosx_10_12_x86_64.whl (482.4 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: canns_lib-0.7.0.tar.gz
  • Upload date:
  • Size: 352.0 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.7.0.tar.gz
Algorithm Hash digest
SHA256 eda14109e34790af0423009189e421879a08bffd867d4ced56e950a447bbff1c
MD5 6da6c754ac21ce48ccbc63823c669d79
BLAKE2b-256 d49877f6e19add998cb92f753dc7af2f24b8bf017564df559d3c17568365782a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: canns_lib-0.7.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 401.6 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.7.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c424ba1eccb8de3a3aee121def5f44b3d52fbaa48e35c8384007de68eb26c621
MD5 fc68783ac8b6fbffd0b6e57cb4da677f
BLAKE2b-256 57b5efcf7c00061da6aeb631b5c150a9282650eec565d2d7e407d3353aea72aa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.7.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 508284c527eed6eee97ca6d9ff4dff35123fdedbec5b36bbf2a0d07bf8712a70
MD5 f9697c8f708163c1e718b60cad1f716e
BLAKE2b-256 78a82c5aee4fd59d2320603e89d90cb49875f087c846a7edd4d16c2d74e558f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.7.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 7a1987dd763bfba7207d873d63ab423610339fbc3b5344d2b1236e4d70b58397
MD5 d85854a8bae245361ee0ea53a7620389
BLAKE2b-256 7d9dcf1519c98f2d41ca88acc627581d975805064445b7355b565b341482d88d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.7.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 82ce4528bd84b15d187cfad5942ba6f27c3cdf4c7c73444da7e716bb392c6b7d
MD5 e1cbba6cba4febc4bd59bcd3eb44cd94
BLAKE2b-256 c74bc6be159248413cf490b41a899022d4e800fdaa1f5fc579bd410700b93d71

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.7.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0bf891449817c3b467c44047c7b1dabf3621114850ee68fb571d5501255b39ed
MD5 025def44d13fda7ddc4b5181ad26b981
BLAKE2b-256 4a391d1e7baeaa2351632994679662d6652b808a3010073ccbfc9c7a1ead5ac3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.7.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d2046c5dc5d3d7853d5abbc331320de36b5d7578e2c56ae25d50e8d978618054
MD5 518f192c86dcf11ea1929f36de52ff1a
BLAKE2b-256 74455fa455bedb0c4ae2fe6bb75cdad8df49d45a83420296689bea7232e761be

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.7.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 eca8a31e78b3873dffab642aa44b33c803e3cbe75904ae98ec36f39ccf2b7951
MD5 03ed7a7aed3ecc83dfbbf95b9c4e6c20
BLAKE2b-256 9848320267e96c6bd8b31ed67d9754d6a5a0b2f5f0f6fe10993c8b0361dd35a9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: canns_lib-0.7.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 401.8 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.7.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 7474413ec04f9a3b2aed0db6e3a6254bde52fc93d7b1ba77801f65e65b16ef66
MD5 00fd72937462478984f70c7ab7607641
BLAKE2b-256 f359ee86e8151b4ef967ef82d5fa7cc70891512190a7aea54ce953816a7f2d69

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.7.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fb556b6335dbd818600609c3a841b4f2b7117d692bf99ad20dc29d94f77fdc51
MD5 4379bab497a150f2a031eb0329a4b632
BLAKE2b-256 db721044dc4413ddc04be22442ec589df22eb1e19167e560bbf45a799b069186

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.7.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9da928bd17f5096cab910e72ed3663055b4763d6277e1e74960502e9bed19715
MD5 f92048aad49d33c333e8c1ecfc91409f
BLAKE2b-256 cd3621125c700902e581e0b83347e42929d215aafb62f64462716028261dc8cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 16dbfc76f0a8d1ed9a18043a72958a02a09368503451722eca01cc1774c8ce13
MD5 c913063a2ef3f601955b133bba050386
BLAKE2b-256 50b8161835549af846161c135657388442633ecb41a2a10614eb7fabd01f4642

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8e51a6256f4f7a605b3b3e6daf9142048e21b4fb52b89943fa28abfdea5ac681
MD5 ca1ae93c2d5b2ed07747ea382eb18e21
BLAKE2b-256 21a3747047619f2b47c327e7b5b511bd71c97828d0fcf58048235d10aec38a3d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.7.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3677c70612816bbe72caa0876e322a3d271ef689b909332f1ef127949b738411
MD5 efc06b49d676909c5bcbdc0d11479410
BLAKE2b-256 3c47855fcc740018da376b2e2821b8f4159fff91cbb2455fd6c50d634705ca67

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.7.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 b2ea78955f3f099dc218db8f617198313a4150831cb3834384fa1058c01a4f72
MD5 3269e963179531670284c4e8af6c440b
BLAKE2b-256 91bf12d464d51959a68fe5849a7661ff6781cc5011e4d0b319a5e2b70f4ecd97

See more details on using hashes here.

File details

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

File metadata

  • Download URL: canns_lib-0.7.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 403.8 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.7.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6e596653db7f94a8470e063895ffe3de7a87f00f93aaf9d14d44c1341cb8fa76
MD5 966d2f29c7db21233e5285822c0d4a63
BLAKE2b-256 a65125775566cda3b2c7eeb976e934258b830022e1751b83268e211dbbcad71f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.7.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bc4558721444295fc9cbc9ca1015024cc690f6911b7aabfd68815e49e85fd0e1
MD5 632ec64a5baf181da9f31d1ecf371d71
BLAKE2b-256 14dafafca7ede96c090c028678c9db0e6c7c828b8fd1d5eb8c1812ea1cf061ec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.7.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f2a7be0c164ef431fcb177ca67c0648e448863660e43ddefee8dea7e867c5848
MD5 e8e31796e501849a30ebdc7acac14fb1
BLAKE2b-256 e2103aba5465e4c0578ba2c08a93efab2ea462550f23871e036dc4f0e82d1c6c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1dfa5bf23680ec8cf3beb6f0b33d3b768085f02353a162124da664057d308589
MD5 c830f3f7703c5b7d4bc5a04e03059a49
BLAKE2b-256 e4465f1353d5e19a5949f24b30bc1c409c7ab69f31a6848a01d935004b2d61da

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 180d02bf14da97a3898c47952e4962b10b8805a9ee7bdd4f07d7ca34aa557eff
MD5 615e49b9066d7f7e84162905f5b590de
BLAKE2b-256 002dfeaf28935cfe6693364d7c52229733a6bbb54078ab3ff935ef6adce20b2a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.7.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 866a0d03798d8fd37f61036a684b073df5819740923e757654293d73abd0e115
MD5 e5a4c992a780e5b993bb53d9b4993f6b
BLAKE2b-256 fd27e20d51815fa5f13c7be6b58c237894baf5b645fbd94b57a2b7188ee49d32

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canns_lib-0.7.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ef34a0b2df247facf8a1f12da935b9b0d42fd795ddbf1cc7d23e83da52639fcc
MD5 b447b8f9c773b56bec06ec337f4241f5
BLAKE2b-256 e5fe82728ac3e9d222ea3b2bc0fb7c1d51ab4ef479f9159a3d0af18970c52205

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