From: <bao...@us...> - 2006-05-26 18:46:08
|
Revision: 161 Author: baoilleach Date: 2006-05-26 11:45:47 -0700 (Fri, 26 May 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=161&view=rev Log Message: ----------- Added some basic geoopt parsing for Jaguar. Coordinates, atomnos and natom. Corrected 'typo' in testGeoOpt.py Modified Paths: -------------- trunk/src/cclib/parser/jaguarparser.py trunk/test/testGeoOpt.py Modified: trunk/src/cclib/parser/jaguarparser.py =================================================================== --- trunk/src/cclib/parser/jaguarparser.py 2006-05-26 17:33:53 UTC (rev 160) +++ trunk/src/cclib/parser/jaguarparser.py 2006-05-26 18:45:47 UTC (rev 161) @@ -86,25 +86,49 @@ temp = line.strip().split() self.scfenergies.append(float(temp[temp.index("hartrees")-1])) + if line[2:14]=="new geometry" or line[1:21]=="Symmetrized geometry": +# Get the atom coordinates + if not hasattr(self,"atomcoords"): + self.logger.info("Creating attributes: atomcoords, atomnos, natom") + self.atomcoords = [] + p = re.compile("(\D+)\d+") # One/more letters followed by a number + atomcoords = [] + atomnos = [] + angstrom = inputfile.next() + title = inputfile.next() + line = inputfile.next() + while line.strip(): + temp = line.split() + element = p.findall(temp[0])[0] + atomnos.append(self.table.number[element]) + atomcoords.append(map(float,temp[1:])) + line = inputfile.next() + self.atomcoords.append(atomcoords) + self.atomnos = Numeric.array(atomnos,"i") + self.natom = len(atomcoords) + if line[2:28]=="geometry optimization step": # Get Geometry Opt convergence information if not hasattr(self,"geovalues"): self.geovalues = [] - self.geotargets = Numeric.zeros(4,"float") - self.logger.info("Creating attributes: geovalues,geotargets") + geotargets = Numeric.zeros(4,"f") + i = 0 + self.logger.info("Creating attributs: geovalues,geotargets") blank = inputfile.next() blank = inputfile.next() line = inputfile.next() - i = 0 values = [] while line!=blank: if line[41]=="(": # A new geo convergence value values.append(float(line[26:37])) - self.geotargets[i] = float(line[43:54]) - i+=1 + if not hasattr(self,"geotargets"): + geotargets[i] = float(line[43:54]) + i += 1 line = inputfile.next() self.geovalues.append(values) + if not hasattr(self,"geotargets"): + self.geotargets = geotargets if line[2:33]=="Orbital energies/symmetry label": # Get MO Energies and symmetrys @@ -167,6 +191,8 @@ ## self.scfvalues = Numeric.array(self.scfvalues,"f") if hasattr(self,"scfenergies"): self.scfenergies = Numeric.array(self.scfenergies,"f") + if hasattr(self,"atomcoords"): + self.atomcoords = Numeric.array(self.atomcoords,"f") self.parsed = True if __name__=="__main__": Modified: trunk/test/testGeoOpt.py =================================================================== --- trunk/test/testGeoOpt.py 2006-05-26 17:33:53 UTC (rev 160) +++ trunk/test/testGeoOpt.py 2006-05-26 18:45:47 UTC (rev 161) @@ -15,7 +15,7 @@ def testatomcoords(self): """Are atomcoords consistent with natom and Angstroms?""" coords = self.data.atomcoords - self.assertEquals(self.data.natom,len(coords[0]),"len(atomcoords[0]) is %d but natom is %d" % (self.data.natom,len(coords[0]))) + self.assertEquals(self.data.natom,len(coords[0]),"natom is %d but len(atomcoords[0]) is %d" % (self.data.natom,len(coords[0]))) # Find the minimum distance between two C atoms mindist = 999 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |