conversion.py 文件源码

python
阅读 34 收藏 0 点赞 0 评论 0

项目:Dragonfly 作者: duaneloh 项目源码 文件源码
def convert_frames(self, event=None):
        try:
            start = int(self.first_frame.text())
            end = int(self.last_frame.text())
            num_proc = int(self.num_proc.text())
        except ValueError:
            sys.stderr.write('Integers only for frame range and number of processors\n')
            return

        self.indices = np.arange(start, end, dtype='i4')
        clist = self.parent.classes.clist[start:end]
        if self.class_chars.text() != '':
            sel = np.array([clist==c for c in self.class_chars.text()]).any(axis=0)
            self.indices = self.indices[sel]
        if len(self.indices) == 0:
            sys.stderr.write('No frames of class %s in frame range\n'%self.class_chars.text())
            return
        else:
            sys.stderr.write('Converting %d frames with %d processors\n' % (len(self.indices), num_proc))

        arr = self.get_and_convert(0)
        converted = multiprocessing.Array(ctypes.c_double, arr.size*len(self.indices))
        jobs = []
        for i in range(num_proc):
            p = multiprocessing.Process(target=self.convert_worker, args=(i, num_proc, self.indices, arr.size, converted))
            jobs.append(p)
            p.start()
        for j in jobs:
            j.join()
        sys.stderr.write('\r%d/%d\n' % (len(self.indices), len(self.indices)))

        self.parent.converted = np.frombuffer(converted.get_obj()).reshape(len(self.indices), -1)
        if self.save_flag.isChecked():
            sys.stderr.write('Saving angular correlations to %s\n'%self.save_fname.text())
            np.save(self.save_fname.text(), self.parent.converted)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号