-
Notifications
You must be signed in to change notification settings - Fork 45
/
Copy pathEEG_0.4.py
113 lines (92 loc) · 3.52 KB
/
EEG_0.4.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import random
import dash
import datetime
from dash.dependencies import Input, Output, State, Event
import dash_core_components as dcc
import dash_html_components as html
import plotly.plotly as py
from plotly import graph_objs as go
from plotly.graph_objs import *
from flask import Flask
import pandas as pd
from collections import deque
import video_engine as rpd
# ^^ Dependences ^^ #
X = deque(maxlen=20)
Y = deque(maxlen=20)
X.append(1)
Y.append(1)
app = dash.Dash("Beyond Data") #Creates application
df = pd.read_csv('testCleanREDO.csv') #Reads CSV Data
data_dict = {"data1":df['data1'],
"data2": df['data2'],
"data3": df['data3'],
"data4":df['data4']}
app.layout = html.Div([
html.Div([
html.H2('Beyond Data',
style={'textAlign': 'center'
}),
]),
dcc.Dropdown(id='eeg-data', #Creates dropdown menu for all options defined in dict
options=[{'label': s, 'value': s}
for s in data_dict.keys()],
value=[],
multi=True
),
dcc.Slider(id='time-slider', value=0, min=-10, max=20, step=0.00001,
labels={-10: 'start', 20: 'end'}),
rpd.my_Player(
id = 'video_player',
url = 'http://127.0.0.1:8080/testvideo.mp4',
width = 900,
height = 720,
controls = True,
playing = True ),
html.Div(children=html.Div(id='graphs'), className='row'), #Conatins all of the Graphs
dcc.Interval( #Updates graphs determind in ms by interval var
id='graph-update',
interval=100),
], className="container",style={'width':'98%','margin-left':10,'margin-right':10,'max-width':50000})
@app.callback(
dash.dependencies.Output('graphs','children'),
[dash.dependencies.Input('eeg-data', 'value')],
events=[dash.dependencies.Event('graph-update', 'interval')]
)
def update_graph(data_names):
graphs = []
global X
global Y
X.append (X[-1]+1)
Y.append (Y[-1]+1)
if len(data_names)>2:
class_choice = 'col s12 m6 l4'
elif len(data_names) == 2:
class_choice = 'col s12 m6 l6'
else:
class_choice = 'col s12'
for data_name in data_names:
data = go.Scatter(
x=list(df['timestamp']),
y=list(data_dict[data_name]),
name='Scatter',
fill="tozeroy",
fillcolor="#6897bb"
)
graphs.append(html.Div(dcc.Graph(
id=data_name,
animate=True,
figure={'data': [data],'layout' : go.Layout(xaxis=dict(range=[min(X), max(X)]),
yaxis=dict(range=[min(data_dict[data_name]),max(data_dict[data_name])]),
margin={'l':50,'r':1,'t':45,'b':1}, #setting margins for Left,right,top,bototm
title='{}'.format(data_name))}
), className=class_choice))
return graphs
external_css = ["https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/css/materialize.min.css"]
for css in external_css:
app.css.append_css({"external_url": css})
external_js = ['https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/js/materialize.min.js']
for js in external_css:
app.scripts.append_script({'external_url': js})
if __name__ == '__main__':
app.run_server(debug=True)