def qmRunAll(inp_list, root=None, **kwargs): if 'block_size' not in kwargs: kwargs['block_size'] = 1 job = [] for inp in inp_list: job.append([inp, inp.molecule.name]) inp = inp_list[0] if inp.setting['threads'] != 1 and 'threads' not in kwargs: kwargs['threads'] = setting.cpu_count / inp.setting['threads'] if root is None: qtk.parallelize(qtk.qmRunJob, job, **kwargs) else: if os.path.exists(root): if 'overwrite' in kwargs and kwargs['overwrite']: qtk.warning("overwrite existing folder %s" % root) shutil.rmtree(root) os.makedirs(root) else: qtk.warning("%s exists, " % root +\ "joining calculations with other threads") else: os.makedirs(root) cwd = os.getcwd() os.chdir(root) qtk.parallelize(qtk.qmRunJob, job, **kwargs) os.chdir(cwd)
def qmRunAll(inp_list, root=None,**kwargs): if 'block_size' not in kwargs: kwargs['block_size'] = 1 job = [] for inp in inp_list: job.append([inp, inp.molecule.name]) inp = inp_list[0] if inp.setting['threads'] != 1 and 'threads' not in kwargs: kwargs['threads'] = setting.cpu_count / inp.setting['threads'] if root is None: qtk.parallelize(qtk.qmRunJob, job, **kwargs) else: if os.path.exists(root): if 'overwrite' in kwargs and kwargs['overwrite']: qtk.warning("overwrite existing folder %s" % root) shutil.rmtree(root) os.makedirs(root) else: qtk.warning("%s exists, " % root +\ "joining calculations with other threads") else: os.makedirs(root) cwd = os.getcwd() os.chdir(root) qtk.parallelize(qtk.qmRunJob, job, **kwargs) os.chdir(cwd)
def loadCubeList(cls, path_list, program=qtk.setting.qmcode): if program == 'cpmd': cls._file_list = path_list _para = [[name] for name in cls._file_list] if len(_para)<3*qtk.setting.cpu_count: cls._cube_list = qtk.parallelize(qtk.CUBE, _para, block_size=1) else: cls._cube_list = qtk.parallelize(qtk.CUBE, _para) else: qtk.exit("density of alchemical path is "\ +"not yet implemented for %s" % self.program)
def loadAllCube(cls, path, pattern, program=qtk.setting.qmcode): """ centralized parallel CUBE loading """ if program == 'cpmd': cls._file_list = sorted(glob.glob( path + "/" + pattern + "/*.cube")) _para = [[name] for name in cls._file_list] if len(_para)<3*qtk.setting.cpu_count: cls._cube_list = qtk.parallelize(qtk.CUBE, _para, block_size=1) else: cls._cube_list = qtk.parallelize(qtk.CUBE, _para) else: qtk.exit("density of alchemical path is "\ +"not yet implemented for %s" % self.program)
def fitness(self, pop_list): if self.threads == 1: fit = [] for coord in pop_list: out = self.evaluate(coord, self.target_input) fit.append(out) output = np.array(fit).T.tolist() return output else: job = [] for coord in pop_list: job.append([coord, self.target_input]) out = qtk.parallelize( self.evaluate, job, n_output=2, threads=self.threads ) return out
def loadCube(self): # cpmd implemetation if self.program == 'cpmd': self.cube_name = sorted(glob.glob( self.path + "/" + self.pattern + "/*.cube")) if len(PathData._cube_list) > 0: _clist = PathData._cube_list _nlist = PathData._file_list self.cube_list = [_clist[_nlist.index(name)]\ for name in self.cube_name] else: _para = [[name] for name in self.cube_name] self.cube_list = qtk.parallelize(qtk.CUBE, _para, block_size=1) else: qtk.exit("density of alchemical path is "\ +"not yet implemented for %s" % self.program)
def setDescriptor(self, descriptor, **kwargs): self.descriptor = descriptor if 'threads' in kwargs: self.threads = int(kwargs['threads']) else: self.threads = 1 qtk.report("DataSet", "reading folder", self.path) qtk.report("Descriptor", self.descriptor) if descriptor == 'CoulombMatrix': if 'matrix_size' not in kwargs: qtk.warning("matrix size not assigend, " + \ "using default value") qtk.warning("matrix size WILL CHANGE " + \ "according to numer of atoms in the molecule") self.matrix_size = 0 else: self.matrix_size = kwargs['matrix_size'] else: qtk.exit("descriptor" + descriptor + "is not implemented") if self.threads > 1: data_list = [] for data in sorted(\ glob.glob(self.path + '/' + self.pattern)): data_list.append([descriptor, self.matrix_size, {'xyz':data}]) self.data = qtk.parallelize(DataPoint, data_list, threads=self.threads) else: for data in sorted(\ glob.glob(self.path + '/' + self.pattern)): self.data.append(\ DataPoint(descriptor, self.matrix_size, xyz=data)\ ) self.data_size = len(self.data)
def setDescriptor(self, descriptor, **kwargs): self.descriptor = descriptor if 'threads' in kwargs: self.threads = int(kwargs['threads']) else: self.threads = 1 qtk.report("DataSet", "reading folder", self.path) qtk.report("Descriptor", self.descriptor) if descriptor == 'CoulombMatrix': if 'matrix_size' not in kwargs: qtk.warning("matrix size not assigend, " + \ "using default value") qtk.warning("matrix size WILL CHANGE " + \ "according to numer of atoms in the molecule") self.matrix_size = 0 else: self.matrix_size = kwargs['matrix_size'] else: qtk.exit("descriptor" + descriptor + "is not implemented") if self.threads > 1: data_list = [] for data in sorted(\ glob.glob(self.path + '/' + self.pattern)): data_list.append([descriptor, self.matrix_size, {'xyz': data}]) self.data = qtk.parallelize(DataPoint, data_list, threads=self.threads) else: for data in sorted(\ glob.glob(self.path + '/' + self.pattern)): self.data.append(\ DataPoint(descriptor, self.matrix_size, xyz=data)\ ) self.data_size = len(self.data)