Exemple #1
0
    def onPlotOnlyTimer(self, e):
        if self.terminated:
            self.stop_run()
        else:
            if self.results_file is not None and os.path.isfile(
                    self.results_file):
                st = time.time()
                with open(self.results_file, 'r') as rf:
                    rf.seek(self.bookmark)
                    split_info = [
                        i.replace('\n', '').split(' ') for i in rf.readlines()
                    ]
                    self.bookmark = rf.tell()

                if self.args.reorder:
                    idx_offset = len(self.spotfinding_info)
                    new_info = [[
                        split_info.index(i) + idx_offset,
                        int(i[1]), i[2], i[3],
                        tuple(i[4:10])
                    ] if len(i) > 5 else [
                        split_info.index(i) + idx_offset,
                        int(i[1]), i[2],
                        misc.makenone(i[3]),
                        misc.makenone(i[4])
                    ] for i in split_info]
                else:
                    new_info = [
                        [int(i[0]),
                         int(i[1]), i[2], i[3],
                         tuple(i[4:10])] if len(i) > 5 else [
                             int(i[0]),
                             int(i[1]), i[2],
                             misc.makenone(i[3]),
                             misc.makenone(i[4])
                         ] for i in split_info
                    ]

                if len(new_info) > 0:
                    self.msg = 'Tracking new images in {} ...'.format(
                        self.results_file)
                    self.spotfinding_info.extend(new_info)
                    if len(self.spotfinding_info) > 0:
                        indexed = [
                            i for i in self.spotfinding_info
                            if i[4] is not None
                        ]
                        self.tracker_panel.idx_count_txt.SetLabel(
                            str(len(indexed)))
                    self.plot_results()
                else:
                    self.msg = 'Waiting for new images in {} ...'.format(
                        self.results_file)

            else:
                self.msg = 'Waiting for new run to initiate...'

            self.update_spinner()
    def onProcTimer(self, e):
        if os.path.isfile(self.results_file):
            with open(self.results_file, 'r') as rf:
                rf.seek(self.bookmark)
                split_info = [
                    i.replace('\n', '').split(' ') for i in rf.readlines()
                ]
                self.bookmark = rf.tell()

            if self.reorder:
                idx_offset = len(self.spotfinding_info)
                new_info = [[
                    split_info.index(i) + idx_offset,
                    int(i[1]), i[2], i[3],
                    tuple(i[4:10])
                ] if len(i) > 5 else [
                    split_info.index(i) + idx_offset,
                    int(i[1]), i[2],
                    misc.makenone(i[3]),
                    misc.makenone(i[4])
                ] for i in split_info]
            else:
                new_info = [[int(i[0]),
                             int(i[1]), i[2], i[3],
                             tuple(i[4:10])] if len(i) > 5 else [
                                 int(i[0]),
                                 int(i[1]), i[2],
                                 misc.makenone(i[3]),
                                 misc.makenone(i[4])
                             ] for i in split_info]

            if len(new_info) > 0:
                self.spotfinding_info.extend(new_info)

                if len(self.spotfinding_info) > 0:
                    self.msg = 'Tracking new images in {} ...'.format(
                        self.results_file)
            else:
                self.msg = 'Waiting for new images in {} ...'.format(
                    self.results_file)

        else:
            self.msg = 'Waiting for new run to initiate...'

        info = [self.msg, self.spotfinding_info, self.cluster_info]
        evt = SpotFinderOneDone(tp_EVT_SPFDONE, -1, info=info)
        wx.PostEvent(self.parent, evt)