Skip to content

Commit 409a5f6

Browse files
committed
bug bug bug
1 parent d30ea21 commit 409a5f6

File tree

8 files changed

+57
-29
lines changed

8 files changed

+57
-29
lines changed

src/controllers/main_window_controller.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ def __init__(self, view, model):
1313
}
1414

1515
def init_biomarker_window(self, biomarker_type):
16+
# To dynamically create frame for different biomarkers, need first init (optimize later)
17+
self.view.window.frame_biomarker_layout = QHBoxLayout(self.view.window.frame_biomarker_type)
1618
self.supported_biomarker[biomarker_type]()
1719

1820
def init_general_window(self):
@@ -35,16 +37,13 @@ def init_biomarker_type(self):
3537
self.view.window.combo_box_biomarker.currentIndexChanged.connect(self.switch_biomarker)
3638

3739
def switch_biomarker(self):
38-
selected_biomarker = self.view.window.combo_box_biomarker.currentText()
40+
selected_biomarker = self.get_biomarker_type()
3941
self.supported_biomarker[selected_biomarker]()
4042

4143
def create_hfo_window(self):
4244
# set biomarker type
4345
self.set_biomarker_type('HFO')
4446

45-
# dynamically create frame for different biomarkers
46-
self.view.window.frame_biomarker_layout = QHBoxLayout(self.view.window.frame_biomarker_type)
47-
4847
# create detection parameters stacked widget
4948
self.view.create_stacked_widget_detection_param('HFO')
5049

@@ -76,6 +75,7 @@ def create_spindle_window(self):
7675

7776
# manage flag
7877
self.view.window.is_data_filtered = False
78+
self.view.window.quick_detect_open = False
7979

8080
# create center waveform and mini plot
8181
self.model.create_center_waveform_and_mini_plot()

src/models/main_waveform_plot_model.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ def set_channel_indices_to_plot(self,channel_indices_to_plot:list):
7171
self.channels_to_plot = [self.channel_names[index] for index in channel_indices_to_plot]
7272

7373
def update_channel_names(self, new_channel_names):
74-
self.channel_names = new_channel_names
74+
self.channel_names = list(new_channel_names)
7575

7676
def set_waveform_filter(self, filtered):
7777
self.filtered = filtered

src/models/main_window_model.py

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ def __init__(self, main_window):
3030
self.backend = None
3131
self.biomarker_type = None
3232

33+
# handel signal connection carefully when switch biomarkers, optimized in the future
34+
self.signal_connected = False
35+
3336
def set_biomarker_type_and_init_backend(self, bio_type):
3437
self.biomarker_type = bio_type
3538
if bio_type == 'HFO':
@@ -106,6 +109,12 @@ def create_center_waveform_and_mini_plot(self):
106109
self.window.waveform_mini_widget,
107110
self.backend)
108111

112+
# part of “clear everything if exit”, optimize in the future
113+
if self.signal_connected:
114+
self.window.waveform_time_scroll_bar.valueChanged.disconnect(self.scroll_time_waveform_plot)
115+
self.window.channel_scroll_bar.valueChanged.disconnect(self.scroll_channel_waveform_plot)
116+
self.signal_connected = True
117+
109118
def init_classifier_param(self):
110119
self.window.classifier_param = ParamClassifier()
111120
# self.classifier_save_button.clicked.connect(self.hfo_app.set_classifier())
@@ -525,6 +534,9 @@ def update_edf_info(self, results):
525534
# connect buttons
526535
self.window.waveform_time_scroll_bar.valueChanged.connect(self.scroll_time_waveform_plot)
527536
self.window.channel_scroll_bar.valueChanged.connect(self.scroll_channel_waveform_plot)
537+
538+
self.signal_connected = True
539+
528540
self.window.waveform_plot_button.clicked.connect(self.waveform_plot_button_clicked)
529541
self.window.waveform_plot_button.setEnabled(True)
530542
self.window.Choose_Channels_Button.clicked.connect(self.open_channel_selection)
@@ -643,16 +655,22 @@ def filtering_complete(self):
643655
else:
644656
self.backend.set_unfiltered_60()
645657

646-
self.window.STE_save_button.setEnabled(True)
647-
self.window.ste_detect_button.setEnabled(True)
648-
self.window.MNI_save_button.setEnabled(True)
649-
self.window.mni_detect_button.setEnabled(True)
650-
self.window.HIL_save_button.setEnabled(True)
651-
self.window.hil_detect_button.setEnabled(True)
652-
self.window.is_data_filtered = True
653-
self.window.show_filtered = True
654-
self.window.waveform_plot.set_filtered(True)
655-
self.window.save_npz_button.setEnabled(True)
658+
if self.biomarker_type == 'HFO':
659+
self.window.STE_save_button.setEnabled(True)
660+
self.window.ste_detect_button.setEnabled(True)
661+
self.window.MNI_save_button.setEnabled(True)
662+
self.window.mni_detect_button.setEnabled(True)
663+
self.window.HIL_save_button.setEnabled(True)
664+
self.window.hil_detect_button.setEnabled(True)
665+
self.window.is_data_filtered = True
666+
self.window.show_filtered = True
667+
self.window.waveform_plot.set_filtered(True)
668+
self.window.save_npz_button.setEnabled(True)
669+
elif self.biomarker_type == 'Spindle':
670+
self.window.is_data_filtered = True
671+
self.window.show_filtered = True
672+
self.window.waveform_plot.set_filtered(True)
673+
self.window.save_npz_button.setEnabled(True)
656674

657675
def detect_HFOs(self):
658676
print("Detecting HFOs...")
@@ -936,9 +954,6 @@ def reinitialize(self):
936954
self.window.main_length.setText("")
937955
self.window.statistics_label.setText("")
938956

939-
def close_other_window(self):
940-
self.window.close_signal.emit()
941-
942957
def update_ste_params(self, ste_params):
943958
rms_window = str(ste_params["rms_window"])
944959
min_window = str(ste_params["min_window"])
@@ -1043,7 +1058,8 @@ def set_detector_param_display(self):
10431058
self.update_hil_params(detector_params.detector_param.to_dict())
10441059

10451060
def open_bipolar_channel_selection(self):
1046-
self.window.bipolar_channel_selection_window = BipolarChannelSelectionWindow(self.backend,
1061+
self.window.bipolar_channel_selection_window = BipolarChannelSelectionWindow(self,
1062+
self.backend,
10471063
self.window,
10481064
self.window.close_signal,
10491065
self.window.waveform_plot)

src/models/mini_plot_model.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def set_channel_indices_to_plot(self,channel_indices_to_plot:list):
4545
self.channels_to_plot = [self.channel_names[index] for index in channel_indices_to_plot]
4646

4747
def update_channel_names(self, new_channel_names):
48-
self.channel_names = new_channel_names
48+
self.channel_names = list(new_channel_names)
4949

5050
def get_all_biomarkers_for_channel(self, channel, t_start=0, t_end=sys.maxsize):
5151
return self.backend.event_features.get_biomarkers_for_channel(channel, t_start, t_end)

src/spindle_app.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,11 @@ def filter_eeg_data(self, param_filter: ParamFilter = None):
182182
self.filter_data = np.array(self.filter_data)
183183
self.filter_data_un60 = self.filter_data.copy()
184184

185+
# Spindle frequency range do not have 60hz problem
185186
self.filter_data_60 = self.filter_60(self.filter_data)
187+
if self.filter_data_60.size == 0:
188+
self.filter_data_60 = self.filter_data.copy()
189+
186190
self.filtered = True
187191

188192
def has_filtered_data(self):
@@ -258,7 +262,10 @@ def detect_biomarker(self, param_filter: ParamFilter = None, param_detector: Par
258262
min_distance=param_detector.min_distance, thresh={'corr': param_detector.corr,
259263
'rel_pow': param_detector.rel_pow,
260264
'rms': param_detector.rms})
261-
self.filter_data = sp._data_filt
265+
if self.filter_data is None and sp is not None:
266+
self.filter_data = sp._data_filt.copy()
267+
self.filter_data_60 = sp._data_filt.copy()
268+
self.filter_data_un60 = sp._data_filt.copy()
262269
self.event_features = SpindleFeature.construct(sp, self.param_detector.detector_type, self.sample_freq)
263270
self.detected = True
264271

src/ui/bipolar_channel_selection.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,12 @@
1515

1616

1717
class BipolarChannelSelectionWindow(QtWidgets.QDialog):
18-
def __init__(self, backend=None, main_window=None, close_signal = None,waveform_plot = None):
18+
def __init__(self, main_window_model=None, backend=None, main_window=None, close_signal = None,waveform_plot = None):
1919
# print(ROOT_DIR)
2020
super(BipolarChannelSelectionWindow, self).__init__()
2121
self.ui = uic.loadUi(os.path.join(ROOT_DIR, 'bipolar_channel_selection.ui'), self)
2222

23+
self.main_window_model = main_window_model
2324
self.backend = backend
2425
self.main_window = main_window
2526
self.setWindowTitle("Bipolar Channel Selection")
@@ -55,7 +56,7 @@ def check_channels(self):
5556
#create bipolar channel and add to data, channel_name lists
5657
self.backend.add_bipolar_channel(self.channel_1,self.channel_2)
5758
self.waveform_plot.update_channel_names(self.backend.channel_names)
58-
self.main_window.set_channels_to_plot(self.backend.channel_names, display_all=False)
59+
self.main_window_model.set_channels_to_plot(self.backend.channel_names, display_all=False)
5960
self.close()
6061
else:
6162
msg = QMessageBox()

src/ui/channels_selection.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@
1919

2020

2121
class ChannelSelectionWindow(QtWidgets.QDialog):
22-
def __init__(self, backend=None, main_window=None, close_signal = None):
22+
def __init__(self, backend=None, main_window_model=None, close_signal = None):
2323
super(ChannelSelectionWindow, self).__init__()
2424

2525
self.backend = backend
26-
self.main_window = main_window
26+
self.main_window_model = main_window_model
2727
self.layout = QGridLayout()
2828
self.setWindowTitle("Channel Selection")
2929
self.setWindowIcon(QtGui.QIcon(os.path.join(ROOT_DIR, 'images/icon1.png')))
@@ -57,7 +57,7 @@ def __init__(self, backend=None, main_window=None, close_signal = None):
5757

5858
def set_channels(self):
5959
eeg_data,channels = self.backend.get_eeg_data()
60-
channels_indexes_to_plot = self.main_window.get_channel_indices_to_plot()
60+
channels_indexes_to_plot = self.main_window_model.get_channel_indices_to_plot()
6161
self.channel_checkboxes = {}
6262
self.n_channels = len(channels)
6363
self.channels = channels
@@ -115,12 +115,12 @@ def get_channels_to_show(self):
115115
if self.scroll_layout.itemAtPosition(1+i//2,i%2).widget().isChecked():
116116
channels_to_show.append(self.channels[i])
117117

118-
if self.main_window is not None:
119-
self.main_window.set_channels_to_plot(channels_to_show)
118+
if self.main_window_model is not None:
119+
self.main_window_model.set_channels_to_plot(channels_to_show)
120120
# else:
121121
# print("main window is none")
122122
# print(channels_to_show)
123-
self.main_window.channel_selection_update()
123+
self.main_window_model.channel_selection_update()
124124
self.close()
125125

126126

src/ui/plot_waveform.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ def __init__(self, main_waveform_plot_widget: pg.PlotWidget, mini_plot_widget: p
2121
self.mini_plot_controller = MiniPlotController(mini_plot_widget, backend)
2222
self.main_waveform_plot_controller = MainWaveformPlotController(main_waveform_plot_widget, backend)
2323

24+
# clear everything if exit
25+
self.main_waveform_plot_controller.clear()
26+
self.mini_plot_controller.clear()
27+
2428
self.time_window = 20 #20 second time window
2529
self.time_increment = 20
2630
# self.old_size = (self.waveform_display.x(),self.waveform_display.y(),self.waveform_display.width(),self.waveform_display.height())

0 commit comments

Comments
 (0)