def createTcp(): global experiment if experiment is None: return fail("请先创建实验") try: host = request.args.get("host") port = request.args.get("port") tcpname = request.args.get("tcpname") if host is None: host = "127.0.0.1" # 测试用 正常改成localhost if port is None: port = 8844 if tcpname is None: tcpname = "dsi" else: port = int(port) TCPParser = experiment.getParse() tcp = TCPParser(host=host, port=port, name=tcpname) ch_nums = experiment.device_channels print("tcp ", tcp) tcp.create_batch(ch_nums) experiment.set_dataIn(tcp) except Exception as e: traceback.print_exc() return fail(str(e)) return success()
def stopTcp(): global experiment if experiment is None: return fail("请先创建实验") try: experiment.stop_tcp() except Exception as e: print(e.with_traceback()) return fail(str(e)) return success()
def startTcp(): global experiment if experiment is None: return fail("请先创建实验") try: experiment.start_tcp() except Exception as e: traceback.print_exc() return fail(str(e)) return success()
def createTcp(): global experiment if experiment == None: return fail("请先创建实验") try: tcp = TCPParser('localhost', 8712) ch_nums = experiment.device_channels tcp.crate_batch(ch_nums) experiment.set_dataIn(tcp) except Exception as e: traceback.print_exc() return fail(str(e)) return success()
def createClassfier(): global experiment if experiment is None: return fail("请先创建实验") try: module = importlib.import_module("models.classfier") for name in module.getClassName(): content = "globals()['" + name + "']=module." + name exec(content) experiment.set_classfier(module.getModel()) except Exception as e: traceback.print_exc() return fail(str(e)) return success()
def getResult(): global experiment try: res = experiment.predictOnce() except Exception as e: traceback.print_exc() return fail(str(e)) return success({"result": int(res)})
def upload(): if request.method == 'POST': f = request.files['file'] basepath = os.path.dirname(__file__) upload_path = os.path.join(basepath, 'models', secure_filename(f.filename)) f.save(upload_path) # print(f.filename) return success({"filename": f.filename}) return fail("必须使用post方法上传文件")
def startExperiment(): global experiment, _thread user_socket = request.environ.get("wsgi.websocket") if not user_socket: return fail("请以WEBSOCKET方式连接") try: experiment.start() print("实验开始") with lock: if _thread is None: _thread = threading.Thread(target=backgroun_task, args=(user_socket, )) _thread.start() _thread.join() _thread = None return success("实验结束") except Exception as e: traceback.print_exc() return fail(str(e))
def createFilter(): global experiment if experiment is None: return fail("请先创建实验") low = 1 high = 40 sampleRateFrom = 300 sampleRateTo = 1000 try: low = float(request.args.get('low')) high = float(request.args.get('high')) sampleRateTo = int(request.args.get('sampleRate')) channels = eval(request.args.get('channels')) idxs = experiment.set_channel(channels) mfilter = BciFilter(low, high, sampleRateFrom, sampleRateTo, idxs) experiment.set_filter(mfilter) except Exception as e: traceback.print_exc() return fail(str(e)) return success()
def connect(): global experiment, _thread try: experiment.start() print("实验开始") # 此处可以添加socket端口,用于将结果发送到在其他终端的程序,建议设置全局变量,或者传输到background_task中 with thread_lock: if _thread is None: _thread = socketio.start_background_task(target=background_task) except Exception as e: traceback.print_exc() emit('my_response', fail(str(e)), namespace="/res") emit('my_response', success(), namespace="/res")
def getdata(): global experiment # print("TCP END WHEN GET DATA",experiment.tcp.end) try: timeend = int(request.args.get('timeend')) arr, rend = experiment.getData(timeend, show=True) # print(arr.tolist()) except Exception as e: traceback.print_exc() return fail(str(e)) # print("返回数据维度:", np.array(arr).shape) # print(np.array(arr).shape) # ['Fz','Cz','Pz','P3','P4','P7','P8','Oz','O1','O2','T7','T8'] return success({"data": arr.tolist(), 'ch_names': experiment.channels, 'timeend': rend})
def createExperiment(): global experiment try: experiment = Experiment() sessions = int(request.args.get('sessions')) fitSessions = int(request.args.get("fitsessions")) trials = int(request.args.get('trials')) duration = int(request.args.get('duration')) interval = int(request.args.get('interval')) tmin = int(request.args.get('tmin')) tmax = int(request.args.get('tmax')) device = int(request.args.get('device')) experiment.setParameters(sessions, fitSessions, trials, duration, interval, tmin, tmax, device) except Exception as e: traceback.print_exc() return fail(str(e)) return success()
def getDataMean(): global experiment # print("TCP END WHEN GET DATA",experiment.tcp.end) try: timeend = int(request.args.get('timeend')) arr, rend = experiment.getData(timeend, windows=1000, tcpid=-1, median=True, normalize=True) # print(arr.tolist()) except Exception as e: traceback.print_exc() return fail(str(e)) # TESTBEGIN # lchs=len(experiment.channels) #单机测试双脑 所以除以2 正常情况不除 # TESTEND # arr1=arr[:lchs].mean(axis=0) # arr2=arr[lchs:].mean(axis=0) # ls=np.vstack([arr1, arr2]).tolist() # print(arr.shape) return success({"data": arr.tolist(), 'ch_names': ['S1', 'S2'], 'timeend': rend})