Skip to main content

A spiking neural network solver for constrained convex optimization (QP/LP).

Project description

snn_opt

A spiking neural network solver for constrained convex optimization.

License: Apache 2.0 Python 3.9+ Version Cite Docs


Abstract

snn_opt is a Python implementation of the spiking neural network (SNN) → convex optimization equivalence, developed as part of an ongoing research program on neuromorphic computation for classical machine-learning problems. It solves quadratic and linear programs of the form

$$ \min_{x \in \mathbb{R}^n}\ \tfrac{1}{2}, x^\top A x + b^\top x \quad\text{subject to}\quad C x + d \le 0, $$

by alternating gradient descent — playing the role of leaky-integrate membrane drift — with discrete projection events that clamp the trajectory to the constraint boundary, the optimization analogue of an integrate-and-fire spike. The construction follows Mancoo, Boerlin and Machens (NeurIPS 2020) and is the canonical solver underlying the SNN-X publication series (PCA, Ridge, TDSVM, Norm, SVM, CF, KRR, Procrustes — see Applications).

This repository is intended both as a research artifact — every published SNN-X paper can be reproduced from the code here — and as a teaching resource for students entering the area: it ships with annotated examples, a self-contained mathematical writeup, and a benchmark suite that visualizes convergence and projection dynamics.

The problem

Given a positive semi-definite Hessian $A \in \mathbb{R}^{n\times n}$, a linear cost $b \in \mathbb{R}^n$, and $m$ linear inequality constraints stacked into $C \in \mathbb{R}^{m \times n}$ and $d \in \mathbb{R}^m$, we seek

$$ x^\star ;=; \arg\min_{x}\ \tfrac{1}{2}, x^\top A x + b^\top x \quad\text{s.t.}\quad c_i^\top x + d_i \le 0,\ i = 1,\dots,m. $$

The class subsumes box-constrained QPs (set $C = [I; -I]$), linear programs ($A = 0$), kernel-ridge subproblems, support-vector machine duals, projected-gradient flows on polytopes, and the bulk of the inner solves that arise in receding-horizon control.

The spiking idea, in one picture

The continuous-time dynamics

$$ \dot x ;=; -\nabla f(x) ;-; C^\top s(t) $$

models a population of $n$ leaky integrators driven by the gradient $\nabla f(x) = Ax + b$, with a corrective spike train $s(t)$ that fires whenever an inequality $c_i^\top x + d_i$ would otherwise become positive. Each spike applies a minimal projection that re-enters the feasible set; spike inter-arrival times encode constraint traffic. Discretized with forward Euler and an adaptive step that reaches the boundary exactly, this becomes a fast projected-gradient solver with diagnostics that double as a neural raster plot.

See docs/theory.md for the full derivation, including the eigenvalue-based step-size choice that eliminates k0 as a hyperparameter and the box-clipping shortcut for problems like SVM.

Convergence and projection dynamics

Three diagnostic figures, regenerated from benchmarks/, give a quick visual sense of what the solver actually does:

Convergence on a random 50-D QP with 30 inequalities. The objective gap drops geometrically over a few thousand iterations; the iterate stability ‖x_{t+1}−x_t‖ mirrors it; constraint violation stays at machine-precision floor throughout. convergence
Projection-spike raster on a 4-D box-constrained problem whose unconstrained optimum lies outside the box. Each row is one inequality, each marker a spike (sized by displacement); only the four "active" faces of the box fire. The bottom panel is the corresponding objective gap. This is the literal sense in which the solver is spiking. spike raster
Warm-start speedup on a sequence of 30 drifting QPs (a stylized MPC workload). Cold-started solves take ~260 iterations each; warm-started solves drop to ~140 from the second problem onward — an essentially-free 1.8× speedup, the property that makes this dynamic well-suited to receding-horizon problems. warm start

Reproduce these from a checkout with python benchmarks/run_all.py.

A closer look: trajectory and raw-vs-optimized modes

Two figures generated by the example scripts give a more concrete sense of what the dynamics look like in 2-D, where everything is easy to visualize:

2-D trajectory and projection spikes

State evolution and 2-D trajectory for examples/example1_basic_2d.py — a constrained QP whose unconstrained minimum lies outside the feasible polytope. Left: per-component value over time, with orange spike markers at projection events. Right: the trajectory in state space superimposed on objective contours; the trajectory glides down the gradient, hits the active facet, and slides along it to the constrained optimum.

raw vs optimized solver mode

Output of examples/example_raw_mode.py. Left two panels: the trajectory under "raw" (no auto step size, no adaptive projection) and "optimized" defaults — both reach the optimum, but the optimized run does so in 201 iterations with a single projection event versus 300 / 5. Right: convergence on a log-objective scale; the optimized run gains roughly 30 orders of magnitude per 100 iterations once it leaves the boundary.

Installation

snn_opt requires Python 3.9+, NumPy, and SciPy. The fastest path is PyPI:

pip install snn-opt                # core, prebuilt wheel (no compiler needed)
pip install "snn-opt[examples]"    # also installs matplotlib for examples
pip install "snn-opt[dev]"         # examples + cvxpy + pytest + ruff

The PyPI distribution name is snn-opt (hyphenated, lowercase, per PEP 503); the Python import name is snn_opt. So you pip install snn-opt and then import snn_opt.

For an editable install from a checkout (development workflow):

git clone https://github.com/ahkhan03/SNN_opt.git
cd SNN_opt
pip install -e .                   # core
pip install -e ".[examples]"       # also installs matplotlib for examples
pip install -e ".[dev]"            # examples + cvxpy + pytest + ruff

For a specific commit (reproducibility for papers/collaborators):

pip install "git+https://github.com/ahkhan03/SNN_opt.git@<commit-sha>"

The package can also be run without installation — every example and test sits next to a small sys.path bootstrap that points at src/. Smoke test:

python tests/test_installation.py

Compiled C++ backend

The PyPI wheels ship a precompiled C++ kernel (snn_opt._kernel) that accelerates the inner adaptive-projection loop by roughly an order of magnitude over the pure-Python path. Opt in via the backend keyword:

result = solve_qp(A, b, C, d, x0, backend='c')        # compiled kernel (auto)
result = solve_qp(A, b, C, d, x0, backend='python')   # reference (default)

The compiled kernel comes in three numerically identical variants that differ only in how the inner matrix–vector products are threaded:

backend matvec threading
'c' auto — OpenMP multicore when the wheel was built with it, else single-thread
'c_serial' forced single-thread (SIMD only)
'c_openmp' forced OpenMP multicore (raises if the wheel was built without OpenMP)

Only the matvec is data-parallel; the Euler recurrence and the greedy projection are inherently serial (an Amdahl ceiling of roughly 2–3× on a few cores). Because per-call thread fork/join only pays off on large systems, the multicore path is automatically skipped below a work threshold, so 'c' matches the serial path on small/medium problems and only spins up threads on large ones. Multithreading honours OMP_NUM_THREADS; snn_opt._kernel.HAS_OPENMP and snn_opt._kernel.max_threads() report the build's capability.

All backends are kept in lockstep by the parity test suite (tests/test_c_backend_parity.py). The C kernel supports dense problems with projection_method='adaptive'; sparse and non-adaptive paths transparently use Python. The same kernel source is HLS-compatible and is the basis for the FPGA deployment track. When the precompiled kernel is unavailable on your platform (rare), the 'c*' backends raise a clear error and the Python backend continues to work.

Quick start

import numpy as np
from snn_opt import solve_qp

# Minimize ||x||^2 subject to  x_1 + 2 x_2 <= 1  (and that's it).
A  = np.eye(2)
b  = np.zeros(2)
C  = np.array([[1.0, 2.0]])
d  = np.array([-1.0])
x0 = np.array([1.0, 1.0])

result = solve_qp(A, b, C, d, x0, max_iterations=1000)

print(result.summary())             # converged?  iterations?  spikes?
print("x* =", result.final_x)
print("f* =", result.final_objective)

For repeated solves (warm-started receding-horizon problems), construct an SNNSolver once and call .solve(x0) per problem instance — see examples/example4_warm_start.py.

Examples

All scripts live under examples/ and are runnable as plain python examples/example_name.py.

# Script Problem Highlights
1 example1_simple_2d.py 2D quadratic with two linear cuts Smallest possible runnable demo
1b example1_basic_2d.py Same problem, with trajectory plot See examples/example1_basic_2d.png
1c example1_advanced_2d.py Shifted feasible region, infeasible start Spike raster + violation plot
2 example2_3d_polytope.py 3D QP with 4 hyperplanes Multiple active constraints, vertex solution
3 example3_linear_program.py Box-constrained LP ($A=0$) LP via the same machinery
4 example4_warm_start.py Sequence of related QPs Receding-horizon / MPC pattern; spikes drop $30 \to 0$
5 example5_infeasible_recovery.py Infeasible initializations Automatic projection to feasibility
6 example6_equality_constraint.py Equality via a sandwiched band $x_1 = a$ as a tight $\pm \varepsilon$ inequality pair
7 example7_svm_dual.py SVM dual with kernel Box clipping + auto step size on a real ML task
example_raw_mode.py Bypass auto-config Compares raw vs. optimized solver settings

Run them all in sequence:

python examples/run_all_examples.py

Documentation

  • docs/theory.md — derivation of the SNN/convex-optimization equivalence, step-size analysis, projection geometry, convergence criteria.
  • docs/applications.md — one-page summary of each SNN-X paper with links to PDFs.
  • docs/api.md — hand-curated API reference.
  • https://snn.ahkhan.me — companion site, designed for a broader audience (students, curious researchers).

Applications

The framework is currently demonstrated in:

  • Khan, Mohammed & Li (2025)Portfolio Optimization: A Neurodynamic Approach Based on Spiking Neural Networks, Biomimetics, 10(12):808. doi:10.3390/biomimetics10120808. Portfolio selection cast as a constrained QP and solved by the spiking dynamics implemented here.

Additional applications are in preparation. As they reach publication they will be added to docs/applications.md.

Citing this work

If snn_opt plays a role in your research or teaching, please cite both the software and the framework paper:

@software{khan2026snnopt,
  author  = {Khan, Ameer Hamza and Li, Shuai},
  title   = {snn\_opt: A Spiking Neural Network Solver for Constrained Convex Optimization},
  year    = {2026},
  version = {0.2.0},
  url     = {https://github.com/ahkhan03/SNN_opt},
  license = {Apache-2.0},
}

@inproceedings{mancoo2020understanding,
  author    = {Mancoo, Allan and Boerlin, Martin and Machens, Christian K.},
  title     = {Understanding Spiking Networks Through Convex Optimization},
  booktitle = {Advances in Neural Information Processing Systems (NeurIPS)},
  year      = {2020},
}

The full per-paper bibliography of the SNN-X series is maintained at docs/applications.md.

License

Apache-2.0 — see LICENSE. Permissive, with an explicit patent grant; suitable for both academic and commercial reuse.

Acknowledgments

Developed at the School of Artificial Intelligence, Taizhou University.

This codebase implements the SNN-QP research program led by Prof. Shuai Li (IEEE Fellow; Faculty of Information Technology and Electrical Engineering, University of Oulu, Finland), whose work on neurodynamic optimization originated this line of inquiry. The mathematical framework follows Mancoo, Boerlin and Machens (NeurIPS 2020) and the broader projection-neural-network lineage (Hopfield–Tank, Kennedy–Chua, Xia–Wang, Liu–Wang). Pull requests, bug reports, and citations of the SNN-X papers in your own work are all warmly welcomed.

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

snn_opt-0.2.0.tar.gz (52.4 kB view details)

Uploaded Source

Built Distributions

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

snn_opt-0.2.0-cp313-cp313-win_amd64.whl (129.2 kB view details)

Uploaded CPython 3.13Windows x86-64

snn_opt-0.2.0-cp313-cp313-manylinux_2_28_x86_64.whl (273.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

snn_opt-0.2.0-cp313-cp313-manylinux_2_28_aarch64.whl (265.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

snn_opt-0.2.0-cp313-cp313-macosx_11_0_arm64.whl (123.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

snn_opt-0.2.0-cp312-cp312-win_amd64.whl (129.1 kB view details)

Uploaded CPython 3.12Windows x86-64

snn_opt-0.2.0-cp312-cp312-manylinux_2_28_x86_64.whl (273.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

snn_opt-0.2.0-cp312-cp312-manylinux_2_28_aarch64.whl (264.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

snn_opt-0.2.0-cp312-cp312-macosx_11_0_arm64.whl (123.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

snn_opt-0.2.0-cp311-cp311-win_amd64.whl (126.4 kB view details)

Uploaded CPython 3.11Windows x86-64

snn_opt-0.2.0-cp311-cp311-manylinux_2_28_x86_64.whl (270.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

snn_opt-0.2.0-cp311-cp311-manylinux_2_28_aarch64.whl (262.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

snn_opt-0.2.0-cp311-cp311-macosx_11_0_arm64.whl (121.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

snn_opt-0.2.0-cp310-cp310-win_amd64.whl (125.8 kB view details)

Uploaded CPython 3.10Windows x86-64

snn_opt-0.2.0-cp310-cp310-manylinux_2_28_x86_64.whl (269.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

snn_opt-0.2.0-cp310-cp310-manylinux_2_28_aarch64.whl (261.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

snn_opt-0.2.0-cp310-cp310-macosx_11_0_arm64.whl (120.3 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

snn_opt-0.2.0-cp39-cp39-win_amd64.whl (126.0 kB view details)

Uploaded CPython 3.9Windows x86-64

snn_opt-0.2.0-cp39-cp39-manylinux_2_28_x86_64.whl (269.5 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

snn_opt-0.2.0-cp39-cp39-manylinux_2_28_aarch64.whl (262.3 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

snn_opt-0.2.0-cp39-cp39-macosx_11_0_arm64.whl (120.4 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

Details for the file snn_opt-0.2.0.tar.gz.

File metadata

  • Download URL: snn_opt-0.2.0.tar.gz
  • Upload date:
  • Size: 52.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for snn_opt-0.2.0.tar.gz
Algorithm Hash digest
SHA256 345a25cf982d710a823db13a1408ed697628d29f97acd412c91d241c0dca57c6
MD5 7a4b4538bb13dc5bf28fad296e87a108
BLAKE2b-256 d437fee202bc421db95420b6455d77640640d2ac70adbafc8a749502222457d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.2.0.tar.gz:

Publisher: wheels.yml on ahkhan03/SNN_opt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file snn_opt-0.2.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: snn_opt-0.2.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 129.2 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for snn_opt-0.2.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 539353581e4d2342ddf193f350c5d4c9d317022aef91b89b776898234a55bebf
MD5 43125a92f6e1309884caca60739d6a5f
BLAKE2b-256 230e7e1a1bc0fff58f3e13d912a3014532e6f88a0974b92b3a636ed6cade7a2f

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.2.0-cp313-cp313-win_amd64.whl:

Publisher: wheels.yml on ahkhan03/SNN_opt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file snn_opt-0.2.0-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for snn_opt-0.2.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4c335b6eb378bd9ddd31b6a471bc0568f0030fde13644662c4a49d41133bb67b
MD5 1f3ade76c7871f1c19ee872d7e0eea26
BLAKE2b-256 aac96e3b8961a87d86a61f4e076ac1e044d7f2320bcea0a89c50c6fe319bb5c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.2.0-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on ahkhan03/SNN_opt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file snn_opt-0.2.0-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for snn_opt-0.2.0-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b3fa28bb9aa79b5459f7abafdde78dd51b83ce214a3224cee0b9fd55006453d8
MD5 bfc0e0552e69f5b3fa4eb31abfa787b9
BLAKE2b-256 69f1834c6e5f5406dbf8010c2559e0b46d64e39737bbbf69d54ba7ed0f5a0f59

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.2.0-cp313-cp313-manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on ahkhan03/SNN_opt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file snn_opt-0.2.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for snn_opt-0.2.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9ebc1dfefca9adc8cfed183b6f674d25f2e99ed0f492ccfc6358ff06be4bb511
MD5 1b0d9a5e22bfc95a011c8d19504f7f88
BLAKE2b-256 e9bcb458138d32e9bd277c506ca40f985fec7ef3c4cfa8c743b26c981879406a

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.2.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: wheels.yml on ahkhan03/SNN_opt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file snn_opt-0.2.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: snn_opt-0.2.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 129.1 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for snn_opt-0.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 4d8871593095037d09d8f03cb5c9d31dbc1c785715e0203e97784f2846c7b906
MD5 24f986b071887f2719b11b5bbf17ae92
BLAKE2b-256 6888b1e5e7f9355c7dde2dcfa0e3257ec39ee858341a9267866f83033bf74449

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.2.0-cp312-cp312-win_amd64.whl:

Publisher: wheels.yml on ahkhan03/SNN_opt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file snn_opt-0.2.0-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for snn_opt-0.2.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0850c1a3a90fccd5451f3f15a2a4fc7ba169c79f7f0dbd48ed3df4cc36a25b61
MD5 8ce239c2c316a0e7b468de0ef3f60970
BLAKE2b-256 e7da44f8c202f6d3ce0f73da0c1925e50e3a5ba653ede831e69d94b59669096b

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.2.0-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on ahkhan03/SNN_opt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file snn_opt-0.2.0-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for snn_opt-0.2.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 86e2c2de54282358afa970bdfbbe1027860ca07c08c7d2fe329ffca1a68695f7
MD5 b82b0de9b51a0c0b6e24bf0524a63891
BLAKE2b-256 9ecbb2d4e4bba37809327da59424be85d4d523f74aac822b50c6abc787cb15e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.2.0-cp312-cp312-manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on ahkhan03/SNN_opt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file snn_opt-0.2.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for snn_opt-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3d47b00be037c0edadf19c889e15db16d00c1868177dbf011e3444f9aa1b6098
MD5 69c585c441d3b4b38427437193e9e4fe
BLAKE2b-256 36e66d65c784d92fb9c87586e4535e8eb191116e1dc6839ad33e81ff946d3246

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.2.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: wheels.yml on ahkhan03/SNN_opt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file snn_opt-0.2.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: snn_opt-0.2.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 126.4 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for snn_opt-0.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 5d083b40a936534f18db3a67cae6935c09446557bbf8198beda2d7bbbc6d79b4
MD5 ab15870f6799e3de129b5e39a0bf000f
BLAKE2b-256 5038de417351e3fccde95c45de665362c449e5ced73831508c5e307f956ae830

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.2.0-cp311-cp311-win_amd64.whl:

Publisher: wheels.yml on ahkhan03/SNN_opt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file snn_opt-0.2.0-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for snn_opt-0.2.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3dd9af18635f3241a0e8a65eafb3ccd044a9c3e0ae49aa39559b41d89c0514fd
MD5 6eee2b04caec00368b0ffce2852b3949
BLAKE2b-256 510418bc4705a889d3ed06ce001ed7867556de771c99f4297850ca377d156bc3

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.2.0-cp311-cp311-manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on ahkhan03/SNN_opt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file snn_opt-0.2.0-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for snn_opt-0.2.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b726ee0217b2ab0707a17d295b1fabfe7d29a1b7cbf87c335f434ca06a23e979
MD5 f05aeb6ba70fd2739d7c0204e81e279b
BLAKE2b-256 b15c0334a591149721fed54783b18dbd0dcadb1e1088829df25e37368a70653a

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.2.0-cp311-cp311-manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on ahkhan03/SNN_opt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file snn_opt-0.2.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for snn_opt-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 46b59efb9abda614ab07153dda823f28d116d243cbcb42bb55146b44699e83c8
MD5 ec1f5238c271706c8d8cab0120ad4b11
BLAKE2b-256 c03ec2e6187b889807dd514c3d5e6aabc532bc60821eefa1f415f46ffedb5e4b

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.2.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: wheels.yml on ahkhan03/SNN_opt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file snn_opt-0.2.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: snn_opt-0.2.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 125.8 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for snn_opt-0.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a67740414960b59f239cae8ca955078ea9707d94abc92d18ad845755f99c1324
MD5 dd7a4cf97a393a3d2536c5634d3c4fc4
BLAKE2b-256 0625dc8fc7009a0541387cd71ae70eb4a664b8dcd8079b40a4e42204b4dea09c

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.2.0-cp310-cp310-win_amd64.whl:

Publisher: wheels.yml on ahkhan03/SNN_opt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file snn_opt-0.2.0-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for snn_opt-0.2.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 70ccb64c11d93daa17ff3eaa6d170246853138489dc99fb89d347e7c3c3970af
MD5 2e09834df452fe53a4ce9b4bea4834a1
BLAKE2b-256 9747b700c2b0d5d22174c00f0161c4dd3fb0f164dd3c24cddcd09dbab3159b96

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.2.0-cp310-cp310-manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on ahkhan03/SNN_opt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file snn_opt-0.2.0-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for snn_opt-0.2.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 aaaee6a22db8037fe45a97ce68208536f893188031a6bad13291ddee0aaa68e5
MD5 7cbb47256f77d2627d22a90d577a4e1a
BLAKE2b-256 194afc32e7136eaa41fd93eda633d05f43a5d5987187a12baf8c453ef84c3d17

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.2.0-cp310-cp310-manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on ahkhan03/SNN_opt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file snn_opt-0.2.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for snn_opt-0.2.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 461ad58927a635620401ddea4576da8d5523107f6d1d3337d734cbd640ed971d
MD5 d407f651cf14c2b29757db96bbeb0247
BLAKE2b-256 b51f64bf5cac5b0a0dbe55d81d19a072a721c983671882f83480add44da32153

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.2.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: wheels.yml on ahkhan03/SNN_opt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file snn_opt-0.2.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: snn_opt-0.2.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 126.0 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for snn_opt-0.2.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 658b646b308e44ff7a3e19d3815bf119e0cfd335e5c2e8656465895330589a44
MD5 0b497901b17b8a4062b5d7ce369c1eea
BLAKE2b-256 6cd69a6daed891fe64e79b175a12b4f3b92fd8616fa033e5e93e4109ad9ab46b

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.2.0-cp39-cp39-win_amd64.whl:

Publisher: wheels.yml on ahkhan03/SNN_opt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file snn_opt-0.2.0-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for snn_opt-0.2.0-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dcb41579b9bb3f9b1d3ffc1d14ac5ee65bbe7bd90f547334c9e6874ffb9d4f22
MD5 259275f45dc2f04b605031ce6b654a72
BLAKE2b-256 8c0eb42ecad5ab59e333623c3b83f522b3c8b63ba936c2a597e44d990091c58d

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.2.0-cp39-cp39-manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on ahkhan03/SNN_opt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file snn_opt-0.2.0-cp39-cp39-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for snn_opt-0.2.0-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4ad328568bbd56da0e5af31f3ef7a94bf3e86c8d7730c351af033cd82888b8fd
MD5 fa7733f53c911b397eb9d83f84264899
BLAKE2b-256 7bb1a005ef15700dbf260a7a4b061e60fb539d223281677fdf4332c805a27e61

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.2.0-cp39-cp39-manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on ahkhan03/SNN_opt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file snn_opt-0.2.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for snn_opt-0.2.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a844770fe3b858f36ebddd0432128d9834122c64d271e1b9f7484bf44f5cb112
MD5 52d8dbad1a3c3a348955881bd2313b35
BLAKE2b-256 3d5a553a89807f552920c2b6e8106432c29c79e41a1c142cfe1a9703c73b546c

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.2.0-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: wheels.yml on ahkhan03/SNN_opt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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