Skip to main content

ScienceMode4 Python

Introduction

Pure Python implementation of HasomedScience ScienceMode 4 protocol for P24 (https://github.com/ScienceMode/ScienceMode4_P24) and I24 (https://github.com/ScienceMode/ScienceMode4_I24) devices. To use this library see section Installation. Library and examples are tested under Windows, Linux and MacOS.

See also Hints file for more information.

Requirements

Python 3.11 or higher

Library

Installation

Dependencies

Build library

  • Only necessary, if you made changes to the library or install a version from a branch
  • Install build dependencies
    • python -m pip install --upgrade build
  • Install other library dependencies
    • pip install -r src/science_mode_4/requirements.txt
  • Optional run linter
    • pip install pylint
    • pylint .\src\science_mode_4\
  • Build project
    • python -m build
  • Install local library
    • pip install --force .\dist\science_mode_4-0.0.7-py3-none-any.whl (adjust filename accordingly)

Examples

Description

  • Located in folder examples
  • Run examples with python -m examples.<layer>.<example>
    • From root directory of this repository
    • Example: python -m examples.dyscom.example_dyscom_fastplotlib
    • All examples try to find the serial port that a science mode device is connected to automatically
    • If that fails, provide serial port name as parameter, e.g. python -m examples.<layer>.<example> COM3
  • Good starting point for an simple stimulation is example example_mid_level
  • Examples have own dependencies, see Dependencies for examples
  • General layer
    • python -m examples.general.example_general
      • Demonstrates how to use general layer to initialize device, get serial number and firmware version
      • Does not call any stimulation functions
  • Mid level layer
    • python -m examples.mid_level.example_mid_level_simple
      • Demonstrates how to use mid level layer, where a stimulation pattern is send to the stimulator and the device automatically executes the pattern by itself for 15s
    • python -m examples.mid_level.example_mid_level
      • Demonstrates how to use mid level layer, where a stimulation pattern is send to the stimulator and the device automatically executes the pattern by itself until user ends stimulation by keyboard
    • python -m examples.mid_level.example_mid_level_update
      • Demonstrates how to use mid level layer, to toggle stimulation channels by keyboard
  • Low level layer
    • python -m examples.low_level.example_low_level
      • Demonstrates how to use low level layer, where host has to trigger stimulation manually, in this case by pressing a key
    • python -m examples.low_level.example_low_level_plot
      • Demonstrates how to use low level layer to stimulate, measure current and plot it in a graph using PyPlot
  • Dyscom layer
    • python -m examples.dyscom.example_dyscom_get
      • Demonstrate how to use different get commands from dyscom layer
    • python -m examples.dyscom.example_dyscom_fastplotlib
      • Demonstrate how to use dyscom layer to measure data and plotting values using fastplotlib
    • python -m examples.dyscom.example_dyscom_pyplot
      • Demonstrate how to use dyscom layer to measure data and plotting values using PyPlot
    • python -m examples.dyscom.example_dyscom_write_csv
      • Demonstrate how to use dyscom layer to measure data and writing measurement data to a .csv-file
    • python -m examples.dyscom.example_dyscom_send_file
      • Demonstrate how to use dyscom layer to save measurement data on memory card and reading it afterwards

Dependencies for examples

Changes

0.0.11

  • Implemented UsbConnection class
    • Alternative for SerialPortConnection, both share the same base class Connection
    • Added PyUSB and libusb-package as dependencies

0.0.12

  • Dyscom init
    • Added channel settings register
  • Some bugfixes

0.0.13

  • Fixed error with example keyboard utils under Linux
  • Enhanced example low level plot to show all channels

0.0.14

  • Improved examples under Linux/MacOS

0.0.15

  • Enhanced readme
  • Changed current for ChannelPoint from int to float

0.0.16

  • Fixed error with PacketLowLevelChannelConfigAck result

0.0.17

  • Added sample that demonstrates how to read measurement data files from I24 devices

0.0.18

  • Fixed error for mid level update when not using all channels

0.0.19

  • Fixed error in ByteBuilder when printing object

0.0.20

  • Changed return value of LayerMidLevel.get_current_data()
  • Added locking to example_mid_level_update to synchronize call of async functions from different event loops
  • Added error handling in SerialPortConnection._read_intern() to prevent ClearComErrors

0.0.21

  • Added more error handling in SerialPortConnection._read_intern() to prevent ClearComErrors
  • Added getter for underlying serial object in SerialPortConnection

0.0.22

  • Library specific exception classes

0.0.23

  • Added timeout parameters to SerialPortConnection constructor

Metadata

Release files for science-mode-4 0.0.23

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for science-mode-4 0.0.23
File Size Uploaded Provenance
science_mode_4-0.0.23.tar.gz 49.8 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for science-mode-4 0.0.23
File Interpreter ABI Platform
science_mode_4-0.0.23-py3-none-any.whl Python 3 none any Details

Total release size: 115.9 kB

Release files / science_mode_4-0.0.23.tar.gz

Download URL science_mode_4-0.0.23.tar.gz
Size 49.8 kB
Tags Source
SHA-256 checksum
How to use checksums
e11f79fad827ff857d67741837cf94d17e77cd27e467a528c5fd0c497e27b8f4
BLAKE2b-256 checksum
How to use checksums
fe0680aea8e5d661586a60ea83a3bd5d460e5b74f2a4ca1a1be9e0a91dbf7447
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 4, 2026.

Transparency log

Release files / science_mode_4-0.0.23-py3-none-any.whl

Download URL science_mode_4-0.0.23-py3-none-any.whl
Size 66.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7821122f47e0df0790d3d8d17e548cd71aecc007bfb5a5582dccfbd000dbffee
BLAKE2b-256 checksum
How to use checksums
bc5e6886c772e32ccc6a919e38165a67e12fcc96acaf2fd33f353edc0698cbd1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 4, 2026.

Transparency log

Security for science-mode-4 0.0.23

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for science_mode_4-0.0.23.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 4, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page