Skip to content
Merged
Show file tree
Hide file tree
Changes from 20 commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
a97b1e9
Merge pull request #750 from BindsNET:master
Hananel-Hazan Apr 17, 2026
8ce7d48
poetry update
Hananel-Hazan Apr 24, 2026
86a9fe3
poetry update
Hananel-Hazan Apr 27, 2026
a64be52
poetry update
Hananel-Hazan Apr 29, 2026
ac4afcf
poetry update
Hananel-Hazan May 1, 2026
cd5e14c
poetry update
Hananel-Hazan May 3, 2026
a301fde
poetry update
Hananel-Hazan May 7, 2026
95108a8
poetry update
Hananel-Hazan May 14, 2026
68076a1
Merge branch 'hananel' of https://github.com/BindsNET/bindsnet into h…
Hananel-Hazan May 14, 2026
152ddec
Merge branch 'master' into hananel
Hananel-Hazan May 14, 2026
71fbe2b
poetry update
Hananel-Hazan May 14, 2026
1a04631
poetry update
Hananel-Hazan May 18, 2026
1809413
poetry update
Hananel-Hazan May 24, 2026
cc3c275
poetry update
Hananel-Hazan May 31, 2026
57d1251
poetry update
Hananel-Hazan Jun 1, 2026
e38ed72
poetry update
Hananel-Hazan Jun 3, 2026
70d389f
poetry update
Hananel-Hazan Jun 5, 2026
1090e30
poetry update
Hananel-Hazan Jun 12, 2026
426a8de
Add validation tests for reward-modulated learning rules MSTDP and MS…
Hananel-Hazan Jun 14, 2026
f0ba78a
Handle neurons with no firing activity in assign_labels by marking th…
Hananel-Hazan Jun 14, 2026
5070302
Merge origin/master into hananel
Copilot Jun 14, 2026
101cd23
Stop tracking .pytest_cache and .claude tooling artifacts
Hananel-Hazan Jun 14, 2026
be8e84d
Improve assign_labels accuracy and performance
Machuka Feb 11, 2026
85c533d
Reverted variable names to original
Machuka Feb 11, 2026
8a5923b
Reverted accidental removal of docstring
Machuka Feb 11, 2026
eeb7e27
Improve evaluation function with noise for assignments
Machuka Feb 18, 2026
09d9878
Enhance label assignment functions to handle abstention for inactive …
Hananel-Hazan Jun 14, 2026
516a2d5
Merge branch 'master' into hananel
Hananel-Hazan Jun 14, 2026
056dc4d
black and pip updates
Hananel-Hazan Jun 14, 2026
8371707
Refactor assign_labels function to remove redundant noise handling an…
Hananel-Hazan Jun 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"permissions": {
"allow": [
"WebFetch(domain:github.com)",
"Bash(python -c \"import bindsnet, torch; print\\('bindsnet', bindsnet.__version__ if hasattr\\(bindsnet,'__version__'\\) else '?'\\); print\\('torch', torch.__version__\\)\")",
"Bash(gh pr *)"
]
}
}
8 changes: 7 additions & 1 deletion .pytest_cache/v/cache/lastfailed
Original file line number Diff line number Diff line change
@@ -1 +1,7 @@
{}
{
"test/network/test_mstdp_florian.py::TestConvKnownBroken::test_conv_mstdpet_learns[<lambda>-in_shape0-out_shape0]": true,
"test/network/test_mstdp_florian.py::TestConvKnownBroken::test_conv_mstdpet_learns[<lambda>-in_shape1-out_shape1]": true,
"test/network/test_mstdp_florian.py::TestConvKnownBroken::test_conv_mstdpet_learns[<lambda>-in_shape2-out_shape2]": true,
"test/network/test_mstdp_florian.py::TestConvKnownBroken::test_mstdp_conv_batch_gt1[<lambda>-in_shape0-out_shape0]": true,
"test/network/test_mstdp_florian.py::TestConvKnownBroken::test_mstdp_conv_batch_gt1[<lambda>-in_shape1-out_shape1]": true
}
48 changes: 48 additions & 0 deletions .pytest_cache/v/cache/nodeids
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,54 @@
"test/network/test_learning.py::TestLearningRules::test_post_pre",
"test/network/test_learning.py::TestLearningRules::test_rmax",
"test/network/test_learning.py::TestLearningRules::test_weight_dependent_post_pre",
"test/network/test_mstdp_florian.py::TestConvKnownBroken::test_conv1d_mstdp_eligibility_matches_florian_reference",
"test/network/test_mstdp_florian.py::TestConvKnownBroken::test_conv_mstdpet_learns[<lambda>-in_shape0-out_shape0]",
"test/network/test_mstdp_florian.py::TestConvKnownBroken::test_conv_mstdpet_learns[<lambda>-in_shape1-out_shape1]",
"test/network/test_mstdp_florian.py::TestConvKnownBroken::test_conv_mstdpet_learns[<lambda>-in_shape2-out_shape2]",
"test/network/test_mstdp_florian.py::TestConvKnownBroken::test_mstdp_conv_batch_gt1[<lambda>-in_shape0-out_shape0]",
"test/network/test_mstdp_florian.py::TestConvKnownBroken::test_mstdp_conv_batch_gt1[<lambda>-in_shape1-out_shape1]",
"test/network/test_mstdp_florian.py::TestConvMSTDP::test_conv_batch_equals_sum[MSTDP-1-Conv1dConnection-in_shape0-out_shape0]",
"test/network/test_mstdp_florian.py::TestConvMSTDP::test_conv_batch_equals_sum[MSTDP-2-Conv2dConnection-in_shape1-out_shape1]",
"test/network/test_mstdp_florian.py::TestConvMSTDP::test_conv_batch_equals_sum[MSTDP-3-Conv3dConnection-in_shape2-out_shape2]",
"test/network/test_mstdp_florian.py::TestConvMSTDP::test_conv_batch_equals_sum[MSTDPET-1-Conv1dConnection-in_shape0-out_shape0]",
"test/network/test_mstdp_florian.py::TestConvMSTDP::test_conv_batch_equals_sum[MSTDPET-2-Conv2dConnection-in_shape1-out_shape1]",
"test/network/test_mstdp_florian.py::TestConvMSTDP::test_conv_batch_equals_sum[MSTDPET-3-Conv3dConnection-in_shape2-out_shape2]",
"test/network/test_mstdp_florian.py::TestConvMSTDP::test_conv_learns[MSTDP-1-Conv1dConnection-in_shape0-out_shape0]",
"test/network/test_mstdp_florian.py::TestConvMSTDP::test_conv_learns[MSTDP-2-Conv2dConnection-in_shape1-out_shape1]",
"test/network/test_mstdp_florian.py::TestConvMSTDP::test_conv_learns[MSTDP-3-Conv3dConnection-in_shape2-out_shape2]",
"test/network/test_mstdp_florian.py::TestConvMSTDP::test_conv_learns[MSTDPET-1-Conv1dConnection-in_shape0-out_shape0]",
"test/network/test_mstdp_florian.py::TestConvMSTDP::test_conv_learns[MSTDPET-2-Conv2dConnection-in_shape1-out_shape1]",
"test/network/test_mstdp_florian.py::TestConvMSTDP::test_conv_learns[MSTDPET-3-Conv3dConnection-in_shape2-out_shape2]",
"test/network/test_mstdp_florian.py::TestConvMSTDP::test_conv_mstdp_eligibility_matches_florian[1-Conv1dConnection-in_shape0-out_shape0]",
"test/network/test_mstdp_florian.py::TestConvMSTDP::test_conv_mstdp_eligibility_matches_florian[2-Conv2dConnection-in_shape1-out_shape1]",
"test/network/test_mstdp_florian.py::TestConvMSTDP::test_conv_mstdp_eligibility_matches_florian[3-Conv3dConnection-in_shape2-out_shape2]",
"test/network/test_mstdp_florian.py::TestConvMSTDP::test_conv_mstdpet_eligibility_matches_mstdp[1-Conv1dConnection-in_shape0-out_shape0]",
"test/network/test_mstdp_florian.py::TestConvMSTDP::test_conv_mstdpet_eligibility_matches_mstdp[2-Conv2dConnection-in_shape1-out_shape1]",
"test/network/test_mstdp_florian.py::TestConvMSTDP::test_conv_mstdpet_eligibility_matches_mstdp[3-Conv3dConnection-in_shape2-out_shape2]",
"test/network/test_mstdp_florian.py::TestKnownLimitations::test_conv_local_mstdpet_learns[<lambda>-in_shape0-out_shape0]",
"test/network/test_mstdp_florian.py::TestKnownLimitations::test_conv_local_mstdpet_learns[<lambda>-in_shape1-out_shape1]",
"test/network/test_mstdp_florian.py::TestKnownLimitations::test_conv_local_mstdpet_learns[<lambda>-in_shape2-out_shape2]",
"test/network/test_mstdp_florian.py::TestKnownLimitations::test_conv_local_mstdpet_learns[<lambda>-in_shape3-out_shape3]",
"test/network/test_mstdp_florian.py::TestKnownLimitations::test_conv_local_mstdpet_learns[<lambda>-in_shape4-out_shape4]",
"test/network/test_mstdp_florian.py::TestKnownLimitations::test_mstdp_conv_batch_gt1[<lambda>-in_shape0-out_shape0]",
"test/network/test_mstdp_florian.py::TestKnownLimitations::test_mstdp_conv_batch_gt1[<lambda>-in_shape1-out_shape1]",
"test/network/test_mstdp_florian.py::TestLocalMSTDPET::test_local_mstdpet_batch_equals_sum[LocalConnection1D-in_shape0-out_shape0]",
"test/network/test_mstdp_florian.py::TestLocalMSTDPET::test_local_mstdpet_batch_equals_sum[LocalConnection2D-in_shape1-out_shape1]",
"test/network/test_mstdp_florian.py::TestLocalMSTDPET::test_local_mstdpet_batch_equals_sum[LocalConnection3D-in_shape2-out_shape2]",
"test/network/test_mstdp_florian.py::TestLocalMSTDPET::test_local_mstdpet_eligibility_matches_mstdp[LocalConnection1D-in_shape0-out_shape0]",
"test/network/test_mstdp_florian.py::TestLocalMSTDPET::test_local_mstdpet_eligibility_matches_mstdp[LocalConnection2D-in_shape1-out_shape1]",
"test/network/test_mstdp_florian.py::TestLocalMSTDPET::test_local_mstdpet_eligibility_matches_mstdp[LocalConnection3D-in_shape2-out_shape2]",
"test/network/test_mstdp_florian.py::TestLocalMSTDPET::test_local_mstdpet_learns[LocalConnection1D-in_shape0-out_shape0]",
"test/network/test_mstdp_florian.py::TestLocalMSTDPET::test_local_mstdpet_learns[LocalConnection2D-in_shape1-out_shape1]",
"test/network/test_mstdp_florian.py::TestLocalMSTDPET::test_local_mstdpet_learns[LocalConnection3D-in_shape2-out_shape2]",
"test/network/test_mstdp_florian.py::TestMSTDPFlorian::test_batch_equals_sum_of_samples[MSTDPET]",
"test/network/test_mstdp_florian.py::TestMSTDPFlorian::test_batch_equals_sum_of_samples[MSTDP]",
"test/network/test_mstdp_florian.py::TestMSTDPFlorian::test_conv3d_runs_without_dtype_error",
"test/network/test_mstdp_florian.py::TestMSTDPFlorian::test_mstdp_matches_florian",
"test/network/test_mstdp_florian.py::TestMSTDPFlorian::test_mstdpet_matches_florian",
"test/network/test_mstdp_florian.py::TestMSTDPFlorian::test_pplus_trace_is_exponential_decay",
"test/network/test_mstdp_florian.py::TestMSTDPFlorian::test_stdp_causality_sign",
"test/network/test_mstdp_florian.py::TestMSTDPFlorian::test_zero_lag_matches_florian_no_lag",
"test/network/test_network.py::TestNetwork::test_add_objects",
"test/network/test_network.py::TestNetwork::test_empty",
"test/network/test_nodes.py::TestNodes::test_init",
Expand Down
4 changes: 4 additions & 0 deletions bindsnet/evaluation/evaluation.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,10 @@ def assign_labels(
# Neuron assignments are the labels they fire most for.
assignments = torch.max(proportions, 1)[1]

# Neurons that never fired have no class preference; mark them with -1 so
# they don't contribute a (biased) vote for class 0 in downstream schemes.
assignments[rates.sum(1) == 0] = -1

return assignments, proportions, rates


Expand Down
Loading
Loading