예제 #1
0
    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)
예제 #2
0
    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
예제 #3
0
    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