(Jun '19 update: original standalone Scheme SP and TM have been archived: may be useful as an intro to HTM-scheme but the libraries in HTM-scheme/algorithms have better code. Algorithms in current use (in the combined_sequences project) are apical_tiebreak_temporal_memory.ss and column_pooler.ss. See algorithms/htm_concept.ss for an intro to HTM-scheme data structures and coding approach.)
Yet another Spatial Pooler implementation, in R6RS Scheme.
Currently a standalone Scheme top-level program - just load the source and run in eg Racket or Chez Scheme. Includes hello_sp and sp_tutorial (text output only).
Translated from nupic spatial_pooler.py, following its source layout and function and variable names. Minor algorithm variations include permanence initialization as described in BaMI SP Algorithm, and random “tie breaking” of equal overlap counts in global inhibition (apparently not implemented in .py)