Add spikeforge to the framework support table - #196
Merged
Merged
Conversation
2 tasks
w4ffl35
added a commit
to Capsize-Games/spikeforge
that referenced
this pull request
Sep 15, 2026
NIR framework support table: neuromorphs/NIR#196 Open Neuromorphic software guide: open-neuromorphic.github.io#504 Both were filed after spikeforge 0.3.5 reached PyPI, so a reviewer clicking through from either submission lands on the corrected project page rather than the one with thirty dead links. The NIR pull request departs from the draft on one cell. The draft assumed a plain tick for Read from NIR; spikeforge loads a graph and executes it through the independent interpreter rather than reconstructing a native module, which is not what the other rows mean. The pull request says so and invites the maintainers to mark it hollow instead. Overclaiming a cell in the table this project's positioning rests on would cost more than the row is worth. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
w4ffl35
added a commit
to Capsize-Games/spikeforge
that referenced
this pull request
Sep 16, 2026
NIR framework support table: neuromorphs/NIR#196 Open Neuromorphic software guide: open-neuromorphic.github.io#504 Both were filed after spikeforge 0.3.5 reached PyPI, so a reviewer clicking through from either submission lands on the corrected project page rather than the one with thirty dead links. The NIR pull request departs from the draft on one cell. The draft assumed a plain tick for Read from NIR; spikeforge loads a graph and executes it through the independent interpreter rather than reconstructing a native module, which is not what the other rows mean. The pull request says so and invites the maintainers to mark it hollow instead. Overclaiming a cell in the table this project's positioning rests on would cost more than the row is worth.
Jegp
approved these changes
Sep 18, 2026
Jegp
left a comment
Collaborator
There was a problem hiding this comment.
Thanks for the addition. I appreciate your question about the interpretation of reading/writing, but we're very loose here: if you can load a graph and run if, I'd tick the box, no matter how you do it. Same for writing.
I see you're using snnTorch behind the scenes, but what I think sets spikeforge apart is that you could use another simulator one day, the API isn't strictly tied to a simulator.
I'm happy to approve and merge as-is. My only suggestion would be to add an example in the example pages so it's clear how your framework is used. Basically, you can just copy in the code you wrote in this PR :-)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds spikeforge (BSD-3-Clause,
pip install spikeforge) to the framework support table. It's an SNN toolkit built on snnTorch/PyTorch that reads and writes NIR throughspikeforge.nir_bridge.One thing I'd like your judgement on, rather than quietly ticking the box.
I've marked Read from NIR as ✓, but spikeforge's read path differs from the other rows and you may prefer ⬚. The other frameworks import a NIR graph into their own native model. spikeforge loads the graph and executes it directly through an independent interpreter — it does not reconstruct a native module:
So a NIR file written by Norse or snnTorch runs in spikeforge and produces outputs, which I think is what the column means to a user — but it is genuinely not "convert to native". Happy to change it to ⬚ if you read the column the other way. Any node kind outside the shared vocabulary raises a typed error naming the node rather than being skipped.
Write is the conventional direction:
to_nir(spec, module)emits a graph, verified against the 20-nodeconv_netpreset.Why the row might be worth having beyond one more entry: spikeforge re-executes every exported graph through that same independent interpreter and reports per-tensor numerical drift against the source model, so an export can be validated rather than assumed. As far as I can tell none of the listed frameworks does this, and it's a NIR-specific capability rather than a general feature:
pip install "spikeforge[nir]" spikeforge-verify validate --topology conv_netThat exits non-zero outside tolerance. On
conv_nettoday the worst deviation is1.4e-07mean-abs on thelif1membrane.Examples column: every other row points at a neuroir.org docs page. spikeforge has none, so I've linked the runnable example in-repo (
examples/04_nir_export_validate.py, verified end to end on a clean install). If you'd like a proper docs page in the NIR docs tree instead, I'm glad to write one in a follow-up PR — I didn't want to add pages to your docs uninvited in a first contribution.Docs: https://docs.spikeforge.net/interpreter-spine