コード例 #1
0
    def test_continuous_send_dialog(self):
        self.add_signal_to_form("esaver.complex16s")
        self.__add_first_signal_to_generator()

        port = util.get_free_port()

        gframe = self.form.generator_tab_controller  # type: GeneratorTabController
        for msg in gframe.table_model.protocol.messages:
            msg.pause = 5000

        expected = IQArray(None, np.float32, gframe.total_modulated_samples)
        expected = gframe.modulate_data(expected)
        current_index = Value("L", 0)
        buffer = Array("f", 4 * len(expected))
        ready = Value("i", 0)

        process = Process(target=receive,
                          args=(port, current_index, len(expected), buffer,
                                ready))
        process.daemon = True
        process.start()
        n = 0
        while ready.value == 0 and n < 50:  # ensure server is up
            time.sleep(0.1)
            n += 1

        self.assertTrue(ready.value)

        ContinuousModulator.BUFFER_SIZE_MB = 10

        continuous_send_dialog = self.__get_continuous_send_dialog()
        continuous_send_dialog.device.set_client_port(port)
        continuous_send_dialog.device_settings_widget.ui.spinBoxNRepeat.setValue(
            2)
        continuous_send_dialog.ui.btnStart.click()
        process.join(10)

        # CI sometimes swallows a sample
        self.assertGreaterEqual(current_index.value, len(expected) - 1)

        buffer = np.frombuffer(buffer.get_obj(), dtype=np.float32)
        buffer = buffer.reshape((len(buffer) // 2, 2))

        for i in range(len(expected)):
            self.assertEqual(buffer[i, 0], expected[i, 0], msg=str(i))
            self.assertEqual(buffer[i, 1], expected[i, 1], msg=str(i))

        continuous_send_dialog.ui.btnStop.click()
        continuous_send_dialog.ui.btnClear.click()
        QTest.qWait(1)

        continuous_send_dialog.close()
コード例 #2
0
    def calculateDistance(self, dataset, function):
        traj_lst, traj_keys = self.prepareDataset(dataset)
        traj_count = len(traj_lst)
        #D = np.zeros((traj_count, traj_count))

        arr = Array(c.c_double, traj_count * traj_count)
        arr = np.frombuffer(arr.get_obj())
        global D
        D = arr.reshape((traj_count, traj_count))

        with open(dataset, 'r') as inf:
            traj_data_dict = eval(inf.read())

        counter = 0
        sub_counter = 0
        nprocs = cpu_count() - 1

        for i, u in enumerate(traj_keys):
            counter += 1
            print(str(counter) + " " + str(len(traj_keys)) + "\n")
            Utils.progressBar(counter, len(traj_keys), bar_length=20)
            sub_counter = 0
            pool = Pool(processes=nprocs)
            #pool.apply_async(self.update_dist, args=(function, traj_data_dict, u, [], i, traj_keys))

            for j, v in enumerate(traj_keys[i+1:], start=i+1):
                if j >= len(traj_keys):
                    break
               # sub_counter += 1
                #distance = 0
                #print(sub_counter, len(traj_keys[i+1:]))
                #value = []
                #print(i,j)
                #prod_x = partial(self.update_dist, traj_data_dict=traj_data_dict, function=function, u=u, v=v, x=[], i=i, j=j)
                pool.apply_async(self.update_dist, args=(function, traj_data_dict, u, v, [], i, j))
                #pool.map_async(prod_x, [1])
                #p = Process(target=prod_x)
                #proc.append(p)

                #self.update_dist(function, traj_data_dict, u, v, D, i, j)

            '''
                for u_key, values1 in traj_data_dict[u][0].items():
                    prod_x = partial(self.similarity_function, function=function, u=np.vstack(values1).T)
                    r = p.map_async(prod_x, traj_data_dict[v][0].values(), callback=value.append)
                r.wait()
                #distance += sum(result)
                #print('a')
                #print(value)
                distance += sum(sum(value, []))
                #print(distance)
                    #for v_key, values2 in traj_data_dict[v][0].items():
                     #   distance += 1 - self.similarity_function(function, np.vstack(values1).T, np.vstack(values2).T)
                        #distance += 1 - TrajectorySimilarity.hausdorff(np.vstack(values1).T, np.vstack(values2).T)
                #distance = TrajectorySimilarity.hausdorff(traj_lst[i], traj_lst[j])
                #print(i, j, distance)

                D[i, j] = distance
                D[j, i] = distance
                
                '''

            pool.close()
            pool.join()


        return traj_keys, D