<reponame>dmgav/ptycho_gui<gh_stars>1-10
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'nsls2ptycho/ui/ui_ptycho.ui'
#
# Created by: PyQt5 UI code generator 5.12.3
#
# WARNING! All changes made in this file will be lost!


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(760, 880)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.centralwidget)
        self.verticalLayout_5.setObjectName("verticalLayout_5")
        self.groupBox_7 = QtWidgets.QGroupBox(self.centralwidget)
        self.groupBox_7.setObjectName("groupBox_7")
        self.gridLayout_4 = QtWidgets.QGridLayout(self.groupBox_7)
        self.gridLayout_4.setObjectName("gridLayout_4")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout()
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.label = QtWidgets.QLabel(self.groupBox_7)
        self.label.setMaximumSize(QtCore.QSize(100, 16777215))
        self.label.setObjectName("label")
        self.horizontalLayout.addWidget(self.label)
        self.le_scan_num = QtWidgets.QLineEdit(self.groupBox_7)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.le_scan_num.sizePolicy().hasHeightForWidth())
        self.le_scan_num.setSizePolicy(sizePolicy)
        self.le_scan_num.setMaximumSize(QtCore.QSize(80, 16777215))
        self.le_scan_num.setObjectName("le_scan_num")
        self.horizontalLayout.addWidget(self.le_scan_num)
        self.ck_extra_scans_flag = QtWidgets.QCheckBox(self.groupBox_7)
        self.ck_extra_scans_flag.setObjectName("ck_extra_scans_flag")
        self.horizontalLayout.addWidget(self.ck_extra_scans_flag)
        self.btn_set_extra_scans = QtWidgets.QPushButton(self.groupBox_7)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.btn_set_extra_scans.sizePolicy().hasHeightForWidth())
        self.btn_set_extra_scans.setSizePolicy(sizePolicy)
        self.btn_set_extra_scans.setMaximumSize(QtCore.QSize(40, 16777215))
        self.btn_set_extra_scans.setObjectName("btn_set_extra_scans")
        self.horizontalLayout.addWidget(self.btn_set_extra_scans)
        self.btn_choose_cwd = QtWidgets.QPushButton(self.groupBox_7)
        self.btn_choose_cwd.setObjectName("btn_choose_cwd")
        self.horizontalLayout.addWidget(self.btn_choose_cwd)
        self.le_working_directory = QtWidgets.QLineEdit(self.groupBox_7)
        self.le_working_directory.setReadOnly(True)
        self.le_working_directory.setObjectName("le_working_directory")
        self.horizontalLayout.addWidget(self.le_working_directory)
        self.verticalLayout_2.addLayout(self.horizontalLayout)
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.cb_dataloader = QtWidgets.QComboBox(self.groupBox_7)
        self.cb_dataloader.setMaximumSize(QtCore.QSize(16777215, 16777215))
        self.cb_dataloader.setObjectName("cb_dataloader")
        self.cb_dataloader.addItem("")
        self.cb_dataloader.addItem("")
        self.horizontalLayout_2.addWidget(self.cb_dataloader)
        self.label_26 = QtWidgets.QLabel(self.groupBox_7)
        self.label_26.setAlignment(QtCore.Qt.AlignCenter)
        self.label_26.setObjectName("label_26")
        self.horizontalLayout_2.addWidget(self.label_26)
        self.cb_detectorkind = QtWidgets.QComboBox(self.groupBox_7)
        self.cb_detectorkind.setObjectName("cb_detectorkind")
        self.cb_detectorkind.addItem("")
        self.cb_detectorkind.setItemText(0, "")
        self.horizontalLayout_2.addWidget(self.cb_detectorkind)
        self.btn_load_scan = QtWidgets.QPushButton(self.groupBox_7)
        self.btn_load_scan.setObjectName("btn_load_scan")
        self.horizontalLayout_2.addWidget(self.btn_load_scan)
        self.label_36 = QtWidgets.QLabel(self.groupBox_7)
        self.label_36.setMaximumSize(QtCore.QSize(70, 16777215))
        self.label_36.setAlignment(QtCore.Qt.AlignCenter)
        self.label_36.setObjectName("label_36")
        self.horizontalLayout_2.addWidget(self.label_36)
        self.sp_fram_num = QtWidgets.QSpinBox(self.groupBox_7)
        self.sp_fram_num.setMaximumSize(QtCore.QSize(70, 16777215))
        self.sp_fram_num.setMaximum(1000000)
        self.sp_fram_num.setObjectName("sp_fram_num")
        self.horizontalLayout_2.addWidget(self.sp_fram_num)
        self.btn_view_frame = QtWidgets.QPushButton(self.groupBox_7)
        self.btn_view_frame.setMinimumSize(QtCore.QSize(121, 0))
        self.btn_view_frame.setMaximumSize(QtCore.QSize(150, 16777215))
        self.btn_view_frame.setObjectName("btn_view_frame")
        self.horizontalLayout_2.addWidget(self.btn_view_frame)
        self.verticalLayout_2.addLayout(self.horizontalLayout_2)
        self.gridLayout_4.addLayout(self.verticalLayout_2, 0, 1, 1, 1)
        self.verticalLayout_5.addWidget(self.groupBox_7)
        self.groupBox_8 = QtWidgets.QGroupBox(self.centralwidget)
        self.groupBox_8.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
        self.groupBox_8.setObjectName("groupBox_8")
        self.horizontalLayout_10 = QtWidgets.QHBoxLayout(self.groupBox_8)
        self.horizontalLayout_10.setObjectName("horizontalLayout_10")
        self.gridLayout_9 = QtWidgets.QGridLayout()
        self.gridLayout_9.setObjectName("gridLayout_9")
        self.label_43 = QtWidgets.QLabel(self.groupBox_8)
        self.label_43.setObjectName("label_43")
        self.gridLayout_9.addWidget(self.label_43, 3, 0, 1, 1)
        self.label_41 = QtWidgets.QLabel(self.groupBox_8)
        self.label_41.setObjectName("label_41")
        self.gridLayout_9.addWidget(self.label_41, 2, 0, 1, 1)
        self.sp_x_arr_size = QtWidgets.QSpinBox(self.groupBox_8)
        self.sp_x_arr_size.setMaximum(1000000)
        self.sp_x_arr_size.setObjectName("sp_x_arr_size")
        self.gridLayout_9.addWidget(self.sp_x_arr_size, 1, 1, 1, 1)
        self.label_40 = QtWidgets.QLabel(self.groupBox_8)
        self.label_40.setObjectName("label_40")
        self.gridLayout_9.addWidget(self.label_40, 1, 3, 1, 1)
        self.cb_scan_type = QtWidgets.QComboBox(self.groupBox_8)
        self.cb_scan_type.setObjectName("cb_scan_type")
        self.cb_scan_type.addItem("")
        self.cb_scan_type.addItem("")
        self.cb_scan_type.addItem("")
        self.gridLayout_9.addWidget(self.cb_scan_type, 4, 1, 1, 1)
        self.label_46 = QtWidgets.QLabel(self.groupBox_8)
        self.label_46.setObjectName("label_46")
        self.gridLayout_9.addWidget(self.label_46, 4, 3, 1, 1)
        self.sp_y_scan_range = QtWidgets.QDoubleSpinBox(self.groupBox_8)
        self.sp_y_scan_range.setDecimals(4)
        self.sp_y_scan_range.setMaximum(1000000.0)
        self.sp_y_scan_range.setObjectName("sp_y_scan_range")
        self.gridLayout_9.addWidget(self.sp_y_scan_range, 3, 4, 1, 1)
        self.label_37 = QtWidgets.QLabel(self.groupBox_8)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label_37.sizePolicy().hasHeightForWidth())
        self.label_37.setSizePolicy(sizePolicy)
        self.label_37.setMinimumSize(QtCore.QSize(160, 0))
        self.label_37.setMaximumSize(QtCore.QSize(160, 16777215))
        self.label_37.setObjectName("label_37")
        self.gridLayout_9.addWidget(self.label_37, 0, 0, 1, 1)
        self.label_38 = QtWidgets.QLabel(self.groupBox_8)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label_38.sizePolicy().hasHeightForWidth())
        self.label_38.setSizePolicy(sizePolicy)
        self.label_38.setMinimumSize(QtCore.QSize(160, 0))
        self.label_38.setMaximumSize(QtCore.QSize(160, 16777215))
        self.label_38.setObjectName("label_38")
        self.gridLayout_9.addWidget(self.label_38, 0, 3, 1, 1)
        self.sp_xray_energy = QtWidgets.QDoubleSpinBox(self.groupBox_8)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.sp_xray_energy.sizePolicy().hasHeightForWidth())
        self.sp_xray_energy.setSizePolicy(sizePolicy)
        self.sp_xray_energy.setMinimumSize(QtCore.QSize(140, 0))
        self.sp_xray_energy.setMaximumSize(QtCore.QSize(140, 16777215))
        self.sp_xray_energy.setDecimals(10)
        self.sp_xray_energy.setObjectName("sp_xray_energy")
        self.gridLayout_9.addWidget(self.sp_xray_energy, 0, 1, 1, 1)
        self.sp_detector_distance = QtWidgets.QDoubleSpinBox(self.groupBox_8)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.sp_detector_distance.sizePolicy().hasHeightForWidth())
        self.sp_detector_distance.setSizePolicy(sizePolicy)
        self.sp_detector_distance.setMinimumSize(QtCore.QSize(140, 0))
        self.sp_detector_distance.setMaximumSize(QtCore.QSize(140, 16777215))
        self.sp_detector_distance.setDecimals(4)
        self.sp_detector_distance.setObjectName("sp_detector_distance")
        self.gridLayout_9.addWidget(self.sp_detector_distance, 0, 4, 1, 1)
        self.label_44 = QtWidgets.QLabel(self.groupBox_8)
        self.label_44.setObjectName("label_44")
        self.gridLayout_9.addWidget(self.label_44, 3, 3, 1, 1)
        self.sp_y_step_size = QtWidgets.QDoubleSpinBox(self.groupBox_8)
        self.sp_y_step_size.setDecimals(4)
        self.sp_y_step_size.setMaximum(1000000.0)
        self.sp_y_step_size.setObjectName("sp_y_step_size")
        self.gridLayout_9.addWidget(self.sp_y_step_size, 2, 4, 1, 1)
        self.label_42 = QtWidgets.QLabel(self.groupBox_8)
        self.label_42.setObjectName("label_42")
        self.gridLayout_9.addWidget(self.label_42, 2, 3, 1, 1)
        self.sp_y_arr_size = QtWidgets.QSpinBox(self.groupBox_8)
        self.sp_y_arr_size.setMaximum(1000000)
        self.sp_y_arr_size.setObjectName("sp_y_arr_size")
        self.gridLayout_9.addWidget(self.sp_y_arr_size, 1, 4, 1, 1)
        self.sp_num_points = QtWidgets.QSpinBox(self.groupBox_8)
        self.sp_num_points.setMaximum(10000000)
        self.sp_num_points.setObjectName("sp_num_points")
        self.gridLayout_9.addWidget(self.sp_num_points, 4, 4, 1, 1)
        self.label_45 = QtWidgets.QLabel(self.groupBox_8)
        self.label_45.setObjectName("label_45")
        self.gridLayout_9.addWidget(self.label_45, 4, 0, 1, 1)
        self.label_39 = QtWidgets.QLabel(self.groupBox_8)
        self.label_39.setObjectName("label_39")
        self.gridLayout_9.addWidget(self.label_39, 1, 0, 1, 1)
        self.sp_x_step_size = QtWidgets.QDoubleSpinBox(self.groupBox_8)
        self.sp_x_step_size.setDecimals(4)
        self.sp_x_step_size.setMaximum(1000000.0)
        self.sp_x_step_size.setObjectName("sp_x_step_size")
        self.gridLayout_9.addWidget(self.sp_x_step_size, 2, 1, 1, 1)
        self.sp_x_scan_range = QtWidgets.QDoubleSpinBox(self.groupBox_8)
        self.sp_x_scan_range.setDecimals(4)
        self.sp_x_scan_range.setMaximum(1000000.0)
        self.sp_x_scan_range.setObjectName("sp_x_scan_range")
        self.gridLayout_9.addWidget(self.sp_x_scan_range, 3, 1, 1, 1)
        spacerItem = QtWidgets.QSpacerItem(60, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_9.addItem(spacerItem, 0, 2, 1, 1)
        self.horizontalLayout_10.addLayout(self.gridLayout_9)
        self.verticalLayout_5.addWidget(self.groupBox_8)
        self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
        self.tabWidget.setStyleSheet("")
        self.tabWidget.setObjectName("tabWidget")
        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.tab)
        self.verticalLayout.setObjectName("verticalLayout")
        self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_4.setObjectName("horizontalLayout_4")
        self.label_3 = QtWidgets.QLabel(self.tab)
        self.label_3.setObjectName("label_3")
        self.horizontalLayout_4.addWidget(self.label_3)
        self.sp_n_iterations = QtWidgets.QSpinBox(self.tab)
        self.sp_n_iterations.setMinimum(1)
        self.sp_n_iterations.setMaximum(999999)
        self.sp_n_iterations.setProperty("value", 50)
        self.sp_n_iterations.setObjectName("sp_n_iterations")
        self.horizontalLayout_4.addWidget(self.sp_n_iterations)
        self.label_8 = QtWidgets.QLabel(self.tab)
        self.label_8.setObjectName("label_8")
        self.horizontalLayout_4.addWidget(self.label_8)
        self.cb_alg_flag = QtWidgets.QComboBox(self.tab)
        self.cb_alg_flag.setObjectName("cb_alg_flag")
        self.cb_alg_flag.addItem("")
        self.cb_alg_flag.addItem("")
        self.cb_alg_flag.addItem("")
        self.cb_alg_flag.addItem("")
        self.cb_alg_flag.addItem("")
        self.cb_alg_flag.addItem("")
        self.cb_alg_flag.addItem("")
        self.cb_alg_flag.addItem("")
        self.horizontalLayout_4.addWidget(self.cb_alg_flag)
        self.cb_alg2_flag = QtWidgets.QComboBox(self.tab)
        self.cb_alg2_flag.setObjectName("cb_alg2_flag")
        self.cb_alg2_flag.addItem("")
        self.cb_alg2_flag.addItem("")
        self.cb_alg2_flag.addItem("")
        self.cb_alg2_flag.addItem("")
        self.cb_alg2_flag.addItem("")
        self.cb_alg2_flag.addItem("")
        self.cb_alg2_flag.addItem("")
        self.cb_alg2_flag.addItem("")
        self.horizontalLayout_4.addWidget(self.cb_alg2_flag)
        self.sp_alg_percentage = QtWidgets.QDoubleSpinBox(self.tab)
        self.sp_alg_percentage.setProperty("value", 0.8)
        self.sp_alg_percentage.setObjectName("sp_alg_percentage")
        self.horizontalLayout_4.addWidget(self.sp_alg_percentage)
        self.label_54 = QtWidgets.QLabel(self.tab)
        self.label_54.setObjectName("label_54")
        self.horizontalLayout_4.addWidget(self.label_54)
        self.cb_precision_flag = QtWidgets.QComboBox(self.tab)
        self.cb_precision_flag.setObjectName("cb_precision_flag")
        self.cb_precision_flag.addItem("")
        self.cb_precision_flag.addItem("")
        self.horizontalLayout_4.addWidget(self.cb_precision_flag)
        self.verticalLayout.addLayout(self.horizontalLayout_4)
        self.gridLayout = QtWidgets.QGridLayout()
        self.gridLayout.setObjectName("gridLayout")
        self.label_27 = QtWidgets.QLabel(self.tab)
        self.label_27.setObjectName("label_27")
        self.gridLayout.addWidget(self.label_27, 0, 0, 1, 1)
        self.le_sign = QtWidgets.QLineEdit(self.tab)
        self.le_sign.setObjectName("le_sign")
        self.gridLayout.addWidget(self.le_sign, 0, 1, 1, 1)
        self.verticalLayout.addLayout(self.gridLayout)
        self.gridLayout_10 = QtWidgets.QGridLayout()
        self.gridLayout_10.setObjectName("gridLayout_10")
        self.le_prb_path = QtWidgets.QLineEdit(self.tab)
        self.le_prb_path.setReadOnly(True)
        self.le_prb_path.setObjectName("le_prb_path")
        self.gridLayout_10.addWidget(self.le_prb_path, 0, 3, 1, 1)
        self.btn_load_object = QtWidgets.QPushButton(self.tab)
        self.btn_load_object.setObjectName("btn_load_object")
        self.gridLayout_10.addWidget(self.btn_load_object, 1, 2, 1, 1)
        self.btn_load_probe = QtWidgets.QPushButton(self.tab)
        self.btn_load_probe.setObjectName("btn_load_probe")
        self.gridLayout_10.addWidget(self.btn_load_probe, 0, 2, 1, 1)
        self.label_9 = QtWidgets.QLabel(self.tab)
        self.label_9.setObjectName("label_9")
        self.gridLayout_10.addWidget(self.label_9, 0, 0, 1, 1)
        self.le_obj_path = QtWidgets.QLineEdit(self.tab)
        self.le_obj_path.setReadOnly(True)
        self.le_obj_path.setObjectName("le_obj_path")
        self.gridLayout_10.addWidget(self.le_obj_path, 1, 3, 1, 1)
        self.ck_init_prb_flag = QtWidgets.QCheckBox(self.tab)
        self.ck_init_prb_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_init_prb_flag.setChecked(True)
        self.ck_init_prb_flag.setObjectName("ck_init_prb_flag")
        self.gridLayout_10.addWidget(self.ck_init_prb_flag, 0, 1, 1, 1)
        self.label_11 = QtWidgets.QLabel(self.tab)
        self.label_11.setObjectName("label_11")
        self.gridLayout_10.addWidget(self.label_11, 1, 0, 1, 1)
        self.ck_init_obj_flag = QtWidgets.QCheckBox(self.tab)
        self.ck_init_obj_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_init_obj_flag.setChecked(True)
        self.ck_init_obj_flag.setObjectName("ck_init_obj_flag")
        self.gridLayout_10.addWidget(self.ck_init_obj_flag, 1, 1, 1, 1)
        self.verticalLayout.addLayout(self.gridLayout_10)
        self.gridLayout_2 = QtWidgets.QGridLayout()
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.ck_mode_flag = QtWidgets.QCheckBox(self.tab)
        self.ck_mode_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_mode_flag.setObjectName("ck_mode_flag")
        self.gridLayout_2.addWidget(self.ck_mode_flag, 0, 0, 1, 1)
        spacerItem1 = QtWidgets.QSpacerItem(13, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_2.addItem(spacerItem1, 0, 1, 1, 1)
        self.label_22 = QtWidgets.QLabel(self.tab)
        self.label_22.setObjectName("label_22")
        self.gridLayout_2.addWidget(self.label_22, 0, 2, 1, 2)
        self.sp_prb_mode_num = QtWidgets.QSpinBox(self.tab)
        self.sp_prb_mode_num.setEnabled(False)
        self.sp_prb_mode_num.setProperty("value", 5)
        self.sp_prb_mode_num.setObjectName("sp_prb_mode_num")
        self.gridLayout_2.addWidget(self.sp_prb_mode_num, 0, 4, 1, 2)
        spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_2.addItem(spacerItem2, 0, 6, 1, 1)
        self.label_23 = QtWidgets.QLabel(self.tab)
        self.label_23.setObjectName("label_23")
        self.gridLayout_2.addWidget(self.label_23, 0, 7, 1, 3)
        self.sp_obj_mode_num = QtWidgets.QSpinBox(self.tab)
        self.sp_obj_mode_num.setEnabled(False)
        self.sp_obj_mode_num.setProperty("value", 1)
        self.sp_obj_mode_num.setObjectName("sp_obj_mode_num")
        self.gridLayout_2.addWidget(self.sp_obj_mode_num, 0, 10, 1, 2)
        self.ck_multislice_flag = QtWidgets.QCheckBox(self.tab)
        self.ck_multislice_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_multislice_flag.setObjectName("ck_multislice_flag")
        self.gridLayout_2.addWidget(self.ck_multislice_flag, 1, 0, 1, 1)
        spacerItem3 = QtWidgets.QSpacerItem(13, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_2.addItem(spacerItem3, 1, 1, 1, 1)
        self.label_47 = QtWidgets.QLabel(self.tab)
        self.label_47.setObjectName("label_47")
        self.gridLayout_2.addWidget(self.label_47, 1, 2, 1, 1)
        self.sp_slice_num = QtWidgets.QSpinBox(self.tab)
        self.sp_slice_num.setEnabled(False)
        self.sp_slice_num.setMaximum(10000)
        self.sp_slice_num.setProperty("value", 2)
        self.sp_slice_num.setObjectName("sp_slice_num")
        self.gridLayout_2.addWidget(self.sp_slice_num, 1, 3, 1, 2)
        self.label_48 = QtWidgets.QLabel(self.tab)
        self.label_48.setObjectName("label_48")
        self.gridLayout_2.addWidget(self.label_48, 1, 5, 1, 3)
        self.sp_slice_spacing_m = QtWidgets.QDoubleSpinBox(self.tab)
        self.sp_slice_spacing_m.setEnabled(False)
        self.sp_slice_spacing_m.setMaximum(10000.0)
        self.sp_slice_spacing_m.setProperty("value", 5.0)
        self.sp_slice_spacing_m.setObjectName("sp_slice_spacing_m")
        self.gridLayout_2.addWidget(self.sp_slice_spacing_m, 1, 8, 1, 1)
        self.ck_ms_pie_flag = QtWidgets.QCheckBox(self.tab)
        self.ck_ms_pie_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_ms_pie_flag.setObjectName("ck_ms_pie_flag")
        self.gridLayout_2.addWidget(self.ck_ms_pie_flag, 1, 9, 1, 2)
        self.ck_weak_obj_flag = QtWidgets.QCheckBox(self.tab)
        self.ck_weak_obj_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_weak_obj_flag.setObjectName("ck_weak_obj_flag")
        self.gridLayout_2.addWidget(self.ck_weak_obj_flag, 1, 11, 1, 1)
        self.verticalLayout.addLayout(self.gridLayout_2)
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.ck_mask_obj_flag = QtWidgets.QCheckBox(self.tab)
        self.ck_mask_obj_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_mask_obj_flag.setChecked(True)
        self.ck_mask_obj_flag.setObjectName("ck_mask_obj_flag")
        self.horizontalLayout_3.addWidget(self.ck_mask_obj_flag)
        spacerItem4 = QtWidgets.QSpacerItem(13, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem4)
        self.label_15 = QtWidgets.QLabel(self.tab)
        self.label_15.setObjectName("label_15")
        self.horizontalLayout_3.addWidget(self.label_15)
        self.label_32 = QtWidgets.QLabel(self.tab)
        self.label_32.setObjectName("label_32")
        self.horizontalLayout_3.addWidget(self.label_32)
        self.sp_amp_min = QtWidgets.QDoubleSpinBox(self.tab)
        self.sp_amp_min.setPrefix("")
        self.sp_amp_min.setDecimals(3)
        self.sp_amp_min.setMinimum(0.0)
        self.sp_amp_min.setProperty("value", 0.0)
        self.sp_amp_min.setObjectName("sp_amp_min")
        self.horizontalLayout_3.addWidget(self.sp_amp_min)
        self.label_35 = QtWidgets.QLabel(self.tab)
        self.label_35.setObjectName("label_35")
        self.horizontalLayout_3.addWidget(self.label_35)
        self.sp_amp_max = QtWidgets.QDoubleSpinBox(self.tab)
        self.sp_amp_max.setPrefix("")
        self.sp_amp_max.setDecimals(3)
        self.sp_amp_max.setProperty("value", 0.85)
        self.sp_amp_max.setObjectName("sp_amp_max")
        self.horizontalLayout_3.addWidget(self.sp_amp_max)
        spacerItem5 = QtWidgets.QSpacerItem(13, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem5)
        self.label_16 = QtWidgets.QLabel(self.tab)
        self.label_16.setObjectName("label_16")
        self.horizontalLayout_3.addWidget(self.label_16)
        self.label_34 = QtWidgets.QLabel(self.tab)
        self.label_34.setObjectName("label_34")
        self.horizontalLayout_3.addWidget(self.label_34)
        self.sp_pha_min = QtWidgets.QDoubleSpinBox(self.tab)
        self.sp_pha_min.setPrefix("")
        self.sp_pha_min.setDecimals(3)
        self.sp_pha_min.setMinimum(-4.0)
        self.sp_pha_min.setMaximum(4.0)
        self.sp_pha_min.setProperty("value", 0.01)
        self.sp_pha_min.setObjectName("sp_pha_min")
        self.horizontalLayout_3.addWidget(self.sp_pha_min)
        self.label_33 = QtWidgets.QLabel(self.tab)
        self.label_33.setObjectName("label_33")
        self.horizontalLayout_3.addWidget(self.label_33)
        self.sp_pha_max = QtWidgets.QDoubleSpinBox(self.tab)
        self.sp_pha_max.setPrefix("")
        self.sp_pha_max.setDecimals(3)
        self.sp_pha_max.setMinimum(-4.0)
        self.sp_pha_max.setMaximum(4.0)
        self.sp_pha_max.setProperty("value", 1.0)
        self.sp_pha_max.setObjectName("sp_pha_max")
        self.horizontalLayout_3.addWidget(self.sp_pha_max)
        self.verticalLayout.addLayout(self.horizontalLayout_3)
        self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_5.setObjectName("horizontalLayout_5")
        self.ck_gpu_flag = QtWidgets.QCheckBox(self.tab)
        self.ck_gpu_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_gpu_flag.setChecked(True)
        self.ck_gpu_flag.setObjectName("ck_gpu_flag")
        self.horizontalLayout_5.addWidget(self.ck_gpu_flag)
        self.le_gpus = QtWidgets.QLineEdit(self.tab)
        self.le_gpus.setObjectName("le_gpus")
        self.horizontalLayout_5.addWidget(self.le_gpus)
        self.label_51 = QtWidgets.QLabel(self.tab)
        self.label_51.setAlignment(QtCore.Qt.AlignCenter)
        self.label_51.setObjectName("label_51")
        self.horizontalLayout_5.addWidget(self.label_51)
        self.btn_MPI_file = QtWidgets.QPushButton(self.tab)
        self.btn_MPI_file.setObjectName("btn_MPI_file")
        self.horizontalLayout_5.addWidget(self.btn_MPI_file)
        self.le_MPI_file_path = QtWidgets.QLineEdit(self.tab)
        self.le_MPI_file_path.setObjectName("le_MPI_file_path")
        self.horizontalLayout_5.addWidget(self.le_MPI_file_path)
        spacerItem6 = QtWidgets.QSpacerItem(18, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_5.addItem(spacerItem6)
        self.btn_recon_start = QtWidgets.QPushButton(self.tab)
        self.btn_recon_start.setMaximumSize(QtCore.QSize(80, 16777215))
        self.btn_recon_start.setObjectName("btn_recon_start")
        self.horizontalLayout_5.addWidget(self.btn_recon_start)
        self.btn_recon_stop = QtWidgets.QPushButton(self.tab)
        self.btn_recon_stop.setMaximumSize(QtCore.QSize(80, 16777215))
        self.btn_recon_stop.setObjectName("btn_recon_stop")
        self.horizontalLayout_5.addWidget(self.btn_recon_stop)
        self.verticalLayout.addLayout(self.horizontalLayout_5)
        self.tabWidget.addTab(self.tab, "")
        self.tab_2 = QtWidgets.QWidget()
        self.tab_2.setObjectName("tab_2")
        self.verticalLayout_8 = QtWidgets.QVBoxLayout(self.tab_2)
        self.verticalLayout_8.setObjectName("verticalLayout_8")
        self.gridLayout_3 = QtWidgets.QGridLayout()
        self.gridLayout_3.setObjectName("gridLayout_3")
        self.label_10 = QtWidgets.QLabel(self.tab_2)
        self.label_10.setAlignment(QtCore.Qt.AlignCenter)
        self.label_10.setObjectName("label_10")
        self.gridLayout_3.addWidget(self.label_10, 0, 7, 1, 1)
        self.label_6 = QtWidgets.QLabel(self.tab_2)
        self.label_6.setAlignment(QtCore.Qt.AlignCenter)
        self.label_6.setObjectName("label_6")
        self.gridLayout_3.addWidget(self.label_6, 2, 9, 1, 1)
        self.ck_angle_correction_flag = QtWidgets.QCheckBox(self.tab_2)
        self.ck_angle_correction_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_angle_correction_flag.setObjectName("ck_angle_correction_flag")
        self.gridLayout_3.addWidget(self.ck_angle_correction_flag, 3, 0, 1, 2)
        self.label_61 = QtWidgets.QLabel(self.tab_2)
        self.label_61.setAlignment(QtCore.Qt.AlignCenter)
        self.label_61.setObjectName("label_61")
        self.gridLayout_3.addWidget(self.label_61, 1, 6, 1, 2)
        self.sp_processes = QtWidgets.QSpinBox(self.tab_2)
        self.sp_processes.setMaximum(1000000)
        self.sp_processes.setProperty("value", 4)
        self.sp_processes.setObjectName("sp_processes")
        self.gridLayout_3.addWidget(self.sp_processes, 3, 10, 1, 2)
        self.sp_start_update_probe = QtWidgets.QSpinBox(self.tab_2)
        self.sp_start_update_probe.setMaximum(1000000)
        self.sp_start_update_probe.setObjectName("sp_start_update_probe")
        self.gridLayout_3.addWidget(self.sp_start_update_probe, 0, 11, 1, 1)
        self.label_29 = QtWidgets.QLabel(self.tab_2)
        self.label_29.setObjectName("label_29")
        self.gridLayout_3.addWidget(self.label_29, 1, 9, 1, 2)
        self.sp_nth = QtWidgets.QSpinBox(self.tab_2)
        self.sp_nth.setProperty("value", 5)
        self.sp_nth.setObjectName("sp_nth")
        self.gridLayout_3.addWidget(self.sp_nth, 2, 10, 1, 2)
        self.sp_angle = QtWidgets.QDoubleSpinBox(self.tab_2)
        self.sp_angle.setMinimum(-181.0)
        self.sp_angle.setMaximum(181.0)
        self.sp_angle.setObjectName("sp_angle")
        self.gridLayout_3.addWidget(self.sp_angle, 3, 4, 1, 1)
        self.label_5 = QtWidgets.QLabel(self.tab_2)
        self.label_5.setAlignment(QtCore.Qt.AlignCenter)
        self.label_5.setObjectName("label_5")
        self.gridLayout_3.addWidget(self.label_5, 3, 6, 1, 2)
        self.label_28 = QtWidgets.QLabel(self.tab_2)
        self.label_28.setObjectName("label_28")
        self.gridLayout_3.addWidget(self.label_28, 0, 9, 1, 2)
        self.label_49 = QtWidgets.QLabel(self.tab_2)
        self.label_49.setAlignment(QtCore.Qt.AlignCenter)
        self.label_49.setObjectName("label_49")
        self.gridLayout_3.addWidget(self.label_49, 2, 0, 1, 1)
        self.sp_x_direction = QtWidgets.QDoubleSpinBox(self.tab_2)
        self.sp_x_direction.setDecimals(1)
        self.sp_x_direction.setMinimum(-1.0)
        self.sp_x_direction.setMaximum(1.0)
        self.sp_x_direction.setSingleStep(0.1)
        self.sp_x_direction.setProperty("value", -1.0)
        self.sp_x_direction.setObjectName("sp_x_direction")
        self.gridLayout_3.addWidget(self.sp_x_direction, 2, 1, 1, 1)
        self.sp_start_ave = QtWidgets.QDoubleSpinBox(self.tab_2)
        self.sp_start_ave.setDecimals(1)
        self.sp_start_ave.setMaximum(1.0)
        self.sp_start_ave.setSingleStep(0.1)
        self.sp_start_ave.setProperty("value", 0.8)
        self.sp_start_ave.setObjectName("sp_start_ave")
        self.gridLayout_3.addWidget(self.sp_start_ave, 3, 8, 1, 1)
        self.label_4 = QtWidgets.QLabel(self.tab_2)
        self.label_4.setObjectName("label_4")
        self.gridLayout_3.addWidget(self.label_4, 1, 0, 1, 3)
        self.sp_distance = QtWidgets.QDoubleSpinBox(self.tab_2)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.sp_distance.sizePolicy().hasHeightForWidth())
        self.sp_distance.setSizePolicy(sizePolicy)
        self.sp_distance.setDecimals(3)
        self.sp_distance.setMinimum(-999999.999)
        self.sp_distance.setMaximum(999999.999)
        self.sp_distance.setObjectName("sp_distance")
        self.gridLayout_3.addWidget(self.sp_distance, 1, 3, 1, 3)
        self.cb_ml_mode = QtWidgets.QComboBox(self.tab_2)
        self.cb_ml_mode.setObjectName("cb_ml_mode")
        self.cb_ml_mode.addItem("")
        self.cb_ml_mode.addItem("")
        self.gridLayout_3.addWidget(self.cb_ml_mode, 0, 8, 1, 1)
        self.label_2 = QtWidgets.QLabel(self.tab_2)
        self.label_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_2.setObjectName("label_2")
        self.gridLayout_3.addWidget(self.label_2, 3, 2, 1, 1)
        self.sp_y_direction = QtWidgets.QDoubleSpinBox(self.tab_2)
        self.sp_y_direction.setDecimals(1)
        self.sp_y_direction.setMinimum(-1.0)
        self.sp_y_direction.setMaximum(1.0)
        self.sp_y_direction.setSingleStep(0.1)
        self.sp_y_direction.setProperty("value", -1.0)
        self.sp_y_direction.setObjectName("sp_y_direction")
        self.gridLayout_3.addWidget(self.sp_y_direction, 2, 4, 1, 1)
        self.ck_cal_scal_pattern_flag = QtWidgets.QCheckBox(self.tab_2)
        self.ck_cal_scal_pattern_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_cal_scal_pattern_flag.setObjectName("ck_cal_scal_pattern_flag")
        self.gridLayout_3.addWidget(self.ck_cal_scal_pattern_flag, 2, 5, 1, 4)
        self.label_50 = QtWidgets.QLabel(self.tab_2)
        self.label_50.setAlignment(QtCore.Qt.AlignCenter)
        self.label_50.setObjectName("label_50")
        self.gridLayout_3.addWidget(self.label_50, 2, 2, 1, 2)
        self.sp_start_update_object = QtWidgets.QSpinBox(self.tab_2)
        self.sp_start_update_object.setMaximum(1000000)
        self.sp_start_update_object.setObjectName("sp_start_update_object")
        self.gridLayout_3.addWidget(self.sp_start_update_object, 1, 11, 1, 1)
        self.sp_ml_weight = QtWidgets.QDoubleSpinBox(self.tab_2)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.sp_ml_weight.sizePolicy().hasHeightForWidth())
        self.sp_ml_weight.setSizePolicy(sizePolicy)
        self.sp_ml_weight.setDecimals(3)
        self.sp_ml_weight.setMinimum(-999999.999)
        self.sp_ml_weight.setMaximum(999999.999)
        self.sp_ml_weight.setProperty("value", 0.1)
        self.sp_ml_weight.setObjectName("sp_ml_weight")
        self.gridLayout_3.addWidget(self.sp_ml_weight, 1, 8, 1, 1)
        self.label_31 = QtWidgets.QLabel(self.tab_2)
        self.label_31.setAlignment(QtCore.Qt.AlignCenter)
        self.label_31.setObjectName("label_31")
        self.gridLayout_3.addWidget(self.label_31, 3, 9, 1, 1)
        self.horizontalLayout_22 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_22.setObjectName("horizontalLayout_22")
        self.label_7 = QtWidgets.QLabel(self.tab_2)
        self.label_7.setObjectName("label_7")
        self.horizontalLayout_22.addWidget(self.label_7)
        self.sp_ccd_pixel_um = QtWidgets.QDoubleSpinBox(self.tab_2)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.sp_ccd_pixel_um.sizePolicy().hasHeightForWidth())
        self.sp_ccd_pixel_um.setSizePolicy(sizePolicy)
        self.sp_ccd_pixel_um.setDecimals(3)
        self.sp_ccd_pixel_um.setMaximum(1000.0)
        self.sp_ccd_pixel_um.setProperty("value", 55.0)
        self.sp_ccd_pixel_um.setObjectName("sp_ccd_pixel_um")
        self.horizontalLayout_22.addWidget(self.sp_ccd_pixel_um)
        self.label_30 = QtWidgets.QLabel(self.tab_2)
        self.label_30.setAlignment(QtCore.Qt.AlignCenter)
        self.label_30.setObjectName("label_30")
        self.horizontalLayout_22.addWidget(self.label_30)
        self.sp_dm_version = QtWidgets.QSpinBox(self.tab_2)
        self.sp_dm_version.setProperty("value", 2)
        self.sp_dm_version.setObjectName("sp_dm_version")
        self.horizontalLayout_22.addWidget(self.sp_dm_version)
        self.gridLayout_3.addLayout(self.horizontalLayout_22, 0, 0, 1, 7)
        self.verticalLayout_8.addLayout(self.gridLayout_3)
        self.gridLayout_5 = QtWidgets.QGridLayout()
        self.gridLayout_5.setObjectName("gridLayout_5")
        self.label_13 = QtWidgets.QLabel(self.tab_2)
        self.label_13.setObjectName("label_13")
        self.gridLayout_5.addWidget(self.label_13, 0, 4, 1, 1)
        self.label_25 = QtWidgets.QLabel(self.tab_2)
        self.label_25.setObjectName("label_25")
        self.gridLayout_5.addWidget(self.label_25, 2, 4, 1, 1)
        self.ck_position_correction_flag = QtWidgets.QCheckBox(self.tab_2)
        self.ck_position_correction_flag.setObjectName("ck_position_correction_flag")
        self.gridLayout_5.addWidget(self.ck_position_correction_flag, 2, 0, 1, 1)
        self.sp_bragg_theta = QtWidgets.QDoubleSpinBox(self.tab_2)
        self.sp_bragg_theta.setEnabled(False)
        self.sp_bragg_theta.setDecimals(3)
        self.sp_bragg_theta.setProperty("value", 0.0)
        self.sp_bragg_theta.setMinimum(-180.0)
        self.sp_bragg_theta.setMaximum(180.0)
        self.sp_bragg_theta.setObjectName("sp_bragg_theta")
        self.gridLayout_5.addWidget(self.sp_bragg_theta, 0, 2, 1, 1)
        self.sp_bragg_delta = QtWidgets.QDoubleSpinBox(self.tab_2)
        self.sp_bragg_delta.setEnabled(False)
        self.sp_bragg_delta.setDecimals(3)
        self.sp_bragg_delta.setProperty("value", 0.0)
        self.sp_bragg_delta.setMinimum(-180.0)
        self.sp_bragg_delta.setMaximum(180.0)
        self.sp_bragg_delta.setObjectName("sp_bragg_delta")
        self.gridLayout_5.addWidget(self.sp_bragg_delta, 0, 8, 1, 1)
        self.cb_pc_alg = QtWidgets.QComboBox(self.tab_2)
        self.cb_pc_alg.setEnabled(False)
        self.cb_pc_alg.setObjectName("cb_pc_alg")
        self.cb_pc_alg.addItem("")
        self.cb_pc_alg.addItem("")
        self.gridLayout_5.addWidget(self.cb_pc_alg, 1, 5, 1, 1)
        self.sp_bragg_gamma = QtWidgets.QDoubleSpinBox(self.tab_2)
        self.sp_bragg_gamma.setEnabled(False)
        self.sp_bragg_gamma.setDecimals(3)
        self.sp_bragg_gamma.setProperty("value", 0.0)
        self.sp_bragg_gamma.setMinimum(-180.0)
        self.sp_bragg_gamma.setMaximum(180.0)
        self.sp_bragg_gamma.setObjectName("sp_bragg_gamma")
        self.gridLayout_5.addWidget(self.sp_bragg_gamma, 0, 5, 1, 1)
        self.sp_pc_sigma = QtWidgets.QDoubleSpinBox(self.tab_2)
        self.sp_pc_sigma.setEnabled(False)
        self.sp_pc_sigma.setDecimals(3)
        self.sp_pc_sigma.setProperty("value", 2.0)
        self.sp_pc_sigma.setObjectName("sp_pc_sigma")
        self.gridLayout_5.addWidget(self.sp_pc_sigma, 1, 2, 1, 1)
        self.sp_position_correction_step = QtWidgets.QSpinBox(self.tab_2)
        self.sp_position_correction_step.setEnabled(False)
        self.sp_position_correction_step.setProperty("value", 10)
        self.sp_position_correction_step.setObjectName("sp_position_correction_step")
        self.gridLayout_5.addWidget(self.sp_position_correction_step, 2, 5, 1, 1)
        self.label_12 = QtWidgets.QLabel(self.tab_2)
        self.label_12.setObjectName("label_12")
        self.gridLayout_5.addWidget(self.label_12, 0, 1, 1, 1)
        self.ck_bragg_flag = QtWidgets.QCheckBox(self.tab_2)
        self.ck_bragg_flag.setObjectName("ck_bragg_flag")
        self.gridLayout_5.addWidget(self.ck_bragg_flag, 0, 0, 1, 1)
        self.label_14 = QtWidgets.QLabel(self.tab_2)
        self.label_14.setObjectName("label_14")
        self.gridLayout_5.addWidget(self.label_14, 0, 7, 1, 1)
        self.label_19 = QtWidgets.QLabel(self.tab_2)
        self.label_19.setObjectName("label_19")
        self.gridLayout_5.addWidget(self.label_19, 1, 7, 1, 1)
        self.ck_pc_flag = QtWidgets.QCheckBox(self.tab_2)
        self.ck_pc_flag.setObjectName("ck_pc_flag")
        self.gridLayout_5.addWidget(self.ck_pc_flag, 1, 0, 1, 1)
        self.sp_position_correction_start = QtWidgets.QSpinBox(self.tab_2)
        self.sp_position_correction_start.setEnabled(False)
        self.sp_position_correction_start.setProperty("value", 50)
        self.sp_position_correction_start.setObjectName("sp_position_correction_start")
        self.gridLayout_5.addWidget(self.sp_position_correction_start, 2, 2, 1, 1)
        self.label_17 = QtWidgets.QLabel(self.tab_2)
        self.label_17.setObjectName("label_17")
        self.gridLayout_5.addWidget(self.label_17, 1, 1, 1, 1)
        spacerItem7 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_5.addItem(spacerItem7, 0, 3, 1, 1)
        self.label_24 = QtWidgets.QLabel(self.tab_2)
        self.label_24.setObjectName("label_24")
        self.gridLayout_5.addWidget(self.label_24, 2, 1, 1, 1)
        self.sp_pc_kernel_n = QtWidgets.QSpinBox(self.tab_2)
        self.sp_pc_kernel_n.setEnabled(False)
        self.sp_pc_kernel_n.setProperty("value", 32)
        self.sp_pc_kernel_n.setObjectName("sp_pc_kernel_n")
        self.gridLayout_5.addWidget(self.sp_pc_kernel_n, 1, 8, 1, 1)
        self.label_18 = QtWidgets.QLabel(self.tab_2)
        self.label_18.setObjectName("label_18")
        self.gridLayout_5.addWidget(self.label_18, 1, 4, 1, 1)
        spacerItem8 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_5.addItem(spacerItem8, 0, 6, 1, 1)
        self.verticalLayout_8.addLayout(self.gridLayout_5)
        self.horizontalLayout_18 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_18.setObjectName("horizontalLayout_18")
        self.verticalLayout_3 = QtWidgets.QVBoxLayout()
        self.verticalLayout_3.setObjectName("verticalLayout_3")
        self.horizontalLayout_6 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_6.setObjectName("horizontalLayout_6")
        self.label_20 = QtWidgets.QLabel(self.tab_2)
        self.label_20.setObjectName("label_20")
        self.horizontalLayout_6.addWidget(self.label_20)
        self.sp_sigma2 = QtWidgets.QDoubleSpinBox(self.tab_2)
        self.sp_sigma2.setDecimals(5)
        self.sp_sigma2.setMaximum(1.0)
        self.sp_sigma2.setProperty("value", 5e-05)
        self.sp_sigma2.setObjectName("sp_sigma2")
        self.horizontalLayout_6.addWidget(self.sp_sigma2)
        self.verticalLayout_3.addLayout(self.horizontalLayout_6)
        self.horizontalLayout_14 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_14.setObjectName("horizontalLayout_14")
        self.label_21 = QtWidgets.QLabel(self.tab_2)
        self.label_21.setObjectName("label_21")
        self.horizontalLayout_14.addWidget(self.label_21)
        self.sp_beta = QtWidgets.QDoubleSpinBox(self.tab_2)
        self.sp_beta.setDecimals(2)
        self.sp_beta.setMaximum(2.0)
        self.sp_beta.setSingleStep(0.1)
        self.sp_beta.setProperty("value", 0.9)
        self.sp_beta.setObjectName("sp_beta")
        self.horizontalLayout_14.addWidget(self.sp_beta)
        self.verticalLayout_3.addLayout(self.horizontalLayout_14)
        self.horizontalLayout_18.addLayout(self.verticalLayout_3)
        self.verticalLayout_6 = QtWidgets.QVBoxLayout()
        self.verticalLayout_6.setObjectName("verticalLayout_6")
        self.horizontalLayout_7 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_7.setObjectName("horizontalLayout_7")
        self.label_55 = QtWidgets.QLabel(self.tab_2)
        self.label_55.setObjectName("label_55")
        self.horizontalLayout_7.addWidget(self.label_55)
        self.sp_display_interval = QtWidgets.QSpinBox(self.tab_2)
        self.sp_display_interval.setMinimum(1)
        self.sp_display_interval.setObjectName("sp_display_interval")
        self.horizontalLayout_7.addWidget(self.sp_display_interval)
        self.verticalLayout_6.addLayout(self.horizontalLayout_7)
        self.ck_preview_flag = QtWidgets.QCheckBox(self.tab_2)
        self.ck_preview_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_preview_flag.setChecked(True)
        self.ck_preview_flag.setObjectName("ck_preview_flag")
        self.verticalLayout_6.addWidget(self.ck_preview_flag)
        self.ck_cal_error_flag = QtWidgets.QCheckBox(self.tab_2)
        self.ck_cal_error_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_cal_error_flag.setChecked(True)
        self.ck_cal_error_flag.setObjectName("ck_cal_error_flag")
        self.verticalLayout_6.addWidget(self.ck_cal_error_flag)
        self.horizontalLayout_18.addLayout(self.verticalLayout_6)
        self.verticalLayout_4 = QtWidgets.QVBoxLayout()
        self.verticalLayout_4.setObjectName("verticalLayout_4")
        self.ck_prb_center_flag = QtWidgets.QCheckBox(self.tab_2)
        self.ck_prb_center_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_prb_center_flag.setChecked(False)
        self.ck_prb_center_flag.setObjectName("ck_prb_center_flag")
        self.verticalLayout_4.addWidget(self.ck_prb_center_flag)
        self.ck_norm_prb_amp_flag = QtWidgets.QCheckBox(self.tab_2)
        self.ck_norm_prb_amp_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_norm_prb_amp_flag.setChecked(False)
        self.ck_norm_prb_amp_flag.setObjectName("ck_norm_prb_amp_flag")
        self.verticalLayout_4.addWidget(self.ck_norm_prb_amp_flag)
        self.horizontalLayout_17 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_17.setObjectName("horizontalLayout_17")
        self.label_56 = QtWidgets.QLabel(self.tab_2)
        self.label_56.setObjectName("label_56")
        self.horizontalLayout_17.addWidget(self.label_56)
        self.cb_gpu_batch_size = QtWidgets.QComboBox(self.tab_2)
        self.cb_gpu_batch_size.setObjectName("cb_gpu_batch_size")
        self.cb_gpu_batch_size.addItem("")
        self.cb_gpu_batch_size.addItem("")
        self.cb_gpu_batch_size.addItem("")
        self.cb_gpu_batch_size.addItem("")
        self.cb_gpu_batch_size.addItem("")
        self.cb_gpu_batch_size.addItem("")
        self.horizontalLayout_17.addWidget(self.cb_gpu_batch_size)
        self.verticalLayout_4.addLayout(self.horizontalLayout_17)
        self.horizontalLayout_18.addLayout(self.verticalLayout_4)
        self.verticalLayout_7 = QtWidgets.QVBoxLayout()
        self.verticalLayout_7.setObjectName("verticalLayout_7")
        self.horizontalLayout_15 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_15.setObjectName("horizontalLayout_15")
        self.ck_sf_flag = QtWidgets.QCheckBox(self.tab_2)
        self.ck_sf_flag.setEnabled(False)
        self.ck_sf_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_sf_flag.setCheckable(True)
        self.ck_sf_flag.setObjectName("ck_sf_flag")
        self.horizontalLayout_15.addWidget(self.ck_sf_flag)
        self.ck_mesh_flag = QtWidgets.QCheckBox(self.tab_2)
        self.ck_mesh_flag.setEnabled(False)
        self.ck_mesh_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_mesh_flag.setChecked(True)
        self.ck_mesh_flag.setObjectName("ck_mesh_flag")
        self.horizontalLayout_15.addWidget(self.ck_mesh_flag)
        self.verticalLayout_7.addLayout(self.horizontalLayout_15)
        self.ck_mask_prb_flag = QtWidgets.QCheckBox(self.tab_2)
        self.ck_mask_prb_flag.setEnabled(False)
        self.ck_mask_prb_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_mask_prb_flag.setObjectName("ck_mask_prb_flag")
        self.verticalLayout_7.addWidget(self.ck_mask_prb_flag)
        self.ck_init_obj_dpc_flag = QtWidgets.QCheckBox(self.tab_2)
        self.ck_init_obj_dpc_flag.setEnabled(False)
        self.ck_init_obj_dpc_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_init_obj_dpc_flag.setObjectName("ck_init_obj_dpc_flag")
        self.verticalLayout_7.addWidget(self.ck_init_obj_dpc_flag)
        self.horizontalLayout_18.addLayout(self.verticalLayout_7)
        self.verticalLayout_8.addLayout(self.horizontalLayout_18)
        self.tabWidget.addTab(self.tab_2, "")
        self.tab_4 = QtWidgets.QWidget()
        self.tab_4.setObjectName("tab_4")
        self.layoutWidget = QtWidgets.QWidget(self.tab_4)
        self.layoutWidget.setGeometry(QtCore.QRect(20, 10, 660, 31))
        self.layoutWidget.setObjectName("layoutWidget")
        self.horizontalLayout_19 = QtWidgets.QHBoxLayout(self.layoutWidget)
        self.horizontalLayout_19.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_19.setObjectName("horizontalLayout_19")
        self.ck_refine_data_flag = QtWidgets.QCheckBox(self.layoutWidget)
        self.ck_refine_data_flag.setObjectName("ck_refine_data_flag")
        self.horizontalLayout_19.addWidget(self.ck_refine_data_flag)
        spacerItem9 = QtWidgets.QSpacerItem(18, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_19.addItem(spacerItem9)
        self.label_57 = QtWidgets.QLabel(self.layoutWidget)
        self.label_57.setObjectName("label_57")
        self.horizontalLayout_19.addWidget(self.label_57)
        self.sp_refine_data_start_it = QtWidgets.QSpinBox(self.layoutWidget)
        self.sp_refine_data_start_it.setEnabled(False)
        self.sp_refine_data_start_it.setMaximum(100000000)
        self.sp_refine_data_start_it.setProperty("value", 10)
        self.sp_refine_data_start_it.setObjectName("sp_refine_data_start_it")
        self.horizontalLayout_19.addWidget(self.sp_refine_data_start_it)
        spacerItem10 = QtWidgets.QSpacerItem(18, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_19.addItem(spacerItem10)
        self.label_58 = QtWidgets.QLabel(self.layoutWidget)
        self.label_58.setObjectName("label_58")
        self.horizontalLayout_19.addWidget(self.label_58)
        self.sp_refine_data_interval = QtWidgets.QSpinBox(self.layoutWidget)
        self.sp_refine_data_interval.setEnabled(False)
        self.sp_refine_data_interval.setMaximum(100000000)
        self.sp_refine_data_interval.setProperty("value", 5)
        self.sp_refine_data_interval.setObjectName("sp_refine_data_interval")
        self.horizontalLayout_19.addWidget(self.sp_refine_data_interval)
        spacerItem11 = QtWidgets.QSpacerItem(18, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_19.addItem(spacerItem11)
        self.label_59 = QtWidgets.QLabel(self.layoutWidget)
        self.label_59.setObjectName("label_59")
        self.horizontalLayout_19.addWidget(self.label_59)
        self.sp_refine_data_step = QtWidgets.QDoubleSpinBox(self.layoutWidget)
        self.sp_refine_data_step.setEnabled(False)
        self.sp_refine_data_step.setMaximum(1.0)
        self.sp_refine_data_step.setSingleStep(0.05)
        self.sp_refine_data_step.setProperty("value", 0.05)
        self.sp_refine_data_step.setObjectName("sp_refine_data_step")
        self.horizontalLayout_19.addWidget(self.sp_refine_data_step)
        self.layoutWidget1 = QtWidgets.QWidget(self.tab_4)
        self.layoutWidget1.setGeometry(QtCore.QRect(20, 90, 721, 20))
        self.layoutWidget1.setObjectName("layoutWidget1")
        self.horizontalLayout_21 = QtWidgets.QHBoxLayout(self.layoutWidget1)
        self.horizontalLayout_21.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_21.setObjectName("horizontalLayout_21")
        self.ck_profiler_flag = QtWidgets.QCheckBox(self.layoutWidget1)
        self.ck_profiler_flag.setObjectName("ck_profiler_flag")
        self.horizontalLayout_21.addWidget(self.ck_profiler_flag)
        self.ck_postprocessing_flag = QtWidgets.QCheckBox(self.layoutWidget1)
        self.ck_postprocessing_flag.setChecked(True)
        self.ck_postprocessing_flag.setObjectName("ck_postprocessing_flag")
        self.horizontalLayout_21.addWidget(self.ck_postprocessing_flag)
        self.ck_scan_pt_flag = QtWidgets.QCheckBox(self.layoutWidget1)
        self.ck_scan_pt_flag.setObjectName("ck_scan_pt_flag")
        self.horizontalLayout_21.addWidget(self.ck_scan_pt_flag)
        self.layoutWidget2 = QtWidgets.QWidget(self.tab_4)
        self.layoutWidget2.setGeometry(QtCore.QRect(22, 50, 680, 26))
        self.layoutWidget2.setObjectName("layoutWidget2")
        self.horizontalLayout_20 = QtWidgets.QHBoxLayout(self.layoutWidget2)
        self.horizontalLayout_20.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_20.setObjectName("horizontalLayout_20")
        self.label_60 = QtWidgets.QLabel(self.layoutWidget2)
        self.label_60.setObjectName("label_60")
        self.horizontalLayout_20.addWidget(self.label_60)
        self.rb_mpi = QtWidgets.QRadioButton(self.layoutWidget2)
        self.rb_mpi.setChecked(True)
        self.rb_mpi.setObjectName("rb_mpi")
        self.horizontalLayout_20.addWidget(self.rb_mpi)
        spacerItem12 = QtWidgets.QSpacerItem(4, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_20.addItem(spacerItem12)
        self.rb_cuda_mpi = QtWidgets.QRadioButton(self.layoutWidget2)
        self.rb_cuda_mpi.setChecked(False)
        self.rb_cuda_mpi.setObjectName("rb_cuda_mpi")
        self.horizontalLayout_20.addWidget(self.rb_cuda_mpi)
        spacerItem13 = QtWidgets.QSpacerItem(4, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_20.addItem(spacerItem13)
        self.rb_nccl = QtWidgets.QRadioButton(self.layoutWidget2)
        self.rb_nccl.setEnabled(True)
        self.rb_nccl.setCheckable(True)
        self.rb_nccl.setChecked(False)
        self.rb_nccl.setObjectName("rb_nccl")
        self.horizontalLayout_20.addWidget(self.rb_nccl)
        spacerItem14 = QtWidgets.QSpacerItem(4, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_20.addItem(spacerItem14)
        self.rb_none = QtWidgets.QRadioButton(self.layoutWidget2)
        self.rb_none.setEnabled(False)
        self.rb_none.setCheckable(True)
        self.rb_none.setChecked(False)
        self.rb_none.setObjectName("rb_none")
        self.horizontalLayout_20.addWidget(self.rb_none)
        self.tabWidget.addTab(self.tab_4, "")
        self.tab_3 = QtWidgets.QWidget()
        self.tab_3.setObjectName("tab_3")
        self.layoutWidget3 = QtWidgets.QWidget(self.tab_3)
        self.layoutWidget3.setGeometry(QtCore.QRect(20, 20, 491, 23))
        self.layoutWidget3.setObjectName("layoutWidget3")
        self.horizontalLayout_8 = QtWidgets.QHBoxLayout(self.layoutWidget3)
        self.horizontalLayout_8.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_8.setObjectName("horizontalLayout_8")
        self.label_52 = QtWidgets.QLabel(self.layoutWidget3)
        self.label_52.setObjectName("label_52")
        self.horizontalLayout_8.addWidget(self.label_52)
        self.le_batch_items = QtWidgets.QLineEdit(self.layoutWidget3)
        self.le_batch_items.setObjectName("le_batch_items")
        self.horizontalLayout_8.addWidget(self.le_batch_items)
        self.layoutWidget4 = QtWidgets.QWidget(self.tab_3)
        self.layoutWidget4.setGeometry(QtCore.QRect(20, 50, 244, 26))
        self.layoutWidget4.setObjectName("layoutWidget4")
        self.horizontalLayout_9 = QtWidgets.QHBoxLayout(self.layoutWidget4)
        self.horizontalLayout_9.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_9.setObjectName("horizontalLayout_9")
        self.label_53 = QtWidgets.QLabel(self.layoutWidget4)
        self.label_53.setObjectName("label_53")
        self.horizontalLayout_9.addWidget(self.label_53)
        self.sp_batch_step = QtWidgets.QSpinBox(self.layoutWidget4)
        self.sp_batch_step.setMinimum(1)
        self.sp_batch_step.setMaximum(1000000)
        self.sp_batch_step.setObjectName("sp_batch_step")
        self.horizontalLayout_9.addWidget(self.sp_batch_step)
        self.layoutWidget_2 = QtWidgets.QWidget(self.tab_3)
        self.layoutWidget_2.setGeometry(QtCore.QRect(20, 120, 701, 28))
        self.layoutWidget_2.setObjectName("layoutWidget_2")
        self.horizontalLayout_13 = QtWidgets.QHBoxLayout(self.layoutWidget_2)
        self.horizontalLayout_13.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_13.setObjectName("horizontalLayout_13")
        self.ck_init_obj_batch_flag = QtWidgets.QCheckBox(self.layoutWidget_2)
        self.ck_init_obj_batch_flag.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.ck_init_obj_batch_flag.setObjectName("ck_init_obj_batch_flag")
        self.horizontalLayout_13.addWidget(self.ck_init_obj_batch_flag)
        self.le_obj_path_batch = QtWidgets.QLineEdit(self.layoutWidget_2)
        self.le_obj_path_batch.setEnabled(False)
        self.le_obj_path_batch.setObjectName("le_obj_path_batch")
        self.horizontalLayout_13.addWidget(self.le_obj_path_batch)
        self.layoutWidget5 = QtWidgets.QWidget(self.tab_3)
        self.layoutWidget5.setGeometry(QtCore.QRect(20, 90, 701, 28))
        self.layoutWidget5.setObjectName("layoutWidget5")
        self.horizontalLayout_12 = QtWidgets.QHBoxLayout(self.layoutWidget5)
        self.horizontalLayout_12.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_12.setObjectName("horizontalLayout_12")
        self.ck_init_prb_batch_flag = QtWidgets.QCheckBox(self.layoutWidget5)
        self.ck_init_prb_batch_flag.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.ck_init_prb_batch_flag.setObjectName("ck_init_prb_batch_flag")
        self.horizontalLayout_12.addWidget(self.ck_init_prb_batch_flag)
        self.le_prb_path_batch = QtWidgets.QLineEdit(self.layoutWidget5)
        self.le_prb_path_batch.setEnabled(False)
        self.le_prb_path_batch.setObjectName("le_prb_path_batch")
        self.horizontalLayout_12.addWidget(self.le_prb_path_batch)
        self.layoutWidget6 = QtWidgets.QWidget(self.tab_3)
        self.layoutWidget6.setGeometry(QtCore.QRect(40, 250, 668, 32))
        self.layoutWidget6.setObjectName("layoutWidget6")
        self.horizontalLayout_11 = QtWidgets.QHBoxLayout(self.layoutWidget6)
        self.horizontalLayout_11.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_11.setObjectName("horizontalLayout_11")
        spacerItem15 = QtWidgets.QSpacerItem(518, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_11.addItem(spacerItem15)
        self.btn_recon_batch_start = QtWidgets.QPushButton(self.layoutWidget6)
        self.btn_recon_batch_start.setMaximumSize(QtCore.QSize(80, 16777215))
        self.btn_recon_batch_start.setObjectName("btn_recon_batch_start")
        self.horizontalLayout_11.addWidget(self.btn_recon_batch_start)
        self.btn_recon_batch_stop = QtWidgets.QPushButton(self.layoutWidget6)
        self.btn_recon_batch_stop.setMaximumSize(QtCore.QSize(80, 16777215))
        self.btn_recon_batch_stop.setObjectName("btn_recon_batch_stop")
        self.horizontalLayout_11.addWidget(self.btn_recon_batch_stop)
        self.ck_batch_run_flag = QtWidgets.QCheckBox(self.tab_3)
        self.ck_batch_run_flag.setGeometry(QtCore.QRect(20, 220, 141, 20))
        self.ck_batch_run_flag.setChecked(True)
        self.ck_batch_run_flag.setObjectName("ck_batch_run_flag")
        self.widget = QtWidgets.QWidget(self.tab_3)
        self.widget.setGeometry(QtCore.QRect(20, 190, 644, 31))
        self.widget.setObjectName("widget")
        self.horizontalLayout_16 = QtWidgets.QHBoxLayout(self.widget)
        self.horizontalLayout_16.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_16.setObjectName("horizontalLayout_16")
        self.ck_batch_crop_flag = QtWidgets.QCheckBox(self.widget)
        self.ck_batch_crop_flag.setObjectName("ck_batch_crop_flag")
        self.horizontalLayout_16.addWidget(self.ck_batch_crop_flag)
        spacerItem16 = QtWidgets.QSpacerItem(28, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_16.addItem(spacerItem16)
        self.label_62 = QtWidgets.QLabel(self.widget)
        self.label_62.setObjectName("label_62")
        self.horizontalLayout_16.addWidget(self.label_62)
        self.sp_batch_x0 = QtWidgets.QSpinBox(self.widget)
        self.sp_batch_x0.setMaximum(100000000)
        self.sp_batch_x0.setObjectName("sp_batch_x0")
        self.horizontalLayout_16.addWidget(self.sp_batch_x0)
        self.label_63 = QtWidgets.QLabel(self.widget)
        self.label_63.setObjectName("label_63")
        self.horizontalLayout_16.addWidget(self.label_63)
        self.sp_batch_y0 = QtWidgets.QSpinBox(self.widget)
        self.sp_batch_y0.setMaximum(100000000)
        self.sp_batch_y0.setObjectName("sp_batch_y0")
        self.horizontalLayout_16.addWidget(self.sp_batch_y0)
        self.label_64 = QtWidgets.QLabel(self.widget)
        self.label_64.setObjectName("label_64")
        self.horizontalLayout_16.addWidget(self.label_64)
        self.sp_batch_width = QtWidgets.QSpinBox(self.widget)
        self.sp_batch_width.setMaximum(100000000)
        self.sp_batch_width.setObjectName("sp_batch_width")
        self.horizontalLayout_16.addWidget(self.sp_batch_width)
        self.label_65 = QtWidgets.QLabel(self.widget)
        self.label_65.setObjectName("label_65")
        self.horizontalLayout_16.addWidget(self.label_65)
        self.sp_batch_height = QtWidgets.QSpinBox(self.widget)
        self.sp_batch_height.setMaximum(100000000)
        self.sp_batch_height.setObjectName("sp_batch_height")
        self.horizontalLayout_16.addWidget(self.sp_batch_height)
        self.tabWidget.addTab(self.tab_3, "")
        self.verticalLayout_5.addWidget(self.tabWidget)
        self.console_info = QtWidgets.QTextEdit(self.centralwidget)
        self.console_info.setReadOnly(True)
        self.console_info.setObjectName("console_info")
        self.verticalLayout_5.addWidget(self.console_info)
        self.recon_bar = QtWidgets.QProgressBar(self.centralwidget)
        self.recon_bar.setProperty("value", 0)
        self.recon_bar.setObjectName("recon_bar")
        self.verticalLayout_5.addWidget(self.recon_bar)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menuBar = QtWidgets.QMenuBar(MainWindow)
        self.menuBar.setGeometry(QtCore.QRect(0, 0, 760, 22))
        self.menuBar.setNativeMenuBar(False)
        self.menuBar.setObjectName("menuBar")
        self.menuFile = QtWidgets.QMenu(self.menuBar)
        self.menuFile.setToolTipsVisible(True)
        self.menuFile.setObjectName("menuFile")
        self.menuWindows = QtWidgets.QMenu(self.menuBar)
        self.menuWindows.setObjectName("menuWindows")
        self.menuOptions = QtWidgets.QMenu(self.menuBar)
        self.menuOptions.setObjectName("menuOptions")
        MainWindow.setMenuBar(self.menuBar)
        self.menu_import_config = QtWidgets.QAction(MainWindow)
        self.menu_import_config.setObjectName("menu_import_config")
        self.menu_export_config = QtWidgets.QAction(MainWindow)
        self.menu_export_config.setObjectName("menu_export_config")
        self.menu_save_config_history = QtWidgets.QAction(MainWindow)
        self.menu_save_config_history.setCheckable(True)
        self.menu_save_config_history.setChecked(True)
        self.menu_save_config_history.setObjectName("menu_save_config_history")
        self.menu_clear_config_history = QtWidgets.QAction(MainWindow)
        self.menu_clear_config_history.setObjectName("menu_clear_config_history")
        self.actionROI = QtWidgets.QAction(MainWindow)
        self.actionROI.setObjectName("actionROI")
        self.actionMonitor = QtWidgets.QAction(MainWindow)
        self.actionMonitor.setObjectName("actionMonitor")
        self.actionScan_points = QtWidgets.QAction(MainWindow)
        self.actionScan_points.setObjectName("actionScan_points")
        self.actionClear_shared_memory = QtWidgets.QAction(MainWindow)
        self.actionClear_shared_memory.setObjectName("actionClear_shared_memory")
        self.menuFile.addAction(self.menu_import_config)
        self.menuFile.addAction(self.menu_export_config)
        self.menuFile.addAction(self.menu_clear_config_history)
        self.menuFile.addAction(self.menu_save_config_history)
        self.menuWindows.addAction(self.actionROI)
        self.menuWindows.addAction(self.actionMonitor)
        self.menuWindows.addAction(self.actionScan_points)
        self.menuOptions.addAction(self.actionClear_shared_memory)
        self.menuBar.addAction(self.menuFile.menuAction())
        self.menuBar.addAction(self.menuWindows.menuAction())
        self.menuBar.addAction(self.menuOptions.menuAction())

        self.retranslateUi(MainWindow)
        self.tabWidget.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "NSLS-II Pytchography"))
        self.groupBox_7.setTitle(_translate("MainWindow", "Data"))
        self.label.setText(_translate("MainWindow", "Scan number"))
        self.le_scan_num.setText(_translate("MainWindow", "34784"))
        self.ck_extra_scans_flag.setToolTip(_translate("MainWindow", "Enable additional scans (ex: dark frames) associated with the scan number on the left."))
        self.ck_extra_scans_flag.setText(_translate("MainWindow", "Assoc. scans"))
        self.btn_set_extra_scans.setText(_translate("MainWindow", "Set"))
        self.btn_choose_cwd.setText(_translate("MainWindow", "working directory"))
        self.cb_dataloader.setItemText(0, _translate("MainWindow", "Load from h5"))
        self.cb_dataloader.setItemText(1, _translate("MainWindow", "Load from databroker"))
        self.label_26.setText(_translate("MainWindow", "detector"))
        self.btn_load_scan.setText(_translate("MainWindow", "Load"))
        self.label_36.setText(_translate("MainWindow", "Frame #"))
        self.btn_view_frame.setText(_translate("MainWindow", "View data frame"))
        self.groupBox_8.setTitle(_translate("MainWindow", "Experimental parameters"))
        self.label_43.setText(_translate("MainWindow", "X scan range (um)"))
        self.label_41.setText(_translate("MainWindow", "X step size (um)"))
        self.label_40.setText(_translate("MainWindow", "Y array size"))
        self.cb_scan_type.setItemText(0, _translate("MainWindow", "mesh"))
        self.cb_scan_type.setItemText(1, _translate("MainWindow", "spiral"))
        self.cb_scan_type.setItemText(2, _translate("MainWindow", "fly"))
        self.label_46.setText(_translate("MainWindow", "Numbers of points"))
        self.label_37.setText(_translate("MainWindow", "X-ray energy (keV)"))
        self.label_38.setText(_translate("MainWindow", "Detector distance (m)"))
        self.label_44.setText(_translate("MainWindow", "Y scan range (um)"))
        self.label_42.setText(_translate("MainWindow", "Y step size (um)"))
        self.label_45.setText(_translate("MainWindow", "Scan type: "))
        self.label_39.setText(_translate("MainWindow", "X array size"))
        self.label_3.setText(_translate("MainWindow", "Num. of iteration"))
        self.label_8.setText(_translate("MainWindow", "Algorithm"))
        self.cb_alg_flag.setItemText(0, _translate("MainWindow", "DM"))
        self.cb_alg_flag.setItemText(1, _translate("MainWindow", "ER"))
        self.cb_alg_flag.setItemText(2, _translate("MainWindow", "ML"))
        self.cb_alg_flag.setItemText(3, _translate("MainWindow", "DM_real"))
        self.cb_alg_flag.setItemText(4, _translate("MainWindow", "RAAR"))
        self.cb_alg_flag.setItemText(5, _translate("MainWindow", "mADMM"))
        self.cb_alg_flag.setItemText(6, _translate("MainWindow", "PM"))
        self.cb_alg_flag.setItemText(7, _translate("MainWindow", "APG"))
        self.cb_alg2_flag.setItemText(0, _translate("MainWindow", "DM"))
        self.cb_alg2_flag.setItemText(1, _translate("MainWindow", "ER"))
        self.cb_alg2_flag.setItemText(2, _translate("MainWindow", "ML"))
        self.cb_alg2_flag.setItemText(3, _translate("MainWindow", "DM_real"))
        self.cb_alg2_flag.setItemText(4, _translate("MainWindow", "RAAR"))
        self.cb_alg2_flag.setItemText(5, _translate("MainWindow", "mADMM"))
        self.cb_alg2_flag.setItemText(6, _translate("MainWindow", "PM"))
        self.cb_alg2_flag.setItemText(7, _translate("MainWindow", "APG"))
        self.label_54.setText(_translate("MainWindow", "Precision"))
        self.cb_precision_flag.setItemText(0, _translate("MainWindow", "double"))
        self.cb_precision_flag.setItemText(1, _translate("MainWindow", "single"))
        self.label_27.setText(_translate("MainWindow", "Save filename"))
        self.le_sign.setText(_translate("MainWindow", "t1"))
        self.btn_load_object.setText(_translate("MainWindow", "Load object"))
        self.btn_load_probe.setText(_translate("MainWindow", "Load probe"))
        self.label_9.setText(_translate("MainWindow", "Probe initialization:"))
        self.ck_init_prb_flag.setText(_translate("MainWindow", "Estimate from data"))
        self.label_11.setText(_translate("MainWindow", "Object initialization:"))
        self.ck_init_obj_flag.setText(_translate("MainWindow", "Random start"))
        self.ck_mode_flag.setText(_translate("MainWindow", "Modes"))
        self.label_22.setText(_translate("MainWindow", "Num. of probe mode"))
        self.label_23.setText(_translate("MainWindow", "Num. of object mode"))
        self.ck_multislice_flag.setText(_translate("MainWindow", "Multi-slice"))
        self.label_47.setText(_translate("MainWindow", "Num. of slices"))
        self.label_48.setText(_translate("MainWindow", "Slice spacing (um)"))
        self.ck_ms_pie_flag.setText(_translate("MainWindow", "Use PIE"))
        self.ck_weak_obj_flag.setText(_translate("MainWindow", "weak object"))
        self.ck_mask_obj_flag.setText(_translate("MainWindow", "mask obj"))
        self.label_15.setText(_translate("MainWindow", "Amplitude:"))
        self.label_32.setText(_translate("MainWindow", "min"))
        self.label_35.setText(_translate("MainWindow", "max"))
        self.label_16.setText(_translate("MainWindow", "Phase:"))
        self.label_34.setText(_translate("MainWindow", "min"))
        self.label_33.setText(_translate("MainWindow", "max"))
        self.ck_gpu_flag.setText(_translate("MainWindow", "GPU:"))
        self.le_gpus.setToolTip(_translate("MainWindow", "Set the GPUs to be used. Example: 0, 2-3, 5"))
        self.le_gpus.setText(_translate("MainWindow", "0,1"))
        self.label_51.setText(_translate("MainWindow", "or"))
        self.btn_MPI_file.setText(_translate("MainWindow", "MPI machine file"))
        self.btn_recon_start.setText(_translate("MainWindow", "start"))
        self.btn_recon_stop.setText(_translate("MainWindow", "stop"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "Reconstruction parameters"))
        self.label_10.setText(_translate("MainWindow", "ML mode"))
        self.label_6.setText(_translate("MainWindow", "nth"))
        self.ck_angle_correction_flag.setText(_translate("MainWindow", "angular correction"))
        self.label_61.setText(_translate("MainWindow", "ML weight"))
        self.label_29.setText(_translate("MainWindow", "Update object"))
        self.label_5.setText(_translate("MainWindow", "start ave"))
        self.label_28.setText(_translate("MainWindow", "Update probe"))
        self.label_49.setText(_translate("MainWindow", "x direction"))
        self.label_4.setText(_translate("MainWindow", "probe propagation distance (um)"))
        self.cb_ml_mode.setItemText(0, _translate("MainWindow", "Poisson"))
        self.cb_ml_mode.setItemText(1, _translate("MainWindow", "Gaussian"))
        self.label_2.setText(_translate("MainWindow", "angle"))
        self.ck_cal_scal_pattern_flag.setText(_translate("MainWindow", "calculate scan pattern"))
        self.label_50.setText(_translate("MainWindow", "y direction"))
        self.label_31.setText(_translate("MainWindow", "Processes"))
        self.label_7.setText(_translate("MainWindow", "Detector pixel size (um)"))
        self.label_30.setText(_translate("MainWindow", "DM ver."))
        self.label_13.setText(_translate("MainWindow", "Gamma"))
        self.label_25.setText(_translate("MainWindow", "Step"))
        self.ck_position_correction_flag.setText(_translate("MainWindow", "Position correction:"))
        self.cb_pc_alg.setItemText(0, _translate("MainWindow", "lucy"))
        self.cb_pc_alg.setItemText(1, _translate("MainWindow", "wiener"))
        self.label_12.setText(_translate("MainWindow", "Theta"))
        self.ck_bragg_flag.setText(_translate("MainWindow", "Bragg: "))
        self.label_14.setText(_translate("MainWindow", "Delta"))
        self.label_19.setText(_translate("MainWindow", "Num. kernels"))
        self.ck_pc_flag.setText(_translate("MainWindow", "Partial coherence:"))
        self.label_17.setText(_translate("MainWindow", "Sigma"))
        self.label_24.setText(_translate("MainWindow", "Start"))
        self.label_18.setText(_translate("MainWindow", "Algorithm"))
        self.label_20.setText(_translate("MainWindow", "sigma2"))
        self.label_21.setText(_translate("MainWindow", "beta"))
        self.label_55.setText(_translate("MainWindow", "Display interval"))
        self.ck_preview_flag.setText(_translate("MainWindow", "Live preview"))
        self.ck_cal_error_flag.setText(_translate("MainWindow", "Estimate errors"))
        self.ck_prb_center_flag.setText(_translate("MainWindow", "fix probe center"))
        self.ck_norm_prb_amp_flag.setText(_translate("MainWindow", "normalize probe amplitude"))
        self.label_56.setText(_translate("MainWindow", "GPU batch size"))
        self.cb_gpu_batch_size.setToolTip(_translate("MainWindow", "Rule of thumb: the larger, the better. But one may get an Out-of-Memory error if this is too large."))
        self.cb_gpu_batch_size.setCurrentText(_translate("MainWindow", "256"))
        self.cb_gpu_batch_size.setItemText(0, _translate("MainWindow", "4"))
        self.cb_gpu_batch_size.setItemText(1, _translate("MainWindow", "16"))
        self.cb_gpu_batch_size.setItemText(2, _translate("MainWindow", "64"))
        self.cb_gpu_batch_size.setItemText(3, _translate("MainWindow", "256"))
        self.cb_gpu_batch_size.setItemText(4, _translate("MainWindow", "1024"))
        self.cb_gpu_batch_size.setItemText(5, _translate("MainWindow", "4096"))
        self.ck_sf_flag.setText(_translate("MainWindow", "sf"))
        self.ck_mesh_flag.setText(_translate("MainWindow", "mesh"))
        self.ck_mask_prb_flag.setText(_translate("MainWindow", "mask probe"))
        self.ck_init_obj_dpc_flag.setText(_translate("MainWindow", "init. object (dpc)"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "Advanced options 1"))
        self.ck_refine_data_flag.setText(_translate("MainWindow", "Refine data:"))
        self.label_57.setText(_translate("MainWindow", "start"))
        self.label_58.setText(_translate("MainWindow", "interval"))
        self.label_59.setText(_translate("MainWindow", "step"))
        self.ck_profiler_flag.setText(_translate("MainWindow", "Line Profiler"))
        self.ck_postprocessing_flag.setText(_translate("MainWindow", "Perform post-processing"))
        self.ck_scan_pt_flag.setText(_translate("MainWindow", "Show scan-point distribution"))
        self.label_60.setText(_translate("MainWindow", "Inter-process communication:"))
        self.rb_mpi.setText(_translate("MainWindow", "MPI"))
        self.rb_cuda_mpi.setText(_translate("MainWindow", "CUDA-aware MPI (GPU only)"))
        self.rb_nccl.setText(_translate("MainWindow", "NCCL (GPU only)"))
        self.rb_none.setText(_translate("MainWindow", "None"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_4), _translate("MainWindow", "Advanced options 2"))
        self.label_52.setText(_translate("MainWindow", "Scan numbers & ranges"))
        self.le_batch_items.setToolTip(_translate("MainWindow", "Set scan numbers and ranges. Example: 2, 3-5, 7-15, 23, 30-55"))
        self.label_53.setText(_translate("MainWindow", "Process every n-th scan"))
        self.ck_init_obj_batch_flag.setText(_translate("MainWindow", "Load existing object for each scan:"))
        self.le_obj_path_batch.setToolTip(_translate("MainWindow", "Set object filename template. Ex: \"recon_*_t1_object_ave.npy\", where \"*\" will be replaced by the scan number."))
        self.ck_init_prb_batch_flag.setText(_translate("MainWindow", "Load existing probe for each scan:"))
        self.le_prb_path_batch.setToolTip(_translate("MainWindow", "Set probe filename template. Ex: \"recon_*_t1_probe_ave.npy\", where \"*\" will be replaced by the scan number."))
        self.btn_recon_batch_start.setText(_translate("MainWindow", "start"))
        self.btn_recon_batch_stop.setText(_translate("MainWindow", "stop"))
        self.ck_batch_run_flag.setText(_translate("MainWindow", "Run reconstruction"))
        self.ck_batch_crop_flag.setToolTip(_translate("MainWindow", "This is effective only when \"Load from databroker\" is set."))
        self.ck_batch_crop_flag.setText(_translate("MainWindow", "Crop data:"))
        self.label_62.setText(_translate("MainWindow", "x0"))
        self.label_63.setText(_translate("MainWindow", "y0"))
        self.label_64.setText(_translate("MainWindow", "w"))
        self.label_65.setText(_translate("MainWindow", "h"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("MainWindow", "Batch mode"))
        self.menuFile.setTitle(_translate("MainWindow", "File"))
        self.menuWindows.setTitle(_translate("MainWindow", "Windows"))
        self.menuOptions.setTitle(_translate("MainWindow", "Options"))
        self.menu_import_config.setText(_translate("MainWindow", "Import config from txt"))
        self.menu_export_config.setText(_translate("MainWindow", "Export config to txt"))
        self.menu_save_config_history.setText(_translate("MainWindow", "Save config history"))
        self.menu_save_config_history.setToolTip(_translate("MainWindow", "The config history is saved to \".ptycho_gui_config\" in the user\'s home directory when the \"start\" button is clicked"))
        self.menu_clear_config_history.setText(_translate("MainWindow", "Clear config history"))
        self.actionROI.setText(_translate("MainWindow", "ROI"))
        self.actionMonitor.setText(_translate("MainWindow", "Monitor"))
        self.actionScan_points.setText(_translate("MainWindow", "Scan points"))
        self.actionClear_shared_memory.setText(_translate("MainWindow", "Clear shared memory"))

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'nsls2ptycho/ui/ui_ptycho.ui'
#
# Created by: PyQt5 UI code generator 5.12.3
#
# WARNING! All changes made in this file will be lost!


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(760, 880)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.centralwidget)
        self.verticalLayout_5.setObjectName("verticalLayout_5")
        self.groupBox_7 = QtWidgets.QGroupBox(self.centralwidget)
        self.groupBox_7.setObjectName("groupBox_7")
        self.gridLayout_4 = QtWidgets.QGridLayout(self.groupBox_7)
        self.gridLayout_4.setObjectName("gridLayout_4")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout()
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.label = QtWidgets.QLabel(self.groupBox_7)
        self.label.setMaximumSize(QtCore.QSize(100, 16777215))
        self.label.setObjectName("label")
        self.horizontalLayout.addWidget(self.label)
        self.le_scan_num = QtWidgets.QLineEdit(self.groupBox_7)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.le_scan_num.sizePolicy().hasHeightForWidth())
        self.le_scan_num.setSizePolicy(sizePolicy)
        self.le_scan_num.setMaximumSize(QtCore.QSize(80, 16777215))
        self.le_scan_num.setObjectName("le_scan_num")
        self.horizontalLayout.addWidget(self.le_scan_num)
        self.ck_extra_scans_flag = QtWidgets.QCheckBox(self.groupBox_7)
        self.ck_extra_scans_flag.setObjectName("ck_extra_scans_flag")
        self.horizontalLayout.addWidget(self.ck_extra_scans_flag)
        self.btn_set_extra_scans = QtWidgets.QPushButton(self.groupBox_7)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.btn_set_extra_scans.sizePolicy().hasHeightForWidth())
        self.btn_set_extra_scans.setSizePolicy(sizePolicy)
        self.btn_set_extra_scans.setMaximumSize(QtCore.QSize(40, 16777215))
        self.btn_set_extra_scans.setObjectName("btn_set_extra_scans")
        self.horizontalLayout.addWidget(self.btn_set_extra_scans)
        self.btn_choose_cwd = QtWidgets.QPushButton(self.groupBox_7)
        self.btn_choose_cwd.setObjectName("btn_choose_cwd")
        self.horizontalLayout.addWidget(self.btn_choose_cwd)
        self.le_working_directory = QtWidgets.QLineEdit(self.groupBox_7)
        self.le_working_directory.setReadOnly(True)
        self.le_working_directory.setObjectName("le_working_directory")
        self.horizontalLayout.addWidget(self.le_working_directory)
        self.verticalLayout_2.addLayout(self.horizontalLayout)
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.cb_dataloader = QtWidgets.QComboBox(self.groupBox_7)
        self.cb_dataloader.setMaximumSize(QtCore.QSize(16777215, 16777215))
        self.cb_dataloader.setObjectName("cb_dataloader")
        self.cb_dataloader.addItem("")
        self.cb_dataloader.addItem("")
        self.horizontalLayout_2.addWidget(self.cb_dataloader)
        self.label_26 = QtWidgets.QLabel(self.groupBox_7)
        self.label_26.setAlignment(QtCore.Qt.AlignCenter)
        self.label_26.setObjectName("label_26")
        self.horizontalLayout_2.addWidget(self.label_26)
        self.cb_detectorkind = QtWidgets.QComboBox(self.groupBox_7)
        self.cb_detectorkind.setObjectName("cb_detectorkind")
        self.cb_detectorkind.addItem("")
        self.cb_detectorkind.setItemText(0, "")
        self.horizontalLayout_2.addWidget(self.cb_detectorkind)
        self.btn_load_scan = QtWidgets.QPushButton(self.groupBox_7)
        self.btn_load_scan.setObjectName("btn_load_scan")
        self.horizontalLayout_2.addWidget(self.btn_load_scan)
        self.label_36 = QtWidgets.QLabel(self.groupBox_7)
        self.label_36.setMaximumSize(QtCore.QSize(70, 16777215))
        self.label_36.setAlignment(QtCore.Qt.AlignCenter)
        self.label_36.setObjectName("label_36")
        self.horizontalLayout_2.addWidget(self.label_36)
        self.sp_fram_num = QtWidgets.QSpinBox(self.groupBox_7)
        self.sp_fram_num.setMaximumSize(QtCore.QSize(70, 16777215))
        self.sp_fram_num.setMaximum(1000000)
        self.sp_fram_num.setObjectName("sp_fram_num")
        self.horizontalLayout_2.addWidget(self.sp_fram_num)
        self.btn_view_frame = QtWidgets.QPushButton(self.groupBox_7)
        self.btn_view_frame.setMinimumSize(QtCore.QSize(121, 0))
        self.btn_view_frame.setMaximumSize(QtCore.QSize(150, 16777215))
        self.btn_view_frame.setObjectName("btn_view_frame")
        self.horizontalLayout_2.addWidget(self.btn_view_frame)
        self.verticalLayout_2.addLayout(self.horizontalLayout_2)
        self.gridLayout_4.addLayout(self.verticalLayout_2, 0, 1, 1, 1)
        self.verticalLayout_5.addWidget(self.groupBox_7)
        self.groupBox_8 = QtWidgets.QGroupBox(self.centralwidget)
        self.groupBox_8.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
        self.groupBox_8.setObjectName("groupBox_8")
        self.horizontalLayout_10 = QtWidgets.QHBoxLayout(self.groupBox_8)
        self.horizontalLayout_10.setObjectName("horizontalLayout_10")
        self.gridLayout_9 = QtWidgets.QGridLayout()
        self.gridLayout_9.setObjectName("gridLayout_9")
        self.label_43 = QtWidgets.QLabel(self.groupBox_8)
        self.label_43.setObjectName("label_43")
        self.gridLayout_9.addWidget(self.label_43, 3, 0, 1, 1)
        self.label_41 = QtWidgets.QLabel(self.groupBox_8)
        self.label_41.setObjectName("label_41")
        self.gridLayout_9.addWidget(self.label_41, 2, 0, 1, 1)
        self.sp_x_arr_size = QtWidgets.QSpinBox(self.groupBox_8)
        self.sp_x_arr_size.setMaximum(1000000)
        self.sp_x_arr_size.setObjectName("sp_x_arr_size")
        self.gridLayout_9.addWidget(self.sp_x_arr_size, 1, 1, 1, 1)
        self.label_40 = QtWidgets.QLabel(self.groupBox_8)
        self.label_40.setObjectName("label_40")
        self.gridLayout_9.addWidget(self.label_40, 1, 3, 1, 1)
        self.cb_scan_type = QtWidgets.QComboBox(self.groupBox_8)
        self.cb_scan_type.setObjectName("cb_scan_type")
        self.cb_scan_type.addItem("")
        self.cb_scan_type.addItem("")
        self.cb_scan_type.addItem("")
        self.gridLayout_9.addWidget(self.cb_scan_type, 4, 1, 1, 1)
        self.label_46 = QtWidgets.QLabel(self.groupBox_8)
        self.label_46.setObjectName("label_46")
        self.gridLayout_9.addWidget(self.label_46, 4, 3, 1, 1)
        self.sp_y_scan_range = QtWidgets.QDoubleSpinBox(self.groupBox_8)
        self.sp_y_scan_range.setDecimals(4)
        self.sp_y_scan_range.setMaximum(1000000.0)
        self.sp_y_scan_range.setObjectName("sp_y_scan_range")
        self.gridLayout_9.addWidget(self.sp_y_scan_range, 3, 4, 1, 1)
        self.label_37 = QtWidgets.QLabel(self.groupBox_8)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label_37.sizePolicy().hasHeightForWidth())
        self.label_37.setSizePolicy(sizePolicy)
        self.label_37.setMinimumSize(QtCore.QSize(160, 0))
        self.label_37.setMaximumSize(QtCore.QSize(160, 16777215))
        self.label_37.setObjectName("label_37")
        self.gridLayout_9.addWidget(self.label_37, 0, 0, 1, 1)
        self.label_38 = QtWidgets.QLabel(self.groupBox_8)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label_38.sizePolicy().hasHeightForWidth())
        self.label_38.setSizePolicy(sizePolicy)
        self.label_38.setMinimumSize(QtCore.QSize(160, 0))
        self.label_38.setMaximumSize(QtCore.QSize(160, 16777215))
        self.label_38.setObjectName("label_38")
        self.gridLayout_9.addWidget(self.label_38, 0, 3, 1, 1)
        self.sp_xray_energy = QtWidgets.QDoubleSpinBox(self.groupBox_8)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.sp_xray_energy.sizePolicy().hasHeightForWidth())
        self.sp_xray_energy.setSizePolicy(sizePolicy)
        self.sp_xray_energy.setMinimumSize(QtCore.QSize(140, 0))
        self.sp_xray_energy.setMaximumSize(QtCore.QSize(140, 16777215))
        self.sp_xray_energy.setDecimals(10)
        self.sp_xray_energy.setObjectName("sp_xray_energy")
        self.gridLayout_9.addWidget(self.sp_xray_energy, 0, 1, 1, 1)
        self.sp_detector_distance = QtWidgets.QDoubleSpinBox(self.groupBox_8)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.sp_detector_distance.sizePolicy().hasHeightForWidth())
        self.sp_detector_distance.setSizePolicy(sizePolicy)
        self.sp_detector_distance.setMinimumSize(QtCore.QSize(140, 0))
        self.sp_detector_distance.setMaximumSize(QtCore.QSize(140, 16777215))
        self.sp_detector_distance.setDecimals(4)
        self.sp_detector_distance.setObjectName("sp_detector_distance")
        self.gridLayout_9.addWidget(self.sp_detector_distance, 0, 4, 1, 1)
        self.label_44 = QtWidgets.QLabel(self.groupBox_8)
        self.label_44.setObjectName("label_44")
        self.gridLayout_9.addWidget(self.label_44, 3, 3, 1, 1)
        self.sp_y_step_size = QtWidgets.QDoubleSpinBox(self.groupBox_8)
        self.sp_y_step_size.setDecimals(4)
        self.sp_y_step_size.setMaximum(1000000.0)
        self.sp_y_step_size.setObjectName("sp_y_step_size")
        self.gridLayout_9.addWidget(self.sp_y_step_size, 2, 4, 1, 1)
        self.label_42 = QtWidgets.QLabel(self.groupBox_8)
        self.label_42.setObjectName("label_42")
        self.gridLayout_9.addWidget(self.label_42, 2, 3, 1, 1)
        self.sp_y_arr_size = QtWidgets.QSpinBox(self.groupBox_8)
        self.sp_y_arr_size.setMaximum(1000000)
        self.sp_y_arr_size.setObjectName("sp_y_arr_size")
        self.gridLayout_9.addWidget(self.sp_y_arr_size, 1, 4, 1, 1)
        self.sp_num_points = QtWidgets.QSpinBox(self.groupBox_8)
        self.sp_num_points.setMaximum(10000000)
        self.sp_num_points.setObjectName("sp_num_points")
        self.gridLayout_9.addWidget(self.sp_num_points, 4, 4, 1, 1)
        self.label_45 = QtWidgets.QLabel(self.groupBox_8)
        self.label_45.setObjectName("label_45")
        self.gridLayout_9.addWidget(self.label_45, 4, 0, 1, 1)
        self.label_39 = QtWidgets.QLabel(self.groupBox_8)
        self.label_39.setObjectName("label_39")
        self.gridLayout_9.addWidget(self.label_39, 1, 0, 1, 1)
        self.sp_x_step_size = QtWidgets.QDoubleSpinBox(self.groupBox_8)
        self.sp_x_step_size.setDecimals(4)
        self.sp_x_step_size.setMaximum(1000000.0)
        self.sp_x_step_size.setObjectName("sp_x_step_size")
        self.gridLayout_9.addWidget(self.sp_x_step_size, 2, 1, 1, 1)
        self.sp_x_scan_range = QtWidgets.QDoubleSpinBox(self.groupBox_8)
        self.sp_x_scan_range.setDecimals(4)
        self.sp_x_scan_range.setMaximum(1000000.0)
        self.sp_x_scan_range.setObjectName("sp_x_scan_range")
        self.gridLayout_9.addWidget(self.sp_x_scan_range, 3, 1, 1, 1)
        spacerItem = QtWidgets.QSpacerItem(60, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_9.addItem(spacerItem, 0, 2, 1, 1)
        self.horizontalLayout_10.addLayout(self.gridLayout_9)
        self.verticalLayout_5.addWidget(self.groupBox_8)
        self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
        self.tabWidget.setStyleSheet("")
        self.tabWidget.setObjectName("tabWidget")
        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.tab)
        self.verticalLayout.setObjectName("verticalLayout")
        self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_4.setObjectName("horizontalLayout_4")
        self.label_3 = QtWidgets.QLabel(self.tab)
        self.label_3.setObjectName("label_3")
        self.horizontalLayout_4.addWidget(self.label_3)
        self.sp_n_iterations = QtWidgets.QSpinBox(self.tab)
        self.sp_n_iterations.setMinimum(1)
        self.sp_n_iterations.setMaximum(999999)
        self.sp_n_iterations.setProperty("value", 50)
        self.sp_n_iterations.setObjectName("sp_n_iterations")
        self.horizontalLayout_4.addWidget(self.sp_n_iterations)
        self.label_8 = QtWidgets.QLabel(self.tab)
        self.label_8.setObjectName("label_8")
        self.horizontalLayout_4.addWidget(self.label_8)
        self.cb_alg_flag = QtWidgets.QComboBox(self.tab)
        self.cb_alg_flag.setObjectName("cb_alg_flag")
        self.cb_alg_flag.addItem("")
        self.cb_alg_flag.addItem("")
        self.cb_alg_flag.addItem("")
        self.cb_alg_flag.addItem("")
        self.cb_alg_flag.addItem("")
        self.cb_alg_flag.addItem("")
        self.cb_alg_flag.addItem("")
        self.cb_alg_flag.addItem("")
        self.horizontalLayout_4.addWidget(self.cb_alg_flag)
        self.cb_alg2_flag = QtWidgets.QComboBox(self.tab)
        self.cb_alg2_flag.setObjectName("cb_alg2_flag")
        self.cb_alg2_flag.addItem("")
        self.cb_alg2_flag.addItem("")
        self.cb_alg2_flag.addItem("")
        self.cb_alg2_flag.addItem("")
        self.cb_alg2_flag.addItem("")
        self.cb_alg2_flag.addItem("")
        self.cb_alg2_flag.addItem("")
        self.cb_alg2_flag.addItem("")
        self.horizontalLayout_4.addWidget(self.cb_alg2_flag)
        self.sp_alg_percentage = QtWidgets.QDoubleSpinBox(self.tab)
        self.sp_alg_percentage.setProperty("value", 0.8)
        self.sp_alg_percentage.setObjectName("sp_alg_percentage")
        self.horizontalLayout_4.addWidget(self.sp_alg_percentage)
        self.label_54 = QtWidgets.QLabel(self.tab)
        self.label_54.setObjectName("label_54")
        self.horizontalLayout_4.addWidget(self.label_54)
        self.cb_precision_flag = QtWidgets.QComboBox(self.tab)
        self.cb_precision_flag.setObjectName("cb_precision_flag")
        self.cb_precision_flag.addItem("")
        self.cb_precision_flag.addItem("")
        self.horizontalLayout_4.addWidget(self.cb_precision_flag)
        self.verticalLayout.addLayout(self.horizontalLayout_4)
        self.gridLayout = QtWidgets.QGridLayout()
        self.gridLayout.setObjectName("gridLayout")
        self.label_27 = QtWidgets.QLabel(self.tab)
        self.label_27.setObjectName("label_27")
        self.gridLayout.addWidget(self.label_27, 0, 0, 1, 1)
        self.le_sign = QtWidgets.QLineEdit(self.tab)
        self.le_sign.setObjectName("le_sign")
        self.gridLayout.addWidget(self.le_sign, 0, 1, 1, 1)
        self.verticalLayout.addLayout(self.gridLayout)
        self.gridLayout_10 = QtWidgets.QGridLayout()
        self.gridLayout_10.setObjectName("gridLayout_10")
        self.le_prb_path = QtWidgets.QLineEdit(self.tab)
        self.le_prb_path.setReadOnly(True)
        self.le_prb_path.setObjectName("le_prb_path")
        self.gridLayout_10.addWidget(self.le_prb_path, 0, 3, 1, 1)
        self.btn_load_object = QtWidgets.QPushButton(self.tab)
        self.btn_load_object.setObjectName("btn_load_object")
        self.gridLayout_10.addWidget(self.btn_load_object, 1, 2, 1, 1)
        self.btn_load_probe = QtWidgets.QPushButton(self.tab)
        self.btn_load_probe.setObjectName("btn_load_probe")
        self.gridLayout_10.addWidget(self.btn_load_probe, 0, 2, 1, 1)
        self.label_9 = QtWidgets.QLabel(self.tab)
        self.label_9.setObjectName("label_9")
        self.gridLayout_10.addWidget(self.label_9, 0, 0, 1, 1)
        self.le_obj_path = QtWidgets.QLineEdit(self.tab)
        self.le_obj_path.setReadOnly(True)
        self.le_obj_path.setObjectName("le_obj_path")
        self.gridLayout_10.addWidget(self.le_obj_path, 1, 3, 1, 1)
        self.ck_init_prb_flag = QtWidgets.QCheckBox(self.tab)
        self.ck_init_prb_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_init_prb_flag.setChecked(True)
        self.ck_init_prb_flag.setObjectName("ck_init_prb_flag")
        self.gridLayout_10.addWidget(self.ck_init_prb_flag, 0, 1, 1, 1)
        self.label_11 = QtWidgets.QLabel(self.tab)
        self.label_11.setObjectName("label_11")
        self.gridLayout_10.addWidget(self.label_11, 1, 0, 1, 1)
        self.ck_init_obj_flag = QtWidgets.QCheckBox(self.tab)
        self.ck_init_obj_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_init_obj_flag.setChecked(True)
        self.ck_init_obj_flag.setObjectName("ck_init_obj_flag")
        self.gridLayout_10.addWidget(self.ck_init_obj_flag, 1, 1, 1, 1)
        self.verticalLayout.addLayout(self.gridLayout_10)
        self.gridLayout_2 = QtWidgets.QGridLayout()
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.ck_mode_flag = QtWidgets.QCheckBox(self.tab)
        self.ck_mode_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_mode_flag.setObjectName("ck_mode_flag")
        self.gridLayout_2.addWidget(self.ck_mode_flag, 0, 0, 1, 1)
        spacerItem1 = QtWidgets.QSpacerItem(13, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_2.addItem(spacerItem1, 0, 1, 1, 1)
        self.label_22 = QtWidgets.QLabel(self.tab)
        self.label_22.setObjectName("label_22")
        self.gridLayout_2.addWidget(self.label_22, 0, 2, 1, 2)
        self.sp_prb_mode_num = QtWidgets.QSpinBox(self.tab)
        self.sp_prb_mode_num.setEnabled(False)
        self.sp_prb_mode_num.setProperty("value", 5)
        self.sp_prb_mode_num.setObjectName("sp_prb_mode_num")
        self.gridLayout_2.addWidget(self.sp_prb_mode_num, 0, 4, 1, 2)
        spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_2.addItem(spacerItem2, 0, 6, 1, 1)
        self.label_23 = QtWidgets.QLabel(self.tab)
        self.label_23.setObjectName("label_23")
        self.gridLayout_2.addWidget(self.label_23, 0, 7, 1, 3)
        self.sp_obj_mode_num = QtWidgets.QSpinBox(self.tab)
        self.sp_obj_mode_num.setEnabled(False)
        self.sp_obj_mode_num.setProperty("value", 1)
        self.sp_obj_mode_num.setObjectName("sp_obj_mode_num")
        self.gridLayout_2.addWidget(self.sp_obj_mode_num, 0, 10, 1, 2)
        self.ck_multislice_flag = QtWidgets.QCheckBox(self.tab)
        self.ck_multislice_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_multislice_flag.setObjectName("ck_multislice_flag")
        self.gridLayout_2.addWidget(self.ck_multislice_flag, 1, 0, 1, 1)
        spacerItem3 = QtWidgets.QSpacerItem(13, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_2.addItem(spacerItem3, 1, 1, 1, 1)
        self.label_47 = QtWidgets.QLabel(self.tab)
        self.label_47.setObjectName("label_47")
        self.gridLayout_2.addWidget(self.label_47, 1, 2, 1, 1)
        self.sp_slice_num = QtWidgets.QSpinBox(self.tab)
        self.sp_slice_num.setEnabled(False)
        self.sp_slice_num.setMaximum(10000)
        self.sp_slice_num.setProperty("value", 2)
        self.sp_slice_num.setObjectName("sp_slice_num")
        self.gridLayout_2.addWidget(self.sp_slice_num, 1, 3, 1, 2)
        self.label_48 = QtWidgets.QLabel(self.tab)
        self.label_48.setObjectName("label_48")
        self.gridLayout_2.addWidget(self.label_48, 1, 5, 1, 3)
        self.sp_slice_spacing_m = QtWidgets.QDoubleSpinBox(self.tab)
        self.sp_slice_spacing_m.setEnabled(False)
        self.sp_slice_spacing_m.setMaximum(10000.0)
        self.sp_slice_spacing_m.setProperty("value", 5.0)
        self.sp_slice_spacing_m.setObjectName("sp_slice_spacing_m")
        self.gridLayout_2.addWidget(self.sp_slice_spacing_m, 1, 8, 1, 1)
        self.ck_ms_pie_flag = QtWidgets.QCheckBox(self.tab)
        self.ck_ms_pie_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_ms_pie_flag.setObjectName("ck_ms_pie_flag")
        self.gridLayout_2.addWidget(self.ck_ms_pie_flag, 1, 9, 1, 2)
        self.ck_weak_obj_flag = QtWidgets.QCheckBox(self.tab)
        self.ck_weak_obj_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_weak_obj_flag.setObjectName("ck_weak_obj_flag")
        self.gridLayout_2.addWidget(self.ck_weak_obj_flag, 1, 11, 1, 1)
        self.verticalLayout.addLayout(self.gridLayout_2)
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.ck_mask_obj_flag = QtWidgets.QCheckBox(self.tab)
        self.ck_mask_obj_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_mask_obj_flag.setChecked(True)
        self.ck_mask_obj_flag.setObjectName("ck_mask_obj_flag")
        self.horizontalLayout_3.addWidget(self.ck_mask_obj_flag)
        spacerItem4 = QtWidgets.QSpacerItem(13, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem4)
        self.label_15 = QtWidgets.QLabel(self.tab)
        self.label_15.setObjectName("label_15")
        self.horizontalLayout_3.addWidget(self.label_15)
        self.label_32 = QtWidgets.QLabel(self.tab)
        self.label_32.setObjectName("label_32")
        self.horizontalLayout_3.addWidget(self.label_32)
        self.sp_amp_min = QtWidgets.QDoubleSpinBox(self.tab)
        self.sp_amp_min.setPrefix("")
        self.sp_amp_min.setDecimals(3)
        self.sp_amp_min.setMinimum(0.0)
        self.sp_amp_min.setProperty("value", 0.0)
        self.sp_amp_min.setObjectName("sp_amp_min")
        self.horizontalLayout_3.addWidget(self.sp_amp_min)
        self.label_35 = QtWidgets.QLabel(self.tab)
        self.label_35.setObjectName("label_35")
        self.horizontalLayout_3.addWidget(self.label_35)
        self.sp_amp_max = QtWidgets.QDoubleSpinBox(self.tab)
        self.sp_amp_max.setPrefix("")
        self.sp_amp_max.setDecimals(3)
        self.sp_amp_max.setProperty("value", 0.85)
        self.sp_amp_max.setObjectName("sp_amp_max")
        self.horizontalLayout_3.addWidget(self.sp_amp_max)
        spacerItem5 = QtWidgets.QSpacerItem(13, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem5)
        self.label_16 = QtWidgets.QLabel(self.tab)
        self.label_16.setObjectName("label_16")
        self.horizontalLayout_3.addWidget(self.label_16)
        self.label_34 = QtWidgets.QLabel(self.tab)
        self.label_34.setObjectName("label_34")
        self.horizontalLayout_3.addWidget(self.label_34)
        self.sp_pha_min = QtWidgets.QDoubleSpinBox(self.tab)
        self.sp_pha_min.setPrefix("")
        self.sp_pha_min.setDecimals(3)
        self.sp_pha_min.setMinimum(-4.0)
        self.sp_pha_min.setMaximum(4.0)
        self.sp_pha_min.setProperty("value", 0.01)
        self.sp_pha_min.setObjectName("sp_pha_min")
        self.horizontalLayout_3.addWidget(self.sp_pha_min)
        self.label_33 = QtWidgets.QLabel(self.tab)
        self.label_33.setObjectName("label_33")
        self.horizontalLayout_3.addWidget(self.label_33)
        self.sp_pha_max = QtWidgets.QDoubleSpinBox(self.tab)
        self.sp_pha_max.setPrefix("")
        self.sp_pha_max.setDecimals(3)
        self.sp_pha_max.setMinimum(-4.0)
        self.sp_pha_max.setMaximum(4.0)
        self.sp_pha_max.setProperty("value", 1.0)
        self.sp_pha_max.setObjectName("sp_pha_max")
        self.horizontalLayout_3.addWidget(self.sp_pha_max)
        self.verticalLayout.addLayout(self.horizontalLayout_3)
        self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_5.setObjectName("horizontalLayout_5")
        self.ck_gpu_flag = QtWidgets.QCheckBox(self.tab)
        self.ck_gpu_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_gpu_flag.setChecked(True)
        self.ck_gpu_flag.setObjectName("ck_gpu_flag")
        self.horizontalLayout_5.addWidget(self.ck_gpu_flag)
        self.le_gpus = QtWidgets.QLineEdit(self.tab)
        self.le_gpus.setObjectName("le_gpus")
        self.horizontalLayout_5.addWidget(self.le_gpus)
        self.label_51 = QtWidgets.QLabel(self.tab)
        self.label_51.setAlignment(QtCore.Qt.AlignCenter)
        self.label_51.setObjectName("label_51")
        self.horizontalLayout_5.addWidget(self.label_51)
        self.btn_MPI_file = QtWidgets.QPushButton(self.tab)
        self.btn_MPI_file.setObjectName("btn_MPI_file")
        self.horizontalLayout_5.addWidget(self.btn_MPI_file)
        self.le_MPI_file_path = QtWidgets.QLineEdit(self.tab)
        self.le_MPI_file_path.setObjectName("le_MPI_file_path")
        self.horizontalLayout_5.addWidget(self.le_MPI_file_path)
        spacerItem6 = QtWidgets.QSpacerItem(18, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_5.addItem(spacerItem6)
        self.btn_recon_start = QtWidgets.QPushButton(self.tab)
        self.btn_recon_start.setMaximumSize(QtCore.QSize(80, 16777215))
        self.btn_recon_start.setObjectName("btn_recon_start")
        self.horizontalLayout_5.addWidget(self.btn_recon_start)
        self.btn_recon_stop = QtWidgets.QPushButton(self.tab)
        self.btn_recon_stop.setMaximumSize(QtCore.QSize(80, 16777215))
        self.btn_recon_stop.setObjectName("btn_recon_stop")
        self.horizontalLayout_5.addWidget(self.btn_recon_stop)
        self.verticalLayout.addLayout(self.horizontalLayout_5)
        self.tabWidget.addTab(self.tab, "")
        self.tab_2 = QtWidgets.QWidget()
        self.tab_2.setObjectName("tab_2")
        self.verticalLayout_8 = QtWidgets.QVBoxLayout(self.tab_2)
        self.verticalLayout_8.setObjectName("verticalLayout_8")
        self.gridLayout_3 = QtWidgets.QGridLayout()
        self.gridLayout_3.setObjectName("gridLayout_3")
        self.label_10 = QtWidgets.QLabel(self.tab_2)
        self.label_10.setAlignment(QtCore.Qt.AlignCenter)
        self.label_10.setObjectName("label_10")
        self.gridLayout_3.addWidget(self.label_10, 0, 7, 1, 1)
        self.label_6 = QtWidgets.QLabel(self.tab_2)
        self.label_6.setAlignment(QtCore.Qt.AlignCenter)
        self.label_6.setObjectName("label_6")
        self.gridLayout_3.addWidget(self.label_6, 2, 9, 1, 1)
        self.ck_angle_correction_flag = QtWidgets.QCheckBox(self.tab_2)
        self.ck_angle_correction_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_angle_correction_flag.setObjectName("ck_angle_correction_flag")
        self.gridLayout_3.addWidget(self.ck_angle_correction_flag, 3, 0, 1, 2)
        self.label_61 = QtWidgets.QLabel(self.tab_2)
        self.label_61.setAlignment(QtCore.Qt.AlignCenter)
        self.label_61.setObjectName("label_61")
        self.gridLayout_3.addWidget(self.label_61, 1, 6, 1, 2)
        self.sp_processes = QtWidgets.QSpinBox(self.tab_2)
        self.sp_processes.setMaximum(1000000)
        self.sp_processes.setProperty("value", 4)
        self.sp_processes.setObjectName("sp_processes")
        self.gridLayout_3.addWidget(self.sp_processes, 3, 10, 1, 2)
        self.sp_start_update_probe = QtWidgets.QSpinBox(self.tab_2)
        self.sp_start_update_probe.setMaximum(1000000)
        self.sp_start_update_probe.setObjectName("sp_start_update_probe")
        self.gridLayout_3.addWidget(self.sp_start_update_probe, 0, 11, 1, 1)
        self.label_29 = QtWidgets.QLabel(self.tab_2)
        self.label_29.setObjectName("label_29")
        self.gridLayout_3.addWidget(self.label_29, 1, 9, 1, 2)
        self.sp_nth = QtWidgets.QSpinBox(self.tab_2)
        self.sp_nth.setProperty("value", 5)
        self.sp_nth.setObjectName("sp_nth")
        self.gridLayout_3.addWidget(self.sp_nth, 2, 10, 1, 2)
        self.sp_angle = QtWidgets.QDoubleSpinBox(self.tab_2)
        self.sp_angle.setMinimum(-181.0)
        self.sp_angle.setMaximum(181.0)
        self.sp_angle.setObjectName("sp_angle")
        self.gridLayout_3.addWidget(self.sp_angle, 3, 4, 1, 1)
        self.label_5 = QtWidgets.QLabel(self.tab_2)
        self.label_5.setAlignment(QtCore.Qt.AlignCenter)
        self.label_5.setObjectName("label_5")
        self.gridLayout_3.addWidget(self.label_5, 3, 6, 1, 2)
        self.label_28 = QtWidgets.QLabel(self.tab_2)
        self.label_28.setObjectName("label_28")
        self.gridLayout_3.addWidget(self.label_28, 0, 9, 1, 2)
        self.label_49 = QtWidgets.QLabel(self.tab_2)
        self.label_49.setAlignment(QtCore.Qt.AlignCenter)
        self.label_49.setObjectName("label_49")
        self.gridLayout_3.addWidget(self.label_49, 2, 0, 1, 1)
        self.sp_x_direction = QtWidgets.QDoubleSpinBox(self.tab_2)
        self.sp_x_direction.setDecimals(1)
        self.sp_x_direction.setMinimum(-1.0)
        self.sp_x_direction.setMaximum(1.0)
        self.sp_x_direction.setSingleStep(0.1)
        self.sp_x_direction.setProperty("value", -1.0)
        self.sp_x_direction.setObjectName("sp_x_direction")
        self.gridLayout_3.addWidget(self.sp_x_direction, 2, 1, 1, 1)
        self.sp_start_ave = QtWidgets.QDoubleSpinBox(self.tab_2)
        self.sp_start_ave.setDecimals(1)
        self.sp_start_ave.setMaximum(1.0)
        self.sp_start_ave.setSingleStep(0.1)
        self.sp_start_ave.setProperty("value", 0.8)
        self.sp_start_ave.setObjectName("sp_start_ave")
        self.gridLayout_3.addWidget(self.sp_start_ave, 3, 8, 1, 1)
        self.label_4 = QtWidgets.QLabel(self.tab_2)
        self.label_4.setObjectName("label_4")
        self.gridLayout_3.addWidget(self.label_4, 1, 0, 1, 3)
        self.sp_distance = QtWidgets.QDoubleSpinBox(self.tab_2)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.sp_distance.sizePolicy().hasHeightForWidth())
        self.sp_distance.setSizePolicy(sizePolicy)
        self.sp_distance.setDecimals(3)
        self.sp_distance.setMinimum(-999999.999)
        self.sp_distance.setMaximum(999999.999)
        self.sp_distance.setObjectName("sp_distance")
        self.gridLayout_3.addWidget(self.sp_distance, 1, 3, 1, 3)
        self.cb_ml_mode = QtWidgets.QComboBox(self.tab_2)
        self.cb_ml_mode.setObjectName("cb_ml_mode")
        self.cb_ml_mode.addItem("")
        self.cb_ml_mode.addItem("")
        self.gridLayout_3.addWidget(self.cb_ml_mode, 0, 8, 1, 1)
        self.label_2 = QtWidgets.QLabel(self.tab_2)
        self.label_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_2.setObjectName("label_2")
        self.gridLayout_3.addWidget(self.label_2, 3, 2, 1, 1)
        self.sp_y_direction = QtWidgets.QDoubleSpinBox(self.tab_2)
        self.sp_y_direction.setDecimals(1)
        self.sp_y_direction.setMinimum(-1.0)
        self.sp_y_direction.setMaximum(1.0)
        self.sp_y_direction.setSingleStep(0.1)
        self.sp_y_direction.setProperty("value", -1.0)
        self.sp_y_direction.setObjectName("sp_y_direction")
        self.gridLayout_3.addWidget(self.sp_y_direction, 2, 4, 1, 1)
        self.ck_cal_scal_pattern_flag = QtWidgets.QCheckBox(self.tab_2)
        self.ck_cal_scal_pattern_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_cal_scal_pattern_flag.setObjectName("ck_cal_scal_pattern_flag")
        self.gridLayout_3.addWidget(self.ck_cal_scal_pattern_flag, 2, 5, 1, 4)
        self.label_50 = QtWidgets.QLabel(self.tab_2)
        self.label_50.setAlignment(QtCore.Qt.AlignCenter)
        self.label_50.setObjectName("label_50")
        self.gridLayout_3.addWidget(self.label_50, 2, 2, 1, 2)
        self.sp_start_update_object = QtWidgets.QSpinBox(self.tab_2)
        self.sp_start_update_object.setMaximum(1000000)
        self.sp_start_update_object.setObjectName("sp_start_update_object")
        self.gridLayout_3.addWidget(self.sp_start_update_object, 1, 11, 1, 1)
        self.sp_ml_weight = QtWidgets.QDoubleSpinBox(self.tab_2)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.sp_ml_weight.sizePolicy().hasHeightForWidth())
        self.sp_ml_weight.setSizePolicy(sizePolicy)
        self.sp_ml_weight.setDecimals(3)
        self.sp_ml_weight.setMinimum(-999999.999)
        self.sp_ml_weight.setMaximum(999999.999)
        self.sp_ml_weight.setProperty("value", 0.1)
        self.sp_ml_weight.setObjectName("sp_ml_weight")
        self.gridLayout_3.addWidget(self.sp_ml_weight, 1, 8, 1, 1)
        self.label_31 = QtWidgets.QLabel(self.tab_2)
        self.label_31.setAlignment(QtCore.Qt.AlignCenter)
        self.label_31.setObjectName("label_31")
        self.gridLayout_3.addWidget(self.label_31, 3, 9, 1, 1)
        self.horizontalLayout_22 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_22.setObjectName("horizontalLayout_22")
        self.label_7 = QtWidgets.QLabel(self.tab_2)
        self.label_7.setObjectName("label_7")
        self.horizontalLayout_22.addWidget(self.label_7)
        self.sp_ccd_pixel_um = QtWidgets.QDoubleSpinBox(self.tab_2)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.sp_ccd_pixel_um.sizePolicy().hasHeightForWidth())
        self.sp_ccd_pixel_um.setSizePolicy(sizePolicy)
        self.sp_ccd_pixel_um.setDecimals(3)
        self.sp_ccd_pixel_um.setMaximum(1000.0)
        self.sp_ccd_pixel_um.setProperty("value", 55.0)
        self.sp_ccd_pixel_um.setObjectName("sp_ccd_pixel_um")
        self.horizontalLayout_22.addWidget(self.sp_ccd_pixel_um)
        self.label_30 = QtWidgets.QLabel(self.tab_2)
        self.label_30.setAlignment(QtCore.Qt.AlignCenter)
        self.label_30.setObjectName("label_30")
        self.horizontalLayout_22.addWidget(self.label_30)
        self.sp_dm_version = QtWidgets.QSpinBox(self.tab_2)
        self.sp_dm_version.setProperty("value", 2)
        self.sp_dm_version.setObjectName("sp_dm_version")
        self.horizontalLayout_22.addWidget(self.sp_dm_version)
        self.gridLayout_3.addLayout(self.horizontalLayout_22, 0, 0, 1, 7)
        self.verticalLayout_8.addLayout(self.gridLayout_3)
        self.gridLayout_5 = QtWidgets.QGridLayout()
        self.gridLayout_5.setObjectName("gridLayout_5")
        self.label_13 = QtWidgets.QLabel(self.tab_2)
        self.label_13.setObjectName("label_13")
        self.gridLayout_5.addWidget(self.label_13, 0, 4, 1, 1)
        self.label_25 = QtWidgets.QLabel(self.tab_2)
        self.label_25.setObjectName("label_25")
        self.gridLayout_5.addWidget(self.label_25, 2, 4, 1, 1)
        self.ck_position_correction_flag = QtWidgets.QCheckBox(self.tab_2)
        self.ck_position_correction_flag.setObjectName("ck_position_correction_flag")
        self.gridLayout_5.addWidget(self.ck_position_correction_flag, 2, 0, 1, 1)
        self.sp_bragg_theta = QtWidgets.QDoubleSpinBox(self.tab_2)
        self.sp_bragg_theta.setEnabled(False)
        self.sp_bragg_theta.setDecimals(3)
        self.sp_bragg_theta.setProperty("value", 0.0)
        self.sp_bragg_theta.setMinimum(-180.0)
        self.sp_bragg_theta.setMaximum(180.0)
        self.sp_bragg_theta.setObjectName("sp_bragg_theta")
        self.gridLayout_5.addWidget(self.sp_bragg_theta, 0, 2, 1, 1)
        self.sp_bragg_delta = QtWidgets.QDoubleSpinBox(self.tab_2)
        self.sp_bragg_delta.setEnabled(False)
        self.sp_bragg_delta.setDecimals(3)
        self.sp_bragg_delta.setProperty("value", 0.0)
        self.sp_bragg_delta.setMinimum(-180.0)
        self.sp_bragg_delta.setMaximum(180.0)
        self.sp_bragg_delta.setObjectName("sp_bragg_delta")
        self.gridLayout_5.addWidget(self.sp_bragg_delta, 0, 8, 1, 1)
        self.cb_pc_alg = QtWidgets.QComboBox(self.tab_2)
        self.cb_pc_alg.setEnabled(False)
        self.cb_pc_alg.setObjectName("cb_pc_alg")
        self.cb_pc_alg.addItem("")
        self.cb_pc_alg.addItem("")
        self.gridLayout_5.addWidget(self.cb_pc_alg, 1, 5, 1, 1)
        self.sp_bragg_gamma = QtWidgets.QDoubleSpinBox(self.tab_2)
        self.sp_bragg_gamma.setEnabled(False)
        self.sp_bragg_gamma.setDecimals(3)
        self.sp_bragg_gamma.setProperty("value", 0.0)
        self.sp_bragg_gamma.setMinimum(-180.0)
        self.sp_bragg_gamma.setMaximum(180.0)
        self.sp_bragg_gamma.setObjectName("sp_bragg_gamma")
        self.gridLayout_5.addWidget(self.sp_bragg_gamma, 0, 5, 1, 1)
        self.sp_pc_sigma = QtWidgets.QDoubleSpinBox(self.tab_2)
        self.sp_pc_sigma.setEnabled(False)
        self.sp_pc_sigma.setDecimals(3)
        self.sp_pc_sigma.setProperty("value", 2.0)
        self.sp_pc_sigma.setObjectName("sp_pc_sigma")
        self.gridLayout_5.addWidget(self.sp_pc_sigma, 1, 2, 1, 1)
        self.sp_position_correction_step = QtWidgets.QSpinBox(self.tab_2)
        self.sp_position_correction_step.setEnabled(False)
        self.sp_position_correction_step.setProperty("value", 10)
        self.sp_position_correction_step.setObjectName("sp_position_correction_step")
        self.gridLayout_5.addWidget(self.sp_position_correction_step, 2, 5, 1, 1)
        self.label_12 = QtWidgets.QLabel(self.tab_2)
        self.label_12.setObjectName("label_12")
        self.gridLayout_5.addWidget(self.label_12, 0, 1, 1, 1)
        self.ck_bragg_flag = QtWidgets.QCheckBox(self.tab_2)
        self.ck_bragg_flag.setObjectName("ck_bragg_flag")
        self.gridLayout_5.addWidget(self.ck_bragg_flag, 0, 0, 1, 1)
        self.label_14 = QtWidgets.QLabel(self.tab_2)
        self.label_14.setObjectName("label_14")
        self.gridLayout_5.addWidget(self.label_14, 0, 7, 1, 1)
        self.label_19 = QtWidgets.QLabel(self.tab_2)
        self.label_19.setObjectName("label_19")
        self.gridLayout_5.addWidget(self.label_19, 1, 7, 1, 1)
        self.ck_pc_flag = QtWidgets.QCheckBox(self.tab_2)
        self.ck_pc_flag.setObjectName("ck_pc_flag")
        self.gridLayout_5.addWidget(self.ck_pc_flag, 1, 0, 1, 1)
        self.sp_position_correction_start = QtWidgets.QSpinBox(self.tab_2)
        self.sp_position_correction_start.setEnabled(False)
        self.sp_position_correction_start.setProperty("value", 50)
        self.sp_position_correction_start.setObjectName("sp_position_correction_start")
        self.gridLayout_5.addWidget(self.sp_position_correction_start, 2, 2, 1, 1)
        self.label_17 = QtWidgets.QLabel(self.tab_2)
        self.label_17.setObjectName("label_17")
        self.gridLayout_5.addWidget(self.label_17, 1, 1, 1, 1)
        spacerItem7 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_5.addItem(spacerItem7, 0, 3, 1, 1)
        self.label_24 = QtWidgets.QLabel(self.tab_2)
        self.label_24.setObjectName("label_24")
        self.gridLayout_5.addWidget(self.label_24, 2, 1, 1, 1)
        self.sp_pc_kernel_n = QtWidgets.QSpinBox(self.tab_2)
        self.sp_pc_kernel_n.setEnabled(False)
        self.sp_pc_kernel_n.setProperty("value", 32)
        self.sp_pc_kernel_n.setObjectName("sp_pc_kernel_n")
        self.gridLayout_5.addWidget(self.sp_pc_kernel_n, 1, 8, 1, 1)
        self.label_18 = QtWidgets.QLabel(self.tab_2)
        self.label_18.setObjectName("label_18")
        self.gridLayout_5.addWidget(self.label_18, 1, 4, 1, 1)
        spacerItem8 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_5.addItem(spacerItem8, 0, 6, 1, 1)
        self.verticalLayout_8.addLayout(self.gridLayout_5)
        self.horizontalLayout_18 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_18.setObjectName("horizontalLayout_18")
        self.verticalLayout_3 = QtWidgets.QVBoxLayout()
        self.verticalLayout_3.setObjectName("verticalLayout_3")
        self.horizontalLayout_6 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_6.setObjectName("horizontalLayout_6")
        self.label_20 = QtWidgets.QLabel(self.tab_2)
        self.label_20.setObjectName("label_20")
        self.horizontalLayout_6.addWidget(self.label_20)
        self.sp_sigma2 = QtWidgets.QDoubleSpinBox(self.tab_2)
        self.sp_sigma2.setDecimals(5)
        self.sp_sigma2.setMaximum(1.0)
        self.sp_sigma2.setProperty("value", 5e-05)
        self.sp_sigma2.setObjectName("sp_sigma2")
        self.horizontalLayout_6.addWidget(self.sp_sigma2)
        self.verticalLayout_3.addLayout(self.horizontalLayout_6)
        self.horizontalLayout_14 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_14.setObjectName("horizontalLayout_14")
        self.label_21 = QtWidgets.QLabel(self.tab_2)
        self.label_21.setObjectName("label_21")
        self.horizontalLayout_14.addWidget(self.label_21)
        self.sp_beta = QtWidgets.QDoubleSpinBox(self.tab_2)
        self.sp_beta.setDecimals(2)
        self.sp_beta.setMaximum(2.0)
        self.sp_beta.setSingleStep(0.1)
        self.sp_beta.setProperty("value", 0.9)
        self.sp_beta.setObjectName("sp_beta")
        self.horizontalLayout_14.addWidget(self.sp_beta)
        self.verticalLayout_3.addLayout(self.horizontalLayout_14)
        self.horizontalLayout_18.addLayout(self.verticalLayout_3)
        self.verticalLayout_6 = QtWidgets.QVBoxLayout()
        self.verticalLayout_6.setObjectName("verticalLayout_6")
        self.horizontalLayout_7 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_7.setObjectName("horizontalLayout_7")
        self.label_55 = QtWidgets.QLabel(self.tab_2)
        self.label_55.setObjectName("label_55")
        self.horizontalLayout_7.addWidget(self.label_55)
        self.sp_display_interval = QtWidgets.QSpinBox(self.tab_2)
        self.sp_display_interval.setMinimum(1)
        self.sp_display_interval.setObjectName("sp_display_interval")
        self.horizontalLayout_7.addWidget(self.sp_display_interval)
        self.verticalLayout_6.addLayout(self.horizontalLayout_7)
        self.ck_preview_flag = QtWidgets.QCheckBox(self.tab_2)
        self.ck_preview_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_preview_flag.setChecked(True)
        self.ck_preview_flag.setObjectName("ck_preview_flag")
        self.verticalLayout_6.addWidget(self.ck_preview_flag)
        self.ck_cal_error_flag = QtWidgets.QCheckBox(self.tab_2)
        self.ck_cal_error_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_cal_error_flag.setChecked(True)
        self.ck_cal_error_flag.setObjectName("ck_cal_error_flag")
        self.verticalLayout_6.addWidget(self.ck_cal_error_flag)
        self.horizontalLayout_18.addLayout(self.verticalLayout_6)
        self.verticalLayout_4 = QtWidgets.QVBoxLayout()
        self.verticalLayout_4.setObjectName("verticalLayout_4")
        self.ck_prb_center_flag = QtWidgets.QCheckBox(self.tab_2)
        self.ck_prb_center_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_prb_center_flag.setChecked(False)
        self.ck_prb_center_flag.setObjectName("ck_prb_center_flag")
        self.verticalLayout_4.addWidget(self.ck_prb_center_flag)
        self.ck_norm_prb_amp_flag = QtWidgets.QCheckBox(self.tab_2)
        self.ck_norm_prb_amp_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_norm_prb_amp_flag.setChecked(False)
        self.ck_norm_prb_amp_flag.setObjectName("ck_norm_prb_amp_flag")
        self.verticalLayout_4.addWidget(self.ck_norm_prb_amp_flag)
        self.horizontalLayout_17 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_17.setObjectName("horizontalLayout_17")
        self.label_56 = QtWidgets.QLabel(self.tab_2)
        self.label_56.setObjectName("label_56")
        self.horizontalLayout_17.addWidget(self.label_56)
        self.cb_gpu_batch_size = QtWidgets.QComboBox(self.tab_2)
        self.cb_gpu_batch_size.setObjectName("cb_gpu_batch_size")
        self.cb_gpu_batch_size.addItem("")
        self.cb_gpu_batch_size.addItem("")
        self.cb_gpu_batch_size.addItem("")
        self.cb_gpu_batch_size.addItem("")
        self.cb_gpu_batch_size.addItem("")
        self.cb_gpu_batch_size.addItem("")
        self.horizontalLayout_17.addWidget(self.cb_gpu_batch_size)
        self.verticalLayout_4.addLayout(self.horizontalLayout_17)
        self.horizontalLayout_18.addLayout(self.verticalLayout_4)
        self.verticalLayout_7 = QtWidgets.QVBoxLayout()
        self.verticalLayout_7.setObjectName("verticalLayout_7")
        self.horizontalLayout_15 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_15.setObjectName("horizontalLayout_15")
        self.ck_sf_flag = QtWidgets.QCheckBox(self.tab_2)
        self.ck_sf_flag.setEnabled(False)
        self.ck_sf_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_sf_flag.setCheckable(True)
        self.ck_sf_flag.setObjectName("ck_sf_flag")
        self.horizontalLayout_15.addWidget(self.ck_sf_flag)
        self.ck_mesh_flag = QtWidgets.QCheckBox(self.tab_2)
        self.ck_mesh_flag.setEnabled(False)
        self.ck_mesh_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_mesh_flag.setChecked(True)
        self.ck_mesh_flag.setObjectName("ck_mesh_flag")
        self.horizontalLayout_15.addWidget(self.ck_mesh_flag)
        self.verticalLayout_7.addLayout(self.horizontalLayout_15)
        self.ck_mask_prb_flag = QtWidgets.QCheckBox(self.tab_2)
        self.ck_mask_prb_flag.setEnabled(False)
        self.ck_mask_prb_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_mask_prb_flag.setObjectName("ck_mask_prb_flag")
        self.verticalLayout_7.addWidget(self.ck_mask_prb_flag)
        self.ck_init_obj_dpc_flag = QtWidgets.QCheckBox(self.tab_2)
        self.ck_init_obj_dpc_flag.setEnabled(False)
        self.ck_init_obj_dpc_flag.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.ck_init_obj_dpc_flag.setObjectName("ck_init_obj_dpc_flag")
        self.verticalLayout_7.addWidget(self.ck_init_obj_dpc_flag)
        self.horizontalLayout_18.addLayout(self.verticalLayout_7)
        self.verticalLayout_8.addLayout(self.horizontalLayout_18)
        self.tabWidget.addTab(self.tab_2, "")
        self.tab_4 = QtWidgets.QWidget()
        self.tab_4.setObjectName("tab_4")
        self.layoutWidget = QtWidgets.QWidget(self.tab_4)
        self.layoutWidget.setGeometry(QtCore.QRect(20, 10, 660, 31))
        self.layoutWidget.setObjectName("layoutWidget")
        self.horizontalLayout_19 = QtWidgets.QHBoxLayout(self.layoutWidget)
        self.horizontalLayout_19.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_19.setObjectName("horizontalLayout_19")
        self.ck_refine_data_flag = QtWidgets.QCheckBox(self.layoutWidget)
        self.ck_refine_data_flag.setObjectName("ck_refine_data_flag")
        self.horizontalLayout_19.addWidget(self.ck_refine_data_flag)
        spacerItem9 = QtWidgets.QSpacerItem(18, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_19.addItem(spacerItem9)
        self.label_57 = QtWidgets.QLabel(self.layoutWidget)
        self.label_57.setObjectName("label_57")
        self.horizontalLayout_19.addWidget(self.label_57)
        self.sp_refine_data_start_it = QtWidgets.QSpinBox(self.layoutWidget)
        self.sp_refine_data_start_it.setEnabled(False)
        self.sp_refine_data_start_it.setMaximum(100000000)
        self.sp_refine_data_start_it.setProperty("value", 10)
        self.sp_refine_data_start_it.setObjectName("sp_refine_data_start_it")
        self.horizontalLayout_19.addWidget(self.sp_refine_data_start_it)
        spacerItem10 = QtWidgets.QSpacerItem(18, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_19.addItem(spacerItem10)
        self.label_58 = QtWidgets.QLabel(self.layoutWidget)
        self.label_58.setObjectName("label_58")
        self.horizontalLayout_19.addWidget(self.label_58)
        self.sp_refine_data_interval = QtWidgets.QSpinBox(self.layoutWidget)
        self.sp_refine_data_interval.setEnabled(False)
        self.sp_refine_data_interval.setMaximum(100000000)
        self.sp_refine_data_interval.setProperty("value", 5)
        self.sp_refine_data_interval.setObjectName("sp_refine_data_interval")
        self.horizontalLayout_19.addWidget(self.sp_refine_data_interval)
        spacerItem11 = QtWidgets.QSpacerItem(18, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_19.addItem(spacerItem11)
        self.label_59 = QtWidgets.QLabel(self.layoutWidget)
        self.label_59.setObjectName("label_59")
        self.horizontalLayout_19.addWidget(self.label_59)
        self.sp_refine_data_step = QtWidgets.QDoubleSpinBox(self.layoutWidget)
        self.sp_refine_data_step.setEnabled(False)
        self.sp_refine_data_step.setMaximum(1.0)
        self.sp_refine_data_step.setSingleStep(0.05)
        self.sp_refine_data_step.setProperty("value", 0.05)
        self.sp_refine_data_step.setObjectName("sp_refine_data_step")
        self.horizontalLayout_19.addWidget(self.sp_refine_data_step)
        self.layoutWidget1 = QtWidgets.QWidget(self.tab_4)
        self.layoutWidget1.setGeometry(QtCore.QRect(20, 90, 721, 20))
        self.layoutWidget1.setObjectName("layoutWidget1")
        self.horizontalLayout_21 = QtWidgets.QHBoxLayout(self.layoutWidget1)
        self.horizontalLayout_21.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_21.setObjectName("horizontalLayout_21")
        self.ck_profiler_flag = QtWidgets.QCheckBox(self.layoutWidget1)
        self.ck_profiler_flag.setObjectName("ck_profiler_flag")
        self.horizontalLayout_21.addWidget(self.ck_profiler_flag)
        self.ck_postprocessing_flag = QtWidgets.QCheckBox(self.layoutWidget1)
        self.ck_postprocessing_flag.setChecked(True)
        self.ck_postprocessing_flag.setObjectName("ck_postprocessing_flag")
        self.horizontalLayout_21.addWidget(self.ck_postprocessing_flag)
        self.ck_scan_pt_flag = QtWidgets.QCheckBox(self.layoutWidget1)
        self.ck_scan_pt_flag.setObjectName("ck_scan_pt_flag")
        self.horizontalLayout_21.addWidget(self.ck_scan_pt_flag)
        self.layoutWidget2 = QtWidgets.QWidget(self.tab_4)
        self.layoutWidget2.setGeometry(QtCore.QRect(22, 50, 680, 26))
        self.layoutWidget2.setObjectName("layoutWidget2")
        self.horizontalLayout_20 = QtWidgets.QHBoxLayout(self.layoutWidget2)
        self.horizontalLayout_20.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_20.setObjectName("horizontalLayout_20")
        self.label_60 = QtWidgets.QLabel(self.layoutWidget2)
        self.label_60.setObjectName("label_60")
        self.horizontalLayout_20.addWidget(self.label_60)
        self.rb_mpi = QtWidgets.QRadioButton(self.layoutWidget2)
        self.rb_mpi.setChecked(True)
        self.rb_mpi.setObjectName("rb_mpi")
        self.horizontalLayout_20.addWidget(self.rb_mpi)
        spacerItem12 = QtWidgets.QSpacerItem(4, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_20.addItem(spacerItem12)
        self.rb_cuda_mpi = QtWidgets.QRadioButton(self.layoutWidget2)
        self.rb_cuda_mpi.setChecked(False)
        self.rb_cuda_mpi.setObjectName("rb_cuda_mpi")
        self.horizontalLayout_20.addWidget(self.rb_cuda_mpi)
        spacerItem13 = QtWidgets.QSpacerItem(4, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_20.addItem(spacerItem13)
        self.rb_nccl = QtWidgets.QRadioButton(self.layoutWidget2)
        self.rb_nccl.setEnabled(True)
        self.rb_nccl.setCheckable(True)
        self.rb_nccl.setChecked(False)
        self.rb_nccl.setObjectName("rb_nccl")
        self.horizontalLayout_20.addWidget(self.rb_nccl)
        spacerItem14 = QtWidgets.QSpacerItem(4, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_20.addItem(spacerItem14)
        self.rb_none = QtWidgets.QRadioButton(self.layoutWidget2)
        self.rb_none.setEnabled(False)
        self.rb_none.setCheckable(True)
        self.rb_none.setChecked(False)
        self.rb_none.setObjectName("rb_none")
        self.horizontalLayout_20.addWidget(self.rb_none)
        self.tabWidget.addTab(self.tab_4, "")
        self.tab_3 = QtWidgets.QWidget()
        self.tab_3.setObjectName("tab_3")
        self.layoutWidget3 = QtWidgets.QWidget(self.tab_3)
        self.layoutWidget3.setGeometry(QtCore.QRect(20, 20, 491, 23))
        self.layoutWidget3.setObjectName("layoutWidget3")
        self.horizontalLayout_8 = QtWidgets.QHBoxLayout(self.layoutWidget3)
        self.horizontalLayout_8.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_8.setObjectName("horizontalLayout_8")
        self.label_52 = QtWidgets.QLabel(self.layoutWidget3)
        self.label_52.setObjectName("label_52")
        self.horizontalLayout_8.addWidget(self.label_52)
        self.le_batch_items = QtWidgets.QLineEdit(self.layoutWidget3)
        self.le_batch_items.setObjectName("le_batch_items")
        self.horizontalLayout_8.addWidget(self.le_batch_items)
        self.layoutWidget4 = QtWidgets.QWidget(self.tab_3)
        self.layoutWidget4.setGeometry(QtCore.QRect(20, 50, 244, 26))
        self.layoutWidget4.setObjectName("layoutWidget4")
        self.horizontalLayout_9 = QtWidgets.QHBoxLayout(self.layoutWidget4)
        self.horizontalLayout_9.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_9.setObjectName("horizontalLayout_9")
        self.label_53 = QtWidgets.QLabel(self.layoutWidget4)
        self.label_53.setObjectName("label_53")
        self.horizontalLayout_9.addWidget(self.label_53)
        self.sp_batch_step = QtWidgets.QSpinBox(self.layoutWidget4)
        self.sp_batch_step.setMinimum(1)
        self.sp_batch_step.setMaximum(1000000)
        self.sp_batch_step.setObjectName("sp_batch_step")
        self.horizontalLayout_9.addWidget(self.sp_batch_step)
        self.layoutWidget_2 = QtWidgets.QWidget(self.tab_3)
        self.layoutWidget_2.setGeometry(QtCore.QRect(20, 120, 701, 28))
        self.layoutWidget_2.setObjectName("layoutWidget_2")
        self.horizontalLayout_13 = QtWidgets.QHBoxLayout(self.layoutWidget_2)
        self.horizontalLayout_13.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_13.setObjectName("horizontalLayout_13")
        self.ck_init_obj_batch_flag = QtWidgets.QCheckBox(self.layoutWidget_2)
        self.ck_init_obj_batch_flag.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.ck_init_obj_batch_flag.setObjectName("ck_init_obj_batch_flag")
        self.horizontalLayout_13.addWidget(self.ck_init_obj_batch_flag)
        self.le_obj_path_batch = QtWidgets.QLineEdit(self.layoutWidget_2)
        self.le_obj_path_batch.setEnabled(False)
        self.le_obj_path_batch.setObjectName("le_obj_path_batch")
        self.horizontalLayout_13.addWidget(self.le_obj_path_batch)
        self.layoutWidget5 = QtWidgets.QWidget(self.tab_3)
        self.layoutWidget5.setGeometry(QtCore.QRect(20, 90, 701, 28))
        self.layoutWidget5.setObjectName("layoutWidget5")
        self.horizontalLayout_12 = QtWidgets.QHBoxLayout(self.layoutWidget5)
        self.horizontalLayout_12.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_12.setObjectName("horizontalLayout_12")
        self.ck_init_prb_batch_flag = QtWidgets.QCheckBox(self.layoutWidget5)
        self.ck_init_prb_batch_flag.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.ck_init_prb_batch_flag.setObjectName("ck_init_prb_batch_flag")
        self.horizontalLayout_12.addWidget(self.ck_init_prb_batch_flag)
        self.le_prb_path_batch = QtWidgets.QLineEdit(self.layoutWidget5)
        self.le_prb_path_batch.setEnabled(False)
        self.le_prb_path_batch.setObjectName("le_prb_path_batch")
        self.horizontalLayout_12.addWidget(self.le_prb_path_batch)
        self.layoutWidget6 = QtWidgets.QWidget(self.tab_3)
        self.layoutWidget6.setGeometry(QtCore.QRect(40, 250, 668, 32))
        self.layoutWidget6.setObjectName("layoutWidget6")
        self.horizontalLayout_11 = QtWidgets.QHBoxLayout(self.layoutWidget6)
        self.horizontalLayout_11.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_11.setObjectName("horizontalLayout_11")
        spacerItem15 = QtWidgets.QSpacerItem(518, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_11.addItem(spacerItem15)
        self.btn_recon_batch_start = QtWidgets.QPushButton(self.layoutWidget6)
        self.btn_recon_batch_start.setMaximumSize(QtCore.QSize(80, 16777215))
        self.btn_recon_batch_start.setObjectName("btn_recon_batch_start")
        self.horizontalLayout_11.addWidget(self.btn_recon_batch_start)
        self.btn_recon_batch_stop = QtWidgets.QPushButton(self.layoutWidget6)
        self.btn_recon_batch_stop.setMaximumSize(QtCore.QSize(80, 16777215))
        self.btn_recon_batch_stop.setObjectName("btn_recon_batch_stop")
        self.horizontalLayout_11.addWidget(self.btn_recon_batch_stop)
        self.ck_batch_run_flag = QtWidgets.QCheckBox(self.tab_3)
        self.ck_batch_run_flag.setGeometry(QtCore.QRect(20, 220, 141, 20))
        self.ck_batch_run_flag.setChecked(True)
        self.ck_batch_run_flag.setObjectName("ck_batch_run_flag")
        self.widget = QtWidgets.QWidget(self.tab_3)
        self.widget.setGeometry(QtCore.QRect(20, 190, 644, 31))
        self.widget.setObjectName("widget")
        self.horizontalLayout_16 = QtWidgets.QHBoxLayout(self.widget)
        self.horizontalLayout_16.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_16.setObjectName("horizontalLayout_16")
        self.ck_batch_crop_flag = QtWidgets.QCheckBox(self.widget)
        self.ck_batch_crop_flag.setObjectName("ck_batch_crop_flag")
        self.horizontalLayout_16.addWidget(self.ck_batch_crop_flag)
        spacerItem16 = QtWidgets.QSpacerItem(28, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_16.addItem(spacerItem16)
        self.label_62 = QtWidgets.QLabel(self.widget)
        self.label_62.setObjectName("label_62")
        self.horizontalLayout_16.addWidget(self.label_62)
        self.sp_batch_x0 = QtWidgets.QSpinBox(self.widget)
        self.sp_batch_x0.setMaximum(100000000)
        self.sp_batch_x0.setObjectName("sp_batch_x0")
        self.horizontalLayout_16.addWidget(self.sp_batch_x0)
        self.label_63 = QtWidgets.QLabel(self.widget)
        self.label_63.setObjectName("label_63")
        self.horizontalLayout_16.addWidget(self.label_63)
        self.sp_batch_y0 = QtWidgets.QSpinBox(self.widget)
        self.sp_batch_y0.setMaximum(100000000)
        self.sp_batch_y0.setObjectName("sp_batch_y0")
        self.horizontalLayout_16.addWidget(self.sp_batch_y0)
        self.label_64 = QtWidgets.QLabel(self.widget)
        self.label_64.setObjectName("label_64")
        self.horizontalLayout_16.addWidget(self.label_64)
        self.sp_batch_width = QtWidgets.QSpinBox(self.widget)
        self.sp_batch_width.setMaximum(100000000)
        self.sp_batch_width.setObjectName("sp_batch_width")
        self.horizontalLayout_16.addWidget(self.sp_batch_width)
        self.label_65 = QtWidgets.QLabel(self.widget)
        self.label_65.setObjectName("label_65")
        self.horizontalLayout_16.addWidget(self.label_65)
        self.sp_batch_height = QtWidgets.QSpinBox(self.widget)
        self.sp_batch_height.setMaximum(100000000)
        self.sp_batch_height.setObjectName("sp_batch_height")
        self.horizontalLayout_16.addWidget(self.sp_batch_height)
        self.tabWidget.addTab(self.tab_3, "")
        self.verticalLayout_5.addWidget(self.tabWidget)
        self.console_info = QtWidgets.QTextEdit(self.centralwidget)
        self.console_info.setReadOnly(True)
        self.console_info.setObjectName("console_info")
        self.verticalLayout_5.addWidget(self.console_info)
        self.recon_bar = QtWidgets.QProgressBar(self.centralwidget)
        self.recon_bar.setProperty("value", 0)
        self.recon_bar.setObjectName("recon_bar")
        self.verticalLayout_5.addWidget(self.recon_bar)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menuBar = QtWidgets.QMenuBar(MainWindow)
        self.menuBar.setGeometry(QtCore.QRect(0, 0, 760, 22))
        self.menuBar.setNativeMenuBar(False)
        self.menuBar.setObjectName("menuBar")
        self.menuFile = QtWidgets.QMenu(self.menuBar)
        self.menuFile.setToolTipsVisible(True)
        self.menuFile.setObjectName("menuFile")
        self.menuWindows = QtWidgets.QMenu(self.menuBar)
        self.menuWindows.setObjectName("menuWindows")
        self.menuOptions = QtWidgets.QMenu(self.menuBar)
        self.menuOptions.setObjectName("menuOptions")
        MainWindow.setMenuBar(self.menuBar)
        self.menu_import_config = QtWidgets.QAction(MainWindow)
        self.menu_import_config.setObjectName("menu_import_config")
        self.menu_export_config = QtWidgets.QAction(MainWindow)
        self.menu_export_config.setObjectName("menu_export_config")
        self.menu_save_config_history = QtWidgets.QAction(MainWindow)
        self.menu_save_config_history.setCheckable(True)
        self.menu_save_config_history.setChecked(True)
        self.menu_save_config_history.setObjectName("menu_save_config_history")
        self.menu_clear_config_history = QtWidgets.QAction(MainWindow)
        self.menu_clear_config_history.setObjectName("menu_clear_config_history")
        self.actionROI = QtWidgets.QAction(MainWindow)
        self.actionROI.setObjectName("actionROI")
        self.actionMonitor = QtWidgets.QAction(MainWindow)
        self.actionMonitor.setObjectName("actionMonitor")
        self.actionScan_points = QtWidgets.QAction(MainWindow)
        self.actionScan_points.setObjectName("actionScan_points")
        self.actionClear_shared_memory = QtWidgets.QAction(MainWindow)
        self.actionClear_shared_memory.setObjectName("actionClear_shared_memory")
        self.menuFile.addAction(self.menu_import_config)
        self.menuFile.addAction(self.menu_export_config)
        self.menuFile.addAction(self.menu_clear_config_history)
        self.menuFile.addAction(self.menu_save_config_history)
        self.menuWindows.addAction(self.actionROI)
        self.menuWindows.addAction(self.actionMonitor)
        self.menuWindows.addAction(self.actionScan_points)
        self.menuOptions.addAction(self.actionClear_shared_memory)
        self.menuBar.addAction(self.menuFile.menuAction())
        self.menuBar.addAction(self.menuWindows.menuAction())
        self.menuBar.addAction(self.menuOptions.menuAction())

        self.retranslateUi(MainWindow)
        self.tabWidget.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "NSLS-II Pytchography"))
        self.groupBox_7.setTitle(_translate("MainWindow", "Data"))
        self.label.setText(_translate("MainWindow", "Scan number"))
        self.le_scan_num.setText(_translate("MainWindow", "34784"))
        self.ck_extra_scans_flag.setToolTip(_translate("MainWindow", "Enable additional scans (ex: dark frames) associated with the scan number on the left."))
        self.ck_extra_scans_flag.setText(_translate("MainWindow", "Assoc. scans"))
        self.btn_set_extra_scans.setText(_translate("MainWindow", "Set"))
        self.btn_choose_cwd.setText(_translate("MainWindow", "working directory"))
        self.cb_dataloader.setItemText(0, _translate("MainWindow", "Load from h5"))
        self.cb_dataloader.setItemText(1, _translate("MainWindow", "Load from databroker"))
        self.label_26.setText(_translate("MainWindow", "detector"))
        self.btn_load_scan.setText(_translate("MainWindow", "Load"))
        self.label_36.setText(_translate("MainWindow", "Frame #"))
        self.btn_view_frame.setText(_translate("MainWindow", "View data frame"))
        self.groupBox_8.setTitle(_translate("MainWindow", "Experimental parameters"))
        self.label_43.setText(_translate("MainWindow", "X scan range (um)"))
        self.label_41.setText(_translate("MainWindow", "X step size (um)"))
        self.label_40.setText(_translate("MainWindow", "Y array size"))
        self.cb_scan_type.setItemText(0, _translate("MainWindow", "mesh"))
        self.cb_scan_type.setItemText(1, _translate("MainWindow", "spiral"))
        self.cb_scan_type.setItemText(2, _translate("MainWindow", "fly"))
        self.label_46.setText(_translate("MainWindow", "Numbers of points"))
        self.label_37.setText(_translate("MainWindow", "X-ray energy (keV)"))
        self.label_38.setText(_translate("MainWindow", "Detector distance (m)"))
        self.label_44.setText(_translate("MainWindow", "Y scan range (um)"))
        self.label_42.setText(_translate("MainWindow", "Y step size (um)"))
        self.label_45.setText(_translate("MainWindow", "Scan type: "))
        self.label_39.setText(_translate("MainWindow", "X array size"))
        self.label_3.setText(_translate("MainWindow", "Num. of iteration"))
        self.label_8.setText(_translate("MainWindow", "Algorithm"))
        self.cb_alg_flag.setItemText(0, _translate("MainWindow", "DM"))
        self.cb_alg_flag.setItemText(1, _translate("MainWindow", "ER"))
        self.cb_alg_flag.setItemText(2, _translate("MainWindow", "ML"))
        self.cb_alg_flag.setItemText(3, _translate("MainWindow", "DM_real"))
        self.cb_alg_flag.setItemText(4, _translate("MainWindow", "RAAR"))
        self.cb_alg_flag.setItemText(5, _translate("MainWindow", "mADMM"))
        self.cb_alg_flag.setItemText(6, _translate("MainWindow", "PM"))
        self.cb_alg_flag.setItemText(7, _translate("MainWindow", "APG"))
        self.cb_alg2_flag.setItemText(0, _translate("MainWindow", "DM"))
        self.cb_alg2_flag.setItemText(1, _translate("MainWindow", "ER"))
        self.cb_alg2_flag.setItemText(2, _translate("MainWindow", "ML"))
        self.cb_alg2_flag.setItemText(3, _translate("MainWindow", "DM_real"))
        self.cb_alg2_flag.setItemText(4, _translate("MainWindow", "RAAR"))
        self.cb_alg2_flag.setItemText(5, _translate("MainWindow", "mADMM"))
        self.cb_alg2_flag.setItemText(6, _translate("MainWindow", "PM"))
        self.cb_alg2_flag.setItemText(7, _translate("MainWindow", "APG"))
        self.label_54.setText(_translate("MainWindow", "Precision"))
        self.cb_precision_flag.setItemText(0, _translate("MainWindow", "double"))
        self.cb_precision_flag.setItemText(1, _translate("MainWindow", "single"))
        self.label_27.setText(_translate("MainWindow", "Save filename"))
        self.le_sign.setText(_translate("MainWindow", "t1"))
        self.btn_load_object.setText(_translate("MainWindow", "Load object"))
        self.btn_load_probe.setText(_translate("MainWindow", "Load probe"))
        self.label_9.setText(_translate("MainWindow", "Probe initialization:"))
        self.ck_init_prb_flag.setText(_translate("MainWindow", "Estimate from data"))
        self.label_11.setText(_translate("MainWindow", "Object initialization:"))
        self.ck_init_obj_flag.setText(_translate("MainWindow", "Random start"))
        self.ck_mode_flag.setText(_translate("MainWindow", "Modes"))
        self.label_22.setText(_translate("MainWindow", "Num. of probe mode"))
        self.label_23.setText(_translate("MainWindow", "Num. of object mode"))
        self.ck_multislice_flag.setText(_translate("MainWindow", "Multi-slice"))
        self.label_47.setText(_translate("MainWindow", "Num. of slices"))
        self.label_48.setText(_translate("MainWindow", "Slice spacing (um)"))
        self.ck_ms_pie_flag.setText(_translate("MainWindow", "Use PIE"))
        self.ck_weak_obj_flag.setText(_translate("MainWindow", "weak object"))
        self.ck_mask_obj_flag.setText(_translate("MainWindow", "mask obj"))
        self.label_15.setText(_translate("MainWindow", "Amplitude:"))
        self.label_32.setText(_translate("MainWindow", "min"))
        self.label_35.setText(_translate("MainWindow", "max"))
        self.label_16.setText(_translate("MainWindow", "Phase:"))
        self.label_34.setText(_translate("MainWindow", "min"))
        self.label_33.setText(_translate("MainWindow", "max"))
        self.ck_gpu_flag.setText(_translate("MainWindow", "GPU:"))
        self.le_gpus.setToolTip(_translate("MainWindow", "Set the GPUs to be used. Example: 0, 2-3, 5"))
        self.le_gpus.setText(_translate("MainWindow", "0,1"))
        self.label_51.setText(_translate("MainWindow", "or"))
        self.btn_MPI_file.setText(_translate("MainWindow", "MPI machine file"))
        self.btn_recon_start.setText(_translate("MainWindow", "start"))
        self.btn_recon_stop.setText(_translate("MainWindow", "stop"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "Reconstruction parameters"))
        self.label_10.setText(_translate("MainWindow", "ML mode"))
        self.label_6.setText(_translate("MainWindow", "nth"))
        self.ck_angle_correction_flag.setText(_translate("MainWindow", "angular correction"))
        self.label_61.setText(_translate("MainWindow", "ML weight"))
        self.label_29.setText(_translate("MainWindow", "Update object"))
        self.label_5.setText(_translate("MainWindow", "start ave"))
        self.label_28.setText(_translate("MainWindow", "Update probe"))
        self.label_49.setText(_translate("MainWindow", "x direction"))
        self.label_4.setText(_translate("MainWindow", "probe propagation distance (um)"))
        self.cb_ml_mode.setItemText(0, _translate("MainWindow", "Poisson"))
        self.cb_ml_mode.setItemText(1, _translate("MainWindow", "Gaussian"))
        self.label_2.setText(_translate("MainWindow", "angle"))
        self.ck_cal_scal_pattern_flag.setText(_translate("MainWindow", "calculate scan pattern"))
        self.label_50.setText(_translate("MainWindow", "y direction"))
        self.label_31.setText(_translate("MainWindow", "Processes"))
        self.label_7.setText(_translate("MainWindow", "Detector pixel size (um)"))
        self.label_30.setText(_translate("MainWindow", "DM ver."))
        self.label_13.setText(_translate("MainWindow", "Gamma"))
        self.label_25.setText(_translate("MainWindow", "Step"))
        self.ck_position_correction_flag.setText(_translate("MainWindow", "Position correction:"))
        self.cb_pc_alg.setItemText(0, _translate("MainWindow", "lucy"))
        self.cb_pc_alg.setItemText(1, _translate("MainWindow", "wiener"))
        self.label_12.setText(_translate("MainWindow", "Theta"))
        self.ck_bragg_flag.setText(_translate("MainWindow", "Bragg: "))
        self.label_14.setText(_translate("MainWindow", "Delta"))
        self.label_19.setText(_translate("MainWindow", "Num. kernels"))
        self.ck_pc_flag.setText(_translate("MainWindow", "Partial coherence:"))
        self.label_17.setText(_translate("MainWindow", "Sigma"))
        self.label_24.setText(_translate("MainWindow", "Start"))
        self.label_18.setText(_translate("MainWindow", "Algorithm"))
        self.label_20.setText(_translate("MainWindow", "sigma2"))
        self.label_21.setText(_translate("MainWindow", "beta"))
        self.label_55.setText(_translate("MainWindow", "Display interval"))
        self.ck_preview_flag.setText(_translate("MainWindow", "Live preview"))
        self.ck_cal_error_flag.setText(_translate("MainWindow", "Estimate errors"))
        self.ck_prb_center_flag.setText(_translate("MainWindow", "fix probe center"))
        self.ck_norm_prb_amp_flag.setText(_translate("MainWindow", "normalize probe amplitude"))
        self.label_56.setText(_translate("MainWindow", "GPU batch size"))
        self.cb_gpu_batch_size.setToolTip(_translate("MainWindow", "Rule of thumb: the larger, the better. But one may get an Out-of-Memory error if this is too large."))
        self.cb_gpu_batch_size.setCurrentText(_translate("MainWindow", "256"))
        self.cb_gpu_batch_size.setItemText(0, _translate("MainWindow", "4"))
        self.cb_gpu_batch_size.setItemText(1, _translate("MainWindow", "16"))
        self.cb_gpu_batch_size.setItemText(2, _translate("MainWindow", "64"))
        self.cb_gpu_batch_size.setItemText(3, _translate("MainWindow", "256"))
        self.cb_gpu_batch_size.setItemText(4, _translate("MainWindow", "1024"))
        self.cb_gpu_batch_size.setItemText(5, _translate("MainWindow", "4096"))
        self.ck_sf_flag.setText(_translate("MainWindow", "sf"))
        self.ck_mesh_flag.setText(_translate("MainWindow", "mesh"))
        self.ck_mask_prb_flag.setText(_translate("MainWindow", "mask probe"))
        self.ck_init_obj_dpc_flag.setText(_translate("MainWindow", "init. object (dpc)"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "Advanced options 1"))
        self.ck_refine_data_flag.setText(_translate("MainWindow", "Refine data:"))
        self.label_57.setText(_translate("MainWindow", "start"))
        self.label_58.setText(_translate("MainWindow", "interval"))
        self.label_59.setText(_translate("MainWindow", "step"))
        self.ck_profiler_flag.setText(_translate("MainWindow", "Line Profiler"))
        self.ck_postprocessing_flag.setText(_translate("MainWindow", "Perform post-processing"))
        self.ck_scan_pt_flag.setText(_translate("MainWindow", "Show scan-point distribution"))
        self.label_60.setText(_translate("MainWindow", "Inter-process communication:"))
        self.rb_mpi.setText(_translate("MainWindow", "MPI"))
        self.rb_cuda_mpi.setText(_translate("MainWindow", "CUDA-aware MPI (GPU only)"))
        self.rb_nccl.setText(_translate("MainWindow", "NCCL (GPU only)"))
        self.rb_none.setText(_translate("MainWindow", "None"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_4), _translate("MainWindow", "Advanced options 2"))
        self.label_52.setText(_translate("MainWindow", "Scan numbers & ranges"))
        self.le_batch_items.setToolTip(_translate("MainWindow", "Set scan numbers and ranges. Example: 2, 3-5, 7-15, 23, 30-55"))
        self.label_53.setText(_translate("MainWindow", "Process every n-th scan"))
        self.ck_init_obj_batch_flag.setText(_translate("MainWindow", "Load existing object for each scan:"))
        self.le_obj_path_batch.setToolTip(_translate("MainWindow", "Set object filename template. Ex: \"recon_*_t1_object_ave.npy\", where \"*\" will be replaced by the scan number."))
        self.ck_init_prb_batch_flag.setText(_translate("MainWindow", "Load existing probe for each scan:"))
        self.le_prb_path_batch.setToolTip(_translate("MainWindow", "Set probe filename template. Ex: \"recon_*_t1_probe_ave.npy\", where \"*\" will be replaced by the scan number."))
        self.btn_recon_batch_start.setText(_translate("MainWindow", "start"))
        self.btn_recon_batch_stop.setText(_translate("MainWindow", "stop"))
        self.ck_batch_run_flag.setText(_translate("MainWindow", "Run reconstruction"))
        self.ck_batch_crop_flag.setToolTip(_translate("MainWindow", "This is effective only when \"Load from databroker\" is set."))
        self.ck_batch_crop_flag.setText(_translate("MainWindow", "Crop data:"))
        self.label_62.setText(_translate("MainWindow", "x0"))
        self.label_63.setText(_translate("MainWindow", "y0"))
        self.label_64.setText(_translate("MainWindow", "w"))
        self.label_65.setText(_translate("MainWindow", "h"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("MainWindow", "Batch mode"))
        self.menuFile.setTitle(_translate("MainWindow", "File"))
        self.menuWindows.setTitle(_translate("MainWindow", "Windows"))
        self.menuOptions.setTitle(_translate("MainWindow", "Options"))
        self.menu_import_config.setText(_translate("MainWindow", "Import config from txt"))
        self.menu_export_config.setText(_translate("MainWindow", "Export config to txt"))
        self.menu_save_config_history.setText(_translate("MainWindow", "Save config history"))
        self.menu_save_config_history.setToolTip(_translate("MainWindow", "The config history is saved to \".ptycho_gui_config\" in the user\'s home directory when the \"start\" button is clicked"))
        self.menu_clear_config_history.setText(_translate("MainWindow", "Clear config history"))
        self.actionROI.setText(_translate("MainWindow", "ROI"))
        self.actionMonitor.setText(_translate("MainWindow", "Monitor"))
        self.actionScan_points.setText(_translate("MainWindow", "Scan points"))
        self.actionClear_shared_memory.setText(_translate("MainWindow", "Clear shared memory"))
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'nsls2ptycho/ui/ui_ptycho.ui' # # Created by: PyQt5 UI code generator 5.12.3 # # WARNING! All changes made in this file will be lost! #"))