Loading...

Synapse Protocol

The Synapse Protocol defines a standard interface for interacting with a wide range of possible neural interface devices, and includes Synapse Apps, a powerful tool for implementing custom neural processing applications on device. Synapse protocol includes a gRPC-based control plane API and a UDP-based streaming API. However, we provide client libraries in Python, C++, and Node Typescript to allow you to conveniently configure and interface with the device without needing to interface with gRPC or UDP directly.

Synapse includes a range of standard nodes, which execute within the device (i.e., on the headstage, or soft device) to facilitate communication with peripherals as well as some processing capabilities. Relaying nodes together to connect outputs to inputs creates a signal chain to process your data.

Three nodes are visually linked to one another (Electrical Broadband > Spike Detect > Stream Out) in the Nexus UI to represent how nodes form a signal chain.

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

Getting Started

Python

Before installing the Synapse Python client library, you will need:

  • Python version 3.9 or later.
  • pip version version 23 or later.
  • Docker*

*Docker is required for packaging and deploying Synapse Apps, but is no required for initial installation.

You can install the official Synapse Python client library using:

pip install science-synapse

which includes the synapsectl utility:

$ synapsectl --help

usage: synapsectl [-h] [--uri URI] [--version] [--verbose]
                  {discover,info,query,start,stop,configure,logs,read,plot,file,taps,deploy,build} ...

Synapse Device Manager

options:
  -h, --help            show this help message and exit
  --uri URI, -u URI     The device identifier to connect to. Can either be the IP address or name
  --version             show program's version number and exit
  --verbose, -v         Enable verbose output

Commands:
  {discover,info,query,start,stop,configure,logs,read,plot,file,taps,deploy,build}
    discover            Discover Synapse devices on the network
    info                Get device information
    query               Execute a query on the device
    start               Start the device or an application
    stop                Stop the device or an application
    configure           Write a configuration to the device
    logs                Get logs from the device
    read                Read from a device's StreamOut node
    plot                Plot recorded synapse data
    file                File commands
    taps                Interact with taps on the network
    deploy              Deploy an application to a Synapse device
    build               Cross-compile and package an application into a .deb without deploying

C++

Before installing the Synapse C++ client library, you will need:

  • CMake version 3.23.5 or later
  • Make

You can install the official C++ client library by building from source:

Typescript

Before installing the Synapse Node/Typescript client library, you will need:

  • Node
  • Npm

You can install the official Synapse Node/Typescript client library using:

npm install @science-corporation/synapse