Exemplo n.º 1
0
    def __init__(self):
        super(GUI, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        # Default parameters
        self.ui.tabs.setCurrentIndex(0)
Exemplo n.º 2
0
    def __init__(self, parent=None):
        super().__init__(parent)

        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.Exit.clicked.connect(self.onExit)
        self.ui.Open_Pat.clicked.connect(self.onOpenPat)
        self.setWindowTitle("Heilpraktiker Software Version 1.0.0")
Exemplo n.º 3
0
    def __init__(self, settings):
        # mandatory
        QMainWindow.__init__(self)
        Ui_MainWindow.__init__(self)
        self.trading_session_state = "TBD"
        self.est = timezone('US/Eastern')
        self.settingsWindow = SettingsWindow()
        self.setupUi(self)
        self.settings = settings
        self.ibkrworker = IBKRWorker(self.settings)
        self.threadpool = QThreadPool()
        self.setWindowTitle("Algo Traider v 2.0")

        sys.stderr = open('LOG/errorLog.txt', 'w')

        self.create_open_positions_grid()

        # setting a timer for Worker

        self.uiTimer = QTimer()
        self.uiTimer.timeout.connect(self.update_ui)

        self.workerTimer = QTimer()
        self.workerTimer.timeout.connect(self.run_worker)

        self.server_timer = QTimer()
        self.server_timer.timeout.connect(self.report_to_server)
        self.server_timer.start(int(self.settings.INTERVALSERVER) * 1000)

        # connecting a buttons
        self.chbxProcess.stateChanged.connect(self.process_checked)
        self.btnSettings.pressed.connect(self.show_settings)

        self.statusbar.showMessage("Ready")

        stock_names = [o.ticker for o in self.settings.CANDIDATES]
        self.ibkrworker.stocks_data_from_server = get_market_data_from_server(
            self.settings, stock_names)
        self.update_console("Market data for " + str(len(stock_names)) +
                            " Candidates received from Server")
        self.start_updating_candidates_and_connect()

        StyleSheet = '''
        #lcdPNLgreen {
            border: 3px solid green;
        }
        #lcdPNLred {
            border: 3px solid red;
        }
        '''
        self.setStyleSheet(StyleSheet)
Exemplo n.º 4
0
    def __init__(self, settings):
        # mandatory
        QMainWindow.__init__(self)
        Ui_MainWindow.__init__(self)
        self.settingsWindow = SettingsWindow()
        self.setupUi(self)
        self.settings = settings
        self.ibkrworker = IBKRWorker(self.settings)
        self.threadpool = QThreadPool()
        self.setWindowTitle("Algo Traider v 2.0")

        sys.stderr = open('LOG/errorLog.txt', 'w')

        self.create_open_positions_grid()

        # # redirecting Cosole to UI and Log
        # sys.stdout = OutLog(self.consoleOut, sys.stdout)
        # sys.stderr = OutLog(self.consoleOut, sys.stderr)

        # setting a timer for Worker

        self.uiTimer = QTimer()
        self.uiTimer.timeout.connect(self.update_ui)

        self.workerTimer = QTimer()
        self.workerTimer.timeout.connect(self.run_worker)

        # connecting a buttons
        self.chbxProcess.stateChanged.connect(self.process_checked)
        self.btnSettings.pressed.connect(self.show_settings)

        self.statusbar.showMessage("Ready")
        # self.update_session_state()

        # self.connect_to_ibkr()

        if not self.settings.UIDEBUG:
            self.connect_to_ibkr()
        else:
            self.btnSettings.setEnabled(True)

        StyleSheet = '''
        #lcdPNLgreen {
            border: 3px solid green;
        }
        #lcdPNLred {
            border: 3px solid red;
        }
        '''
        self.setStyleSheet(StyleSheet)
Exemplo n.º 5
0
class GUI(QtWidgets.QMainWindow):
    def __init__(self):
        super(GUI, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        # Default parameters
        self.ui.tabs.setCurrentIndex(0)

    def set_weight(self, weight, unit):
        w = str(weight)
        self.ui.weightL.setText()

    def set_sleep_time(self, hours, unit):
        h = str(hours)
        self.ui.sleepTimeL.setText("{} {}".format(h, unit))
Exemplo n.º 6
0
class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)

        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.Exit.clicked.connect(self.onExit)
        self.ui.Open_Pat.clicked.connect(self.onOpenPat)
        self.setWindowTitle("Heilpraktiker Software Version 1.0.0")

    def onOpenPat(self):
        self.pat = PatVerWindow()
        self.pat.show()
        window.hide()

    def onExit(self):
        PatientenVerwaltung.listespeichern()
        sys.exit()
Exemplo n.º 7
0
    def __init__(self):
        super(mywindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.tabWidget.setCurrentIndex(0)
        # ===init classifiers==============
        classifier.load_params()
        # ===1==================
        self.ui.btn_select_input_data.clicked.connect(
            self.btn_select_input_data_clicked)
        self.ui.btn_load_data.clicked.connect(self.btn_load_data_clicked)
        self.ui.btn_fit.clicked.connect(self.btn_fit_clicked)
        self.ui.btn_open_path_to_data.clicked.connect(
            self.btn_open_path_to_data_clicked)
        self.ui.btn_fit.setDisabled(True)

        self.ui.preprocess_type.setCurrentIndex(1)
        for m in classifier.classifiers:
            self.ui.classifier_type.addItem(str(m))
        # ===2============================
        self.ui.tabWidget.currentChanged.connect(self.tab_changed)
        self.ui.btn_select_path_to_test_data.clicked.connect(
            self.btn_select_path_to_test_data_clicked)
        self.ui.btn_open_path_to_test_data.clicked.connect(
            self.btn_open_path_to_test_data_clicked)
        self.ui.selector_model.currentIndexChanged.connect(
            self.set_preprocess_type_test)
        self.ui.btn_load_test_data.clicked.connect(
            self.btn_load_test_data_clicked)
        self.ui.btn_test.clicked.connect(self.btn_test_clicked)
        self.ui.btn_test.setDisabled(True)
        # ===3================================
        self.ui.btn_choose_input_data_path.clicked.connect(
            self.btn_choose_input_data_path_clicked)
        self.ui.btn_choose_output_bmp_data_path.clicked.connect(
            self.btn_choose_output_bmp_data_path_clicked)
        self.ui.btn_choose_output_png_data_path.clicked.connect(
            self.btn_choose_output_png_data_path_clicked)
        self.ui.btn_start_devider.clicked.connect(
            self.btn_start_devider_clicked)
        self.ui.btn_open_input_data_path.clicked.connect(
            self.btn_open_input_data_path_clicked)
        self.ui.btn_open_output_bmp_data_path.clicked.connect(
            self.btn_open_output_bmp_data_path_clicked)
        self.ui.btn_open_output_png_data_path.clicked.connect(
            self.btn_open_output_png_data_path_clicked)
        # ===4================================
        self.ui.btn_choose_neiron_train_data_path.clicked.connect(
            self.btn_choose_neiron_train_data_path_clicked)
        self.ui.btn_choose_neiron_test_data_path.clicked.connect(
            self.btn_choose_neiron_test_data_path_clicked)
        self.ui.btn_open_neiron_train_data_path.clicked.connect(
            self.btn_open_neiron_train_data_path_clicked)
        self.ui.btn_open_neiron_test_data_path.clicked.connect(
            self.btn_open_neiron_test_data_path_clicked)
        self.ui.btn_open_neiron_weights_path.clicked.connect(
            self.btn_open_neiron_weights_path_clicked)
        self.ui.btn_start_neiron_train.clicked.connect(
            self.btn_start_neiron_train_clicked)
        self.ui.btn_neiron_test.clicked.connect(self.btn_neiron_test_clicked)
        self.ui.btn_neiron_additional_train.clicked.connect(
            self.btn_neiron_additional_train_clicked)
Exemplo n.º 8
0
class mywindow(QtWidgets.QMainWindow):
    X = []
    y = []
    y_unic = []

    # начальная инициализация формы
    def __init__(self):
        super(mywindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.tabWidget.setCurrentIndex(0)
        # ===init classifiers==============
        classifier.load_params()
        # ===1==================
        self.ui.btn_select_input_data.clicked.connect(
            self.btn_select_input_data_clicked)
        self.ui.btn_load_data.clicked.connect(self.btn_load_data_clicked)
        self.ui.btn_fit.clicked.connect(self.btn_fit_clicked)
        self.ui.btn_open_path_to_data.clicked.connect(
            self.btn_open_path_to_data_clicked)
        self.ui.btn_fit.setDisabled(True)

        self.ui.preprocess_type.setCurrentIndex(1)
        for m in classifier.classifiers:
            self.ui.classifier_type.addItem(str(m))
        # ===2============================
        self.ui.tabWidget.currentChanged.connect(self.tab_changed)
        self.ui.btn_select_path_to_test_data.clicked.connect(
            self.btn_select_path_to_test_data_clicked)
        self.ui.btn_open_path_to_test_data.clicked.connect(
            self.btn_open_path_to_test_data_clicked)
        self.ui.selector_model.currentIndexChanged.connect(
            self.set_preprocess_type_test)
        self.ui.btn_load_test_data.clicked.connect(
            self.btn_load_test_data_clicked)
        self.ui.btn_test.clicked.connect(self.btn_test_clicked)
        self.ui.btn_test.setDisabled(True)
        # ===3================================
        self.ui.btn_choose_input_data_path.clicked.connect(
            self.btn_choose_input_data_path_clicked)
        self.ui.btn_choose_output_bmp_data_path.clicked.connect(
            self.btn_choose_output_bmp_data_path_clicked)
        self.ui.btn_choose_output_png_data_path.clicked.connect(
            self.btn_choose_output_png_data_path_clicked)
        self.ui.btn_start_devider.clicked.connect(
            self.btn_start_devider_clicked)
        self.ui.btn_open_input_data_path.clicked.connect(
            self.btn_open_input_data_path_clicked)
        self.ui.btn_open_output_bmp_data_path.clicked.connect(
            self.btn_open_output_bmp_data_path_clicked)
        self.ui.btn_open_output_png_data_path.clicked.connect(
            self.btn_open_output_png_data_path_clicked)
        # ===4================================
        self.ui.btn_choose_neiron_train_data_path.clicked.connect(
            self.btn_choose_neiron_train_data_path_clicked)
        self.ui.btn_choose_neiron_test_data_path.clicked.connect(
            self.btn_choose_neiron_test_data_path_clicked)
        self.ui.btn_open_neiron_train_data_path.clicked.connect(
            self.btn_open_neiron_train_data_path_clicked)
        self.ui.btn_open_neiron_test_data_path.clicked.connect(
            self.btn_open_neiron_test_data_path_clicked)
        self.ui.btn_open_neiron_weights_path.clicked.connect(
            self.btn_open_neiron_weights_path_clicked)
        self.ui.btn_start_neiron_train.clicked.connect(
            self.btn_start_neiron_train_clicked)
        self.ui.btn_neiron_test.clicked.connect(self.btn_neiron_test_clicked)
        self.ui.btn_neiron_additional_train.clicked.connect(
            self.btn_neiron_additional_train_clicked)
        # ===5=======================================================

    # ====Управление первой вкладкой====================================================
    def btn_open_path_to_data_clicked(self):
        path = self.ui.path_to_data.text()
        path = '\\'.join(path.split('\\')[:-1])
        path = os.path.realpath(path)
        os.startfile(path)

    def btn_fit_clicked(self):
        expected, predicted = classifier.control_classifiers(
            self.X, self.y, self.ui.classifier_type.currentIndex(),
            self.ui.preprocess_type.currentText())
        self.ui.label_4.setText(
            metrics.classification_report(expected, predicted,
                                          zero_division=0))
        self.load_train_predictions_matrix_table(
            metrics.confusion_matrix(expected, predicted))

    def btn_select_input_data_clicked(self):
        file_path = QFileDialog.getOpenFileName(self,
                                                "Выберите файл",
                                                filter="*.csv")
        self.ui.path_to_data.setText(file_path[0])

    def btn_load_data_clicked(self):

        if self.ui.preprocess_type.currentText() == "Стандартизация":
            preprocess_type = 2
            status_text = "стандартизованны"
        else:
            preprocess_type = 1
            status_text = "нормализованны"

        self.ui.btn_fit.setDisabled(False)

        self.X, self.y = classifier.load_and_preprocess_data(
            self.ui.path_to_data.text(), preprocess_type)

        self.load_info_table(classifier.get_load_file_stats(self.y))
        self.ui.status.setText("Статус загрузки данных: данные загружены и " +
                               status_text)

    def load_train_predictions_matrix_table(self, data):
        self.ui.train_predictions_matrix.setColumnCount(len(self.y_unic))
        self.ui.train_predictions_matrix.setRowCount(len(self.y_unic))
        # заголовки для столбцов.
        self.ui.train_predictions_matrix.setHorizontalHeaderLabels(self.y_unic)
        # заголовки для строк.
        self.ui.train_predictions_matrix.setVerticalHeaderLabels(self.y_unic)
        row = 0
        for tup in data:
            col = 0
            for item in tup:
                cellinfo = QTableWidgetItem(str(item))
                # Только для чтения
                cellinfo.setFlags(PyQt5.QtCore.Qt.ItemIsSelectable
                                  | PyQt5.QtCore.Qt.ItemIsEnabled)
                self.ui.train_predictions_matrix.setItem(row, col, cellinfo)
                col += 1
            row += 1

    def load_info_table(self, data):
        self.y_unic.clear()
        self.ui.table_file_info.setColumnCount(2)
        self.ui.table_file_info.setRowCount(len(data))
        # заголовки для столбцов.
        self.ui.table_file_info.setHorizontalHeaderLabels(
            ('Клетка', 'Количество'))
        row = 0
        for tup in data:
            col = 0
            for item in tup:
                cellinfo = QTableWidgetItem(item)
                # Только для чтения
                cellinfo.setFlags(PyQt5.QtCore.Qt.ItemIsSelectable
                                  | PyQt5.QtCore.Qt.ItemIsEnabled)
                self.ui.table_file_info.setItem(row, col, cellinfo)
                if col == 0:
                    self.y_unic.append(item)
                col += 1
            row += 1

    # ====Управление второй вкладкой=================================================
    def tab_changed(self):
        if self.ui.tabWidget.currentIndex() == 1:
            path = "ProjectData/Weights/Classic/"
            path = pathlib.Path(path)
            all_model_paths = list(path.glob('*'))

            # self.ui.selector_model.clear()

            # self.ui.selector_model.clear()
            for x in all_model_paths:
                self.ui.selector_model.addItem(str(x))

    def set_preprocess_type_test(self):
        type = self.ui.selector_model.currentText().split("_")
        type = type[len(type) - 1]
        type = type.split(".")
        type = type[0]

        print(type)
        if type == "Стандартизация":
            self.ui.preprocess_type_test.setCurrentIndex(0)
            self.ui.preprocess_type_test.setEnabled(False)

        else:
            self.ui.preprocess_type_test.setCurrentIndex(1)
            self.ui.preprocess_type_test.setEnabled(False)

    def btn_load_test_data_clicked(self):

        if self.ui.preprocess_type_test.currentText() == "Стандартизация":
            preprocess_type = 2
            status_text = "стандартизованны"
        else:
            preprocess_type = 1
            status_text = "нормализованны"

        self.ui.btn_test.setDisabled(False)

        self.X, self.y = classifier.load_and_preprocess_data(
            self.ui.path_to_test_data.text(), preprocess_type)

        self.load_test_info_table(classifier.get_load_file_stats(self.y))
        self.ui.status_2.setText(
            "Статус загрузки данных: данные загружены и " + status_text)

    def load_test_info_table(self, data):
        self.y_unic.clear()
        self.ui.table_file_info_2.setColumnCount(2)
        self.ui.table_file_info_2.setRowCount(len(data))
        # заголовки для столбцов.
        self.ui.table_file_info_2.setHorizontalHeaderLabels(
            ('Клетка', 'Количество'))
        row = 0
        for tup in data:
            col = 0
            for item in tup:
                cellinfo = QTableWidgetItem(item)
                # Только для чтения
                cellinfo.setFlags(PyQt5.QtCore.Qt.ItemIsSelectable
                                  | PyQt5.QtCore.Qt.ItemIsEnabled)
                self.ui.table_file_info_2.setItem(row, col, cellinfo)
                if col == 0:
                    self.y_unic.append(item)
                col += 1
            row += 1

    def btn_test_clicked(self):

        expected, predicted = classifier.test_model(
            self.X, self.y, self.ui.selector_model.currentText())
        print("!")
        if self.ui.preprocess_type_test.currentText() == "Стандартизация":
            preprocess_type = 2
        else:
            preprocess_type = 1
        classifier.generate_test_report(self.ui.path_to_test_data.text(),
                                        self.ui.selector_model.currentText(),
                                        preprocess_type)
        self.ui.label_20.setText(
            metrics.classification_report(expected, predicted,
                                          zero_division=0))
        # print(metrics.confusion_matrix(expected, predicted))
        self.load_test_predictions_matrix(
            metrics.confusion_matrix(expected, predicted))

    def load_test_predictions_matrix(self, data):
        print(len(self.y_unic))
        self.ui.test_predictions_matrix.setColumnCount(len(self.y_unic))
        self.ui.test_predictions_matrix.setRowCount(len(self.y_unic))
        # заголовки для столбцов.
        self.ui.test_predictions_matrix.setHorizontalHeaderLabels(self.y_unic)
        # заголовки для строк.
        self.ui.test_predictions_matrix.setVerticalHeaderLabels(self.y_unic)
        row = 0
        for tup in data:
            col = 0
            for item in tup:
                cellinfo = QTableWidgetItem(str(item))
                # Только для чтения
                cellinfo.setFlags(PyQt5.QtCore.Qt.ItemIsSelectable
                                  | PyQt5.QtCore.Qt.ItemIsEnabled)
                self.ui.test_predictions_matrix.setItem(row, col, cellinfo)
                col += 1
            row += 1

    def btn_select_path_to_test_data_clicked(self):
        file_path = QFileDialog.getOpenFileName(self,
                                                "Выберите файл",
                                                filter="*.csv")
        self.ui.path_to_test_data.setText(file_path[0])

    def btn_open_path_to_test_data_clicked(self):
        path = self.ui.path_to_test_data.text()
        path = '\\'.join(path.split('\\')[:-1])
        path = os.path.realpath(path)
        os.startfile(path)

    # ====Управление третьей вкладкой===================================================
    def btn_open_input_data_path_clicked(self):
        path = self.ui.input_data_path.text()
        path = os.path.realpath(path)
        os.startfile(path)

    def btn_open_output_bmp_data_path_clicked(self):
        path = self.ui.output_bmp_data_path.text()
        path = os.path.realpath(path)
        os.startfile(path)

    def btn_open_output_png_data_path_clicked(self):
        path = self.ui.output_png_data_path.text()
        path = os.path.realpath(path)
        os.startfile(path)

    def btn_choose_input_data_path_clicked(self):
        file_path = QFileDialog.getExistingDirectory(
            self, "Выберите папку с изображениями в формате BMP")
        self.ui.input_data_path.setText(file_path)
        self.load_table(
            self.ui.table_input_info,
            data_prep.get_folder_stats(self.ui.input_data_path.text()))

    def btn_choose_output_bmp_data_path_clicked(self):
        file_path = QFileDialog.getExistingDirectory(
            self, "Выберите папку для сохранения данных в формате BMP")
        self.ui.output_bmp_data_path.setText(file_path)

    def btn_choose_output_png_data_path_clicked(self):
        file_path = QFileDialog.getExistingDirectory(
            self, "Выберите папку для сохранения данных в формате PNG")
        self.ui.output_png_data_path.setText(file_path)

    def btn_start_devider_clicked(self):
        data_prep.devide_data(self.ui.input_data_path.text(),
                              self.ui.output_bmp_data_path.text(),
                              self.ui.output_png_data_path.text(),
                              self.ui.checkBox_convert_png.isChecked(),
                              int(self.ui.spinBox.value()),
                              self.ui.progressBar)

        self.load_table(
            self.ui.table_input_info,
            data_prep.get_folder_stats(self.ui.input_data_path.text()))
        self.load_table(
            self.ui.table_test_info,
            data_prep.get_folder_stats(self.ui.output_bmp_data_path.text() +
                                       "\\" + data_prep.TEST_FOLDER))
        self.load_table(
            self.ui.table_train_info,
            data_prep.get_folder_stats(self.ui.output_bmp_data_path.text() +
                                       "\\" + data_prep.TRAIN_FOLDER))

    def load_table(self, table, data):
        table.setColumnCount(2)
        table.setRowCount(len(data))
        # заголовки для столбцов.
        table.setHorizontalHeaderLabels(('Клетка', 'Количество'))
        row = 0
        for tup in data:
            col = 0
            for item in tup:
                cellinfo = QTableWidgetItem(item)
                # Только для чтения
                cellinfo.setFlags(PyQt5.QtCore.Qt.ItemIsSelectable
                                  | PyQt5.QtCore.Qt.ItemIsEnabled)
                table.setItem(row, col, cellinfo)

                col += 1
            row += 1

    # ======================================4===========================================
    def btn_choose_neiron_train_data_path_clicked(self):
        file_path = QFileDialog.getExistingDirectory(self, "Выберите папку")
        self.ui.neiron_train_data_path.setText(file_path)

    def btn_choose_neiron_test_data_path_clicked(self):
        file_path = QFileDialog.getExistingDirectory(self, "Выберите папку")
        self.ui.neiron_test_data_path.setText(file_path)

    def btn_open_neiron_train_data_path_clicked(self):
        path = self.ui.neiron_train_data_path.text()
        path = os.path.realpath(path)
        os.startfile(path)

    def btn_open_neiron_test_data_path_clicked(self):
        path = self.ui.neiron_test_data_path.text()
        path = os.path.realpath(path)
        os.startfile(path)

    def btn_open_neiron_weights_path_clicked(self):
        path = "ProjectData//Weights//Neiron"
        path = os.path.realpath(path)
        os.startfile(path)

    def btn_start_neiron_train_clicked(self):
        print("!!")
        neiron.start_train(self.ui.neiron_train_data_path.text(),
                           self.ui.use_gpu.isChecked(), self.ui.epoch.value())

    def btn_neiron_test_clicked(self):
        neiron.test_model(self.ui.neiron_test_data_path.text(),
                          self.ui.use_gpu.isChecked(),
                          "ProjectData//Weights/Neiron//cp.ckpt")

    def btn_neiron_additional_train_clicked(self):
        pass
Exemplo n.º 9
0
    def __init__(self):
        QMainWindow.__init__(self)
        Ui_MainWindow.__init__(self)
        self.setupUi(self)
        self.resize(600, 600)

        # define the Bin Information
        self.bin_info_dict = {}
        # define the Sort bin map
        self.bin_map_dict = {}
        # define bin data
        self.bin_data = pd.DataFrame()
        # define the ucs map and initial the map and ucs_info
        self.ucs_map = pd.DataFrame()
        self.ucs_info = pd.DataFrame()

        # Initialize scene and graphicView setting
        self.scene = QGraphicsScene()
        self.scene_text_item = None
        self.graphicsView.setScene(self.scene)
        # self.graphicsView.scale(1.5, 1.5)
        # self.scene.setSceneRect(-200, -200, 400, 400)

        # self.graphicsView.setScene(self.scene)
        self.graphicsView_save_path = os.path.abspath(".")

        # define the graphic item dictionary to store each plot item data
        self.graphics_item_dict = {}
        self.scene_text_item = None

        # create the dialog for wafer setting
        self.wafer_setting_dialog = ShowWaferSettingDialog()
        self.wafer_setting_dialog.wafer_layout_changed.connect(self.updateWaferLayoutSetting)
        self.wafer_setting_dialog.wafer_title_changed.connect(self.updateWaferTitleSetting)
        self.wafer_setting_dialog.die_props_changed.connect(self.updateDieSetting)

        # create the dialog for wafer selection
        self.wafer_select_dialog = ShowWaferItemDialog()
        self.wafer_select_dialog.select_item.connect(self.updateWaferSortMap)

        # create the ink dialog for wafer ink off process
        self.wafer_ink_dialog = ShowInkDialog()
        # self.wafer_select_dialog.select_bin.connect(self.updateWaferSortMap)

        # initial ink off setting in QGraphic View
        # self.graphicsView.ink_off_color = QColor(self.comboBox_inkoff_color.currentText())
        # self.die_edge_color = QColor(0, 0, 0, 90)

        # action button
        self.action_Map_Setting.triggered.connect(self.showWaferSettingDialog)
        self.action_Lot_Dialog.triggered.connect(self.showWaferSelectDialog)
        self.sort_map = SortMap(ucs_map_df=self.ucs_map, scene=self.scene)
        self.action_Zoom_In.triggered.connect(lambda : self.graphicsView.zoomMap(factor=1.1))
        self.action_Zoom_Out.triggered.connect(lambda : self.graphicsView.zoomMap(factor=0.9))
        self.action_Rotation_Left.triggered.connect(lambda : self.graphicsView.rotateMap(angle=-15))
        self.action_Rotation_Right.triggered.connect(lambda : self.graphicsView.rotateMap(angle=15))

        self.action_Ink_Off.triggered.connect(self.showInkDialog)

        # create the sort map class

        self.testGraphicPlot()

        self.testLotTableWidget()