spikeforge 0.3.2__tar.gz → 0.3.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. {spikeforge-0.3.2 → spikeforge-0.3.3}/PKG-INFO +1 -1
  2. {spikeforge-0.3.2 → spikeforge-0.3.3}/pyproject.toml +1 -1
  3. spikeforge-0.3.3/spikeforge/affect/__init__.py +5 -0
  4. spikeforge-0.3.3/spikeforge/affect/regulator.py +77 -0
  5. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge.egg-info/PKG-INFO +1 -1
  6. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge.egg-info/SOURCES.txt +2 -0
  7. {spikeforge-0.3.2 → spikeforge-0.3.3}/LICENSE +0 -0
  8. {spikeforge-0.3.2 → spikeforge-0.3.3}/README.md +0 -0
  9. {spikeforge-0.3.2 → spikeforge-0.3.3}/main.py +0 -0
  10. {spikeforge-0.3.2 → spikeforge-0.3.3}/main_encodings.py +0 -0
  11. {spikeforge-0.3.2 → spikeforge-0.3.3}/setup.cfg +0 -0
  12. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/__init__.py +0 -0
  13. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/benchmark/__init__.py +0 -0
  14. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/benchmark/__main__.py +0 -0
  15. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/benchmark/cli.py +0 -0
  16. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/benchmark/compare.py +0 -0
  17. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/benchmark/config.py +0 -0
  18. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/benchmark/energy.py +0 -0
  19. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/benchmark/harness.py +0 -0
  20. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/benchmark/memory.py +0 -0
  21. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/benchmark/serving.py +0 -0
  22. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/benchmark/store.py +0 -0
  23. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/benchmark/suite.py +0 -0
  24. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/benchmark/timing.py +0 -0
  25. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/cli/__init__.py +0 -0
  26. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/cli/backend_cli.py +0 -0
  27. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/cli/extract_cli.py +0 -0
  28. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/cli/fixture.py +0 -0
  29. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/cli/onnx_cli.py +0 -0
  30. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/cli/records_cli.py +0 -0
  31. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/cli/verify.py +0 -0
  32. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/compression/__init__.py +0 -0
  33. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/compression/codec.py +0 -0
  34. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/compression/errors.py +0 -0
  35. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/compression/pruning.py +0 -0
  36. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/compression/report.py +0 -0
  37. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/config.py +0 -0
  38. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/data/__init__.py +0 -0
  39. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/data/data_loader.py +0 -0
  40. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/data/dataset_spec.py +0 -0
  41. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/data/datasets.py +0 -0
  42. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/data/download_cli.py +0 -0
  43. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/data/event_errors.py +0 -0
  44. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/data/event_geometry.py +0 -0
  45. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/data/event_loader.py +0 -0
  46. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/data/image_size.py +0 -0
  47. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/data/sample_source.py +0 -0
  48. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/data/sequence_source.py +0 -0
  49. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/encoding/__init__.py +0 -0
  50. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/encoding/delta_trainer.py +0 -0
  51. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/encoding/latency_trainer.py +0 -0
  52. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/encoding/random_spikegen.py +0 -0
  53. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/encoding/spike_encoder.py +0 -0
  54. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/events/__init__.py +0 -0
  55. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/events/dense.py +0 -0
  56. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/events/event_bridge.py +0 -0
  57. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/events/event_sample.py +0 -0
  58. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/events/event_source.py +0 -0
  59. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/events/synthetic.py +0 -0
  60. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/events/tonic_api.py +0 -0
  61. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/exporters/__init__.py +0 -0
  62. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/exporters/delta_exporter.py +0 -0
  63. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/exporters/exporter.py +0 -0
  64. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/exporters/latency_curve_exporter.py +0 -0
  65. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/exporters/latency_raster_exporter.py +0 -0
  66. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/exporters/latency_video_exporter.py +0 -0
  67. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/exporters/plot_utils.py +0 -0
  68. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/exporters/presentation_exporter.py +0 -0
  69. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/exporters/random_spike_raster_exporter.py +0 -0
  70. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/exporters/random_spike_video_exporter.py +0 -0
  71. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/exporters/raster_exporter.py +0 -0
  72. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/exporters/reconstruction_exporter.py +0 -0
  73. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/exporters/spike_gif_exporter.py +0 -0
  74. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/exporters/video_exporter.py +0 -0
  75. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/introspection/__init__.py +0 -0
  76. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/introspection/comparison.py +0 -0
  77. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/introspection/decoding.py +0 -0
  78. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/introspection/encoding.py +0 -0
  79. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/introspection/firing_rate.py +0 -0
  80. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/introspection/histogram.py +0 -0
  81. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/introspection/isi.py +0 -0
  82. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/introspection/metrics.py +0 -0
  83. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/introspection/sparsity.py +0 -0
  84. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/introspection/surrogate.py +0 -0
  85. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/memory/__init__.py +0 -0
  86. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/memory/embedding_readout.py +0 -0
  87. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/memory/episode_sampler.py +0 -0
  88. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/memory/episodic_trainer.py +0 -0
  89. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/memory/few_shot_generalization_poc.py +0 -0
  90. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/memory/frozen_classifier.py +0 -0
  91. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/memory/hebbian_synapse.py +0 -0
  92. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/memory/held_out_digit_poc.py +0 -0
  93. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/memory/lockstep_runner.py +0 -0
  94. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/memory/one_shot_associative_memory.py +0 -0
  95. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/memory/prototypical.py +0 -0
  96. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/memory/stdp_synapse.py +0 -0
  97. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/memory/stdp_window_poc.py +0 -0
  98. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/network/__init__.py +0 -0
  99. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/network/hidden_frames.py +0 -0
  100. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/network/inference.py +0 -0
  101. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/network/model_diff.py +0 -0
  102. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/network/model_search.py +0 -0
  103. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/network/model_store.py +0 -0
  104. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/network/spiking_net.py +0 -0
  105. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/neurons/__init__.py +0 -0
  106. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/neurons/alpha.py +0 -0
  107. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/neurons/contract.py +0 -0
  108. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/neurons/handler.py +0 -0
  109. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/neurons/lapicque.py +0 -0
  110. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/neurons/leaky.py +0 -0
  111. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/neurons/recurrent.py +0 -0
  112. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/neurons/registry.py +0 -0
  113. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/neurons/spike_grad.py +0 -0
  114. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/neurons/synaptic.py +0 -0
  115. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/__init__.py +0 -0
  116. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/api.py +0 -0
  117. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/array_codec.py +0 -0
  118. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/drift.py +0 -0
  119. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/errors.py +0 -0
  120. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/exporter.py +0 -0
  121. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/extract.py +0 -0
  122. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/ingest.py +0 -0
  123. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/interpreter.py +0 -0
  124. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/interpreter_result.py +0 -0
  125. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/jsonable.py +0 -0
  126. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/mapped_node.py +0 -0
  127. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/mapper.py +0 -0
  128. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/neuron_kwargs.py +0 -0
  129. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/neuron_nodes.py +0 -0
  130. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/node_builders.py +0 -0
  131. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/node_names.py +0 -0
  132. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/ops_common.py +0 -0
  133. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/ops_linear.py +0 -0
  134. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/ops_neuron.py +0 -0
  135. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/ops_registry.py +0 -0
  136. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/planner.py +0 -0
  137. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/require.py +0 -0
  138. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/roundtrip.py +0 -0
  139. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/serialization.py +0 -0
  140. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/stage_builders.py +0 -0
  141. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/stage_mapping.py +0 -0
  142. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/stages_unmappable.py +0 -0
  143. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/tolerances.py +0 -0
  144. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/torch_map.py +0 -0
  145. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/validation_report.py +0 -0
  146. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/nir_bridge/validator.py +0 -0
  147. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/observability/__init__.py +0 -0
  148. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/observability/json_formatter.py +0 -0
  149. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/observability/logging_setup.py +0 -0
  150. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/observability/metrics.py +0 -0
  151. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/observability/persistence.py +0 -0
  152. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/observability/prometheus.py +0 -0
  153. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/observability/registry.py +0 -0
  154. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/observability/snapshot.py +0 -0
  155. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/observability/store.py +0 -0
  156. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/observability/timer.py +0 -0
  157. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/onnx_bridge/__init__.py +0 -0
  158. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/onnx_bridge/api.py +0 -0
  159. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/onnx_bridge/errors.py +0 -0
  160. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/onnx_bridge/export.py +0 -0
  161. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/onnx_bridge/import_onnx.py +0 -0
  162. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/onnx_bridge/metadata.py +0 -0
  163. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/onnx_bridge/roundtrip.py +0 -0
  164. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/onnx_bridge/step_module.py +0 -0
  165. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/py.typed +0 -0
  166. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/rrt/__init__.py +0 -0
  167. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/rrt/context_model.py +0 -0
  168. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/rrt/falsification_poc.py +0 -0
  169. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/rrt/protocol.py +0 -0
  170. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/rrt/relation.py +0 -0
  171. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/rrt/trial_features.py +0 -0
  172. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/runtime/__init__.py +0 -0
  173. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/runtime/device.py +0 -0
  174. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/runtime/execution_mode.py +0 -0
  175. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/runtime/system_stats.py +0 -0
  176. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/serving/__init__.py +0 -0
  177. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/serving/bundle.py +0 -0
  178. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/serving/bundle_manifest.py +0 -0
  179. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/serving/encode_spec.py +0 -0
  180. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/serving/errors.py +0 -0
  181. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/serving/prediction.py +0 -0
  182. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/serving/preprocess.py +0 -0
  183. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/serving/session.py +0 -0
  184. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/serving/state_tree.py +0 -0
  185. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/serving/step.py +0 -0
  186. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/serving/tensor_codec.py +0 -0
  187. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/simulator/__init__.py +0 -0
  188. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/simulator/compiled_step.py +0 -0
  189. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/simulator/execution.py +0 -0
  190. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/simulator/frames.py +0 -0
  191. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/simulator/grad_policy.py +0 -0
  192. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/simulator/input_shape.py +0 -0
  193. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/simulator/module_spec.py +0 -0
  194. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/simulator/parallel_runner.py +0 -0
  195. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/simulator/production.py +0 -0
  196. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/simulator/production_result.py +0 -0
  197. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/simulator/runner.py +0 -0
  198. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/simulator/state.py +0 -0
  199. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/simulator/step_stages.py +0 -0
  200. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/simulator/trajectory.py +0 -0
  201. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/streaming/__init__.py +0 -0
  202. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/streaming/encoding.py +0 -0
  203. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/streaming/recipe.py +0 -0
  204. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/streaming/serving.py +0 -0
  205. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/streaming/stream_source.py +0 -0
  206. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/streaming/window_spec.py +0 -0
  207. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/__init__.py +0 -0
  208. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/attention.py +0 -0
  209. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/builder.py +0 -0
  210. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/edge.py +0 -0
  211. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/kinds.py +0 -0
  212. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/multihead_attention.py +0 -0
  213. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/ordering.py +0 -0
  214. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/positional_encoding.py +0 -0
  215. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/presets.py +0 -0
  216. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/registry.py +0 -0
  217. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/sequence_presets.py +0 -0
  218. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/sequence_stages.py +0 -0
  219. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/spec.py +0 -0
  220. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/stage.py +0 -0
  221. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/stage_module.py +0 -0
  222. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/stage_modules.py +0 -0
  223. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/sum_pool.py +0 -0
  224. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/topology/validation.py +0 -0
  225. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/tracking/__init__.py +0 -0
  226. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/tracking/config_hash.py +0 -0
  227. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/tracking/determinism.py +0 -0
  228. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/tracking/manifest.py +0 -0
  229. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/tracking/seed.py +0 -0
  230. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/tracking/sink.py +0 -0
  231. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/tracking/sink_probe.py +0 -0
  232. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/tracking/sink_records.py +0 -0
  233. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/tracking/sinks.py +0 -0
  234. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/tracking/tensorboard_sink.py +0 -0
  235. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/tracking/versions.py +0 -0
  236. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/tracking/wandb_sink.py +0 -0
  237. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/training/__init__.py +0 -0
  238. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/training/amp_controller.py +0 -0
  239. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/training/checkpoint_mixin.py +0 -0
  240. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/training/encoding_mixin.py +0 -0
  241. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/training/eval_mixin.py +0 -0
  242. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/training/event_batches.py +0 -0
  243. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/training/event_engine.py +0 -0
  244. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/training/logger.py +0 -0
  245. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/training/multi_device.py +0 -0
  246. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/training/scaleup_mixin.py +0 -0
  247. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/training/topology_mixin.py +0 -0
  248. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/training/trainer.py +0 -0
  249. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge/training/training_engine.py +0 -0
  250. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge.egg-info/dependency_links.txt +0 -0
  251. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge.egg-info/entry_points.txt +0 -0
  252. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge.egg-info/not-zip-safe +0 -0
  253. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge.egg-info/requires.txt +0 -0
  254. {spikeforge-0.3.2 → spikeforge-0.3.3}/spikeforge.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: spikeforge
3
- Version: 0.3.2
3
+ Version: 0.3.3
4
4
  Summary: Spiking neural network trainer/experiments for MNIST built with snnTorch and PyTorch.
5
5
  Author-email: Capsize LLC <contact@capsizegames.com>
6
6
  Maintainer-email: Capsize LLC <contact@capsizegames.com>
@@ -15,7 +15,7 @@ build-backend = "setuptools.build_meta"
15
15
 
16
16
  [project]
17
17
  name = "spikeforge"
18
- version = "0.3.2"
18
+ version = "0.3.3"
19
19
  description = "Spiking neural network trainer/experiments for MNIST built with snnTorch and PyTorch."
20
20
  # ``README.md`` and ``LICENSE`` are committed symlinks to the repository-root
21
21
  # files: the distribution metadata points at the root documents while
@@ -0,0 +1,5 @@
1
+ """SNN-native internal affect regulation primitives."""
2
+
3
+ from spikeforge.affect.regulator import AffectiveOutput, AffectiveRegulator
4
+
5
+ __all__ = ["AffectiveOutput", "AffectiveRegulator"]
@@ -0,0 +1,77 @@
1
+ """Slow recurrent spiking state for downstream gain modulation."""
2
+
3
+ from typing import NamedTuple, Optional
4
+
5
+ import snntorch as snn
6
+ import torch
7
+ from torch import nn
8
+
9
+
10
+ class AffectiveOutput(NamedTuple):
11
+ """One regulator step's spikes and continuous broadcast signal."""
12
+
13
+ spikes: torch.Tensor
14
+ broadcast: torch.Tensor
15
+
16
+
17
+ class AffectiveRegulator(nn.Module):
18
+ """Integrate inputs into a slowly decaying SNN-native affect state.
19
+
20
+ The linear projection turns signals such as novelty or confidence into
21
+ currents. A recurrent LIF membrane integrates those currents and is
22
+ exposed as the continuous ``broadcast`` signal; spikes are provided for
23
+ consumers that want an event-native modulation path.
24
+ """
25
+
26
+ def __init__(
27
+ self,
28
+ input_size: int,
29
+ state_size: int = 2,
30
+ beta: float = 0.98,
31
+ threshold: float = 1.0,
32
+ device: Optional[torch.device] = None,
33
+ ) -> None:
34
+ """Create a regulator with a persistent state per batch item."""
35
+ super().__init__()
36
+ if input_size < 1 or state_size < 1:
37
+ raise ValueError("input_size and state_size must be positive")
38
+ if not 0.0 < beta < 1.0:
39
+ raise ValueError("beta must be between 0 and 1")
40
+ self.projection = nn.Linear(
41
+ input_size, state_size, bias=False, device=device,
42
+ )
43
+ self.neuron = snn.Leaky(
44
+ beta=beta,
45
+ threshold=threshold,
46
+ reset_mechanism="subtract",
47
+ ).to(device)
48
+ self._mem: Optional[torch.Tensor] = None
49
+
50
+ @property
51
+ def state_size(self) -> int:
52
+ """Return the number of broadcast channels."""
53
+ return self.projection.out_features
54
+
55
+ def reset_state(self, batch_size: int = 1) -> None:
56
+ """Clear the carried state before a new sequence."""
57
+ if batch_size < 1:
58
+ raise ValueError("batch_size must be positive")
59
+ device = self.projection.weight.device
60
+ self._mem = torch.zeros(batch_size, self.state_size, device=device)
61
+
62
+ def step(self, inputs: torch.Tensor) -> AffectiveOutput:
63
+ """Advance the regulator for inputs shaped ``[B, input_size]``."""
64
+ if inputs.ndim != 2 or inputs.size(1) != self.projection.in_features:
65
+ raise ValueError(
66
+ "inputs must have shape [B, input_size]"
67
+ )
68
+ batch_size = inputs.size(0)
69
+ if self._mem is None or self._mem.size(0) != batch_size:
70
+ self.reset_state(batch_size)
71
+ current = self.projection(inputs)
72
+ spikes, self._mem = self.neuron(current, self._mem)
73
+ return AffectiveOutput(spikes=spikes, broadcast=self._mem)
74
+
75
+ def forward(self, inputs: torch.Tensor) -> AffectiveOutput:
76
+ """Alias :meth:`step` for ordinary ``nn.Module`` use."""
77
+ return self.step(inputs)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: spikeforge
3
- Version: 0.3.2
3
+ Version: 0.3.3
4
4
  Summary: Spiking neural network trainer/experiments for MNIST built with snnTorch and PyTorch.
5
5
  Author-email: Capsize LLC <contact@capsizegames.com>
6
6
  Maintainer-email: Capsize LLC <contact@capsizegames.com>
@@ -13,6 +13,8 @@ spikeforge.egg-info/entry_points.txt
13
13
  spikeforge.egg-info/not-zip-safe
14
14
  spikeforge.egg-info/requires.txt
15
15
  spikeforge.egg-info/top_level.txt
16
+ spikeforge/affect/__init__.py
17
+ spikeforge/affect/regulator.py
16
18
  spikeforge/benchmark/__init__.py
17
19
  spikeforge/benchmark/__main__.py
18
20
  spikeforge/benchmark/cli.py
File without changes
File without changes
File without changes
File without changes
File without changes