Table of Contents
Preface
Scope of Document
Document Overview
Related Documentation
Conventions
Document History
For More Information
1 Getting Started With Numenta Node Plugins
Introduction
Why Custom Nodes?
What Custom Nodes Must Do
Developing a Plugin
Developing a Plugin in C++
Developing a Plugin in Python
Understanding the Node Plugin Architecture
Interaction Between Plugins and the Tools Framework
Interaction Between Plugins and the NRE
2 C++ Custom Node Quickstart
Creating and Building a Plugin
Prerequisites
Creating the Boilerplate Plugin on MacOS X or Linux
Creating the Boilerplate Plugin on Windows
Running Your Plugin
Files Generated by quickstart.py
coolPlugin.cpp
Implementing Your Node
The NodeSpec Structure
Implementation Task Overview
Updating the CoolNode1_Spec
Implementing the CoolNode1 Constructor
Implementing the CoolNode1 Destructor
Implementing INode::init()
Implementing INode::saveState()
Implementing INode::compute()
Implementing INode::getParameter()
Implementing INode::setParameter()
Implementing INode::execute()
3 C++ Node Plugin API Reference
Overview
Plugin Node Creation, Registration, and Use
Developing the Plugin
Loading and Registration
HTM Network Construction
Custom Nodes at Runtime: Tools Framework
Interacting with Custom Nodes: NRE
Plugin System Components
Plugin Manager Sub-System
Plugins on the Tools Side
Plugins on the Runtime Side
Node Object Model
C++ Node Interface
Plugin Class
Platform Services
Developing a Plugin
Understanding the Plugin Manager Subsystem
Node Specification
Constraint Framework
PluginManager Class
ServiceProvider Class
Node Object Model Concepts
The NodeInfo Interface
Iterable Named Collections: The next() and reset() Methods
Initial State Info Object Model
ParameterMapEntry Structure
ParameterMap Structure
Input Size Map Entry Structure
Input Size Map Structure
Output Size Map Entry
Output Size Map
InitialStateInfo Structure
Node Objects and Interfaces
Read and Write Buffer
Input and Output Range
Parameter Map
NodeInfo Interface
Node Interfaces
C++ Node Interface (INode)
Static Node Interface
Platform Services
Plugin API Version
Error Handling
Logging
Memory Management
Dynamic Library Loading
Node Type Registration
Plugin Node Lifecycle
Custom Nodes on the Tools Side
Custom Nodes on the Runtime Side
How to Use Subcomponents With Your Plugin
Subcomponent Requirements
4 Using the Python Node Plugin API
Introduction
Prerequisites
Basic Requirements
Creating a Python Node Plugin
Understanding the SimpleNodes Example
Files
Learning From the Example
Testing PyNode Functionality