コード例 #1
0
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)
コード例 #2
0
ファイル: parallizer.py プロジェクト: SamKChang/qctoolkit
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)
コード例 #3
0
ファイル: alpath.py プロジェクト: andersx/qctoolkit
 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)
コード例 #4
0
ファイル: alpath.py プロジェクト: andersx/qctoolkit
 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)
コード例 #5
0
 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
コード例 #6
0
ファイル: alpath.py プロジェクト: andersx/qctoolkit
 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)
コード例 #7
0
ファイル: dataset.py プロジェクト: SamKChang/qctoolkit
  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)
コード例 #8
0
ファイル: dataset.py プロジェクト: andersx/qctoolkit
    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)