update Decoder
This commit is contained in:
@@ -112,8 +112,8 @@ class Decoder_main(threading.Thread):
|
||||
elif decoder_class == 'mi' or decoder_class == 'ma':
|
||||
self.zmqServer.interval_init(decoder_class)
|
||||
self.n_chan = 21
|
||||
self.interval_epoch = ast.literal_eval(IniRead('system', 'MI_IntervalEpoch'))
|
||||
self.sample_length = round(self.interval_epoch[1] - self.interval_epoch[0], 6) # 解码数据长度2s,# 精确到小数点后6位
|
||||
self.interval_epoch = ast.literal_eval(IniRead('system', 'MI_IntervalEpoch')) # [0.5, 4.5]
|
||||
self.sample_length = round(self.interval_epoch[1] - self.interval_epoch[0], 6) # 解码数据长度4s,# 精确到小数点后6位
|
||||
self.single_train = 40 # 单类别数量
|
||||
self.num_target = 2 # 分类目标数目
|
||||
|
||||
@@ -370,7 +370,7 @@ class Decoder_main(threading.Thread):
|
||||
'''训练阶段采集数据'''
|
||||
if self.zmqServer.state_mode == 'train' and self.train_started == False: # 训练状态
|
||||
if self.zmqServer.epoch_finished and self.zmqServer.paradigmBuffer.GetDataLenCount() >= \
|
||||
self.interval_epoch[1] + self.zmqServer.event_inner_idx:
|
||||
self.zmqServer.train_epoch[1] + self.zmqServer.event_inner_idx:
|
||||
self.currentLabel = self.zmqServer.currentLabel # 同步当前标签
|
||||
algo_log(f"训练队列数据:{self.zmqServer.paradigmBuffer.GetDataLenCount()}", level="DEBUG")
|
||||
originalTrial = self.zmqServer.paradigmBuffer.get_MIData() # 取出MI导联数据
|
||||
|
||||
@@ -96,6 +96,7 @@ class zmqServer(threading.Thread):
|
||||
self.pack_contain_event = False
|
||||
self.event_inner_idx = -1
|
||||
self.interval_inited = False
|
||||
self.last_epoch_finish_time = None
|
||||
|
||||
def reset_state(self):
|
||||
"""清空采集器状态和缓存数据"""
|
||||
@@ -119,11 +120,11 @@ class zmqServer(threading.Thread):
|
||||
self.train_latency = (self.train_epoch[1] + 0.1 * self.device_info['sample_rate']) // 5 #120包 600个点
|
||||
|
||||
elif decoder_class == 'mi':
|
||||
interval_epoch = ast.literal_eval(IniRead('system', 'MI_IntervalEpoch'))
|
||||
self.interval_epoch = [int(i * self.device_info['sample_rate']) for i in interval_epoch]
|
||||
interval_epoch = ast.literal_eval(IniRead('system', 'MI_IntervalEpoch')) # [0.5, 4.5]
|
||||
self.interval_epoch = [int(i * self.device_info['sample_rate']) for i in interval_epoch] #[125, 1125]
|
||||
self.train_epoch = self.interval_epoch.copy()
|
||||
self.latency = self.interval_epoch[1] // 5
|
||||
self.train_latency = self.latency
|
||||
self.latency = self.interval_epoch[1] // 5 #225
|
||||
self.train_latency = self.latency #225
|
||||
|
||||
algo_log(f"时间窗初始化完成: {interval_epoch}", level="INFO")
|
||||
self.count_events: Dict[str, int] = {}
|
||||
@@ -325,8 +326,22 @@ class zmqServer(threading.Thread):
|
||||
if self.pack_contain_event:
|
||||
self.paradigmBuffer.resetAllPara()
|
||||
self.paradigmBuffer.appendBuffer(data_np)
|
||||
|
||||
if self.epoch_finished:
|
||||
algo_log('Epoch采集完成: ' + datetime.datetime.now().strftime('%H:%M:%S.%f')[:-3], level="DEBUG")
|
||||
now = datetime.datetime.now()
|
||||
time_diff_str = ""
|
||||
# 计算与上一次Epoch完成的时间差
|
||||
if self.last_epoch_finish_time is not None:
|
||||
# 时间差 单位:秒,保留3位小数
|
||||
delta_seconds = (now - self.last_epoch_finish_time).total_seconds()
|
||||
time_diff_str = f" | 与上一次间隔: {delta_seconds:.3f} s"
|
||||
|
||||
# 拼接日志,增加时间差信息
|
||||
log_msg = f"Epoch采集完成: {now.strftime('%H:%M:%S.%f')[:-3]}{time_diff_str}"
|
||||
algo_log(log_msg, level="DEBUG")
|
||||
|
||||
# 更新上一次Epoch完成时间为当前时间
|
||||
self.last_epoch_finish_time = now
|
||||
else:
|
||||
self.paradigmBuffer.appendBuffer(data_np)
|
||||
|
||||
|
||||
@@ -172,8 +172,8 @@ def run_headless():
|
||||
client.send_data('decoderClass', 'mi')
|
||||
|
||||
# MI_IntervalEpoch = [0.5, 4.5],trial时长 = 4.5-0.5 = 4.0s
|
||||
_mi_iv = ast.literal_eval(IniRead('system', 'MI_IntervalEpoch'))
|
||||
_trial_sec = float(_mi_iv[1] - _mi_iv[0])
|
||||
_mi_iv = ast.literal_eval(IniRead('system', 'MI_IntervalEpoch')) # [0.5, 4.5]
|
||||
_trial_sec = float(_mi_iv[1] - _mi_iv[0]) # 4.0s
|
||||
_margin = 1.0
|
||||
train_time = max(5.0, _trial_sec + _margin) # 训练刺激时长(与 MI_main.py 保持一致)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user