Loading...

Synapse Protocol

Overview

Synapse defines a standard protocol and toolbox for designing and interacting with a wide array of neural engineering applications and hardware devices. It does this by packaging a gRPC-based control plane API and a ZeroMQ streaming API (Taps) into a flexible and accessible Python client library, with C++, and Typescript libraries coming soon.

Synapse leverages the power of the SciFi headstage to flatten the conventional neural engineering technology stack into a single wireless device. This is achieved with a smart node-based approach to system resource allocation that takes full advantage of SciFi's powerful AI accelerated System-on-Module hardware architecture. This pushes compute toward the probe, minimizing latency and maximizing bandwidth, while maintaining flexibility and simple development workflows.

SciFi's System-on-Module architecture down as a integrated feature set centered around the module.

This allows you to deploy custom neural engineering tools into standard packages called Synapse Apps, which can be combined with standard Synapse nodes to create powerful on-device process flows, called Signal chains, without needing to interface with gRPC or TCP directly.

Taps expand the signal chain architecture by creating a flexible topologically distributed framework where each node output has a dedicated message queue. This removes the rigid IO constraints imposed by a typical signal chain configuration, giving you access to data from all node, and from within your deployed application. This pub-sub scheme allows non-linear or branching node configurations while preserving data streaming access from each node output.

Synapse transforms on-device compute from a single-purpose linear processing engine with fixed data sources and sinks into a flexible platform where custom neural engineering apps can be deployed with polymorphic IO structures. This let's you create and deploy custom tools for any neural engineering applications into an extensible signal chain where every node can be an output, and data from any processing stage is accessible.

On-Head Signal Chains

Synapse node-based logic is used to build signal chains, where on-device data flow and processing is defined by the user. Signal chains are created by linking Synapse function-defined nodes together into flexible and reconfigurable neural engineering process flows. Synapse includes standard nodes for routine operations such as ingesting, filtering, binning or saving neural data. It also includes the application node, a customizable container, where powerful custom neural engineering tools and algorithms can be deployed as Synapse Apps.

Signal chain data from any standard or application node can be saved to on-board device storage, or streamed wirelessly from any node using Taps.

Synapse nodes visually linked to one another, representing how nodes form a signal chain. Some node outputs include antennas illustrating data output streaming via wireless Taps.

A toy soft device implementation for development is available in the python Synapse GitHub repo: sciencecorp/synapse-python