0% found this document useful (0 votes)
61 views6 pages

Brainflow Sample

Uploaded by

leeminuk112
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
61 views6 pages

Brainflow Sample

Uploaded by

leeminuk112
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 6

-----------Read file-------------

import time

import numpy as np
import pandas as pd
from brainflow.board_shim import BoardShim, BrainFlowInputParams, LogLevels,
BoardIds
from brainflow.data_filter import DataFilter

def main():
BoardShim.enable_dev_board_logger()

# use synthetic board for demo


params = BrainFlowInputParams()
board = BoardShim(BoardIds.SYNTHETIC_BOARD.value, params)
board.prepare_session()
board.start_stream()
BoardShim.log_message(LogLevels.LEVEL_INFO.value, 'start sleeping in the main
thread')
time.sleep(10)
data = board.get_board_data()
board.stop_stream()
board.release_session()

# demo how to convert it to pandas DF and plot data


eeg_channels = BoardShim.get_eeg_channels(BoardIds.SYNTHETIC_BOARD.value)
df = pd.DataFrame(np.transpose(data))
print('Data From the Board')
print(df.head(10))

# demo for data serialization using brainflow API, we recommend to use it


instead pandas.to_csv()
DataFilter.write_file(data, 'test.csv', 'w') # use 'a' for append mode
restored_data = DataFilter.read_file('test.csv')
restored_df = pd.DataFrame(np.transpose(restored_data))
print('Data From the File')
print(restored_df.head(10))

if __name__ == "__main__":
main()

------------Read write file------------

import time

import numpy as np
import pandas as pd
from brainflow.board_shim import BoardShim, BrainFlowInputParams, LogLevels,
BoardIds
from brainflow.data_filter import DataFilter

def main():
BoardShim.enable_dev_board_logger()

# use synthetic board for demo


params = BrainFlowInputParams()
board = BoardShim(BoardIds.SYNTHETIC_BOARD.value, params)
board.prepare_session()
board.start_stream()
BoardShim.log_message(LogLevels.LEVEL_INFO.value, 'start sleeping in the main
thread')
time.sleep(10)
data = board.get_board_data()
board.stop_stream()
board.release_session()

# demo how to convert it to pandas DF and plot data


eeg_channels = BoardShim.get_eeg_channels(BoardIds.SYNTHETIC_BOARD.value)
df = pd.DataFrame(np.transpose(data))
print('Data From the Board')
print(df.head(10))

# demo for data serialization using brainflow API, we recommend to use it


instead pandas.to_csv()
DataFilter.write_file(data, 'test.csv', 'w') # use 'a' for append mode
restored_data = DataFilter.read_file('test.csv')
restored_df = pd.DataFrame(np.transpose(restored_data))
print('Data From the File')
print(restored_df.head(10))

if __name__ == "__main__":
main()

---------Signal Filtering--------------

import time

import matplotlib
import numpy as np
import pandas as pd

matplotlib.use('Agg')
import matplotlib.pyplot as plt

from brainflow.board_shim import BoardShim, BrainFlowInputParams, LogLevels,


BoardIds
from brainflow.data_filter import DataFilter, FilterTypes, AggOperations,
NoiseTypes

def main():
BoardShim.enable_dev_board_logger()

# use synthetic board for demo


params = BrainFlowInputParams()
board_id = BoardIds.SYNTHETIC_BOARD.value
board = BoardShim(board_id, params)
board.prepare_session()
board.start_stream()
BoardShim.log_message(LogLevels.LEVEL_INFO.value, 'start sleeping in the main
thread')
time.sleep(10)
data = board.get_board_data()
board.stop_stream()
board.release_session()

# demo how to convert it to pandas DF and plot data


eeg_channels = BoardShim.get_eeg_channels(board_id)
df = pd.DataFrame(np.transpose(data))
plt.figure()
df[eeg_channels].plot(subplots=True)
plt.savefig('before_processing.png')

# for demo apply different filters to different channels, in production choose


one
for count, channel in enumerate(eeg_channels):
# filters work in-place
if count == 0:
DataFilter.perform_bandpass(data[channel],
BoardShim.get_sampling_rate(board_id), 2.0, 50.0, 4,
FilterTypes.BESSEL_ZERO_PHASE, 0)
elif count == 1:
DataFilter.perform_bandstop(data[channel],
BoardShim.get_sampling_rate(board_id), 48.0, 52.0, 3,
FilterTypes.BUTTERWORTH_ZERO_PHASE, 0)
elif count == 2:
DataFilter.perform_lowpass(data[channel],
BoardShim.get_sampling_rate(board_id), 50.0, 5,
FilterTypes.CHEBYSHEV_TYPE_1_ZERO_PHASE, 1)
elif count == 3:
DataFilter.perform_highpass(data[channel],
BoardShim.get_sampling_rate(board_id), 2.0, 4,
FilterTypes.BUTTERWORTH, 0)
elif count == 4:
DataFilter.perform_rolling_filter(data[channel], 3,
AggOperations.MEAN.value)
else:
DataFilter.remove_environmental_noise(data[channel],
BoardShim.get_sampling_rate(board_id),
NoiseTypes.FIFTY.value)

df = pd.DataFrame(np.transpose(data))
plt.figure()
df[eeg_channels].plot(subplots=True)
plt.savefig('after_processing.png')

if __name__ == "__main__":
main()

-----------Denoising-----------------

import time
import matplotlib
import numpy as np
import pandas as pd

matplotlib.use('Agg')
import matplotlib.pyplot as plt

from brainflow.board_shim import BoardShim, BrainFlowInputParams, LogLevels,


BoardIds
from brainflow.data_filter import DataFilter, AggOperations, WaveletTypes,
NoiseEstimationLevelTypes, \
WaveletExtensionTypes, ThresholdTypes, WaveletDenoisingTypes

def main():
BoardShim.enable_dev_board_logger()

# use synthetic board for demo


params = BrainFlowInputParams()
board_id = BoardIds.SYNTHETIC_BOARD.value
board = BoardShim(board_id, params)
board.prepare_session()
board.start_stream()
BoardShim.log_message(LogLevels.LEVEL_INFO.value, 'start sleeping in the main
thread')
time.sleep(10)
data = board.get_current_board_data(500)
board.stop_stream()
board.release_session()

# demo how to convert it to pandas DF and plot data


eeg_channels = BoardShim.get_eeg_channels(board_id)
df = pd.DataFrame(np.transpose(data))
plt.figure()
df[eeg_channels].plot(subplots=True)
plt.savefig('before_processing.png')

# demo for denoising, apply different methods to different channels for demo
for count, channel in enumerate(eeg_channels):
# first of all you can try simple moving median or moving average with
different window size
if count == 0:
DataFilter.perform_rolling_filter(data[channel], 3,
AggOperations.MEAN.value)
elif count == 1:
DataFilter.perform_rolling_filter(data[channel], 3,
AggOperations.MEDIAN.value)
# if methods above dont work for your signal you can try wavelet based
denoising
# feel free to try different parameters
else:
DataFilter.perform_wavelet_denoising(data[channel],
WaveletTypes.BIOR3_9, 3,
WaveletDenoisingTypes.SURESHRINK,
ThresholdTypes.HARD,
WaveletExtensionTypes.SYMMETRIC,
NoiseEstimationLevelTypes.FIRST_LEVEL)
df = pd.DataFrame(np.transpose(data))
plt.figure()
df[eeg_channels].plot(subplots=True)
plt.savefig('after_processing.png')

if __name__ == "__main__":
main()

-----------Band power-------------

import time

from brainflow.board_shim import BoardShim, BrainFlowInputParams, LogLevels,


BoardIds
from brainflow.data_filter import DataFilter, WindowOperations, DetrendOperations

def main():
BoardShim.enable_dev_board_logger()

# use synthetic board for demo


params = BrainFlowInputParams()
board_id = BoardIds.SYNTHETIC_BOARD.value
board_descr = BoardShim.get_board_descr(board_id)
sampling_rate = int(board_descr['sampling_rate'])
board = BoardShim(board_id, params)
board.prepare_session()
board.start_stream()
BoardShim.log_message(LogLevels.LEVEL_INFO.value, 'start sleeping in the main
thread')
time.sleep(10)
nfft = DataFilter.get_nearest_power_of_two(sampling_rate)
data = board.get_board_data()
board.stop_stream()
board.release_session()

eeg_channels = board_descr['eeg_channels']
# second eeg channel of synthetic board is a sine wave at 10Hz, should see huge
alpha
eeg_channel = eeg_channels[1]
# optional detrend
DataFilter.detrend(data[eeg_channel], DetrendOperations.LINEAR.value)
psd = DataFilter.get_psd_welch(data[eeg_channel], nfft, nfft // 2,
sampling_rate,
WindowOperations.BLACKMAN_HARRIS.value)

band_power_alpha = DataFilter.get_band_power(psd, 7.0, 13.0)


band_power_beta = DataFilter.get_band_power(psd, 14.0, 30.0)
print("alpha/beta:%f", band_power_alpha / band_power_beta)

if __name__ == "__main__":
main()
my_list = [10, 20, 30, 40, 50, 60]
mean = sum(my_list) / len(my_list)
print(mean)

You might also like