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.

Problem transforms (eigenbasis)

Orthogonal to the backend, the transform axis rewrites the problem into an equivalent one that is cheaper to solve and maps the solution back. Transforms are an explicit opt-in (SolverConfig.transform); the canonical solver stays the default, and a transform composes with any backend.

from snn_opt import solve_qp
result = solve_qp(A, b, C, d, x0, ...)  # canonical (default)

from snn_opt import SNNSolver, SolverConfig, OptimizationProblem
cfg = SolverConfig(transform='eigenbasis', backend='c')
result = SNNSolver(OptimizationProblem(A, b, C, d), cfg).solve(x0)

EigenbasisTransform (transform='eigenbasis') rotates a symmetric-PSD Hessian into its eigenbasis (A = VΛVᵀ), collapsing the dominant O(n²) A @ x gradient step into an O(n) elementwise product; the projection is unchanged because the constraint Gram is rotation-invariant. The win grows with problem size. Box constraints are not supported with this transform (per-coordinate bounds are not rotation-invariant) — it raises a clear error if lower_bound/upper_bound are set. See docs/api.md.

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.4.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.5.0.tar.gz (56.9 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.5.0-cp313-cp313-win_amd64.whl (132.7 kB view details)

Uploaded CPython 3.13Windows x86-64

snn_opt-0.5.0-cp313-cp313-manylinux_2_28_x86_64.whl (280.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

snn_opt-0.5.0-cp313-cp313-manylinux_2_28_aarch64.whl (271.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

snn_opt-0.5.0-cp313-cp313-macosx_11_0_arm64.whl (125.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

snn_opt-0.5.0-cp312-cp312-win_amd64.whl (132.6 kB view details)

Uploaded CPython 3.12Windows x86-64

snn_opt-0.5.0-cp312-cp312-manylinux_2_28_x86_64.whl (280.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

snn_opt-0.5.0-cp312-cp312-manylinux_2_28_aarch64.whl (271.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

snn_opt-0.5.0-cp312-cp312-macosx_11_0_arm64.whl (125.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

snn_opt-0.5.0-cp311-cp311-win_amd64.whl (130.0 kB view details)

Uploaded CPython 3.11Windows x86-64

snn_opt-0.5.0-cp311-cp311-manylinux_2_28_x86_64.whl (277.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

snn_opt-0.5.0-cp311-cp311-manylinux_2_28_aarch64.whl (268.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

snn_opt-0.5.0-cp311-cp311-macosx_11_0_arm64.whl (123.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

snn_opt-0.5.0-cp310-cp310-win_amd64.whl (129.6 kB view details)

Uploaded CPython 3.10Windows x86-64

snn_opt-0.5.0-cp310-cp310-manylinux_2_28_x86_64.whl (276.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

snn_opt-0.5.0-cp310-cp310-manylinux_2_28_aarch64.whl (267.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

snn_opt-0.5.0-cp310-cp310-macosx_11_0_arm64.whl (122.6 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

snn_opt-0.5.0-cp39-cp39-win_amd64.whl (129.7 kB view details)

Uploaded CPython 3.9Windows x86-64

snn_opt-0.5.0-cp39-cp39-manylinux_2_28_x86_64.whl (276.1 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

snn_opt-0.5.0-cp39-cp39-manylinux_2_28_aarch64.whl (267.9 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

snn_opt-0.5.0-cp39-cp39-macosx_11_0_arm64.whl (122.7 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: snn_opt-0.5.0.tar.gz
  • Upload date:
  • Size: 56.9 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.5.0.tar.gz
Algorithm Hash digest
SHA256 a2de5ff00d8f60438a5d5248a3155b873fb27b9dd060835fffd56ade317ccc49
MD5 b46c99dcc121709260b142491f587a59
BLAKE2b-256 df8b48aec88b828a09ba52a0f9847bf54eeb26e762c5edaefab00db5940a1e43

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: snn_opt-0.5.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 132.7 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.5.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 5f911dd37b586d897a8f3474345556fa4ab1c038e4ceeaa51b36ec6575711c6a
MD5 2420b1624292eedeb81d2b5c9e3f5376
BLAKE2b-256 49f51b19d0eb91977f825b8070853de8f69028c5b67fead6880d10d40ffe2a62

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.5.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7d43b25757f46510ab7afbc6706a1e9f66f50ff333a662cffc2c61578c5967c3
MD5 3d7d5a1576197307ab1192f902985439
BLAKE2b-256 beb535759598628c01bbb7d0c0a64607b91fdb8e80d6c64349486be7a716fd6a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.5.0-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f6f39073b652cbf5ca11a3d1145c0d421225a420a10019b295f122185a245889
MD5 c3179a1d5e1e92ba7b0aa4795be3e57e
BLAKE2b-256 537f968b734074a54beed9584e9f7c8d92e4543f419dd88ed1d9dff6a1877c9c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.5.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1f0fce3fd12bb5232d6a6c2bf10318cad8241020e31c6dd63fb9f1fd69d1b8a6
MD5 b0dbd4ac245c0422ea49483e86530b21
BLAKE2b-256 de7b5a0807cbe578e697fcb9ba9afb3c223221b8de9e3de1770ccf60fee553f4

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: snn_opt-0.5.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 132.6 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.5.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 33ae8d809cf17f6c9d92ce713893c617a7000924fba690a52e5f235da7d21715
MD5 c09d8056d8199330daff5407e85ca737
BLAKE2b-256 fe58275425398b407cd45f03c5b77ec6501d9c8c752806219e6fcf6f1a16d038

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.5.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3855f7826bc2f69232f6fc60957c9d58894274666bace044c6cae8174d283068
MD5 8bdfc0487836bda6e45caccc2f9050b1
BLAKE2b-256 409c95b4155f7c17ec9b0f354f28f1bae278618f4be8333a24ceb9313f57947c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.5.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c28c4d5cdf13f3245d6840852cbadab15c80ef1ff24092ebc3a845ae9ac39f9f
MD5 af0b3e507ad0ba27894acf867a5af156
BLAKE2b-256 734851c2ad4b97885641b11e0e515c4598d6cef36ca727b88be9e634567e636a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.5.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 30f0b47b61889496d8b193b6655e71188fd822b35f210a7cc6bd2b158d5b4481
MD5 e8c3cfaede5d6483aa3f82f2c9f4edc8
BLAKE2b-256 bb179c48c83c87c0208de3257766c828ff2ea5123a2e2b688deaf058c6012a5b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: snn_opt-0.5.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 130.0 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.5.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 483bfb0b918deb65be106cc2417b9fde017e7aa6c1ef88e26ba1dc5c1afa1806
MD5 3afed02fa417b1610aa3ef94fce5cc82
BLAKE2b-256 0b41130ce843e2836bfd15d028bf7093ec3cf265447249d8bd215a94b245c5ee

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.5.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bdc16a67638ff84fc7ef9a6a3c0938b76e6baab8174a2a7e76eae349653abb53
MD5 aee465320047eb8783d710f53a6ed63b
BLAKE2b-256 1a84ab9365e03afe7e99cf068d8f61def8d5583ca181288c4a68e7f6ce790645

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.5.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 90681d3a68e1e18424c0c85488c4f2770f174d63fc09138cd9f96a17b9a0572a
MD5 93dd2b4031bc4559117e7b6a2d0b3fb4
BLAKE2b-256 5958877b350f949faff4e77bf09d7f2a4fcc213fb165068230c7e8d89d38ff76

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.5.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f539ecf1d7bf7c339b8e2c1289c0635648b8e8a09dc4aed4ad00e6dccd33ce0c
MD5 07f1e5916154a3fb44d6c407d5408316
BLAKE2b-256 6b57a22e9e2d38f8b21dc5ff5117fe764b9f378eb07c8b536db5488a28844ce9

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: snn_opt-0.5.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 129.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.5.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 150f4d872be4deebde4cd9abc89867749efa671cf94000b1c5bb24c8dff44bf6
MD5 061f7e57ce07bf3e59335a1138258a8a
BLAKE2b-256 0c3ae65bd7067c6a53b81f46678557445699b17b4360328f20105f0e9221da63

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.5.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 13bcc10bab945b76323169328d5da544dca2a602e1523e0d515cdabe988d356a
MD5 0a13f7cedf9fa736f93a018a29936109
BLAKE2b-256 a24be87c1b037afa19ed2747835c8b05bc6bfc6bc2911e2b90e13be6ea30b08f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.5.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 dbaf31b731a5f70c19ab488cf3521345953fed09cc93602b4c8e7cd43918799d
MD5 c831e8e5a08f0e2fa8d61b160e5635d8
BLAKE2b-256 962fd869db9cea17c8aa3c750d4222fbe14d458e7bbb9d2f82918171f1fa1fd4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.5.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 22b0c727e4f7022a8d72180fb53a812d382bca5e6859d818297fcb78c5168bfb
MD5 cd8c7e8e98cc30515f14feb351baa9a8
BLAKE2b-256 448f5b7c394434835b3e19d1667b29eb45610e4f1e2042648b602563c454bb68

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: snn_opt-0.5.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 129.7 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.5.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 0b744927746a8565b28ce8257e9bc26218c057b4987d793747f2538a8d0e8465
MD5 159263334b578460c07f23fe1006b82a
BLAKE2b-256 06eb3d0ebc96058e71c23f0ef9d527d638c0699883d7aaf89e882fb67c412d65

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.5.0-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 83a17553547330540546ae23d6602382fcb79ff419f6fb47ec3713e854a77949
MD5 1c1785a527518b311aa20b464d78bd6e
BLAKE2b-256 f8e3b25cfbed2eecf799f0636956c9b51bd707abf5a080ee64a9e3d52d684e67

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.5.0-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e00a7d49f44a5446a22393aece2c52d19f35b011bca365d0a7e3cbe005697baf
MD5 388706359a7ec9ce4a7bd66b468edcdc
BLAKE2b-256 ad8012a3483227f0eab72fda39f7304d090f80d057ba61679e800228be93f1da

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.5.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 23e6c5a2c643101bc4948e1b85566864d7c852c7919eca36b900ae743154405c
MD5 cd9d0b08b1b722fda2c9ab8a7e9e5a54
BLAKE2b-256 e107f415d53f718a960be25d809d171ca16067fc93a6bfbdd3897ec9789a985f

See more details on using hashes here.

Provenance

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