コード例 #1
0
    def generateSolution(self):
        """
        Generate a solution for the current cubestring and display in the GUI
        """
        self.statusbar.showMessage("Generating Solution")
        msg = "Generating solution for cubestring: " + self.cube.cubestring
        self.addLogEntry(msg)

        timer = QElapsedTimer()
        timer.start()
        solution = "No Solution"
        try:
            solution = kociemba.solve(self.cube.cubestring)
        except Exception as err:
            print(err)
            error_dialog = QErrorMessage()
            error_dialog.showMessage(err.args[0])
            error_dialog.exec_()
            solution = err.args[0]
            self.statusbar.showMessage("Solution generation failed!")
            msg = "Solution could not be calculated: " + solution
            self.addLogEntry(msg)

        self.lineEdit_InOut.setText(solution)
        self.label_CurrentString.setText("Solution:")
        self.statusbar.showMessage("Generated Solution")
        msg = "Solution calculation took: {} ms".format(timer.nsecsElapsed() /
                                                        1000000)
        self.addLogEntry(msg)

        # self.timer1ms.stop()
        pass
コード例 #2
0
class Window(QMainWindow):
    ''' docstring '''
    def __init__(self):
        super().__init__()
        self.conn_status = False
        self.query_status = False
        self.sckt = None
        self.new_tcp_host = "192.168.43.67"  #TCP_HOST_IP
        self.init_ui()
        self.q_p1_x = 116.30
        self.q_p1_y = 39.97
        self.q_p2_x = 116.32
        self.q_p2_y = 40.00
        self.query_elapsed = None
        self.proc_elapsed = 0
        self.timer = QElapsedTimer()

    def init_ui(self):
        ''' docstring '''

        #self.com = Communicate()
        # self.com.close_app.connect(self.close)

        self.custom_wid = MainWidget(self)
        self.custom_wid.control_wid.connect_btn.clicked.connect(
            self.connect_server)
        self.custom_wid.control_wid.open_btn.clicked.connect(self.open_file)
        self.custom_wid.control_wid.close_btn.clicked.connect(self.close_app)
        self.custom_wid.control_wid.plot_btn.clicked.connect(self.load_data)
        self.custom_wid.control_wid.query_btn.clicked.connect(
            self.query_region)

        self.setCentralWidget(self.custom_wid)
        self.statusBar()
        self.statusBar().showMessage('Ready')
        self.resize(1280, 720)
        self.center()
        self.setWindowTitle('Trajectory Mapping - Client App')
        self.show()

    def center(self):
        ''' docstring '''

        qr = self.frameGeometry()
        cp = QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())

    def connect_server(self):
        ''' docstring '''

        self.new_tcp_host, ok = QInputDialog.getText(
            self, 'Connect to Server', 'Enter server IP address:',
            QLineEdit.Normal, str(self.new_tcp_host))

        if ok:
            # close existing socket
            try:
                self.sckt.close()
            except:
                pass
            # create a socket object
            self.sckt = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            # connection to hostname on the port.
            print(self.new_tcp_host)
            try:
                self.sckt.connect((self.new_tcp_host, TCP_PORT))
            except:
                return

            self.conn_status = True
            # send message to server
            msg_to_send = 'Houssem & Ayoub'
            self.sckt.send(msg_to_send.encode('utf-8'))

            # Receive no more than BUFFER_SIZE bytes
            msg = self.sckt.recv(BUFFER_SIZE)

            # print received reply
            print(msg.decode('utf-8'))
            self.statusBar().showMessage(msg.decode('utf-8'))

    def open_file(self):
        ''' docstring '''
        self.timer.restart()
        if self.conn_status:
            fname = QFileDialog.getOpenFileName(self, 'Open file', '/home')

            if fname[0]:
                fsize = os.path.getsize(fname[0])
                self.sckt.send(str(fsize).encode('utf-8'))

                with open(fname[0], 'rb') as f:
                    data_buffer = f.read(BUFFER_SIZE)
                    while data_buffer:
                        self.sckt.send(data_buffer)
                        data_buffer = f.read(BUFFER_SIZE)

                print('File opened and sent to server')
                self.statusBar().showMessage('File opened and sent to server')
                self.receive_files()
        else:
            self.statusBar().showMessage('First connect to server')

    def close_app(self):
        ''' docstring '''
        if self.conn_status:
            self.sckt.close()
        QApplication.instance().quit()

    def receive_files(self):
        ''' docstring'''

        with open(ORIGINAL_DATASET_FILE, 'wb') as f:
            print('Receiving data ...')
            msg = self.sckt.recv(BUFFER_SIZE)
            fsize = int(msg.decode('utf-8'))
            rsize = 0
            while True:
                data = self.sckt.recv(BUFFER_SIZE)
                #print('Received data = %s', (data))
                rsize = rsize + len(data)
                f.write(data)
                #print(rsize)
                if rsize >= fsize:
                    print('Breaking from file write')
                    break

        with open(REDUCED_DATASET_FILE, 'wb') as f:
            print('Receiving data ...')
            msg = self.sckt.recv(BUFFER_SIZE)
            fsize = int(msg.decode('utf-8'))
            rsize = 0
            while True:
                data = self.sckt.recv(BUFFER_SIZE)
                #print('Received data = %s', (data))
                rsize = rsize + len(data)
                f.write(data)
                #print(rsize)
                if rsize >= fsize:
                    print('Breaking from file write')
                    break

        self.statusBar().showMessage('Files received from server')

        self.proc_elapsed = self.timer.nsecsElapsed()
        print(self.timer.clockType())
        print(self.proc_elapsed)
        self.custom_wid.control_wid.label_7.setText(
            "Processing time: {}".format(self.proc_elapsed))

    def load_data(self):
        ''' docstring'''
        full_ds = 0
        reduced_ds = 0
        reduction_rate = 0
        query_full_ratio = 0
        query_reduced_ratio = 0

        lines_buffer = []
        original_dataset = []
        with open(ORIGINAL_DATASET_FILE, 'r') as f:
            lines_buffer = f.readlines()
            full_ds = len(lines_buffer)
            #print(lines_buffer)
        for line in lines_buffer:
            tmp = line.split(',')
            tmp[0] = float(tmp[0])
            tmp[1] = float(tmp[1])
            original_dataset.append(tmp)
        #print(original_dataset)

        lines_buffer = []
        reduced_dataset = []
        with open(REDUCED_DATASET_FILE, 'r') as f:
            lines_buffer = f.readlines()
            reduced_ds = len(lines_buffer)
            #print(lines_buffer)
        for line in lines_buffer:
            tmp = line.split(',')
            tmp[0] = float(tmp[0])
            tmp[1] = float(tmp[1])
            reduced_dataset.append(tmp)
        #print(reduced_dataset)

        reduction_rate = 100 * (1 - reduced_ds / full_ds)
        self.custom_wid.control_wid.label_1.setText(
            "Full dataset: {}".format(full_ds))
        self.custom_wid.control_wid.label_2.setText(
            "Reduced dataset: {}".format(reduced_ds))
        self.custom_wid.control_wid.label_3.setText(
            "Reduction rate: {} %".format(round(reduction_rate, 2)))

        query_original_dataset = []
        query_reduced_dataset = []

        if self.query_status:
            lines_buffer = []
            with open(QUERY_ORIGINAL_DATASET_FILE, 'r') as f:
                lines_buffer = f.readlines()
                query_full_ratio = 100 * len(lines_buffer) / full_ds
                #print(lines_buffer)
            for line in lines_buffer:
                tmp = line.split(',')
                tmp[0] = float(tmp[0])
                tmp[1] = float(tmp[1])
                query_original_dataset.append(tmp)

            lines_buffer = []
            with open(QUERY_REDUCED_DATASET_FILE, 'r') as f:
                lines_buffer = f.readlines()
                query_reduced_ratio = 100 * len(lines_buffer) / reduced_ds
                #print(lines_buffer)
            for line in lines_buffer:
                tmp = line.split(',')
                tmp[0] = float(tmp[0])
                tmp[1] = float(tmp[1])
                query_reduced_dataset.append(tmp)

        else:
            self.custom_wid.control_wid.coord1_x.setValue(
                reduced_dataset[0][0])
            self.custom_wid.control_wid.coord1_y.setValue(
                reduced_dataset[0][1])
            self.custom_wid.control_wid.coord2_x.setValue(
                reduced_dataset[-1][0])
            self.custom_wid.control_wid.coord2_y.setValue(
                reduced_dataset[-1][1])

        self.custom_wid.control_wid.label_4.setText(
            "Results ratio to full dataset: {} %".format(
                round(query_full_ratio)))
        self.custom_wid.control_wid.label_5.setText(
            "Results ratio to reduced dataset: {} %".format(
                round(query_reduced_ratio)))

        xy = np.array(reduced_dataset)
        q_xy = np.array([])
        tmp = self.custom_wid.control_wid.combo_box.currentText()
        if tmp == "Full Dataset":
            xy = np.array(original_dataset)
            q_xy = np.array(query_original_dataset)
        elif tmp == "Reduced Dataset":
            xy = np.array(reduced_dataset)
            q_xy = np.array(query_reduced_dataset)

        # Plot the path as red dots connected by a blue line
        plt.hold(True)
        if self.query_status:
            fig = plt.figure()
            ax = fig.add_subplot(111)
            rect = mpatches.Rectangle(
                [min(self.q_p1_x, self.q_p2_x),
                 min(self.q_p1_y, self.q_p2_y)],
                abs(self.q_p1_x - self.q_p2_x), abs(self.q_p1_y - self.q_p2_y))
            ax.add_patch(rect)
            #plt.plot()
        plt.plot(xy[:, 0], xy[:, 1], 'ko')
        if self.query_status and len(q_xy):
            plt.plot(q_xy[:, 0], q_xy[:, 1], 'rD')
        plt.plot(xy[:, 0], xy[:, 1], 'b')

        root, ext = os.path.splitext(__file__)
        mapfile = root + '.html'
        print("mapfile: {}".format(mapfile))
        # Create the map. Save the file to basic_plot.html. _map.html is the default
        # if 'path' is not specified
        mplleaflet.show(inbrowser=False, path=mapfile)
        self.custom_wid.map_wid.setUrl(
            QUrl.fromLocalFile(QFileInfo(mapfile).absoluteFilePath()))

    def query_region(self):
        ''' docstring '''
        self.timer.restart()
        print('Sending query ...')
        self.q_p1_x = self.custom_wid.control_wid.coord1_x.value()
        self.q_p1_y = self.custom_wid.control_wid.coord1_y.value()
        self.q_p2_x = self.custom_wid.control_wid.coord2_x.value()
        self.q_p2_y = self.custom_wid.control_wid.coord2_y.value()
        msg_to_send = '{},{},{},{}'.format(self.q_p1_x, self.q_p1_y,
                                           self.q_p2_x, self.q_p2_y)
        self.sckt.send(msg_to_send.encode('utf-8'))
        print('Query sent ...')

        with open(QUERY_ORIGINAL_DATASET_FILE, 'wb') as f:
            print('Receiving query data ...')
            msg = self.sckt.recv(BUFFER_SIZE)
            fsize = int(msg.decode('utf-8'))
            rsize = 0
            if fsize:
                while True:
                    data = self.sckt.recv(BUFFER_SIZE)
                    #print('Received data = %s', (data))
                    rsize = rsize + len(data)
                    f.write(data)
                    #print(rsize)
                    if rsize >= fsize:
                        print('Breaking from query file write')
                        break

        with open(QUERY_REDUCED_DATASET_FILE, 'wb') as f:
            print('Receiving query data ...')
            msg = self.sckt.recv(BUFFER_SIZE)
            fsize = int(msg.decode('utf-8'))
            rsize = 0
            if fsize:
                while True:
                    data = self.sckt.recv(BUFFER_SIZE)
                    #print('Received data = %s', (data))
                    rsize = rsize + len(data)
                    f.write(data)
                    #print(rsize)
                    if rsize >= fsize:
                        print('Breaking from query file write')
                        break

        self.query_status = True
        self.query_elapsed = self.timer.nsecsElapsed()
        print(self.timer.clockType())
        print(self.query_elapsed)
        self.custom_wid.control_wid.label_6.setText("Query time: {}".format(
            self.query_elapsed))
コード例 #3
0
ファイル: ImageProcessing.py プロジェクト: waldhube16/Qbot_SW
        for i in range(0, len(avg_colors[face])):
            current_color = avg_colors[face][i]
            if i == 4:
                identifier = face[0]
            else:
                identifier = get_identifier(current_color, center_colors)

            cubestring += identifier
    # for

    #compare averages to center color

    return cubestring


#when executed directly as means to benchmark
if __name__ == "__main__":
    f = open("imageBenchmark.txt", "w")
    overall = 0
    for i in range(0, 1000):
        timer = QElapsedTimer()
        timer.start()
        cubestring = analyzeCubeImages(bDebug=0)
        end = timer.nsecsElapsed()
        f.write("{}\n".format(end))
        print(end)
        overall += end
    f.close()
    # print("; "+cubestring)
    # print(overall//20)
コード例 #4
0
from time import sleep
from PyQt5.QtCore import QTimer, QElapsedTimer
from PyQt5.QtWidgets import QApplication

from pyprone.entities.midifile import PrMidiFile
from pyprone.entities.midifile.track import PrMidiTrack
from pyprone.core.helpers.formats import sec2HMSF, tick2MBT, MBT2tick, tempo2bpm
from mido import open_output

etimer = QElapsedTimer()

etimer.start()
print('abc')
print(etimer.nsecsElapsed())

etimer.start()
a = 100 + 234
print(etimer.nsecsElapsed())

etimer.start()
a = 123123123 * 1000000000
print(etimer.nsecsElapsed())

etimer.start()
a = 123123123 / 10002323000000
print(etimer.nsecsElapsed())