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.3.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.3.0.tar.gz (43.0 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.3.0-cp313-cp313-win_amd64.whl (119.0 kB view details)

Uploaded CPython 3.13Windows x86-64

snn_opt-0.3.0-cp313-cp313-manylinux_2_28_x86_64.whl (263.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

snn_opt-0.3.0-cp313-cp313-manylinux_2_28_aarch64.whl (254.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

snn_opt-0.3.0-cp313-cp313-macosx_11_0_arm64.whl (113.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

snn_opt-0.3.0-cp312-cp312-win_amd64.whl (118.9 kB view details)

Uploaded CPython 3.12Windows x86-64

snn_opt-0.3.0-cp312-cp312-manylinux_2_28_x86_64.whl (263.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

snn_opt-0.3.0-cp312-cp312-manylinux_2_28_aarch64.whl (254.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

snn_opt-0.3.0-cp312-cp312-macosx_11_0_arm64.whl (113.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

snn_opt-0.3.0-cp311-cp311-win_amd64.whl (116.2 kB view details)

Uploaded CPython 3.11Windows x86-64

snn_opt-0.3.0-cp311-cp311-manylinux_2_28_x86_64.whl (260.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

snn_opt-0.3.0-cp311-cp311-manylinux_2_28_aarch64.whl (252.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

snn_opt-0.3.0-cp311-cp311-macosx_11_0_arm64.whl (111.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

snn_opt-0.3.0-cp310-cp310-win_amd64.whl (115.6 kB view details)

Uploaded CPython 3.10Windows x86-64

snn_opt-0.3.0-cp310-cp310-manylinux_2_28_x86_64.whl (259.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

snn_opt-0.3.0-cp310-cp310-manylinux_2_28_aarch64.whl (251.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

snn_opt-0.3.0-cp310-cp310-macosx_11_0_arm64.whl (110.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

snn_opt-0.3.0-cp39-cp39-win_amd64.whl (115.8 kB view details)

Uploaded CPython 3.9Windows x86-64

snn_opt-0.3.0-cp39-cp39-manylinux_2_28_x86_64.whl (259.4 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

snn_opt-0.3.0-cp39-cp39-manylinux_2_28_aarch64.whl (252.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

snn_opt-0.3.0-cp39-cp39-macosx_11_0_arm64.whl (110.3 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: snn_opt-0.3.0.tar.gz
  • Upload date:
  • Size: 43.0 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.3.0.tar.gz
Algorithm Hash digest
SHA256 c91de39529ceabf639e0f8d7c57e87489d312a9aa74072e07643dcd5e9d630ca
MD5 a7f926855cffbb75adc78c699e34c6c1
BLAKE2b-256 bbbadf8734850686ccff7e515aab96d0b50e005be5f0d0da78fce4ec3fc4d259

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.3.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.3.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: snn_opt-0.3.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 119.0 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.3.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 4aaf07cab1ce966477846e9edbdc838a64cfef5f8cf6a137505d827c8baefc77
MD5 612dd83127e0ae9888e251c46f1ff46b
BLAKE2b-256 6df612934ca29f47164203862ffbd2969be5ed62f2e5a94e5e00a11aff747bf9

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.3.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.3.0-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for snn_opt-0.3.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 55a2e0d7b16204e7d308d08fda3ba838944434ee1a568911d0fd88577550857a
MD5 e5fbd2c954ca650f73a7e60c97341689
BLAKE2b-256 ccadd8f51210e88bb462d169784b8ce2d5aa4f00f6c61b5274676e7adf0a9323

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.3.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.3.0-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for snn_opt-0.3.0-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 491696548eb40a24f0e6496f4984dd090bb769cd47244eac8e2f300edf345685
MD5 a535f47038e3973c0b199932b288deac
BLAKE2b-256 69bd87c12aab588b3fc1212875b609f724e8c6130a191bb65e5f252eda3dc20e

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.3.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.3.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for snn_opt-0.3.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f9f8e56b3dace08869bc4d0935869f026b08b33dc6ba732ac234d47da7af392e
MD5 c770f7f400ccbab5c7df4638f9ad75cb
BLAKE2b-256 ad04427f65d437f3a63cd8ed55501595da35fbd560da9d947e9f3a43df5cab6c

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.3.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.3.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: snn_opt-0.3.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 118.9 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.3.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c2f018040157fba145c77eaa2b4262cdbeb297d78ed9f3dfd218c3646234071e
MD5 a9247835365ff911d3fd8813b7dfb172
BLAKE2b-256 88dc92f5b8725a25c4daea774ddc3c66a0bbec834cef15bfd1927fa46b437e3e

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.3.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.3.0-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for snn_opt-0.3.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8548f63b7b6e3fec51cda34daf8d491202011c7766cb917e175608a20cc8636c
MD5 6509cb8e54decb866fd1bb126f8e2965
BLAKE2b-256 19da03950debb3a563227f01e1009f6ca7e2f514781e7346cbaae20131fa63d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.3.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.3.0-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for snn_opt-0.3.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3d1ef611510c7fff4781d4d30fa31527131630ed5c1f29986e794774b24c84d6
MD5 8a92115914b3ff876c8da13ec51de18a
BLAKE2b-256 862a07027c7e11547c6bd6fa590bd91270433ee925bbdbb45b58cdf59acafa14

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.3.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.3.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for snn_opt-0.3.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d27a0ee84885f77a76e79be329695e68018f29b3bf55aa1b4276aac32bbd77ac
MD5 d6e6043915f053fa2f1418f6afb4e8c2
BLAKE2b-256 b1a29228ec4296ad907bcb9165512fd8522f536d0051ad41205d3b9356bf5390

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.3.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.3.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: snn_opt-0.3.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 116.2 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.3.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 30c2912d9b7abb0955043d17feaeb37192e8c12b79c1dfcd235ac0c99de5c118
MD5 c95d997ad1138b36a555c710691d3b90
BLAKE2b-256 16eb9c3d131d80b684a0e1bb85440a5dc6b9f131796d97296d0dfb7121ca1c9b

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.3.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.3.0-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for snn_opt-0.3.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 23bf35b4b9667604840f292cd0bd9d5529064c1d50d2e5c719600c2e600fd78c
MD5 b033e52a1b4473ed2c325f4ae71dce7d
BLAKE2b-256 3e49a831f8d1c24f221b5b210173fc3079bf167781604d454be0ca15054a185f

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.3.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.3.0-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for snn_opt-0.3.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9f1d8e0495731f7bdb525a8bd1a8446463f1bd2f1beb2bf863cddf7e702d26aa
MD5 6cac117c294a833512d29b57e837655d
BLAKE2b-256 5674615c1b6692c9f9808d8bf56c3b9fcf698f57cdcc7648166712d1f02c0dd7

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.3.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.3.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for snn_opt-0.3.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 42325c1fbc871ad36bc1232f625d78a7fd5914a4f4ed13b81c256a23a0c37d60
MD5 fc57da4fe7573d0d1ec82e3fac0251a1
BLAKE2b-256 f3e16fd6ba707c35582e624818c434511515056ca6488f679267e514b5c385ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.3.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.3.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: snn_opt-0.3.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 115.6 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.3.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 5527d0bff32d7354a9bd1a53d2e18818c4d6fcd8a8dd95e886167feceb33445b
MD5 8247cde45cacf7a5dbbd6763f54ac6d8
BLAKE2b-256 81538f968cdbbacabda1a8f8fe25846343695b534adf9a1b92cf162fc934be0a

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.3.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.3.0-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for snn_opt-0.3.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 114637e685193b63f485d4cf144e356088ade391e9b12bb2094a2b493ce0f148
MD5 92ceb57234c0db101fba793b91719a74
BLAKE2b-256 d17191bb9606ff14c6dac625dad6ddf8d55a74ccd91794605ad19be4d6585b8f

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.3.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.3.0-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for snn_opt-0.3.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c2f406490842fee00dd808d27ab97ce3c68c30504fe00cd99a4d1db06947c981
MD5 7ce7eaa02cc540e0229bef03e8d8004a
BLAKE2b-256 9aaddb672cf2d0b4c86d463aee4a4ecc0545bafb83fa7fed1b72fa7e845128f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.3.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.3.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for snn_opt-0.3.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7cfdf4ad7b21f3378c4d4dfa0d35a08488833338c7d0aae7eedfbf8099508065
MD5 7dd99bd8fe2f63d10094d6e98fee091a
BLAKE2b-256 224e3a9b47a5ed14715dafa7763d8f88d9a013360ac5153177fd5896e12c0b0a

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.3.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.3.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: snn_opt-0.3.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 115.8 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.3.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 6652d1bb69829a01ee3b073b67b8e644b85c40276ff7a099816fa543c89960e5
MD5 0689b698fc0477e5585f83c9c86896a2
BLAKE2b-256 0b31cea6e7c7a4b598f78261bca73f9e013261f3a4068f9e7e60dce6b3168721

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.3.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.3.0-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for snn_opt-0.3.0-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ea5e8c9f34d1dd7b235b783a7d70f0bbc120b942ac86f6326103766ef92a5508
MD5 355c2ee16eecbc750848054708c21832
BLAKE2b-256 be38621b5110f9c7b119666232a7907bdf1fb9ae58033373e88334ff6b556307

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.3.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.3.0-cp39-cp39-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for snn_opt-0.3.0-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 56784f0653466ebb40b240622971d52049de141cbf9887a74243bbf891ef4684
MD5 61efeae1467352bda7b8eab6849cf30b
BLAKE2b-256 d5231c1073ac606a74369a5513f771f1412c947576b4f0bc5c58aaadd8ac40d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.3.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.3.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for snn_opt-0.3.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e9c0ded745cbfb116222b7b4f7f5cbb0b5cc9d69158145173d8afd3bcdab105b
MD5 20f65cb192bd119dc2f8868bc9f23794
BLAKE2b-256 5057218e3816b4f8f34fcfa387fe74015db91da36415bd335879b233974a29d6

See more details on using hashes here.

Provenance

The following attestation bundles were made for snn_opt-0.3.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