{"id":20179506,"url":"https://github.com/csdummi/spatialpooler","last_synced_at":"2026-04-27T17:33:47.519Z","repository":{"id":114100632,"uuid":"183943276","full_name":"CSDUMMI/SpatialPooler","owner":"CSDUMMI","description":"State -\u003e Potential Pool -\u003e Permanence -\u003e Activation -\u003e State'","archived":false,"fork":false,"pushed_at":"2019-05-06T17:06:52.000Z","size":63,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-06-29T21:04:42.414Z","etag":null,"topics":["htm","htm-theory","numenta","numpy","spatialpooler"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CSDUMMI.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-04-28T18:16:27.000Z","updated_at":"2021-07-15T16:33:08.000Z","dependencies_parsed_at":"2023-06-12T22:30:42.883Z","dependency_job_id":null,"html_url":"https://github.com/CSDUMMI/SpatialPooler","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/CSDUMMI/SpatialPooler","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CSDUMMI%2FSpatialPooler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CSDUMMI%2FSpatialPooler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CSDUMMI%2FSpatialPooler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CSDUMMI%2FSpatialPooler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CSDUMMI","download_url":"https://codeload.github.com/CSDUMMI/SpatialPooler/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CSDUMMI%2FSpatialPooler/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32348048,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-27T17:12:42.749Z","status":"ssl_error","status_checked_at":"2026-04-27T17:12:41.658Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["htm","htm-theory","numenta","numpy","spatialpooler"],"created_at":"2024-11-14T02:26:58.068Z","updated_at":"2026-04-27T17:33:47.503Z","avatar_url":"https://github.com/CSDUMMI.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Spatial Pooler - Simple and minimal implementation of the Spatial Pooler by Numenta\n\nIf you want a deep dive into the\ntheory behind the Spatial Pooler:\n\n**HTM School:**\nhttps://invidio.us/watch?v=R5UoFNtv5AU\n\nhttps://invidio.us/watch?v=rHvjykCIrZM\n\n**Numenta Homepage(s):**\nhttps://numenta.com/\nhttps://numenta.org/\n\n**Blog post:**\nhttps://numenta.org/blog/2016/02/19/mathmatical-formalization-of-htm-spatial-pooler/\n\n# How to use this\nIf you are in this Folder:\n```python3\nfrom spatial_pooler import SpatialPooler, overlap\nimport numpy as np\n\nsp = SpatialPooler(50,100)\noutput  = sp.run(np.random.randn(50) \u003e 0)\n\nprint(output)\n```\n\nThe most important\nmethod in the\n`SpatialPooler` class\nis `SpatialPooler.run()`.\nIt takes a numpy bool array,\nthat represents a SDR and\nreturns another numpy bool\narray that is the output\nof the SP.\n\n#### The SP always learns.\n\nMore examples and documentation\nin the `.ipynb` files in the\n`examples` folders.\n\n\n## The Architecure and meaning of State -\u003e Potential Pool -\u003e Permanence -\u003e Activation -\u003e State'\nAs you may have noted, the description\nof this Repository is State -\u003e Potential Pool -\u003e Permanence -\u003e Activation -\u003e State',\nbut what does this mean?\nIf your are more into SP Theory, you may noted that this is\na picture of the SP Algorithm.\nFirst there is a State, a SDR that is\nalso the input to the SP.\nAnd then for each column in the SP,\nthe Algorithm first ignores those\nparts of the state that are not in\nthe potential pool, then those\nfor which the permanence is less\nthan a threshhold.\nAfter these two extractions,\nthe algorithm counts the active\nparts of the state left and\ntests again whether that count\nis greater than a threshhold.\nIf so, the collumn upon which these\nsteps where executed is activated\nand the output is activated.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcsdummi%2Fspatialpooler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcsdummi%2Fspatialpooler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcsdummi%2Fspatialpooler/lists"}