Skip to main content

A Python Socket.IO server that allows any Socket.IO-compliant application to communicate with manipulators used in electrophysiology experiments.

Project description

Electrophysiology Manipulator Link

PyPI version CodeQL Dependency Review Code style: black

The Electrophysiology Manipulator Link (or Ephys Link for short) is a Python Socket.IO server that allows any Socket.IO-compliant application (such as Pinpoint) to communicate with manipulators used in electrophysiology experiments.

Currently, Ephys Link only supports Sensapex uMp-4 Micromanipulators and New Scale 3-axis manipulators. However, this platform is designed to be extensible to other manipulators and more may be added in the future.

For more information regarding the server's implementation and how the code is organized, see the package's development documentation.

For detailed descriptions of the server's API, see the API reference.

Installation

Prerequisites

  1. Python 3.8+ and pip.
  2. An x86 Windows PC is required to run the server.
  3. For Sensapex devices, the controller unit must be connected via an ethernet cable and powered. A USB-to-ethernet adapter is acceptable. For New Scale manipulators, the controller unit must be connected via USB and be powered by a 6V power supply.
  4. To use the emergency stop feature, ensure an Arduino with the StopSignal sketch is connected to the computer. Follow the instructions on that repo for how to set up the Arduino.

Using a Python virtual environment is encouraged.

Create a virtual environment by running python -m venv ephys_link

Activate the environment by running .\ephys_link\scripts\activate

A virtual environment helps to isolate installed packages from other packages on your computer and ensures a clean installation of Ephys Link

NOTE: Ephys Link is an HTTP server without cross-origin support. The server is currently designed to interface with local/desktop instances of Pinpoint. It will not work with the web browser versions of Pinpoint at this time.

Install for use

Run the following command to install the server:

pip install ephys-link

Update the server like any other Python package:

pip install --upgrade ephys-link

Install for development

  1. Clone the repository.

  2. Run the following command in the root directory of the repository to install the package along with development tools:

    pip install -e .[dev]
    

Usage

Run the following commands in a terminal to start the server for the desired manipulator platform:

Manipulator Platform Command
Sensapex ephys-link
New Scale ephys-link -t new_scale
New Scale via Pathfinder HTTP server ephys-link -t new_scale_pathfinder

There are a couple additional aliases for the Ephys Link executable: ephys_link and el.

By default, the server will broadcast with its local IP address on port 8081. Copy this information into Pinpoint to connect.

For example, if the server is running on the same computer that Pinpoint is, use

  • Server: localhost
  • Port: 8081

Documentation and More Information

Complete documentation including API usage and development installation can be found on the Virtual Brain Lab Documentation page for Ephys Link.

Citing

If this project is used as part of a research project you should cite the Pinpoint repository. Please email Dan (dbirman@uw.edu) if you have questions.

Please reach out to Kenneth (kjy5@uw.edu) for questions about the Electrophysiology Manipulator Link server. Bugs may be reported through the issues tab.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ephys-link-0.9.14.tar.gz (666.1 kB view hashes)

Uploaded Source

Built Distribution

ephys_link-0.9.14-py3-none-any.whl (660.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page