Merge branch 'master' into cxh_dev

This commit is contained in:
marques
2025-08-26 15:09:08 +08:00
2 changed files with 13 additions and 7 deletions

View File

@ -958,7 +958,7 @@ class MainWindow_approximately_align(QMainWindow):
# 绘制间期 # 绘制间期
ax4 = self.fig.add_subplot(322) ax4 = self.fig.add_subplot(322)
ax4.plot(linspace(PSG_SP, PSG_EP, len(diff(tho_peaks).repeat(Config["ApplyFrequency"]))), ax4.plot(linspace(PSG_SP, PSG_EP, len(diff(tho_peaks).repeat(Config["ApplyFrequency"]))),
diff(tho_peaks).repeat(Config["ApplyFrequency"]), alpha=0.5, label="tho") diff(tho_peaks).repeat(Config["ApplyFrequency"]), label="tho")
ax4.plot(linspace(PSG_SP, PSG_EP, len(diff(orgBcg_peaks).repeat(Config["ApplyFrequency"]))), ax4.plot(linspace(PSG_SP, PSG_EP, len(diff(orgBcg_peaks).repeat(Config["ApplyFrequency"]))),
diff(orgBcg_peaks).repeat(Config["ApplyFrequency"]), label="resp") diff(orgBcg_peaks).repeat(Config["ApplyFrequency"]), label="resp")
ax4.set_title("tho_interval") ax4.set_title("tho_interval")
@ -967,18 +967,20 @@ class MainWindow_approximately_align(QMainWindow):
ax5 = self.fig.add_subplot(324) ax5 = self.fig.add_subplot(324)
ax5.plot(linspace(orgBcg_SP, orgBcg_EP, len(diff(tho_peaks).repeat(Config["ApplyFrequency"]))), ax5.plot(linspace(orgBcg_SP, orgBcg_EP, len(diff(tho_peaks).repeat(Config["ApplyFrequency"]))),
diff(tho_peaks).repeat(Config["ApplyFrequency"])) diff(tho_peaks).repeat(Config["ApplyFrequency"]), label="tho")
ax5.plot(linspace(orgBcg_SP, orgBcg_EP, len(diff(orgBcg_peaks).repeat(Config["ApplyFrequency"]))), ax5.plot(linspace(orgBcg_SP, orgBcg_EP, len(diff(orgBcg_peaks).repeat(Config["ApplyFrequency"]))),
diff(orgBcg_peaks).repeat(Config["ApplyFrequency"]), label="resp") diff(orgBcg_peaks).repeat(Config["ApplyFrequency"]), label="resp")
ax5.set_title("resp_interval") ax5.set_title("resp_interval")
ax5.legend()
ax5.set_ylim((10, 50)) ax5.set_ylim((10, 50))
ax6 = self.fig.add_subplot(326) ax6 = self.fig.add_subplot(326)
ax6.plot(linspace(PSG_SP, PSG_EP, len(diff(abd_peaks).repeat(Config["ApplyFrequency"]))), ax6.plot(linspace(PSG_SP, PSG_EP, len(diff(abd_peaks).repeat(Config["ApplyFrequency"]))),
diff(abd_peaks).repeat(Config["ApplyFrequency"])) diff(abd_peaks).repeat(Config["ApplyFrequency"]), label="abd")
ax6.plot(linspace(PSG_SP, PSG_EP, len(diff(orgBcg_peaks).repeat(Config["ApplyFrequency"]))), ax6.plot(linspace(PSG_SP, PSG_EP, len(diff(orgBcg_peaks).repeat(Config["ApplyFrequency"]))),
diff(orgBcg_peaks).repeat(Config["ApplyFrequency"]), label="resp") diff(orgBcg_peaks).repeat(Config["ApplyFrequency"]), label="resp")
ax6.set_title("abd_interval") ax6.set_title("abd_interval")
ax6.legend()
ax6.set_ylim((10, 50)) ax6.set_ylim((10, 50))
self.fig.canvas.draw() self.fig.canvas.draw()
@ -1114,6 +1116,9 @@ class Data:
int(Config["orgBcg_seconds"] * Config["ApplyFrequency"])) int(Config["orgBcg_seconds"] * Config["ApplyFrequency"]))
self.processed_Tho = resample(self.raw_Tho, int(Config["PSG_seconds"] * Config["ApplyFrequency"])) self.processed_Tho = resample(self.raw_Tho, int(Config["PSG_seconds"] * Config["ApplyFrequency"]))
self.processed_Abd = resample(self.raw_Abd, int(Config["PSG_seconds"] * Config["ApplyFrequency"])) self.processed_Abd = resample(self.raw_Abd, int(Config["PSG_seconds"] * Config["ApplyFrequency"]))
self.processed_downsample_orgBcg = self.processed_orgBcg.copy()
self.processed_downsample_Tho = self.processed_Tho.copy()
self.processed_downsample_Abd = self.processed_Abd.copy()
except Exception as e: except Exception as e:
return Result().failure( return Result().failure(
info=Constants.APPROXIMATELY_ONLY_ALIGN_RESAMPLE_FAILURE + Constants.FAILURE_REASON[ info=Constants.APPROXIMATELY_ONLY_ALIGN_RESAMPLE_FAILURE + Constants.FAILURE_REASON[
@ -1305,9 +1310,10 @@ class Data:
def get_epoch(self): def get_epoch(self):
# 获取epoch # 获取epoch
try: try:
epoch_min = max(0, Config["pos"] // 30 // Config["ApplyFrequency"] + 1) epoch_second = Params.APPROXIMATELY_ALIGN_CONFIG_NEW_CONTENT["Second_PerEpoch"]
epoch_max = min(len(self.processed_downsample_Tho) // 30 // Config["ApplyFrequency"] - 1, epoch_min = max(0, Config["pos"] // epoch_second // Config["ApplyFrequency"] + 1)
(len(self.processed_downsample_orgBcg) + Config["pos"]) // 30 // Config[ epoch_max = min(len(self.processed_downsample_Tho) // epoch_second // Config["ApplyFrequency"] - 1,
(len(self.processed_downsample_orgBcg) + Config["pos"]) // epoch_second // Config[
"ApplyFrequency"] - 1) "ApplyFrequency"] - 1)
result = {"epoch_min": epoch_min, "epoch_max": epoch_max} result = {"epoch_min": epoch_min, "epoch_max": epoch_max}

View File

@ -274,7 +274,7 @@ class Data:
# 转换切割点 # 转换切割点
ECG_freq = Config["ECGFreq"] ECG_freq = Config["ECGFreq"]
raw_freq = self.freq[key] raw_freq = self.freq[key]
duration_second = ((self.alignInfo["cut_index"]["back_ECG"] - self.alignInfo["cut_index"]["front_ECG"]) // 1000) + 1 duration_second = ((self.alignInfo["cut_index"]["back_ECG"] - self.alignInfo["cut_index"]["front_ECG"]) // ECG_freq) + 1
start_index_cut = floor(self.alignInfo["cut_index"]["front_ECG"] * (raw_freq / ECG_freq)) start_index_cut = floor(self.alignInfo["cut_index"]["front_ECG"] * (raw_freq / ECG_freq))
end_index_cut = start_index_cut + (duration_second * raw_freq) end_index_cut = start_index_cut + (duration_second * raw_freq)