Skip to main content

Python wrapper for BrainFlow API + Cyton SDK for collecting realtime or offline (SDCard) EEG, EMG, EKG data.

Project description

BrainflowCytonEEGWrapper

This is particularly aimed at the OpenBCI Cyton/Cyton + Daisy biosensing board.

It allows for low-level board commands such as configuring channels and setting sample rate, making it easier to configure the way you retrieve data from the board.

Status

Full functional, working with Cyton and Cyton + Daisy.

Todo:

  • [] Include script to process SDCard data (exists but in a different repo)
  • [] Make the interface more consistent
  • [] Bake in multithreading support for easier parallel data collection + processing
  • [] ???

Details

Default channels coming in with cyton and daisy with the ultracortex mk4 are:

  • 0: "pkg"
  • 1: "Fp1"
  • 2: "Fp2"
  • 3: "C3"
  • 4: "C4"
  • 5: "P7"
  • 6: "P8"
  • 7: "O1"
  • 8: "O2"
  • 9: "F7"
  • 10: "F8"
  • 11: "F3"
  • 12: "F4"
  • 13: "T7"
  • 14: "T8"
  • 15: "P3"
  • 16: "P4"
  • 17: "AX" (accelerometer x)
  • 18: "AY" (accelerometer y)
  • 19: "AZ" (accelerometer z)
  • 31: "marker" (this can be used to put event markers in the EEG data, which is extremely useful, BUT the accelerometer will be disabled)

Usage examples

Read data from a dummy board in real time

from BrainflowCyton.eeg import EEG
from time import sleep

eeg_source = EEG(dummyBoard = True)
eeg_source.start_stream(sdcard = False)

while True:
  try:
    sleep(0.5)
    data = eeg_source.poll()
  except KeyboardInterrupt:
    eeg_source.stop()
  

Read data from a real board in real time

from BrainflowCyton.eeg import EEG
from time import sleep

eeg_source = EEG()
eeg_source.start_stream(sdcard = False)

while True:
  try:
    sleep(0.5)
    data = eeg_source.poll()
  except KeyboardInterrupt:
    eeg_source.stop()
  

Set a custom sample rate

Note: to use sample rates above 250, an SDCard is required, streaming is limited to 250 Hz.

from BrainflowCyton.eeg import EEG, CytonSampleRate
from time import sleep

eeg_source = EEG()
eeg_source.start_stream(sdcard = True, sr = CytonSampleRate.SR_1000)

while True:
  try:
    sleep(0.5)
    data = eeg_source.poll()
  except KeyboardInterrupt:
    eeg_source.stop()
  

Bandpass the data

from BrainflowCyton.eeg import EEG, Filtering
from time import sleep

eeg_source = EEG(dummyBoard = True)
# set the indexes of channels you want to filter
ch_idx = [1, 2, 3, 4, 5, 6, 7]
eeg_filter = Filtering(exg_channels = ch_idx, sampling_rate=250)

while True:
  try:
    sleep(0.5)
    eeg_source.start_stream(sdcard = False)
    data = eeg_source.poll()
    filtered_data = eeg_filter.bandpass(data, 8, 32)
  except KeyboardInterrupt:
    eeg_source.stop()
  

Project details


Download files

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

Source Distribution

BrainflowCyton-0.1.1.tar.gz (8.7 kB view hashes)

Uploaded Source

Built Distribution

BrainflowCyton-0.1.1-py2.py3-none-any.whl (8.9 kB view hashes)

Uploaded Python 2 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