~/openvibe$ ./dist/openvibe-designer.sh
import scipy.io as sio
import csv
SUBJECT = 'aak'
IN_FILE = 'data/musicbci_VP%s.mat' % SUBJECT
OUT_FILE = 'dataCSV/%s_signal.csv' % SUBJECT
print "Loading matlab file %s..." % IN_FILE
data = sio.loadmat(IN_FILE)
readings = data['data'][0]['X'][0]
# First line: Row count, then channel names, then sample rate
channelNames = [str(c[0]) for c in data['data'][0]['clab'][0][0]]
sampleRate = data['data'][0]['fs'][0][0][0]
print "# Readings: %d" % readings.shape[0]
print "# Channels: %d" % len(channelNames)
print "Sample rate: %d hz" % sampleRate
# sampleRate samples/sec = 1000 / sampleRate ms/sample
secPerSample = 1.0 / sampleRate
print "Writing to %s..." % OUT_FILE
with open(OUT_FILE, 'wb') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['Time (s)'] + channelNames + ['Sampling Rate'])
# First row has extra rate:
writer.writerow([0.0] + readings[0].tolist() + [sampleRate])
for r in range(1, readings.shape[0]):
writer.writerow([r * secPerSample] + readings[r].tolist())
print "Done!"
Also available on github
~/openvibe/musicbci$ time python signalToCSV.py
Loading matlab file data/musicbci_VPaak.mat...
# Readings: 2277240
# Channels: 64
Sample rate: 200 hz
Writing to dataCSV/aak_signal.csv...
Done!
real 2m30.080s
user 2m25.902s
sys 0m3.841s
Type | Frequency | Association (ish...) |
Delta | 0.1 - 3Hz | Sleep, Healing |
Theta | 4 - 7Hz | Meditation, Memory |
Alpha | 8 - 15Hz | Relaxation, Creativity |
Beta | 16 - 30Hz | Alertness, Cognition |
Gamma | 31 - 100Hz | Focus, Consciousness |
import scipy.io as sio
import csv
SUBJECT = 'aak'
IN_FILE = 'data/musicbci_VP%s.mat' % SUBJECT
OUT_FILE = 'dataCSV/%s_events.csv' % SUBJECT
print "Loading matlab file %s..." % IN_FILE
data = sio.loadmat(IN_FILE)
trials = data['data'][0]['trial'][0]
values = data['data'][0]['y'][0]
assert trials.shape == values.shape
eventCount = trials.shape[1]
sampleRate = int(round(data['data'][0]['fs'][0][0][0]))
print "# Events: %d" % eventCount
print "Writing to %s..." % OUT_FILE
with open(OUT_FILE, 'wb') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['Time (s)', 'Identifier', 'Duration'])
# First row has extra rate:
for i in range(eventCount):
msOffset = int(round(trials[0, i])) * 1000 / sampleRate
# eID = values[0, i]
eID = 33024 + values[0, i] # HACK: http://openvibe.inria.fr/stimulation-codes/
writer.writerow([msOffset / 1000.0, eID, 1])
print "Done!"
Also available on github
~/openvibe$ ./dist/openvibe-acquisition-server.sh
$~/muse$ muse-io --device DEVICE_ID --lsl-eeg muse
Enter your Muse bluetooth ID for DEVICE_ID, for example mine is 00:06:66:68:9F:96