def get_molecule(self): from Molecule import molecule try: xyz_fn = self.get_xyz_filename() except PyAdfError: return self.job.mol return molecule(xyz_fn)
def metarun(self): dataSetJobResults = [] for p in self.pathNames: filelist = glob.glob(os.path.join(p, '*.xyz')) molecules = [] for f in filelist: molecules.append( molecule(os.path.join(p, f), inputformat='xyz')) dataSetJob = adffdeanalysisjob( molecules=molecules, settings=self.settings, adfsettings=self.adfsettings, basis=self.basis, core=self.core, fde=self.fde, adffdesettings=self.adffdesettings).run() dataSetJobResults.append(dataSetJob) dictTmp = [] for key, value1 in dataSetJobResults[0].iteritems(): value2 = dataSetJobResults[1][key] dictTmp.append((key, self.add_lists(value1, value2))) dictTmp = dict(dictTmp) if len(dataSetJobResults) >= 3: for i in range(2, len(dataSetJobResults)): tmpAvrg = [] for key, value1 in dictTmp.iteritems(): value2 = dataSetJobResults[i][key] tmpAvrg.append((key, self.add_lists(value1, value2))) tmpAvrg = dict(tmpAvrg) dictTmp.update(tmpAvrg) tmpAvrg = dict(tmpAvrg) else: tmpAvrg = dictTmp AvrgResults = [] number = len(dataSetJobResults) for key, value in tmpAvrg.iteritems(): AvrgResults.append((key, self.divide_by_number(value, number))) AvrgResults = dict(AvrgResults) return AvrgResults, dataSetJobResults
def get_molecule(self): """ Return the molecular geometry after the ADF job. This can be changes with respect to the input geometry because it was optimized in the calculation. @returns: The molecular geometry. @rtype: L{molecule} """ nnuc = self.get_result_from_tape('Molecule', 'nAtoms') atnums = self.get_result_from_tape('Molecule', 'AtomicNumbers') xyz = self.get_result_from_tape('Molecule', 'Coords') xyznuc = xyz.reshape(nnuc, 3) m = molecule() m.add_atoms(atnums, xyznuc, atomicunits=True) return m