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.4.0.tar.gz (48.5 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.4.0-cp313-cp313-win_amd64.whl (125.2 kB view details)

Uploaded CPython 3.13Windows x86-64

snn_opt-0.4.0-cp313-cp313-manylinux_2_28_x86_64.whl (270.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

snn_opt-0.4.0-cp313-cp313-manylinux_2_28_aarch64.whl (260.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

snn_opt-0.4.0-cp313-cp313-macosx_11_0_arm64.whl (119.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

snn_opt-0.4.0-cp312-cp312-win_amd64.whl (125.2 kB view details)

Uploaded CPython 3.12Windows x86-64

snn_opt-0.4.0-cp312-cp312-manylinux_2_28_x86_64.whl (270.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

snn_opt-0.4.0-cp312-cp312-manylinux_2_28_aarch64.whl (260.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

snn_opt-0.4.0-cp312-cp312-macosx_11_0_arm64.whl (119.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

snn_opt-0.4.0-cp311-cp311-win_amd64.whl (122.5 kB view details)

Uploaded CPython 3.11Windows x86-64

snn_opt-0.4.0-cp311-cp311-manylinux_2_28_x86_64.whl (267.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

snn_opt-0.4.0-cp311-cp311-manylinux_2_28_aarch64.whl (258.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

snn_opt-0.4.0-cp311-cp311-macosx_11_0_arm64.whl (117.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

snn_opt-0.4.0-cp310-cp310-win_amd64.whl (122.1 kB view details)

Uploaded CPython 3.10Windows x86-64

snn_opt-0.4.0-cp310-cp310-manylinux_2_28_x86_64.whl (265.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

snn_opt-0.4.0-cp310-cp310-manylinux_2_28_aarch64.whl (257.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

snn_opt-0.4.0-cp310-cp310-macosx_11_0_arm64.whl (116.1 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

snn_opt-0.4.0-cp39-cp39-win_amd64.whl (122.3 kB view details)

Uploaded CPython 3.9Windows x86-64

snn_opt-0.4.0-cp39-cp39-manylinux_2_28_x86_64.whl (265.9 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

snn_opt-0.4.0-cp39-cp39-manylinux_2_28_aarch64.whl (257.9 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

snn_opt-0.4.0-cp39-cp39-macosx_11_0_arm64.whl (116.2 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: snn_opt-0.4.0.tar.gz
  • Upload date:
  • Size: 48.5 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.4.0.tar.gz
Algorithm Hash digest
SHA256 03c6ba52519d3a8e6b3e3632ed3672a80d4ed8764b4e643a5e6b00826b03a409
MD5 d63b220fe391d3c4162b7fdf910ddf2d
BLAKE2b-256 20a729c07e59ba453af8ec899a9b6ae55f147104b7ad6d42e09bc92b27a2d99b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: snn_opt-0.4.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 125.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.4.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 f7951b39ad9d667d69158b2e238c4fdc2fafb6d317a3fd653bc4948e6340394d
MD5 9743b855b572c6296d9030cde8c12daa
BLAKE2b-256 cb05b35317297e131c5294ac2fb4ead8f73a0ee53b0bb41f52d5611462c5ca40

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.4.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ec28096e753e4a90badce27209781c858c6ca77d7c11e8c4661e60aa0b7d1ab0
MD5 9dce4dae5aeecf07ef98177e8601b89e
BLAKE2b-256 c543c7b7ce8296e834bea8a68f3a3e778b921e7a4ffcc4833371e807c52f8188

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.4.0-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b05401f371a2a3d1f2023f0ce900e568716f522e4b60ab0ad66f4da164b7d1ce
MD5 a77b325685f4a937019d7441e34954a5
BLAKE2b-256 02b7b55dec814312cf3c3b865d1ce073b4bcf2b86040eefd33f99034c4e95dc1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.4.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8c50ddebeb11328c85dedb31bc5f3e1d6b5d508180f1749c804551a1d6474948
MD5 1a2175127709424a5a1c88249c088214
BLAKE2b-256 d04c6dfc8e0dcce50d88fdbcb6b92d8bdefcd2e2364fd2499ecef68fc82cf304

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: snn_opt-0.4.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 125.2 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.4.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ae81b0e7b116caf49701a380dc3ddcf11fdc2ce9d3c747713fb86812820e6862
MD5 c39b6d28a6a5f6921d4bea7fe070cb9c
BLAKE2b-256 7d0646efc65eba8bedaf76a973fa9577dd030497c7edbb544cc3e13603934213

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.4.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2c3bd410accf949c608d0110b24a2a7d34d687a1f03c6081ac6d49da70134bcd
MD5 61103f4a9251732e6bc4bb2037a714f5
BLAKE2b-256 bd570d86925214021f798db2292dee9a192da1ddd72200ca35722731ca93b6ad

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.4.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 926891e45648eea8eac743d23d60eb090fa58f08325d35ca28a37f63a0935932
MD5 faf1788a21b6c1a50d9644522bdb7046
BLAKE2b-256 a6af2884ea9edce938f7c69cc5c776e8478fa0e8a82369ddf2f41ac9a611831d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.4.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 936399d1076eae35b7cd291ea2ef7f43c2ffd46950bf1aee1148506795887464
MD5 5c8e2a902f893cb776b636b48f423188
BLAKE2b-256 8ff388210c72a559ac7cfa98a7c277c4a351538b3aa0af18eb1d846ead63e6d8

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: snn_opt-0.4.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 122.5 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.4.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 06f5a8eb64d9a028ba4e4ede0d40a5adc840932013fd069cf2e67ba0aeda702c
MD5 72bfc7987520df5560b2ba5891cf9217
BLAKE2b-256 2f51614c275c2ab5d4e056d1d31a5bce9bf8a628662a908dfcb6ec74824e866d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.4.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ff061c63e437b1d915b23b719d547398959084d97501d0fd59a0bc060d511597
MD5 c279481eea214c0b50794ba09d551e7f
BLAKE2b-256 c1d50c096816d37c51d969eae13cfbbd68ede3a2ba276888c7885f85fcae9a9f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.4.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 46164ecfe017c9e358754c9fa079c1e0e7f5747d6914cec1a3e220a92dfb8fc4
MD5 5a425418dd01cf4b217d4c4ff7b7d229
BLAKE2b-256 d6ace9469c32a449adcc716b02f9f50d855b18ebeae04de6680868bcd0791de6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.4.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 02ea9769a47e7d713b5483521ece24fc9ccd0552b612714fb4c47206d3b1892c
MD5 9b2db44c8af85443e8ab74cc8ce0e5e2
BLAKE2b-256 b4a71362e54faeec3a4cad7277f89b57285b7beb72bac1b8190ab2684d16b97e

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: snn_opt-0.4.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 122.1 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.4.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 b8c6ad864e6eb70e9b49806fdb6d1e8f33fb08aab5959853e73a70c61d8f0add
MD5 832cb574d90d864e455346975a967392
BLAKE2b-256 1e0fa64cdc899b3e58101071642fc903b36e8207cc88d0ae264259ef2c651738

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.4.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 91a80816ee5abfd954dd23a0d0f5bf5cf4fc044c8f2920e9b0c3eeed0b209b45
MD5 0a5d3bcac734735a238238eb4312f9c0
BLAKE2b-256 0a8cfacccf7ac3d53cb45329c8c6b4111cdc7af3a92d1e35837bbc3ff5386714

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.4.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5836bb4653efe704f2e5824b0840a7274667954df107c78435f513699419302d
MD5 3916680e196e7107e2999c7b133e5f9d
BLAKE2b-256 8a8f954f8218337a3f8e16b95f62e25e6cf6f1640e55dffc1202f7c77ed3d3e1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.4.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d71c3b03a998aefcf443ada3e1406ef7e614577063f92e8bde4b075023f6fa71
MD5 cad23c23c1521a6dbc8ad2db6d1bb142
BLAKE2b-256 5ac97acca6808ef24ed2e76eef65da611eadd413fe7857952815b5a7e28de046

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: snn_opt-0.4.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 122.3 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.4.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 43fc431897598d5d9cd793152b41d56c71feab4cbd3b71af518f473f5bb1f41d
MD5 0954cfb5925e416f47d6195b4a630c79
BLAKE2b-256 49db24109c90541b8a7bbc07b2a266edddfba9a7491a41f78d20c4ed85321f55

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.4.0-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 43c5bf67d7d8da06972eef2c12af2f63e048afe00cdfd425d5fabbb42680c4ec
MD5 960fbdd5a41cd8a08d8f096a419d2f7b
BLAKE2b-256 dae7283a6323a84ad827403b27bfbb00579bfad434ad7b58b8eb1d2bdad083fe

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.4.0-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f1f1dd1a682bdf10642f928d8fbe0354e6c12c7b5395e088de11d8542f22b9a7
MD5 01599a21159eda12e6b304c1499d7a42
BLAKE2b-256 fb8cd73619cdb45af5a3ccca3ba314da27a043d8ff5e487ae0a0f8e6b0182cda

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snn_opt-0.4.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ae0f3b4cf25e4a418b89b01e1a7474c66f70375a7cb87ef34f546da789be0d42
MD5 56857d17fa2f9310d50556ccef61b747
BLAKE2b-256 e3c52b3a7635909c90c4bf67fa5e5028e055430c00db940cb1babcc046ae0311

See more details on using hashes here.

Provenance

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