HTM Implementations

At the core of HTM are learning algorithms that can store, learn, infer and recall high-order sequences. Below are descriptions of several HTM implementations currently active within our community. For detailed descriptions of HTM algorithms, see our digital book, Biological and Machine Intelligence. It contains pseudocode for both the spatial pooling  and temporal memory  algorithms (PDFs).

NuPIC, or the Numenta Platform for Intelligent Computing, is an HTM implementation created by Numenta and open-sourced in June 2013. This codebase is the original HTM codebase, and is architected in a way that allows algorithmic experimentation in Python, but more performant versions of HTM algorithms in C++. It is currently in maintenance mode.

NuPIC Core (C++)​

Our C++ codebase contains all HTM algorithms written in C++, and SWiG language bindings to Python. Language bindings to other environments should be added here.

This codebase exposes the Network API , which is the primary low-level interface for creating HTM systems.

http://github.com/numenta/nupic.core

NuPIC (Python)​

The NuPIC Python codebase contains Python code implementations of HTM. Through this interface, users may specify whether their code runs Python algorithms or the faster C++ algorithms using the Python bindings provided in nupic.core.

In addition to providing Python bindings to the nupic.core Network API , this codebase also includes a higher-level client API called the Online Prediction Framework (OPF), which is tuned towards experimentation with predictions, anomaly detection, and identifying optimal model parameters (swarming) .

http://github.com/numenta/nupic

HTM.Java​

While the copyright to HTM.Java was generously donated to Numenta by its author , it is a community-created and maintained port of NuPIC algorithms into Java. This Java library provides a similar experience to the NuPIC Network API, and has algorithmic parity with NuPIC.  

http://github.com/numenta/htm.java

Comportex (Clojure)​

Comportex is an implementation of HTM as a Clojure library. It is not a port of NuPIC, it is a separate implementation based initially on the Numenta “CLA white paper” but significantly evolved. 

https://github.com/htm-community/comportex