Skip to content

Commit cebad92

Browse files
committed
Update to BiaPy-core 3.5.9 and GUI 1.1.6
1 parent f35286c commit cebad92

File tree

8 files changed

+470
-189
lines changed

8 files changed

+470
-189
lines changed

biapy/biapy_aux_functions.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -571,7 +571,7 @@ def ensure_3d_shape(img, path=None):
571571
else:
572572
min_val = min(img.shape)
573573
channel_pos = img.shape.index(min_val)
574-
if channel_pos != 3 and img.shape[channel_pos] <= 4:
574+
if channel_pos != 3:
575575
new_pos = [x for x in range(4) if x != channel_pos] + [
576576
channel_pos,
577577
]
@@ -624,6 +624,7 @@ def check_csv_files(data_dir, is_3d=False, dir_name=None):
624624

625625
req_columns = ["axis-0", "axis-1"] if not is_3d else ["axis-0", "axis-1", "axis-2"]
626626

627+
classes_found = []
627628
for id_ in ids:
628629
csv_path = os.path.join(data_dir, id_)
629630
try:
@@ -653,14 +654,11 @@ def check_csv_files(data_dir, is_3d=False, dir_name=None):
653654
class_point = np.array(df["class"])
654655

655656
uniq = np.sort(np.unique(class_point))
656-
if uniq[0] != 1:
657-
error_message = f"Class number must start with 1 in CSV file:\n{csv_path}"
658-
return True, error_message, {}
659-
if not all(uniq == np.array(range(1, uniq.max()+ 1))):
660-
error_message = f"Classes must be consecutive, e.g [1,2,3,4,...]. Given {uniq} in CSV file:\n{csv_path}"
661-
return True, error_message, {}
657+
for c in uniq:
658+
if c not in classes_found:
659+
classes_found.append(c)
662660

663-
nclasses = uniq.max()
661+
nclasses = len(classes_found)
664662

665663
constraints = {}
666664
if 'class' in columns_present:

biapy/biapy_check_configuration.py

Lines changed: 224 additions & 65 deletions
Large diffs are not rendered by default.

biapy/biapy_config.py

Lines changed: 178 additions & 61 deletions
Large diffs are not rendered by default.

main.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -274,17 +274,17 @@ def __init__(self, logger, log_info, theme):
274274
# self.ui.TEST__MATCHING_STATS_THS_COLORED_IMG__INPUT.setValidator(self.no_limit_0_1_float_number_bracket_validator)
275275
self.ui.TEST__POST_PROCESSING__VORONOI_TH__INPUT.setValidator(self.float_validator)
276276
# self.ui.TEST__POST_PROCESSING__REPARE_LARGE_BLOBS_SIZE__INPUT.setValidator(self.int_validator)
277-
# self.ui.TEST__POST_PROCESSING__REMOVE_CLOSE_POINTS_RADIUS__INST_SEG__INPUT.setValidator(self.no_limit_0_1_float_number_bracket_validator)
277+
self.ui.TEST__POST_PROCESSING__REMOVE_CLOSE_POINTS_RADIUS__INST_SEG__INPUT.setValidator(self.int_validator)
278278

279-
# self.ui.TEST__DET_MIN_TH_TO_BE_PEAK__INPUT.setValidator(self.no_limit_0_1_float_number_bracket_validator)
279+
self.ui.TEST__DET_MIN_TH_TO_BE_PEAK__INPUT.setValidator(self.float_validator)
280280
self.ui.TEST__DET_BLOB_LOG_MIN_SIGMA__INPUT.setValidator(self.int_validator)
281281
self.ui.TEST__DET_BLOB_LOG_MAX_SIGMA__INPUT.setValidator(self.int_validator)
282282
self.ui.TEST__DET_BLOB_LOG_NUM_SIGMA__INPUT.setValidator(self.int_validator)
283-
# self.ui.TEST__POST_PROCESSING__REMOVE_CLOSE_POINTS_RADIUS__DET__INPUT.setValidator(self.float_validator)
283+
self.ui.TEST__POST_PROCESSING__REMOVE_CLOSE_POINTS_RADIUS__DET__INPUT.setValidator(self.int_validator)
284284
# self.ui.TEST__POST_PROCESSING__DET_WATERSHED_DONUTS_CLASSES__INPUT.setValidator(self.no_limit_number_bracket_validator)
285285
self.ui.TEST__POST_PROCESSING__DET_WATERSHED_DONUTS_PATCH__INPUT.setValidator(self.no_limit_number_bracket_validator)
286286
self.ui.TEST__POST_PROCESSING__DET_WATERSHED_DONUTS_NUCLEUS_DIAMETER__INPUT.setValidator(self.int_validator)
287-
# self.ui.TEST__DET_TOLERANCE__INPUT.setValidator(self.no_limit_number_min_one_number_bracket_validator)
287+
self.ui.TEST__DET_TOLERANCE__INPUT.setValidator(self.int_validator)
288288
self.ui.TEST__BY_CHUNKS__FLUSH_EACH__INPUT.setValidator(self.int_validator)
289289

290290
self.ui.PROBLEM__DENOISING__N2V_PERC_PIX__INPUT.setValidator(self.float_validator)

settings.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ def init_default_settings(self):
3131
self.settings["CUDA_selected"] = "" # to be filled by checking the GPU
3232

3333
# BiaPy
34-
self.settings["biapy_code_version"] = Version("v3.5.8")
34+
self.settings["biapy_code_version"] = Version("v3.5.9")
3535
self.settings["biapy_code_github"] = "https://github.com/BiaPyX/BiaPy"
36-
self.settings["biapy_gui_version"] = Version("v1.1.5")
36+
self.settings["biapy_gui_version"] = Version("v1.1.6")
3737
self.settings["biapy_gui_github"] = "https://github.com/BiaPyX/BiaPy-GUI"
3838
self.settings["biapy_container_basename"] = "biapyx/biapy"
3939
self.settings["biapy_container_name"] = (
@@ -105,6 +105,7 @@ def init_default_settings(self):
105105
"resunet++",
106106
"resunet_se",
107107
"unext_v1",
108+
"unext_v2",
108109
"attention_unet",
109110
"multiresunet",
110111
"seunet",
@@ -116,6 +117,7 @@ def init_default_settings(self):
116117
"ResUNet++",
117118
"ResUNet SE",
118119
"U-NeXt V1",
120+
"U-NeXt V2",
119121
"Attention U-Net",
120122
"MultiResUnet",
121123
"SEUnet",
@@ -144,6 +146,7 @@ def init_default_settings(self):
144146
"resunet++",
145147
"resunet_se",
146148
"unext_v1",
149+
"unext_v2",
147150
"seunet",
148151
"attention_unet",
149152
"multiresunet",
@@ -155,6 +158,7 @@ def init_default_settings(self):
155158
"ResUNet++",
156159
"ResUNet SE",
157160
"U-NeXt V1",
161+
"U-NeXt V2",
158162
"SEUnet",
159163
"Attention U-Net",
160164
"MultiResUnet",
@@ -183,6 +187,7 @@ def init_default_settings(self):
183187
"resunet++",
184188
"resunet_se",
185189
"unext_v1",
190+
"unext_v2",
186191
"seunet",
187192
"attention_unet",
188193
"multiresunet",
@@ -194,6 +199,7 @@ def init_default_settings(self):
194199
"ResUNet++",
195200
"ResUNet SE",
196201
"U-NeXt V1",
202+
"U-NeXt V2",
197203
"SEUnet",
198204
"Attention U-Net",
199205
"MultiResUnet",
@@ -222,6 +228,7 @@ def init_default_settings(self):
222228
"resunet++",
223229
"resunet_se",
224230
"unext_v1",
231+
"unext_v2",
225232
"seunet",
226233
"attention_unet",
227234
"multiresunet",
@@ -233,6 +240,7 @@ def init_default_settings(self):
233240
"ResUNet++",
234241
"ResUNet SE",
235242
"U-NeXt V1",
243+
"U-NeXt V2",
236244
"SEUnet",
237245
"Attention U-Net",
238246
"MultiResUnet",
@@ -263,6 +271,7 @@ def init_default_settings(self):
263271
"resunet++",
264272
"resunet_se",
265273
"unext_v1",
274+
"unext_v2",
266275
"seunet",
267276
"attention_unet",
268277
"multiresunet",
@@ -277,6 +286,7 @@ def init_default_settings(self):
277286
"ResUNet++",
278287
"ResUNet SE",
279288
"U-NeXt V1",
289+
"U-NeXt V2",
280290
"SEUnet",
281291
"Attention U-Net",
282292
"MultiResUnet",
@@ -287,6 +297,7 @@ def init_default_settings(self):
287297
"resunet++",
288298
"resunet_se",
289299
"unext_v1",
300+
"unext_v2",
290301
"seunet",
291302
"attention_unet",
292303
"multiresunet"
@@ -297,6 +308,7 @@ def init_default_settings(self):
297308
"ResUNet++",
298309
"ResUNet SE",
299310
"U-NeXt V1",
311+
"U-NeXt V2",
300312
"SEUnet",
301313
"Attention U-Net",
302314
"MultiResUnet",
@@ -329,6 +341,7 @@ def init_default_settings(self):
329341
"resunet++",
330342
"resunet_se",
331343
"unext_v1",
344+
"unext_v2",
332345
"seunet",
333346
"attention_unet",
334347
"multiresunet",
@@ -341,6 +354,7 @@ def init_default_settings(self):
341354
"ResUNet++",
342355
"ResUNet SE",
343356
"U-NeXt V1",
357+
"U-NeXt V2",
344358
"SEUnet",
345359
"Attention U-Net",
346360
"MultiResUnet",
@@ -416,6 +430,7 @@ def init_default_settings(self):
416430
"resunet++",
417431
"resunet_se",
418432
"unext_v1",
433+
"unext_v2",
419434
"seunet",
420435
"attention_unet",
421436
"unetr",
@@ -431,6 +446,7 @@ def init_default_settings(self):
431446
"ResUNet++",
432447
"ResUNet SE",
433448
"U-NeXt V1",
449+
"U-NeXt V2",
434450
"SEUnet",
435451
"Attention U-Net",
436452
"UNETR",

ui/ui_main.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2215,7 +2215,7 @@ def setupUi(self, MainWindow):
22152215
self.goptions_scrollArea.setWidgetResizable(True)
22162216
self.scrollAreaWidgetContents = QWidget()
22172217
self.scrollAreaWidgetContents.setObjectName(u"scrollAreaWidgetContents")
2218-
self.scrollAreaWidgetContents.setGeometry(QRect(0, -538, 931, 984))
2218+
self.scrollAreaWidgetContents.setGeometry(QRect(0, 0, 931, 984))
22192219
self.scrollAreaWidgetContents.setLayoutDirection(Qt.LeftToRight)
22202220
self.gridLayout = QGridLayout(self.scrollAreaWidgetContents)
22212221
self.gridLayout.setObjectName(u"gridLayout")
@@ -3102,7 +3102,7 @@ def setupUi(self, MainWindow):
31023102
self.train_scrollArea.setWidgetResizable(True)
31033103
self.scrollAreaWidgetContents_3 = QWidget()
31043104
self.scrollAreaWidgetContents_3.setObjectName(u"scrollAreaWidgetContents_3")
3105-
self.scrollAreaWidgetContents_3.setGeometry(QRect(0, -4434, 944, 7969))
3105+
self.scrollAreaWidgetContents_3.setGeometry(QRect(0, 0, 944, 7969))
31063106
self.scrollAreaWidgetContents_3.setLayoutDirection(Qt.LeftToRight)
31073107
self.gridLayout_3 = QGridLayout(self.scrollAreaWidgetContents_3)
31083108
self.gridLayout_3.setObjectName(u"gridLayout_3")
@@ -9044,7 +9044,7 @@ def setupUi(self, MainWindow):
90449044
self.scrollArea_2.setWidgetResizable(True)
90459045
self.scrollAreaWidgetContents_4 = QWidget()
90469046
self.scrollAreaWidgetContents_4.setObjectName(u"scrollAreaWidgetContents_4")
9047-
self.scrollAreaWidgetContents_4.setGeometry(QRect(0, 0, 922, 327))
9047+
self.scrollAreaWidgetContents_4.setGeometry(QRect(0, 0, 895, 179))
90489048
self.gridLayout_17 = QGridLayout(self.scrollAreaWidgetContents_4)
90499049
self.gridLayout_17.setObjectName(u"gridLayout_17")
90509050
self.label_59 = QLabel(self.scrollAreaWidgetContents_4)
@@ -11735,7 +11735,7 @@ def setupUi(self, MainWindow):
1173511735
self.scrollArea_8.setWidgetResizable(True)
1173611736
self.scrollAreaWidgetContents_12 = QWidget()
1173711737
self.scrollAreaWidgetContents_12.setObjectName(u"scrollAreaWidgetContents_12")
11738-
self.scrollAreaWidgetContents_12.setGeometry(QRect(0, 0, 928, 301))
11738+
self.scrollAreaWidgetContents_12.setGeometry(QRect(0, 0, 452, 255))
1173911739
self.gridLayout_61 = QGridLayout(self.scrollAreaWidgetContents_12)
1174011740
self.gridLayout_61.setObjectName(u"gridLayout_61")
1174111741
self.label_82 = QLabel(self.scrollAreaWidgetContents_12)
@@ -11905,7 +11905,7 @@ def setupUi(self, MainWindow):
1190511905
self.scrollArea_9.setWidgetResizable(True)
1190611906
self.scrollAreaWidgetContents_13 = QWidget()
1190711907
self.scrollAreaWidgetContents_13.setObjectName(u"scrollAreaWidgetContents_13")
11908-
self.scrollAreaWidgetContents_13.setGeometry(QRect(0, 0, 633, 1327))
11908+
self.scrollAreaWidgetContents_13.setGeometry(QRect(0, 0, 914, 1327))
1190911909
self.gridLayout_44 = QGridLayout(self.scrollAreaWidgetContents_13)
1191011910
self.gridLayout_44.setObjectName(u"gridLayout_44")
1191111911
self.label_86 = QLabel(self.scrollAreaWidgetContents_13)
@@ -12819,7 +12819,7 @@ def setupUi(self, MainWindow):
1281912819
self.scrollArea_10.setWidgetResizable(True)
1282012820
self.scrollAreaWidgetContents_14 = QWidget()
1282112821
self.scrollAreaWidgetContents_14.setObjectName(u"scrollAreaWidgetContents_14")
12822-
self.scrollAreaWidgetContents_14.setGeometry(QRect(0, 0, 597, 1056))
12822+
self.scrollAreaWidgetContents_14.setGeometry(QRect(0, 0, 914, 1056))
1282312823
self.gridLayout_47 = QGridLayout(self.scrollAreaWidgetContents_14)
1282412824
self.gridLayout_47.setObjectName(u"gridLayout_47")
1282512825
self.label_100 = QLabel(self.scrollAreaWidgetContents_14)
@@ -14196,13 +14196,13 @@ def setupUi(self, MainWindow):
1419614196

1419714197
self.retranslateUi(MainWindow)
1419814198

14199-
self.stackedWidget.setCurrentIndex(2)
14199+
self.stackedWidget.setCurrentIndex(0)
1420014200
self.wizard_main_frame.setCurrentIndex(0)
14201-
self.stackedWidget_create_yaml_frame.setCurrentIndex(2)
14201+
self.stackedWidget_create_yaml_frame.setCurrentIndex(3)
1420214202
self.train_tab_widget.setCurrentIndex(0)
1420314203
self.train_workflow_specific_tab_stackedWidget.setCurrentIndex(1)
1420414204
self.test_tab_widget.setCurrentIndex(0)
14205-
self.test_workflow_specific_tab_stackedWidget.setCurrentIndex(0)
14205+
self.test_workflow_specific_tab_stackedWidget.setCurrentIndex(1)
1420614206

1420714207

1420814208
QMetaObject.connectSlotsByName(MainWindow)
@@ -17434,7 +17434,7 @@ def retranslateUi(self, MainWindow):
1743417434
self.TEST__POST_PROCESSING__REMOVE_CLOSE_POINTS__INST_SEG__INFO.setToolTip(QCoreApplication.translate("MainWindow", u"<html><head/><body><p><span style=\" font-size:12pt;\">To remove close points to each other</span></p></body></html>", None))
1743517435
#endif // QT_CONFIG(tooltip)
1743617436
self.TEST__POST_PROCESSING__REMOVE_CLOSE_POINTS__INST_SEG__INFO.setText("")
17437-
self.TEST__POST_PROCESSING__REMOVE_CLOSE_POINTS_RADIUS__INST_SEG__INPUT.setText(QCoreApplication.translate("MainWindow", u"[-1.0]", None))
17437+
self.TEST__POST_PROCESSING__REMOVE_CLOSE_POINTS_RADIUS__INST_SEG__INPUT.setText(QCoreApplication.translate("MainWindow", u"0", None))
1743817438
#if QT_CONFIG(tooltip)
1743917439
self.TEST__POST_PROCESSING__MEASURE_PROPERTIES__REMOVE_BY_PROPERTIES__VALUES__INST_SEG__INFO.setToolTip(QCoreApplication.translate("MainWindow", u"<html><head/><body><p><span style=\" font-size:12pt;\">List of ints/float that represent the values of the properties listed in TEST.POST_PROCESSING.MEASURE_PROPERTIES.REMOVE_BY_PROPERTIES that the instances need to satisfy to not be dropped. E.g. [[70], [0.7, 2000]].</span></p></body></html>", None))
1744017440
#endif // QT_CONFIG(tooltip)
@@ -17625,7 +17625,7 @@ def retranslateUi(self, MainWindow):
1762517625
self.TEST__DET_TOLERANCE__INFO.setToolTip(QCoreApplication.translate("MainWindow", u"<html><head/><body><p><span style=\" font-size:12pt;\">Maximum distance far away from a GT point to consider a point as a true positive</span></p></body></html>", None))
1762617626
#endif // QT_CONFIG(tooltip)
1762717627
self.TEST__DET_TOLERANCE__INFO.setText("")
17628-
self.TEST__DET_TOLERANCE__INPUT.setText(QCoreApplication.translate("MainWindow", u"[10]", None))
17628+
self.TEST__DET_TOLERANCE__INPUT.setText(QCoreApplication.translate("MainWindow", u"10", None))
1762917629
#if QT_CONFIG(tooltip)
1763017630
self.det_tolerance_label.setToolTip("")
1763117631
#endif // QT_CONFIG(tooltip)
@@ -17647,7 +17647,7 @@ def retranslateUi(self, MainWindow):
1764717647
self.det_min_th_to_be_peak_label.setToolTip("")
1764817648
#endif // QT_CONFIG(tooltip)
1764917649
self.det_min_th_to_be_peak_label.setText(QCoreApplication.translate("MainWindow", u"Min threshold to be peak", None))
17650-
self.TEST__DET_MIN_TH_TO_BE_PEAK__INPUT.setText(QCoreApplication.translate("MainWindow", u"[0.2]", None))
17650+
self.TEST__DET_MIN_TH_TO_BE_PEAK__INPUT.setText(QCoreApplication.translate("MainWindow", u"0.2", None))
1765117651
self.TEST__DET_EXCLUDE_BORDER__LABEL.setText(QCoreApplication.translate("MainWindow", u"Exclude border", None))
1765217652
#if QT_CONFIG(tooltip)
1765317653
self.TEST__DET_EXCLUDE_BORDER__INFO.setToolTip(QCoreApplication.translate("MainWindow", u"<html><head/><body><p><span style=\" font-size:11pt;\">Corresponds to 'exclude_border' argument of 'peak_local_max' or 'blob_log' function of skimage. If True it will exclude peaks from the border of the image to avoid partial detection.</span></p></body></html>", None))
@@ -17764,13 +17764,13 @@ def retranslateUi(self, MainWindow):
1776417764
self.TEST__POST_PROCESSING__DET_WATERSHED__INPUT.setItemText(0, QCoreApplication.translate("MainWindow", u"No", None))
1776517765
self.TEST__POST_PROCESSING__DET_WATERSHED__INPUT.setItemText(1, QCoreApplication.translate("MainWindow", u"Yes", None))
1776617766

17767-
self.TEST__POST_PROCESSING__REMOVE_CLOSE_POINTS_RADIUS__DET__INPUT.setText(QCoreApplication.translate("MainWindow", u"-1", None))
17767+
self.TEST__POST_PROCESSING__REMOVE_CLOSE_POINTS_RADIUS__DET__INPUT.setText(QCoreApplication.translate("MainWindow", u"0", None))
1776817768
#if QT_CONFIG(tooltip)
1776917769
self.det_watershed_first_dilation_label.setToolTip("")
1777017770
#endif // QT_CONFIG(tooltip)
1777117771
self.det_watershed_first_dilation_label.setText(QCoreApplication.translate("MainWindow", u"Watershed first dilation", None))
1777217772
self.TEST__POST_PROCESSING__DET_WATERSHED_DONUTS_PATCH__INPUT.setText(QCoreApplication.translate("MainWindow", u"[13,120,120]", None))
17773-
self.TEST__POST_PROCESSING__DET_WATERSHED_FIRST_DILATION__INPUT.setText(QCoreApplication.translate("MainWindow", u"[[-1,-1],]", None))
17773+
self.TEST__POST_PROCESSING__DET_WATERSHED_FIRST_DILATION__INPUT.setText(QCoreApplication.translate("MainWindow", u"[-1,-1]", None))
1777417774
#if QT_CONFIG(tooltip)
1777517775
self.det_watershed_donuts_patch_label.setToolTip("")
1777617776
#endif // QT_CONFIG(tooltip)

0 commit comments

Comments
 (0)